void logout(aClient *user)
{
- if (is_playing(user))
+ if (user != NULL)
{
- list<Player*>::iterator iter;
- unsigned long hv = iHASH((unsigned char *) user->stats->getName().c_str());
- iter = find(players[hv].begin(), players[hv].end(), user->stats);
-
- if (iter == players[hv].end())
- {
- notice(s_GameServ, user->getNick(), "Fatal error. Contact "\
- "%S Admin. Cannot find you in the players list. This should NEVER happen");
- log("Error on logout(). Can't find %s in the players list",
+ if (user->stats != NULL)
+ {
+
+ list<Player*>::iterator iter;
+ unsigned long hv = iHASH((unsigned char *) user->stats->getName().c_str());
+ iter = find(players[hv].begin(), players[hv].end(), user->stats);
+
+ if (iter == players[hv].end())
+ {
+ notice(s_GameServ, user->getNick(), "Fatal error. Contact "\
+ "%S Admin. Cannot find you in the players list. This should NEVER happen");
+ log("Error on logout(). Can't find %s in the players list",
#ifdef P10
- user->getRealNick()
+ user->getRealNick()
#else
- user->getNick()
+ user->getNick()
#endif
- );
- return;
- }
- user->stats->delMonster();
- user->stats->delMaster();
- user->stats->delBattle();
- clearDragonFight(user->stats);
- clearYourTurn(user->stats);
- clearPlaying(user);
-
- user->stats->setClient(NULL);
- user->stats = NULL;
-
- if (player_fight(user))
- {
- clearYourTurn(user->stats->getBattle()->stats);
- user->stats->getBattle()->stats->delBattle();
- }
-
+ );
+ user->stats = NULL;
+
+ return;
+ }
+ user->stats->delMonster();
+ user->stats->delMaster();
+ user->stats->delBattle();
+ clearDragonFight(user->stats);
+ clearYourTurn(user->stats);
+ clearPlaying(user);
+
+ user->stats->setClient(NULL);
+
+
+ if (player_fight(user))
+ {
+ clearYourTurn(user->stats->getBattle()->stats);
+ user->stats->getBattle()->stats->delBattle();
+ }
+
#ifdef DEBUGMODE
- log("Logged out player %s",
+ log("Logged out player %s",
#ifdef P10
- user->getRealNick()
+ user->getRealNick()
#else
- user->getNick()
+ user->getNick()
#endif
- );
+ );
#endif
- }
-
+ }
+ }
+ if (user)
+ user->stats = NULL;
}
void do_register(char *u)