Vítejte na stránkách Asgard's serveru !, přehled novinek





V tomto článku se podíváme na HL1 server query protocol. Pro začátek bych rád všechny seznámil s tím, o čem článek vlastně je formou otázek.

Co je vlastně HL1 server query protocol ?
Je slušností na otázku odpovědět. Servery jsou slušně vychovány a tak vám na vaše otázky o tom, co se na nich děje, rády odpoví. Musíte ale vědět, jak se správně zeptat. Právě server query protocol popisuje, jakou strukturu má otázka a jakou odpověď. Pokud bychom to měli převést na reálnou situaci v životě, tak můžeme přejít k armádě. Velitel zavelí „Vojín, Novák !“ a Novák odpoví „Ano, pane !“. To by se až na určité výjimky ( stejně tak u serveru může nastat výjimka a nikdo neodpoví ) mělo stát vždy. Předem víme, že dotaz musí obsahovat hodnost a za ní jméno vojáka. Odpověď je pak vždy stejná.


Komu je článek určen ?
Samozřejmě každému, kdo se chce dozvědět nové věci. Nicméně primárně je určen lidem, kteří se zajímají o programování nebo spíše již programují a chtěli by zkusit získat informace z CS serverů. V PHP lze implementovat zobrazení stavu serverů ( počet hráčů, mapa atd. ), Java a C++ spíše programy typu HLSW. Článek se přímo nevztahuje k žádnému programovacímu jazyku, protože je čistě na programátorovi, v čem a jak bude komunikaci mezi serverem a clientem implementovat. Nicméně ke konci se možná objeví příklady implementace, ale pouze v Javě.


Jaké znalosti jsou potřeba k využití článku ?

Je určitě třeba mít znalosti o sítích a základní znalost programovacího jazyku, ve kterém chcete aplikaci psát. Co se sítí týče v Javě určitě doporučuji mít přečteno Custom Networking.


Proč se v textu objevují anglické výrazy ?

Často jsem v článku použil pouze anglický výraz. Je to hlavně z toho důvodu, že často jsou tato slova daleko více zažitá v angličtině a jejich překladem vznikají nedorozumnění. Jistě souhlasíte, že překládat engine jako motor není opravdu to pravé.


Jak a proč vznikl článek ?

Článek je částečným přepisem informací z SDK HL 1 ( Software Development Kit ) a SDK Source Docs – Programming – Networking – Server Queries. Zdálo se mi, že dokumentace není moc výstižná a spousta věcí je nejasných. V SDK HL1 chyběly příklady a v SDK Source Docs nebyly všude. Také v českém jazyce neexistuje žádný článek, který by se server queries HL enginu zabýval. Rozhodl jsem se tedy popsat všechna pravidla a u novějšího server query protocol uvést všechny queries i s příklady.


Informace o serverech se získávají pomocí UDP protokolu. Je dána sada příkazů, na které vám server odpoví. U HL1 serverů je situace mírně komplikovaná, protože se v roce 2005 při updatu HL1 enginu query protocol mírně změnil ( viz. newska ). Použity budou překlady textů z Valve Developer Community a SDK HL1. V příkladech jsou použity pipes jako oddělovače ( nemají logický význam "nebo" ).


Použité datové typy v datagramech


Datový typ

Délka

byte

8-bits

short

16-bits

long

32-bits

float

32-bits

integer

32-bits

string

variabilní délka ukončená bytem 0x00


Protocol

Použity jsou pakety o velikosti 1400 bytes. Jestliže se data požadavku nebo odpovědi nevejdou do jednoho paketu, jsou data rozdělena do více paketů a přidána následující hlavička.


Data

Typ

Komentář

Type

long

Číslo je -2 (0xFFFFFFFE), což indikuje rozdělení dat do více paketů.

Request ID

long

Serve přiřadí každému paketu unikátní ID

Packet Number

byte/short

Spodní čtyři bits reprezentují číslo paketu (2 to 15) a vrchní čtyři bits reprezentují současný packet začínající 0.

Size of Splits

short

Význam pouze u Source Engine.


Old server queries

Tento protokol se u serverů používal dříve. Po updatu v roce 2005 se začal používat nový protokol. Starý je však stále na některých serverech funkční popřípadě ho lze zapnout pomocí proměnné sv_enableoldqueries 1 . Všechny servery s tímto protokolem odpovídají datagramy, které jsou složeny ze tří částí. Všechny stringy v datagramech jsou ukončeny bytem s hodnotou 0x00. Na server je potřeba poslat datagram, který začíná čtyřmi bytes s hodnotou 0xFF a query – string, který je samozřejmě převeden na bytes, zakončený byte s hodnotou 0x00. Server pak odpovídá datagramem, který taky začíná 4 bytes s hodnotou 0xFF. Každý datagram, který přijmete má přesně danou strukturu, ta je popsána níže v tabulkách.


Obsah request datagramu


Data

Typ

Komentář

beginning

4-bytes

4 bytes každý s hodnotou -1 (0xFF)

query

string

Jeden z query stringů uvedený níže ukončený pomocí byte s hodnotou 0x00



Query - strings

Název

Query – strings

Komentář

A2A_ACK

''ping''

Slouží pouze k získání odezvy serveru.

S2A_INFO

''info''

Požádá o základní infomace o serveru ( název, mapa, počet připojených atd. ).

S2A_PLAYER

''players''

Požádá o informace o hráčí ( nicknames, kills, time connected ).

S2A_RULES

''rules''

Požádá o informace o pravidlech serveru ( sv_ , mp_ a další proměnné ).

 

To je zatím vše. V dalším článku se podíváme na obsah response datagramů u old server queries.

Články byly vytvořeny pouze pro tento portál a všechny informace v nich byly z dostupných zdrojů. Informace obsažené v tomto článku lze volně rozšiřovat. Kopírování celého článku nebo jeho částí bez vědomí autora je zákázáno.


» Jít zpět








Counter Strike 1.6 servery

Asgard's server public 1.6
cs.asgards-server.net:27015
protokol: 47,48/NS

Asgard's server AWM 1.6
cs.asgards-server.net:27016
protokol: 47,48/NS

Asgard's server DM 1.6
cs.asgards-server.net:27017
protokol: 47,48/NS

Asgard's server W3 1.6
cs.asgards-server.net:27018
protokol: 47,48/NS

Asgard's server public 1.6
cs.asgards-server.net:27019
protokol: 47,48/NS

Kontakty

deadly_hawk
204-703-587
deadlyhawk@a-fw.net
- hlavní admin
- správa webu a AGC
- technický správce serveru
- dohled na HW a SW serveru

Nightly_Falcon
274-916-654
nightlyfalcon@a-fw.net
- hlavní admin
- administrace CS a VT serverů
- dohled nad financemi
- rešení plateb za servery
- dotazy na pronájem serverů

Kyle_Katarn
174-854-843
kylekatarn@a-fw.net
- admin CS serverů
- cheathunter

J.C. Panda
179-509-187
jcpanda@a-fw.net
- admin CS serverů
- cheathunter

Hardware serveru Lara

MotherBoard : ASUS K8N-DL
CPU: 4x AMD Opteron 64-bit
Memory: 6 GB, 400 Mhz, ECC
HDD: 500 GB SATA II RAID 5
Radič: 9650SE-4LPML
Case: 2U SC822T-550LP
Connect: 100 Mb/s

Informace o firmě

: 74233866
Číslo účtu : 2020500052
Kód banky: 5500
Nejsme plátci DPH

Spolupracujeme s

BlackSheeps