Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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