Re: [CODE] The Mapsnippet

From: Christoffer Lundberg (avatar@orion.boden.se)
Date: 11/13/98


Ok. Got the first part to work. But when I attempted to
expand the map from just the adjacent rooms, the MUD
crashes whenever I look at a room (*eeek*).

Here is the code. I haven't found anything by debug.

#define MAP_WIDTH 5
#define MAP_HEIGHT 5
#define MAP_ROOMS (MAP_WIDTH * MAP_HEIGHT)

void show_map(struct char_data *ch)
{
  char map_chars[MAP_ROOMS][5];
  int map_rnum[MAP_ROOMS], i;
  const char *sector_symbols[] = {
   "&c#&n",
   "&w.&n",
   "&gT&n",
   "&y^&n",
   "&K^&n",
   "&c~&n",
   "&B~&n",
   "&b~&n",
   "&K.&n",
   "&R*&n"
  };
  for (i = 0; i < MAP_ROOMS; i++) {
     map_rnum[i] = 0;
     sprintf(map_chars[i], "&n");
  }
  map_rnum[17] = IN_ROOM(ch);

  if (CAN_GO(ch, 0)) {
    map_rnum[17 - MAP_WIDTH] = EXIT(ch, 0)->to_room;
    sprintf(map_chars[17-MAP_WIDTH],
sector_symbols[SECT(map_rnum[17-MAP_WIDTH])]);
    if (CAN_GO2(EXIT(ch, 0)->to_room, 0)) {
      map_rnum[17 - 6] = EXIT2(EXIT(ch, 0)->to_room, 0)->to_room;
      sprintf(map_chars[17-6], sector_symbols[SECT(map_rnum[17-6])]);
    }
  }
  if (CAN_GO(ch, 1)) {
    map_rnum[17 + 1] = EXIT(ch, 1)->to_room;
    sprintf(map_chars[17+1], sector_symbols[SECT(map_rnum[17+1])]);
    if (CAN_GO2(EXIT(ch, 1)->to_room, 1)) {
      map_rnum[17 + 2] = EXIT2(EXIT(ch, 1)->to_room, 1)->to_room;
      sprintf(map_chars[17+2], sector_symbols[SECT(map_rnum[17+2])]);
    }
  }
  if (CAN_GO(ch, 2)) {
    map_rnum[17 + MAP_WIDTH] = EXIT(ch, 2)->to_room;
    sprintf(map_chars[17+MAP_WIDTH],
sector_symbols[SECT(map_rnum[17+MAP_WIDTH])]);
    if (CAN_GO2(EXIT(ch, 2)->to_room, 2)) {
      map_rnum[17 + 6] = EXIT2(EXIT(ch, 2)->to_room, 2)->to_room;
      sprintf(map_chars[17+6], sector_symbols[SECT(map_rnum[17+6])]);
    }
  }
  if (CAN_GO(ch, 3)) {
    map_rnum[17 - 1] = EXIT(ch, 3)->to_room;
    sprintf(map_chars[17-1], sector_symbols[SECT(map_rnum[17-1])]);
    if (CAN_GO2(EXIT(ch, 3)->to_room, 3)) {
      map_rnum[17 - 2] = EXIT2(EXIT(ch, 3)->to_room, 3)->to_room;
      sprintf(map_chars[17-2], sector_symbols[SECT(map_rnum[17-2])]);
    }
  }
  sprintf(buf, "
&y===&rMAP&y===&n
    %s
    %s
 %s%s&&%s%s
    %s
    %s
&y=========&n\r\n\r\n",
             CAN_GO2(EXIT(ch, 0)->to_room, 0) ? map_chars[17-6] : " ",
             CAN_GO(ch, 0) ? map_chars[17-MAP_WIDTH] : " ",
             CAN_GO2(EXIT(ch, 3)->to_room, 3) ? map_chars[17-2] : " ",
             CAN_GO(ch, 3) ? map_chars[17-1] : " ",
             CAN_GO(ch, 1) ? map_chars[17+1] : " ",
             CAN_GO2(EXIT(ch, 1)->to_room, 1) ? map_chars[17+2] : " ",
             CAN_GO(ch, 2) ? map_chars[17+MAP_WIDTH] : " ",
             CAN_GO2(EXIT(ch, 2)->to_room, 2) ? map_chars[17+6] : " ");

  send_to_char(buf, ch);
}

But I like to thank Francis for sharing the base with me.

>Christoffer


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST