login  Naam:   Wachtwoord: 
Registreer je!
 Forum

CoD 5 server uitlezen (Opgelost)

Offline Sander1993 - 30/12/2008 11:14
Avatar van Sander1993PHP interesse he,

ik probeer een programma'tje te maken die de stats van een CoD5 server uitleest, nu ik het script uitvoer geeft hij Succes(0). Maar geeft niet de informatie die ik wil.
dit is mn script:
  1. <?php
  2. $fp = fsockopen("upd:193.253.226.181", 28960, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. fwrite($fp, chr(255) . chr(255) . chr(255) . chr(255) . chr(0x02) . 'getstatus' . chr(0x00));
  7. while (!feof($fp)) {
  8. $sReturn = fread($fp, 128);
  9. echo $sReturn;
  10. }
  11. fclose($fp);
  12. }
  13. ?>

24 antwoorden

Gesponsorde links
Offline Giant - 30/12/2008 11:33
Avatar van Giant PHP beginner
  1. $fp = fsockopen("upd:193.253.226.181", 28960, $errno, $errstr, 30);

Er is voor zover geen protocol met de naam "upd"...

probeer het eens met "udp" zo als hieronder dus ;)
  1. $fp = fsockopen("udp:193.253.226.181", 28960, $errno, $errstr, 30);
Offline Koen - 30/12/2008 12:05
Avatar van Koen PHP expert
  1. $fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);


Moet het zijn.
Offline Sander1993 - 30/12/2008 12:07
Avatar van Sander1993 PHP interesse ik heb het nu met udp geprobeerd en ik krijg dan dit:
php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
Offline Koen - 30/12/2008 12:11
Avatar van Koen PHP expert
Sander1993 schreef:
ik heb het nu met udp geprobeerd en ik krijg dan dit:
php_network_getaddresses: getaddrinfo failed: Name or service not known (0)


Gebruik dan mijn oplossing..
Offline Sander1993 - 30/12/2008 12:39
Avatar van Sander1993 PHP interesse nu gebruik ik jouw oplossing, en als ik m nu open duurt het heel lang om m te laden sterker nog, ff geeft aan dat hij aan het laden, maar hij gaat maar door, hij is nu al 5 minuten aan het laden  
Offline ThAlmighty - 30/12/2008 12:46 (laatste wijziging 30/12/2008 12:47)
Avatar van ThAlmighty HTML beginner dat komt omdat het een stream is en dus geen end-of-file heeft. Kan je hier geen voorbeelden van vinden op internet?

* ik heb lopen googlen maar kan wat jij wilt uberhaupt wel
Offline Koen - 30/12/2008 12:48 (laatste wijziging 30/12/2008 12:53)
Avatar van Koen PHP expert Is de server online?

Edit: Ja, dat kan, http://www.game....181:28960
Offline Sander1993 - 30/12/2008 13:26 (laatste wijziging 30/12/2008 13:36)
Avatar van Sander1993 PHP interesse @ThAlmighty
ik denk wel dat het kan, er bestaan toch ook Call Of Duty moderators die alle stats van alle servers bijhouden.

er is idd geen end of file, dit is de response zonder eof:
ÿÿÿÿstatusResponse \_Admin\=ST=TINTIN45 =ST=latueuse\_Email\^2SERVERTINTIN45@live.fr\_Irc\=ST=\_Website\^3www.servertintin45.fr\

hier staan alleen data van de server en niet de deaths,kills,namen en ping in, hoe kan ik die vinden?

edit: de code:
  1. <?php
  2. $fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. fwrite($fp, chr(255) . chr(255) . chr(255) . chr(255) . chr(0x02) . 'getstatus' . chr(0x00));
  7.  
  8. $ServerData = fread($fp, 128);
  9. list($response,$admin1,$admin2,$mail1,$mail2,$irc1,$irc2,$website1,$website2) = explode('\\',$ServerData);
  10. echo "admin: ".$admin2;
  11. echo "<br />";
  12. echo "mail: ".$mail2;
  13. echo "<br />";
  14. echo "irc: ".$irc2;
  15. echo "<br />";
  16. echo "website: ".$website2;
  17.  
  18. fclose($fp);
  19. }
  20. ?>
Offline Koen - 30/12/2008 13:38
Avatar van Koen PHP expert
Citaat:
To get more info from the server including player names, send a udp packet to the server containing:
{0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73}


