Toon posts:

[VB] Info van GameServers.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben aan het proberen Informatie van Gameservers te halen. Zoals bijvoorbeeld de Map die gespeeld word en de naam van de server en de namen +frags van de mensen die aan het spelen zijn. nu heb ik een website gevonden met uitleg maar ik zit nog steeds met een probleempje.Bij Cs (half-life dus)
(de website met informatie is http://www.kquery.com/texts/server_query.txt)

Het Probleem
-Het lukt me wel om servername en aantal spelers enzo te krijgen. maar ik kan wel "players" sturen. maar dan krijg ik dit terug (dit is Demon Nl (Cs)):
Afbeeldingslocatie: http://ra2modding.virtualave.net/PlayersInfo.jpg

De namen hierin zijn nog wel te herkennen, ze staan tussen die blokjes maar waar staan de frags :?

Verwijderd

Waarom het wiel opnieuw uitvinden? gebruik gewoon qstat?

Verwijderd

Topicstarter
Op zondag 07 juli 2002 14:55 schreef Yarvieh het volgende:
Waarom het wiel opnieuw uitvinden? gebruik gewoon qstat?
ik heb de rest ook al allemaal in vb en ik vind het wat netter als ik niet elke keer een progje hoef aan te roepen en dan een log uitlezen ofzo. Bovendien is het ook nog eens erg leerzaam :)

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 01-09 08:15

LauPro

Prof Mierenneuke®

