--- deliantra/server/socket/request.C 2007/01/01 12:28:47 1.56 +++ deliantra/server/socket/request.C 2007/01/04 16:19:32 1.58 @@ -292,30 +292,30 @@ switch (dir) { - case '1': - dx = 0; - dy = -1; - map = get_map_from_coord (map, &dx, &dy); - map && (mapy -= map->height); - break; - case '2': - mapx += map->width; - dx = map->width; - dy = 0; - map = get_map_from_coord (map, &dx, &dy); - break; - case '3': - mapy += map->height; - dx = 0; - dy = map->height; - map = get_map_from_coord (map, &dx, &dy); - break; - case '4': - dx = -1; - dy = 0; - map = get_map_from_coord (map, &dx, &dy); - map && (mapx -= map->width); - break; + case '1': + dx = 0; + dy = -1; + map = map->xy_find (dx, dy); + map && (mapy -= map->height); + break; + case '2': + mapx += map->width; + dx = map->width; + dy = 0; + map = map->xy_find (dx, dy); + break; + case '3': + mapy += map->height; + dx = 0; + dy = map->height; + map = map->xy_find (dx, dy); + break; + case '4': + dx = -1; + dy = 0; + map = map->xy_find (dx, dy); + map && (mapx -= map->width); + break; } --max_distance; @@ -916,7 +916,6 @@ } /** client wants the map resent */ - void MapRedrawCmd (char *buf, int len, player *pl) { @@ -1591,6 +1590,9 @@ client &socket = *pl->contr->ns; + if (!pl->active ()) + return; + check_map_change (pl->contr); packet sl (socket.mapmode == Map1Cmd ? "map1" : "map1a");