예제 #1
0
 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
예제 #2
0
def on_connect(client):
    """
    Sample on_connect function.
    Handles new connections.
    """
    client.request_naws() #. get Window Size: client.columns, client.rows 
    print "++ Opened connection to %s" % client.addrport()
    broadcast('Unkown try to enter the world from %s.\n' % client.addrport() )
    status.LOBBY[client] = Guest(client)
예제 #3
0
 def register(self):
     """docstring for register"""
     character = Character(self.name)
     character.set_password(self.password)
     character.set_location(status.SERVER_CONFIG.recall_xy, status.SERVER_CONFIG.recall_map_name)
     #. become player
     player = self.promote(character)
     player.set_role(ROLE_USER)
     #. save data
     status.CHARACTER_LOADER.dump(character)
     broadcast('A new hero enter the chaos, welcome %s!\n' % self.name )
     print ('** Client %s register success with name: %s.' % (self.client.addrport(), self.name))
예제 #4
0
def on_disconnect(client):
    """
    Sample on_disconnect function.
    Handles lost connections.
    """
    print "-- Lost connection to %s" % client.addrport()
    #. save user data
    if status._PLAYERS.has_key(client):
        player = status._PLAYERS[client]
        status.CHARACTER_LOADER.dump(player.character)
        broadcast('%s leaves the world.\n' % player.character.get_name())
    clean_status(client)