Op zondag 07 juli 2002 15:09 schreef LAuWe het volgende:
Bovendien is het ook nog eens erg leerzaam :)
Helemaal als je het hier vraagt |:( (nfi)

Maar zoiets je al ontdenkt hebt (neem ik aan) zijn die 'vierkantjes' enters. Als je dan dat allemaal gaat scheiden en netjes onder elkaar zet dan kan je er voor je zelf wel iets uitvinden dat het aantal spelers telt (ja elk 'vierklantje' een speler ofzo)

Alleen voor de naam moet je denk ik een apart commando versturen! Succes

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Verwijderd

Topicstarter
Op zondag 07 juli 2002 15:17 schreef LauPro het volgende:

[..]

Helemaal als je het hier vraagt |:( (nfi)

Maar zoiets je al ontdenkt hebt (neem ik aan) zijn die 'vierkantjes' enters. Als je dan dat allemaal gaat scheiden en netjes onder elkaar zet dan kan je er voor je zelf wel iets uitvinden dat het aantal spelers telt (ja elk 'vierklantje' een speler ofzo)

Alleen voor de naam moet je denk ik een apart commando versturen! Succes
ja, dat snapte ik al. en ik kan die namen er ook wel uit krijgen, maar er zou ook ergens total frags van elke player moeten staan, en die kan ik hier niet uithalen :?

(en waarom is het niet leerzaam als ik het hier zou vragen? )

Verwijderd

Bij de URL die je genoemd staat, staat toch precies waar de data uit bestaat?
ÿÿÿÿplayers
(int32)-1
(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

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Zeer waarschijnlijk wordt het gewoon binair overgestuurd. Dit betekend dat bv het aantal frags niet als text (een byte per cijfer) maar gewoon als getal wordt overgestuurd. Hierdoor krijg je idd erg vreemde tekens aangezien het aantal frags lang niet altijd overeenkomt met een mooi karakter in de ascci tabel.

edit:
Zie idd hierboven :). Nog een handige tip. Een string wordt meestal afgesloten met een 0-byte.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Op zondag 07 juli 2002 15:25 schreef Janoz het volgende:
Zeer waarschijnlijk wordt het gewoon binair overgestuurd. Dit betekend dat bv het aantal frags niet als text (een byte per cijfer) maar gewoon als getal wordt overgestuurd. Hierdoor krijg je idd erg vreemde tekens aangezien het aantal frags lang niet altijd overeenkomt met een mooi karakter in de ascci tabel.

edit:
Zie idd hierboven :). Nog een handige tip. Een string wordt meestal afgesloten met een 0-byte.
Precies, in VB is een Integer trouwens 16-bit. Je moet dus een Long gebruiken voor t aantal frags.

Verwijderd

Naar aanleiding van dit topic ben ik ook een beetje gaan prutsen met BCB5. Ik heb een NMUDP component toegevoegd om udp packets te sturen en ontvangen. Als ik nou het commando 'ÿÿÿÿping' stuur naar een CS server krijg ik netjes 'ÿÿÿÿj' terug van de server. Maar als ik 'ÿÿÿÿrules', 'ÿÿÿÿplayers' of 'ÿÿÿÿdetails' stuur krijg ik dus helemaal nix terug van de server :'(
Iemand enig idee hoe dit kan?

Mn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TFormHLstats::NMUDPDataReceived(TComponent *Sender,
    int NumberBytes, AnsiString FromIP, int Port)
{
   ListBoxReply->Items->Add(FromIP + ":" + Port + " (" + NumberBytes + ")");

   if(NumberBytes < 256)
   {
    char buffer[256];
    int j;
    NMUDP->ReadBuffer(buffer, 256, j);
    buffer[j] = 0;
    ListBoxReply->Items->Add(AnsiString(buffer));
   }
   else
   {
    ListBoxReply->Items->Add("Buffer too small for data");
   }
}

Verwijderd

hier bestaan al meerdere PHP scriptjes voor,

deze connecten via udp met een IP en vragen zo info op..

Verwijderd

Topicstarter
Op maandag 08 juli 2002 01:02 schreef xerix het volgende:
Naar aanleiding van dit topic ben ik ook een beetje gaan prutsen met BCB5. Ik heb een NMUDP component toegevoegd om udp packets te sturen en ontvangen. Als ik nou het commando 'ÿÿÿÿping' stuur naar een CS server krijg ik netjes 'ÿÿÿÿj' terug van de server. Maar als ik 'ÿÿÿÿrules', 'ÿÿÿÿplayers' of 'ÿÿÿÿdetails' stuur krijg ik dus helemaal nix terug van de server :'(
Iemand enig idee hoe dit kan?

Mn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TFormHLstats::NMUDPDataReceived(TComponent *Sender,
    int NumberBytes, AnsiString FromIP, int Port)
{
   ListBoxReply->Items->Add(FromIP + ":" + Port + " (" + NumberBytes + ")");

   if(NumberBytes < 256)
   {
    char buffer[256];
    int j;
    NMUDP->ReadBuffer(buffer, 256, j);
    buffer[j] = 0;
    ListBoxReply->Items->Add(AnsiString(buffer));
   }
   else
   {
    ListBoxReply->Items->Add("Buffer too small for data");
   }
}
probeer eens "ÿÿÿÿinfostring" te sturen.
Bij mij is juist het ping-gedoe het enigste wat niet werkt

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 00:25

johnwoo

3S-GTE

Op maandag 08 juli 2002 01:10 schreef Tw^st3D het volgende:
hier bestaan al meerdere PHP scriptjes voor,

deze connecten via udp met een IP en vragen zo info op..
[mierenneukmode]
Ze connecten via UDP ?!?! :P
[/mierenneukmode]

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Op maandag 08 juli 2002 08:54 schreef LAuWe het volgende:

[..]

probeer eens "ÿÿÿÿinfostring" te sturen.
Bij mij is juist het ping-gedoe het enigste wat niet werkt
Bij 'ÿÿÿÿinfostring' krijg ik 'ÿÿÿÿinfostringresponse' als antwoord.
Op UT servers werkt me proggy wel goed. Dan krijg ik op alle commando's correcte gegevens terug.
Misschien dat CS servers andere commando's gebruiken? Lijkt me niet eigenlijk omdat het gewoon de hl engine is.

--edit
Ik weet het al. Ik gebruikte als localport dezelfde als waar de server op draait |:(. Dan krijg je wel het antwoord van ping binnen, maar server status enz worden naar port 27015 gestuurd.

--edit2
arg ik snap hier niks van. Nu werkt het opeens niet meer als ik localport op 27015 heb :'(

Verwijderd

Topicstarter
ik heb em nog steeds niet door :(
Ik zie er helemaal geen verband in... (en ik heb ook geen verstand van dat integer-gedoe)
heeft iemand misschien een voorbeeld of een link met wat meer uitleg ?

Verwijderd

Dit krijgen we in VB
code:
1
2
3
4
ÿÿÿÿDCorneliuS 
   §žDloftstory    GD[pod]killaruna    8D[JS]Ratach-0sis[FR]    '4DMadmaxx*Interceptor    §/D[A~Team] Doubitchou    §/DKOF_The_Dragon_Claws    N fDDark Fatos le noob :)    Î.D  lulu    'ôD
|=-IgLooO-=|*ZwAnE    góDGandalf    ÇíDKill or be Killed    ç¢D
|=-IgLooO-=|-r@Bi-|    §ID[K.O.H]*theu killeur's killeur*     '6DSAM_The_Knight_Claws    ND

Dit zou je moeten krijgen
en is ook zo in C++, C en Delphi heb ik op Internet kunnen vinden.
code:
1
2
'ÿÿÿÿD'#$C#1'[PaW]Willow'#0#0#0#0#0't¿ÎC'#2'Ads'#0#3#0#0#0'º[*D'#3'Dre@mThe@ter'#0#1#0#0#0'ÝïžD'#4'Cyberain'#0#1#0#0#0'º+'#$1D'D'#5'-=ZsB=-PGPulp'#0#7#0#0#0'Ý}±D'#6'[Trauma]Joe'#0#0#0#0#0'ïÇ'#6'E'#7'
-=BMS=-Arma-ZsB'#0#0#0#0#0'tçC'#8'DeadlyMike'#0#0#0#0#0'÷zE'#9'[CSTK]-CK'#0#7#0#0#0'Ý]D'#$A'[CSTK]Bloody-Pit'#0#2#0#0#0'wE'#$B'Doedel'#0#1#0#0#0'w'#$17'E'#$C'Cyael[WaL]'#0#0#0#0#0'Ñ]¡B'

aangezien de vierkantje een stuk of 5 verschillende ascii codes hebben, zie ik er dus ook niet echt klaar meer in.
Het ziet er allemaal heel willekeurig uit. Heb al een paar uur zitten proberen, zitten vervangen, maar geen resultaat.
Misschien zien jullie er iets in ?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 19:44

Gerco

Professional Newbie

Het antwoord is al gegeven, maar hier heb je het nog een keer:

Wat je ontvangt is een datastructuur waar de gegevens inzitten. Echter NIET in leesbaar ASCII formaat. Je zult dus die datastructuur moeten inlezen en converteren naar iste leesbaars. Op die site die je noemt staat de structuur die je moet inlezen, probleem opgelost lijkt me zo...

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Op maandag 08 juli 2002 18:56 schreef Gerco het volgende:
Het antwoord is al gegeven, maar hier heb je het nog een keer:

Wat je ontvangt is een datastructuur waar de gegevens inzitten. Echter NIET in leesbaar ASCII formaat. Je zult dus die datastructuur moeten inlezen en converteren naar iste leesbaars. Op die site die je noemt staat de structuur die je moet inlezen, probleem opgelost lijkt me zo...
Ik wil niet moeilijk doen, maar het enige probleem dat ik momenteel heb ik dat die gegevens niet te converteren zijn volgens mij.
Hoe kan je ze in VB leesbaar maken ? of in eender welke taal eigenlijk ? Je zou de info moeten krijgen in de vorm zoals ze op die site staat, dat is wat de server normaal antwoord. niet wat wij krijgen...

Verwijderd

Op maandag 08 juli 2002 19:10 schreef Mr.ChronoM het volgende:

[..]

Ik wil niet moeilijk doen, maar het enige probleem dat ik momenteel heb ik dat die gegevens niet te converteren zijn volgens mij.
Hoe kan je ze in VB leesbaar maken ? of in eender welke taal eigenlijk ? Je zou de info moeten krijgen in de vorm zoals ze op die site staat, dat is wat de server normaal antwoord. niet wat wij krijgen...
Nogmaals: het is binary, tuurlijk kun je dat omzetten.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:57

Creepy

Tactical Espionage Splatterer

Je moet de binnengekomen data NIET behandelen als een string!!!!

Er zit een structuur van data in (zoals hierboven ook uitgelegd). Die moet je opsplitsen dus. De playernames zijn bijv. wel stukjes string (eigenlijk een array van char's). De frags zijn integers van een bepaald aantal bytes.
edit:
Dev heeft dus de complete structuur al weergegeven. Dus je weet precies wat waar staat, en hoeveel bytes het in beslag neemt.


Je kan natuurlijk alsnog QStat gebruiken, en het dan proberen zo te maken dat je de uitvoer van QStats in 1 keer in het geheugen krijgt, i.p.v. QSTat de uitvoer in een file te laten zetten, en de uitvoer hiervan te lezen.
QStat kan veel verschillende typen servers aan.
Ikzelf heb gamestats al een poosje hier draaiende, en laat dus QStat al het werk afhandelenen, alleen heb ik dus de uitvoer van QStat rechstreeks in m'n geheugen i.p.v. via een file.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Op maandag 08 juli 2002 12:43 schreef xerix het volgende:

[..]

Bij 'ÿÿÿÿinfostring' krijg ik 'ÿÿÿÿinfostringresponse' als antwoord.
Op UT servers werkt me proggy wel goed. Dan krijg ik op alle commando's correcte gegevens terug.
Misschien dat CS servers andere commando's gebruiken? Lijkt me niet eigenlijk omdat het gewoon de hl engine is.
Iemand enig idee?

Verwijderd

Misschien hebbie hier nog wat aan:

Http://www.xs4all.nl/~hsikkes/modconversion.bas

Verwijderd

Topicstarter
Op maandag 08 juli 2002 21:05 schreef xerix het volgende:

[..]

Iemand enig idee?
er komt nog meer achteraan (je krijgt dus nog meer binnen..) ;)
Op maandag 08 juli 2002 21:09 schreef 00fly747 het volgende:
Misschien hebbie hier nog wat aan:

Http://www.xs4all.nl/~hsikkes/modconversion.bas
kleine uitleg hierbij? :)

