<< Hey. Im havin some trouble with a new cool command im tryin to write. It is a go command so when a player is in a room and say there is an alley mentioned in the room description, the player can type "go alley" and the command will take him to the alley. >> I'm not quite sure if this is anything like what you have, but this code has worked fine for me: ACMD(do_go) { int was_in; one_argument(argument, arg); if (!(*arg)){ send_to_char("Go where?\r\n", ch); return; } if (EXIT(ch, GO)) if (isname(arg, world[ch->in_room].dir_option[GO]->keyword)) { if (AFF_FLAGGED(ch, AFF_CHARM) && ch->master && ch->in_room == ch->master->in_room) { send_to_char("The thought of leaving your master makes you weep.\r\n", ch); act("$n bursts into tears.", FALSE, ch, 0, 0, TO_ROOM); return; } if (ROOM_FLAGGED(EXIT(ch, GO)->to_room, ROOM_GODROOM) && GET_LEVEL(ch) < LVL_GRGOD) { send_to_char("You aren't godly enough to use that room!\r\n", ch); return; } if (IS_SET(ROOM_FLAGS(EXIT(ch, GO)->to_room), ROOM_TUNNEL) && num_pc_in_room(&(world[EXIT(ch, GO)->to_room])) > 1) { send_to_char("There isn't enough room there for more than one person!\r\n", ch); return; } if (EXIT(ch, GO)->general_description) { if (!IS_NPC(ch)) sprintf(buf2, "$n %s %s", GET_LASTNAME(ch), (EXIT(ch, GO)->general_description)); else sprintf(buf2, "$n %s", (EXIT(ch, GO)->general_description)); act(buf2, TRUE, ch, 0, 0, TO_ROOM); } if (!(EXIT(ch, GO)->general_description)){ if (!IS_NPC(ch)) sprintf(buf2, "$n %s walks to %s %s.", GET_LASTNAME(ch), AN(EXIT(ch, GO)->keyword), EXIT(ch, GO)->keyword); else sprintf(buf2, "$n walks to %s %s.",AN(EXIT(ch, GO)->keyword), EXIT(ch, GO)->keyword); act(buf2, TRUE, ch, 0, 0, TO_ROOM); } was_in = ch->in_room; char_from_room(ch); char_to_room(ch, world[was_in].dir_option[GO]->to_room); if (!IS_NPC(ch)) sprintf(buf, "$n %s has arrived.", GET_LASTNAME(ch)); else sprintf(buf, "$n has arrived."); act(buf, TRUE, ch, 0, 0, TO_ROOM); sprintf(buf2, "You walk to %s %s.\r\n",AN(arg), arg); send_to_char(buf2, ch); if (ch->desc != NULL) look_at_room(ch, 0); if (IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DEATH)) { if (GET_LEVEL(ch) < LVL_IMMORT) { log_death_trap(ch); death_cry(ch); extract_char(ch); GET_LOADROOM(ch)=NOWHERE; save_char(ch,NOWHERE); } } return; } send_to_char("I don't see that here.", ch); } I might've missed something in there... TimeTraveller's code allows for three GO exits, but to save space, I only snippeted out for the one there. --- B. Brown WebMaster, CircleMUD WTFaq http://developer.circlemud.org/docs/wtfaq/ TimeTraveller - "Lost in Time, and Loving it!" http://www.digital-genesis.com/~uasoft/ +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST