hey everyone, Ok im creating my maps as a roguelike style, anyhow, im
having a problem with the display for the map.
Basicly, if its like say, a 10x10 map, it displays perfectly, but if i
change the room settings to say 12x20 or 70x30 It ends up in a loop, im
rather confused with this perhaps the collective knowledge can come up
with an answer.
The code is..
void do_thri_look(CHAR_DATA * ch, char *argument)
{
char buf[MSL];
int temp_x = 0;
int temp_y = 0;
int max_x = ch->in_room->map_max_x;
int max_y = ch->in_room->map_max_y;
int temp_sector = 0;
while (temp_x != max_x)
{
while (temp_y != (max_x + 1))
{
temp_sector = find_sector_number(temp_x,
temp_y, ch);
if (ch->x == temp_x && ch->y == temp_y)
sprintf(buf, "{RX{x");
else if (temp_y == max_y)
sprintf(buf, "%s%s{x\n\r",
exits_table[temp_sector].sector_color,
exits_table[temp_sector].sector_char);
else
sprintf(buf, "%s%s{x",
exits_table[temp_sector].sector_color,
exits_table[temp_sector].sector_char);
send_to_char(buf, ch);
if (temp_y == max_y)
{
temp_y = 0;
temp_x++;
break;
}
temp_y++;
}
}
}
temp_sector returns the value of the room's X/Y cord (the number for
displaying the charater) and the exits_table (bad name i know, i ripped
it out of my Defunct Socketmud) contains a table with every sector,
their charater, color, cant_move message, full name etc)
int find_sector_number(int x, int y, CHAR_DATA * ch)
{
int sector;
sector = ch->in_room->map[x][y];
return sector;
}
i *think* the problem is due to the buffer crashing out maybe?
I've tried forcing the look command to display only say max_x = 10/max_x
= 10 and it works, but if i force it to another value it also ends up
looping.
Any Ideas? Thanks =)
-Thri