Verwijderd

Op maandag 08 juli 2002 21:16 schreef LAuWe het volgende:
kleine uitleg hierbij? :)
Daat zit dus b.v. n functie in om binary data in een 4-byte string om te zetten naar een Long.

  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 29-03 18:11
Ik ben nu zelf bezig om zoiets te bouwen in php. Werkt gedeeltelijk, qua info ophalen. Alleen nog stoppen krijgen en het stip werk nog.

http://www.vriendencafe.nl/~wolf/checkserver.php

Verwijderd

Topicstarter
Op maandag 08 juli 2002 23:10 schreef Mickman het volgende:
Ik ben nu zelf bezig om zoiets te bouwen in php. Werkt gedeeltelijk, qua info ophalen. Alleen nog stoppen krijgen en het stip werk nog.

http://www.vriendencafe.nl/~wolf/checkserver.php
wat jij terug kreeg van de server als response op "players" zag dat er zo al uit of was dat ook zo "vervormd" als bij ons ?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:57

Creepy

Tactical Espionage Splatterer

Op maandag 08 juli 2002 23:12 schreef LAuWe het volgende:

[..]

wat jij terug kreeg van de server als response op "players" zag dat er zo al uit of was dat ook zo "vervormd" als bij ons ?
Hoe vaak moet er nog gezegd worden dat het normaal is wat je binnenkrijgt, maar dat je het niet zomaar als 1 complete string moet behandelen???

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 00:25

