Well I am using the following format:
If you send the following to the Game server:
0000000000 FF FF FF FF 54 ....T
FF FF FF FF = Packet FLAGS
T (54) = Server Info request Packet Type.
You should get the following packet:
0000000000 FF FF FF FF 49 04 5B 74 62 63 5D 20 43 6C 61 6E ....I.[tbc] Clan
0000000010 20 53 65 72 76 65 72 20 28 42 61 63 6B 75 70 20 Server (Backup
0000000020 53 65 72 76 65 72 29 00 64 65 5F 64 75 73 74 00 Server).de_dust.
0000000030 63 73 74 72 69 6B 65 00 43 6F 75 6E 74 65 72 2D cstrike.Counter-
0000000040 53 74 72 69 6B 65 3A 20 53 6F 75 72 63 65 00 00 Strike: Source..
0000000050 00 00 10 00 64 6C 01 00 ....dl..
FF FF FF FF = Packet FLAGS
I (49) = SOURCE Server Info response Packet Type (HL2).
m (6D) = Server Info response Packet Type (HL1).
Then if you send the following request:
0000000000 FF FF FF FF 70 6C 61 79 65 72 73 00 ....players.
FF FF FF FF = Packet FLAGS
players (6C 61 79 65 72 73) = Server Player request Packet Type.
00 <- NULL TERMINATOR
0000000000 FF FF FF FF 44 01 00 54 68 65 44 75 64 65 00 00 ....D..TheDude..
0000000010 00 00 00 EC D1 C8 42 ......B
FF FF FF FF = Packet FLAGS
players (44) = Server Player response Packet Type.
00 <- NULL TERMINATOR
---
The following format is correct as far as I know:
"T" (SOURCE Server Info Request)
Server responds with the following packet:
(int32) -1 (FF FF FF FF)
(byte) ASCII 'I' (info response, S??_INFO)
(byte) protocol version
(string) name of the host / server
(string) name of the map
(string) game directory (i.e. cstrike)
(string) Game description (e.g. "Counter-Strike: Source")
(short) unknown1 variable (Unsure what this is for)
(byte) active client count
(byte) maximum clients allowed
(byte) active bot count
(byte) type of server == 'l' for listen or 'd' for dedicated
(byte) os of server == 'w' for win32 or 'l' for linux
(byte) password on server == 1 or yes, 0, for no
(byte) server is a secure server == 1 for yes, 0 for no
"players"
Server responds with the following packet:
(int32) -1 (FF FF FF FF)
(byte) ASCII 'D' (players response, S2A_PLAYER)
(byte) active client count
for each active client
(byte) client number / index
(string) player name
(int32) client's frag total
(float32) client's total time in-game
Note: Most is not all string variables are NULL TERMINATED.
Hope this all helps :)
If you require more info then just let me know :)
Paul Kirby
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Wed 06 October 2004 06:30
To: [EMAIL PROTECTED]
Subject: [hlds_apps] Source query protocol
I'm looking for information regarding the proper data needed to query a CS:
Source server so I can display information such as total players vs. players
online, server name and IP address, current map, etc.
I know others have successfully done this, but I havent been able to find
any information on how it was done exactly and what protocol was used. Thx
in advance for any help.
- K2
_______________________________________________
hlds_apps mailing list
[EMAIL PROTECTED]
http://list.valvesoftware.com/mailman/listinfo/hlds_apps
_______________________________________________
hlds_apps mailing list
[EMAIL PROTECTED]
http://list.valvesoftware.com/mailman/listinfo/hlds_apps