def css_get_info_hl1(buf, pos): info = HL1Overview(teamAname="Terrorists", teamBname="Counter Terrorists") info.game_ip, pos = query.parse_str(buf, pos) info.hostname, pos = query.parse_str(buf, pos) info.map, pos = query.parse_str(buf, pos) info.game_dir, pos = query.parse_str(buf, pos) info.type, pos = query.parse_str(buf, pos) info.curplayers, pos = query.parse_num(buf, pos, bytes=1) info.maxplayers, pos = query.parse_num(buf, pos, bytes=1) version, pos = query.parse_num(buf, pos, bytes=1) info.dedicated, pos = buf[pos], pos + 1 info.os, pos = buf[pos], pos + 1 info.password, pos = query.parse_num(buf, pos, bytes=1) info.is_mod, pos = query.parse_num(buf, pos, bytes=1) info.mod_urlinfo, pos = query.parse_str(buf, pos) info.mod_urldl, pos = query.parse_str(buf, pos) fluff, pos = query.parse_str(buf, pos) info.mod_vers, pos = query.parse_num(buf, pos, bytes=4) info.mod_size, pos = query.parse_num(buf, pos, bytes=4) info.mod_svonly, pos = query.parse_num(buf, pos, bytes=1) info.mod_cldll, pos = query.parse_num(buf, pos, bytes=1) info.secure, pos = query.parse_num(buf, pos, bytes=1) info.numbots, pos = query.parse_num(buf, pos, bytes=1) info.version = str(version) return info
def css_get_players(sock, chal=None): if chal == None: chal = css_get_challenge(sock) ms1 = fragmon.get_millis() sock.send(GET_PLAYERS + chal) sinfo = css_recv_multi_packet(sock) ms2 = fragmon.get_millis() ping = ms2 - ms1 header = sinfo[4] assert header == "D", "bad header for get players" player_count = ord(sinfo[5]) pos = 6 players = [] while pos < len(sinfo): plr = Player() plr.id, pos = query.parse_num(sinfo, pos, bytes=1) plr.name, pos = query.parse_str(sinfo, pos) plr.score, pos = query.parse_num(sinfo, pos, bytes=4) pos += 4 # XXX: player time not included players.append(plr) return ping, players, chal
def css_get_info_source(buf, pos): info = HL2Overview(teamAname="Terrorists", teamBname="Counter Terrorists") info.hostname, pos = query.parse_str(buf, pos) info.map, pos = query.parse_str(buf, pos) info.game_dir, pos = query.parse_str(buf, pos) info.type, pos = query.parse_str(buf, pos) info.appid, pos = query.parse_num(buf, pos, bytes=2) info.curplayers, pos = query.parse_num(buf, pos, bytes=1) info.maxplayers, pos = query.parse_num(buf, pos, bytes=1) info.numbots, pos = query.parse_num(buf, pos, bytes=1) info.dedicated, pos = buf[pos], pos + 1 info.os, pos = buf[pos], pos + 1 info.password, pos = query.parse_num(buf, pos, bytes=1) info.secure, pos = query.parse_num(buf, pos, bytes=1) info.version, pos = query.parse_str(buf, pos) return info
def css_get_rules(sock, chal=None): if chal == None: chal = css_get_challenge(sock) ms1 = fragmon.get_millis() sock.send(GET_RULES + chal) sinfo = css_recv_multi_packet(sock) ms2 = fragmon.get_millis() ping = ms2 - ms1 header = sinfo[4] assert header == "E", "bad header for get rules" pos = 5 rules_count, pos = query.parse_num(sinfo, pos, bytes=2) rules = [] while pos < len(sinfo): key, pos = query.parse_str(sinfo, pos) value, pos = query.parse_str(sinfo, pos) rules.append(Rule(key, value)) return ping, rules, chal