diff options
| -rw-r--r-- | src/engine/server/server.c | 8 | ||||
| -rw-r--r-- | src/game/server/game_server.cpp | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/engine/server/server.c b/src/engine/server/server.c index ef4c9b04..319ac363 100644 --- a/src/engine/server/server.c +++ b/src/engine/server/server.c @@ -388,7 +388,13 @@ static int new_client_callback(int cid, void *user) static int del_client_callback(int cid, void *user) { - mods_client_drop(cid); + /* notify the mod about the drop */ + if(clients[cid].state == SRVCLIENT_STATE_READY || + clients[cid].state == SRVCLIENT_STATE_INGAME) + { + mods_client_drop(cid); + } + clients[cid].state = SRVCLIENT_STATE_EMPTY; clients[cid].name[0] = 0; clients[cid].clan[0] = 0; diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp index aaabdbc3..2d3d02b0 100644 --- a/src/game/server/game_server.cpp +++ b/src/game/server/game_server.cpp @@ -1601,6 +1601,7 @@ void mods_client_drop(int client_id) gameobj->on_player_death(&players[client_id], 0, -1); world->remove_entity(&players[client_id]); + world->core.players[client_id] = 0x0; players[client_id].client_id = -1; } |