+void do_logout(char *u)
+{
+ aClient *user;
+ if (!(user = find(u)))
+ {
+ notice(s_GameServ, u, "Fatal error. Cannot find aClient. "\
+ "Buf: %s LOGOUT", u);
+ log("Could not find aClient Buf: %s LOGOUT",
+ u);
+ }
+ else if (!is_playing(user))
+ {
+ notice(s_GameServ, u, "You're not logged in!");
+ }
+ else
+ {
+ notice(s_GameServ, u, "You have left the fields. You have lived to kill another day!");
+ logout(user);
+ }
+}
+void logout(aClient *user)
+{
+ if (is_playing(user))
+ {
+ ListNode<aClient> *it;
+ aClient *temp;
+ it = players.Find(user);
+ if (!it)
+ {
+ notice(s_GameServ, user->getNick(), "Fatal error. Contact "\
+ "%S Admin. Cannot find you in the players list.");
+ log("Error on logout(). Can't find %s in the players list",
+ #ifdef P10
+ user->getRealNick()
+ #else
+ user->getNick()
+ #endif
+ );
+ return;
+ }
+
+ temp = new aClient;
+ temp->stats = new Player;
+ temp->stats->setData(user->stats);
+ user->stats->user = NULL;
+ delete user->stats;
+ user->stats = NULL;
+ temp->stats->user = NULL;
+ #ifdef P10
+ temp->setRealNick("!NULL!");
+ #endif
+ temp->setNick("!NULL!");
+
+ it->setNewPtr(temp);
+ #ifdef DEBUGMODE
+ log("Logged out player %s",
+ #ifdef P10
+ user->getRealNick()
+ #else
+ user->getNick()
+ #endif
+ );
+ #endif
+ }
+}