def datagramReceived(self, data, host): self.server.ping = (time.time() - self.sent_time) * 1000 p = BSReader(data) p.read_char(10) self.server.num_players = p.read_int() attrs = p.read_int(p.read_int()) self.server.protocol, self.server.game_mode, self.server.mins_left, self.server.max_players, self.server.master_mode = attrs self.server.map_name = p.read_string() self.server.description = p.read_string() self.d.callback(self.server)
def datagramReceived(self, data, host): p = BSReader(data) if p.read_char(6) != [0, 1, -1, -1, 104, 0]: self.d.errback(ValueError('Invalid packet received.')) return v = p.read_char() if v == -10: self.n_players = len(data) - p.position elif v == -11: f = Player(self.server) f.client_num, f.ping = p.read_int(2) f.name, f.team = p.read_string(2) f.frags, f.score, f.deaths, f.tks, f.accuracy = p.read_int(5) f.health, f.armor, f.weapon, f.priv, f.state = p.read_int(5) f._ip = p.read_uchar(3) self.server.players.append(f) if len(self.server.players) == self.n_players: self.d.callback(self.server.players)