def auth(self): """auth the client.""" if self.client in status.LOBBY: character = self.load_character(self.name) if character: if character.get_password() == self.password: origin_player = None #. check current in game? if self.player_was_login(self.name): self.client.send('\nThis name was login, kick the user!\n') origin_player = self.get_origin_player() character = copy.deepcopy(origin_player.character) #. copy the character object, because the origin character object wiil be drop #. send notice to origin player if origin_player: origin_player.send("Somebody login from %s, see you again!\n" % (self.client.addrport()) ) #. drop origin Player SCHEDULER.add(.2, origin_player.deactivate) #. become player self.promote(character) broadcast('%s enter the world.\n' % self.name ) print ('** Client %s login success with name: %s.' % (self.client.addrport(), self.name)) return True else: print ('!! Client %s login fail with name: %s.' % (self.client.addrport(), self.client) ) return False return False
def check_retry(self): """check if reach to RETRY_LIMIT""" if not self.quit and self.retry >= RETRY_LIMIT: self.quit = True self.client.send("Retry too many times, bye!\n") print "!! Client reach to the login limit: %s, kicking! " % (RETRY_LIMIT) SCHEDULER.add(.2, self.client.deactivate)
def quit(player, args): """ exit the game. useage: quit """ player.send('\nSee you next time ! \n') SCHEDULER.add(.2, player.deactivate)
def kick_idle(): """ Looks for idle clients and disconnects them by setting active to False. """ #. TODO: clean reconnecnt sessions for player in status.PLAYERS.values(): if player.idle() > status.IDLE_TIMEOUT: print('-- Kicking idle lobby client from %s' % player.addrport()) player.send('Idle timeout, see you next time!\n') SCHEDULER.add(.2, player.deactivate)