--- deliantra/server/socket/request.C 2006/12/20 01:19:11 1.47 +++ deliantra/server/socket/request.C 2006/12/21 06:12:37 1.49 @@ -571,7 +571,10 @@ void AddMeCmd (char *buf, int len, client * ns) { - if (ns->status != Ns_Add || add_player (ns)) + if (INVOKE_CLIENT (ADDME, ns)) + return; + + if (ns->pl || add_player (ns)) ns->send_packet ("addme_failed"); else ns->send_packet ("addme_success"); @@ -815,11 +818,16 @@ pl->socket->send_packet (sl); } - /** This is a reply to a previous query. */ void -ReplyCmd (char *buf, int len, player *pl) +ReplyCmd (char *buf, int len, client *ns) { + if (!ns->pl) + return; //TODO: depends on the exact reply we are after + //TODO: but right now, we always have a ns->pl + + player *pl = ns->pl; + /* This is to synthesize how the data would be stored if it * was normally entered. A bit of a hack, and should be cleaned up * once all the X11 code is removed from the server. @@ -850,7 +858,6 @@ break; case ST_CHANGE_CLASS: - key_change_class (pl->ob, buf[0]); break; @@ -1672,7 +1679,6 @@ ax = 0; for (x = pl->x - socket.mapx / 2; x < max_x; x++, ax++) { - emask = mask = (ax & 0x3f) << 10 | (ay & 0x3f) << 4; /* If this space is out of the normal viewable area, we only check @@ -2013,28 +2019,24 @@ memset (&newmap, 0, sizeof (struct Map)); for (j = (pl->y - pl->contr->socket->mapy / 2); j < (pl->y + (pl->contr->socket->mapy + 1) / 2); j++) - { - for (i = (pl->x - pl->contr->socket->mapx / 2); i < (pl->x + (pl->contr->socket->mapx + 1) / 2); i++) - { - ax = i; - ay = j; - m = pm; - mflags = get_map_flags (m, &m, ax, ay, &ax, &ay); + for (i = (pl->x - pl->contr->socket->mapx / 2); i < (pl->x + (pl->contr->socket->mapx + 1) / 2); i++) + { + ax = i; + ay = j; + m = pm; + mflags = get_map_flags (m, &m, ax, ay, &ax, &ay); - if (mflags & P_OUT_OF_MAP) - continue; + if (mflags & P_OUT_OF_MAP) + continue; - if (mflags & P_NEED_UPDATE) - update_position (m, ax, ay); + /* If a map is visible to the player, we don't want to swap it out + * just to reload it. This should really call something like + * swap_map, but this is much more efficient and 'good enough' + */ + if (mflags & P_NEW_MAP) + m->timeout = 50; + } - /* If a map is visible to the player, we don't want to swap it out - * just to reload it. This should really call something like - * swap_map, but this is much more efficient and 'good enough' - */ - if (mflags & P_NEW_MAP) - m->timeout = 50; - } - } /* do LOS after calls to update_position */ if (pl->contr->do_los) {