johnwoo

3S-GTE

Op maandag 08 juli 2002 23:18 schreef Creepy het volgende:

[..]

Hoe vaak moet er nog gezegd worden dat het normaal is wat je binnenkrijgt, maar dat je het niet zomaar als 1 complete string moet behandelen???
In VB kun je het op zich wel in een string zetten, aangezien nullchars daar geen problemen opleveren. Om te converten moet je idd wel een 'truc' uithalen; ik denk dat dat met RtlMoveMemory wel moet lukken (van de string naar een Long/Integer/whatever variabele).

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Als ze de getallen als ASCII tekens zouden doorsturen kunnen ze per byte maar 10 verschillende tekens gebruiken (0 t/m 9), dan zou je de andere 246 tekens niet gebruiken.

Met 4 bytes kan je dan 10.000 verschillende getallen maken.

Als ze het binary door sturen kunnen ze met 4 bytes 256*256*256*256 getallen maken :), en da's een stuk meer.

Er is dus echt niets mis met die data, hoe je het moet omzetten is nu al een aantal keer genoemd.

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 30-08 21:01
Het is al vaker gezegd, jammer dat je het wiel opnieuw probeert uit te vinden. Wij zijn zelf qstat aan het ombouwen om alle data van bijna elke soort gameserver in mysql te krijgen. Dit wilden we eerst ook in VB doen, maar dat is gewoon onbegonnen werk, we gebruiken nu dus dezelfde taal als qstat (c/c++ dus). We zijn gisteren pas begonnen maar het wordt zo echt een eitje.

zeroxcool.net - curity.eu

Pagina: 1