Jaggl Posted June 12, 2008 Share Posted June 12, 2008 Hi TCadmin Guys, would it be possible for you to add FFOW to the Supportet Games? Here is the Readme from the Query Test. ------------------------------------ Frontlines: Fuel of War Query Protocol Guide Guide Version: 3 April 17th, 2008 ------------------------------------ -------------------- Port Configuration -------------------- Default query port is 5478 Optional, Customize query port on the server via command line argument: QueryPort=5478 Optional, Customize query port on the server via .ini file settings: DefaultEngine.ini [Engine.QueryProtocol] QueryPort=5478 ListenBindIP=0.0.0.0 -------------------- Example Tool Usage -------------------- Binaries\Tools\FFOW_QueryProtocolTest\ Modify FFOW_QueryProtocolTest.bat with a text editor Usage: FFOW_QueryProtocolTest.exe [iP:Port] [retries] [timeout in seconds] [optional argument -vertical] Example: FFOW_QueryProtocolTest.exe 127.0.0.1:5478 2 3 Append -vertical for vertical text output instead of the default horizontal. FFOW_QueryProtocolTest.bat is configured by default to ping the local host (127.0.0.1) at the default UDP query port 5478 It will then open the output file FFOW_QueryProtocolTest.Log with notepad -------------------- Source Code -------------------- 1) Send these 8 characters via UDP to the server's query port: "ÿÿÿÿFLSQ" 2) Server will send back a UDP packet as a response, details interpreting the response and other methods of query below: Data types: byte 8bit char short 16bit integer long 32bit int float 32bit float string series of chars null terminated with 0x00 Converting from network to host byte order: short Value16bit = ntohs( *(short *)&PacketBuffer ); long Value32bit = ntohl( *(long *)&PacketBuffer ); float ValueFloat = *(float *)&Value32Bit; // use ntohl() first to swap the byte order, then cast result to a float Constants: enum ServerQueryTypeEnum { SQT_ChallengeReply=0x41, // Example packet: FF FF FF FF 41 32 42 59 45 SQT_PlayerListReply=0x44, // Example packet: FF FF FF FE ... SQT_RuleListReply=0x45, // Example packet: FF FF FF FE ... SQT_InfoReply=0x49, // Example packet: FF FF FF FF ... SQT_InfoRequest=0x54, // Example packet: FF FF FF FF 46 4C 53 51 SQT_PlayerListRequest=0x55, // Example packet: FF FF FF FF 55 32 42 59 45 SQT_RuleListRequest=0x56, // Example packet: FF FF FF FF 56 32 42 59 45 SQT_ChallengeRequest=0x57, // Example packet: FF FF FF FF 57 SQT_PingRequest=0x69, // Example packet: FF FF FF FF 69 00 00 00 00 SQT_PingReply=0x6A // Example packet: FF FF FF FF 6A 00 00 00 00 }; ----------------------------------------------- IMPORTANT! Packets with header -2 are part of a larger packet that had to be split over multiple packets! Split packets start with this 12 byte header: Header Long -2 (0xFFFFFFFE) RequestID Long For grouping packets together belonging to same response PacketNumber Byte 0-255 (zero is the first packet number) NumPackets Byte 1-255 SizeOfPacketSplits Short 1248 is default Combine a split packet as if it was one large packet, packets are split at the byte level First packet: #12 bytes for packet split header #packet data A Second packet: #12 bytes for packet split header #packet data B Combine to: #packet data A (will start with -1, ReplyType, ...) #packet data B (does not start with -1, continues exactly on the byte data A left off at) Then parse the full packet using standard information below. ----------------------------------------------- ----------------------------------------------- ServerInfo Request: Send these 8 hex bytes: FF FF FF FF 46 4C 53 51 "ÿÿÿÿFLSQ" ----------------------------------------------- ServerInfo Reply: Header Long -1 (0xFFFFFFFF) ReplyType Byte 0x49 NetVersion Byte 0x02 ServerName String "Name of Server Here" MapName String "FL-Street" ModName String "FOW" GameMode String "FL" GameDescription String "Frontlines: Fuel of War" GameVersion String "1.0.3" GamePort Short 5476 NumPlayers Byte 53 PlayersMax Byte 64 Dedicated Byte 'd' (dedicated), 'l' (listen), 'p' (broadcast) OperatingSystem Byte 'w' (windows), 'l' (linux) Password Byte 0 AntiCheat Byte 0 AverageFrameMs Byte CPU load, 16 = 50% load (30 FPS capped), 33 = 100% load (30 FPS), 66 = 200% load (15 FPS) Round Byte 2 RoundsMax Byte 3 RoundSecondsLeft Short 4646, Current round time in seconds counting down or up depending on game settings ----------------------------------------------- Ping Request: (9 bytes) Header Long -1 (0xFFFFFFFF) ReplyType Byte 0x69 PacketID Long Client Assigned Unique Number for this request ----------------------------------------------- Ping Reply: (9 bytes) Header Long -1 (0xFFFFFFFF) ReplyType Byte 0x6A PacketID Long Client Assigned Unique Number for this request ----------------------------------------------- Challenge Request: (5 bytes) Header Long -1 (0xFFFFFFFF) RequestType Byte 0x57 ----------------------------------------------- Challenge Reply: (9 bytes) Header Long -1 (0xFFFFFFFF) ReplyType Byte 0x57 Challenge Long Use this challenge number in PlayerList/RuleList requests ----------------------------------------------- PlayerList Request: (9 bytes) Header Long -1 (0xFFFFFFFF) RequestType Byte 0x55 Challenge Long Supplied from challenge response query ----------------------------------------------- PlayerList Reply (can be split accross multiple packets): Header Long -1 (0xFFFFFFFF) ReplyType Byte 0x44 NumPlayersTotal Byte 0-255 ... For each player: { Index Byte Abitrary index for this entry during this reply PlayerName String Score Long TimeConnected Float in seconds Ping Short in miliseconds ProfileID Long 234092 (online profile ID) Team Byte 0,1 } ----------------------------------------------- RuleList Request: Header Long -1 (0xFFFFFFFF) RequestType Byte 0x56 Challenge Long Supplied from challenge response query ----------------------------------------------- RuleList Reply (can be split accross multiple packets): Header Long -1 (0xFFFFFFFF) ReplyType Byte 0x45 NumRulesTotal Short 0-65535 ... For each rule: { RuleName String "FriendlyFire" RuleValue String "0" } Link to comment Share on other sites More sharing options...
JasonF Posted June 12, 2008 Share Posted June 12, 2008 That I understand it, it has to have all features working in TCAdmin to be considered a supported game. Since Luis is busy finishing v2, he has not had time to add any new queries to the panel. v2 will utilize Qstat which does support FFOW. Link to comment Share on other sites More sharing options...
HIS-MOTHER Posted June 12, 2008 Share Posted June 12, 2008 Unfortunately FFOW is practically dead. Althought the leak of some upcoming V2 features is a tasty morsel. TY Jason.. Link to comment Share on other sites More sharing options...
JasonF Posted June 12, 2008 Share Posted June 12, 2008 I am sure Luis will kill me for that one. I saw him put that in a support ticket once and I kept that piece of info in the back of my head. Link to comment Share on other sites More sharing options...
swish Posted June 12, 2008 Share Posted June 12, 2008 YES! v2 info leaked!!! Keep em comin!! lol Link to comment Share on other sites More sharing options...
BLAST3R Posted August 30, 2008 Share Posted August 30, 2008 Maybe you can leak some more drips now you're dead anyways.. Link to comment Share on other sites More sharing options...
Johnny5_Hull Posted September 4, 2008 Share Posted September 4, 2008 Indeed....more drips greatly appreciated The damage is already done as they say Link to comment Share on other sites More sharing options...
Jaggl Posted October 4, 2008 Author Share Posted October 4, 2008 will FFOW be included into the TCadmin System? I mean the Query Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.