http://www.brai...7&t=57
Offline Sander1993 - 30/12/2008 13:40
Avatar van Sander1993 PHP interesse dankje, dankje,

wat zou ik zonder jou moeten, ik ga het meteen uitproberen
Offline Koen - 30/12/2008 13:42
Avatar van Koen PHP expert
Sander1993 schreef:
dankje, dankje,

wat zou ik zonder jou moeten, ik ga het meteen uitproberen


Geen server query tool maken? 
Offline Sander1993 - 30/12/2008 13:46 (laatste wijziging 30/12/2008 14:24)
Avatar van Sander1993 PHP interesse
Citaat:
To get the basic server status, send a udp packet to the server's port containing
{0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78}

dus ik doe dit:
  1. <?php
  2. $fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. fwrite($fp, 0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78);
  7.  
  8. $ServerData = fread($fp, 128);
  9. echo $ServerData;
  10.  
  11. fclose($fp);
  12. }
  13. ?>

maar hij doet t niet.
het is wel het gene wat ik zocht, maar de toepassing van wat er staat begrijp ik niet helemaal.

edit: mooi voorbeeld van wat ik bedoel:
http://www.will...statusdemo

edit: ik kom weer een stapje dichterbij:
  1. <?php
  2. $fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. fwrite($fp, '˙˙˙˙ getstatus');
  7. $alldata = stream_get_meta_data($fp);
  8. $ServerData = fread($fp, 128);
  9. echo $ServerData;
  10. echo "<br />";
  11. echo $alldata;
  12.  
  13. fclose($fp);
  14. }
  15. ?>

maar in $alldata staan niet de spelers,score etc...
hoe kom daar achter?
Offline Wim - 30/12/2008 14:21
Avatar van Wim Crew algemeen 1) je geeft op lijn 6 te veel argumenten mee; het is 1 grote string!
2) het is hexadecimaal, ik weet niet zeker of je dit zo wel mag verzenden...
Offline Sander1993 - 30/12/2008 14:49
Avatar van Sander1993 PHP interesse 1) jij zegt het is in grote string in mijn code; maar dat is ook de bedoeling, citaat uit php.net
Citaat:
int fwrite ( resource $handle , string $string [, int $length ] )

en het werkt wel, ik krijg ook informatie, maar niet alle informatie die ik wil, maar een deel ervan, want ik wil de spelersnamen,score,deaths,assists,ping ook krijgen, en dat is ook de vraag, hoe kom ik daar achter?
Offline Koen - 30/12/2008 15:29
Avatar van Koen PHP expert
Sander1993 schreef:
1) jij zegt het is in grote string in mijn code; maar dat is ook de bedoeling, citaat uit php.net
[..quote..]
en het werkt wel, ik krijg ook informatie, maar niet alle informatie die ik wil, maar een deel ervan, want ik wil de spelersnamen,score,deaths,assists,ping ook krijgen, en dat is ook de vraag, hoe kom ik daar achter?


Hij bedoelde
  1. fwrite($fp, 0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78);
 
Offline Sander1993 - 30/12/2008 15:33 (laatste wijziging 30/12/2008 15:35)
Avatar van Sander1993 PHP interesse dat zijn idd een beetje veel parameters, ik zit weer niet op te letten.
edit: nu heb ik het veranderd:
  1. fwrite($fp, '0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78');

en hij geeft nu deze error: ÿÿÿÿdisconnect
wat nu?
Offline Koen - 30/12/2008 15:39 (laatste wijziging 30/12/2008 15:40)
Avatar van Koen PHP expert
  1. fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x69) . chr(0x6E) . chr(0x66) . chr(0x6F) . chr(0x20) . chr(0x78) . chr(0x78) . chr(0x78));

Al geprobeerd?

dan krijg je: ÿÿÿÿgetinfo xxx, dat zal wel de query zijn die je nodig hebt om met de server te communiceren 
Offline Sander1993 - 30/12/2008 15:43 (laatste wijziging 30/12/2008 15:50)
Avatar van Sander1993 PHP interesse ja, nu wel, en ik kom heel dichtbij:
de output:
ÿÿÿÿinfoResponse
\challenge\xxx\protocol\94\hostname\^5*SERVER*TINTIN45*\mapname\mp_downfall\clients\19\sv_maxclients\22\gametyp

