Exemplo n.º 1
0
def list(script):
    plcount = len(script.server.connections)
    if plcount <= 0:
        return '[INFO] There are currently no players online.'
    plrs = []
    for player in script.server.players.values():
        plrs.append('%s (%s)' % (player.name, common.get_entity_type_level_str(player.entity_data)))
    return '[INFO] %s/%s players online: %s' % (plcount, config.max_players, ', '.join(plrs))
Exemplo n.º 2
0
 def on_join(self):
     if self.connection_state < 0:
         print '[WARNING] Connection of %s [%s] already has been invalidated before!' % (self.name, self.address.host)
         self.kick('Blocked join')
         return
     if self.connection_state != 2:
         print '[WARNING] Player %s [%s] tried to join in invalid state!' % (self.name, self.address.host)
         self.kick('Invalid state')
         return
     if self.check_name() is False:
         self.kick('Bad name')
         return
     # Call join script
     res = self.scripts.call('on_join').result
     if res is False:
         self.kick('Blocked join')
         print '[WARNING] Joining client %s blocked by script!' % self.address.host
         return
     if self.entity_data.level < self.server.config.base.join_level_min:
         print '[WARNING] Level of player %s [%s] is lower than minimum of %s' % (self.name, self.address.host, self.server.config.base.join_level_min)
         self.kick('Your level has to be at least %s' % self.server.config.base.join_level_min)
         return
     if self.entity_data.level > self.server.config.base.join_level_max:
         print '[WARNING] Level of player %s [%s] is higher than maximum of %s' % (self.name, self.address.host, self.server.config.base.join_level_max)
         self.kick('Your level has to be lower than %s' % self.server.config.base.join_level_max)
         return
     self.last_pos = self.position
     # we dont want cheaters being able joining the server
     if self.do_anticheat_actions():
         self.server.send_chat('[ANTICHEAT] Player %s (%s) has been kicked for cheating.' % (self.name,
                                                                                             get_entity_type_level_str(self.entity_data)))
         return
     print '>>> Player %s %s #%s [%s] joined the game' % (self.name,
                                                          get_entity_type_level_str(self.entity_data),
                                                          self.entity_id,
                                                          self.address.host)
     self.server.send_chat('>>> %s #%s (%s) joined the game' % (self.name,
                                                                self.entity_id,
                                                                get_entity_type_level_str(self.entity_data)))
     # connection successful -> continue
     for player in self.server.players.values():
         entity_packet.set_entity(player.entity_data, player.entity_id)
         self.send_packet(entity_packet)
     self.server.players[(self.entity_id,)] = self
     self.connection_state = 3
Exemplo n.º 3
0
 def check_items(self):
     server = self.server
     for slotindex in range(13):
         item = entity_data.equipment[slotindex]
         if not item or item.type == 0:
             continue
         if item.level < 0:
             self.kick('Illegal item')
             print '[INFO] Player %s #%s (%s) [%s] had item with level lover than 0' % (self.entity_data.name, self.entity_id, get_entity_type_level_str(self.entity_data), self.address.host)
             return False
         if item.material in self.server.config.base.forbid_item_possession:
             self.kick('Forbidden item')
             print '[INFO] Player %s #%s (%s) [%s] had forbidden item #%s' % (self.entity_data.name, self.entity_id, get_entity_type_level_str(self.entity_data), self.address.host, item.material)
             return False
     return True