i want a command that works as follows:
dig east 101
it is suppose to make an east exit in the room you are standing to room 101
and also make a west exit in room 101 to the room you standing in.
here is the code i came up with so far and where it crashes:
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--------------------------------------
ACMD(do_dig) {
static const char* dir_name[] = {"North", "East", "South", "West", "Up",
"Down"};
static const char* rdir_name[] = {"South", "West", "North", "East",
"Down", "Up"};
int dir, rdir;
room_vnum rvnum;
room_rnum rrnum;
char buf1[10],buf2[10];
*buf1 = '\0';
*buf2 = '\0';
half_chop(argument,buf1,buf2);
if (!*buf1 || !*buf2) {
send_to_char("USAGE: dig <exit direction> <room vnum>\r\n",ch);
return;
}
for (dir = 0;dir < NUM_OF_DIRS;dir++) {
if (is_match(buf1,dir_name[dir]))
break;
}
if (dir == NUM_OF_DIRS) {
sprintf(buf,"%s is not a direction.\r\n",buf1);
send_to_char(buf,ch);
return;
}
//find reverse direction
for (rdir = 0;rdir < NUM_OF_DIRS;rdir++) {
if (is_match(buf1,rdir_name[rdir]))
break;
}
rvnum = atoi(buf2);
rrnum = real_room(rvnum);
if (rrnum == NOWHERE) {
sprintf(buf,"%d is not a valid room vnum.\r\n",rvnum);
send_to_char(buf,ch);
return;
}
if (world[rrnum].zone != world[ch->in_room].zone && GET_LEVEL(ch) !=
LVL_IMPL) {
send_to_char("You are not allowed to dig to that room.\r\n",ch);
return;
}
//ok, all possible errors trapped...i think!
if (!world[ch->in_room].dir_option[dir])
CREATE(world[ch->in_room].dir_option[dir], struct room_direction_data, 1);
if (!world[rrnum].dir_option[rdir])
CREATE(world[rrnum].dir_option[rdir], struct room_direction_data, 1);
world[ch->in_room].dir_option[dir]->to_room = rrnum; //CRASHES HERE
world[rrnum].dir_option[rdir]->to_room = ch->in_room;
sprintf(buf,"Dug room %d's %s exit to room
%d\r\n",GET_ROOM_VNUM(ch->in_room),dir_name[dir],rvnum);
send_to_char(buf,ch);
}
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--------------------------------------
any help would be >greatly< appreciated. thank you.
+------------------------------------------------------------+
| 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