Array
(
[stream_type] => socket
[unread_bytes] => 0
[timed_out] =>
[blocked] => 1
[eof] =>
)


en het script:
  1. <?php
  2. $fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x69) . chr(0x6E) . chr(0x66) . chr(0x6F) . chr(0x20) . chr(0x78) . chr(0x78) . chr(0x78)); //˙˙˙˙ getstatus
  7. $alldata = stream_get_meta_data($fp);
  8. $ServerData = fread($fp, 128);
  9. echo nl2br($ServerData);
  10.  
  11.  
  12. echo "<br /><pre>";
  13. print_r($alldata);
  14. echo "</pre>";
  15. }
  16. ?>

nu nog welke spelers, hun kills, hun deaths, hun assists en ping, maar dat lukt misschien wel via die handige link die je me gegeven hebt.

edit: er stond op die site een code waarmee ook de namen van de spelers in de server kunt krijgen(
  1. fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));
)
maar die geeft alleen de instellingen van de server. dus wat is de manier om achter de spelers te komen (en hun stats)
Offline Ontani - 30/12/2008 15:54
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Ik denk dat je ÿÿÿÿstatus moet sturen
Offline Sander1993 - 30/12/2008 15:55
Avatar van Sander1993 PHP interesse nu dan krijg ik de gewone stats (website etc..)
maar ik wil die van de spelers hebben en met dit:
  1. fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x69) . chr(0x6E) . chr(0x66) . chr(0x6F) . chr(0x20) . chr(0x78) . chr(0x78) . chr(0x78)); //˙˙˙˙ getstatus

kwam ik al dicht in de buurt
Offline Koen - 30/12/2008 16:29
Avatar van Koen PHP expert Gebruik hetzelfde, maar dan dit:
  1. fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));
Offline Sander1993 - 30/12/2008 16:33
Avatar van Sander1993 PHP interesse dan krijg ik weer alleen de gewone info over de server
Offline Koen - 30/12/2008 16:36 (laatste wijziging 30/12/2008 16:37)
Avatar van Koen PHP expert
  1. <?php
  2. $fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));
  7. $ServerData = fread($fp, 4096);
  8. echo $ServerData;
  9. }
  10. ?>


De lengte moet wel lang genoeg zijn natuurlijk 

Edit:
  1. ˙˙˙˙statusResponse
  2. \_Admin\=ST=TINTIN45 =ST=latueuse\_Email\^2SERVERTINTIN45@live.fr\_Irc\=ST=\_Website\^3www.servertintin45.fr\fxfrustumCutoff\1000\g_compassShowEnemies\0\g_gametype\tdm\gamename\Call of Duty: World at War\mapname\mp_seelow\penetrationCount\5\protocol\94\r_watersim_enabled\1\shortversion\1\sv_allowAnonymous\0\sv_disableClientConsole\0\sv_floodprotect\4\sv_hostname\^5*SERVER*TINTIN45*\sv_maxclients\22\sv_maxPing\350\sv_maxRate\5000\sv_minPing\0\sv_privateClients\0\sv_punkbuster\0\sv_pure\1\sv_voice\0\ui_maxclients\32\pswrd\0\mod\0
  3. 0 103 "[=ST=]Flo92Will"
  4. 0 90 "[=ST=]arnaud"
  5. 0 186 "[=ST=]TYLER1012"
  6. 0 93 "PRZmop"
  7. 600 98 "Boczo_PL"
  8. 0 999 "seppey"
  9. 0 138 "Master_pt"
  10. 0 999 "HG_Dicht_80"
  11. 0 131 "[RfF]KarOo"
  12. 6 138 "Kondzi1993pl"
  13. 600 118 "[RfF]YourFather"
  14. 0 126 "Wanted31"
  15. 0 80 "Federlun"
  16. 0 92 "[=ST=]juliendu18"
  17. 0 194 "tompson_hero"
  18. 0 128 "dogto-28"
  19. 0 133 "razorbackman"
  20. 0 131 "Kris7_PL"
  21. 0 135 "EvilMonkeyN"
  22. 300 102 "PieceOfCake"
  23. 0 160 "Aqq_PL"
  24. 0 165 "Pflanz35"
Offline Sander1993 - 30/12/2008 16:38
Avatar van Sander1993 PHP interesse ja dat is het!!
woohoo, nu kan ik verder. thnx man
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.39s