RaaapuLis Posted October 19, 2008 Report Share Posted October 19, 2008 (edited) Sveiki, tatad man ir papusei pashtaisits servera query`s <?php $server="255.255.255.255"; $port="27015"; $qw=chr(32); $fp = fsockopen ("udp://".$server,$port); if (!$fp) { echo "Kluda: $errno - $errstr<br>\n"; } else { fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10)); $start=time(); socket_set_timeout($fp,1); $st=fread($fp,1); $r=socket_get_status($fp); $r=$r["unread_bytes"]; $st.=fread($fp,$r); fclose($fp); $st=substr($st,5); $adrese=SubStr($st,0,StrPos($st,chr(0))); $adrese=str_replace(chr(0),"|",$address); $st=SubStr($st,StrPos($st,chr(0))+1); $name=SubStr($st,0,StrPos($st,chr(0))); $st=SubStr($st,StrPos($st,chr(0))+1); $mape=SubStr($st,0,StrPos($st,chr(0))); $st=SubStr($st,StrPos($st,chr(0))+1); $st=SubStr($st,StrPos($st,chr(0))+1); $st=SubStr($st,StrPos($st,chr(0))+1); $plon=ord(SubStr($st,0,1)); $plmax=ord(SubStr($st,1,1)); } $bilde="<img src='/bildes/cs_maps/$map.jpg' style='border:1px solid grey;' border='1'>"; echo " <br><center> <b>$nosaukums</b> <br> $adrese <br> $bilde<br> <b>Mape:</b> $mape<br> <b>Speletaji:</b> $plon / $plmax <br> <b>Statuss:</b> "; if ($mape=="") { print "<font color=red>Izslegts<br></font>"; } else { print "<font color=green>Ieslegts<br></font>"; } echo "<br><br></center> "; ?> Vai varetu kads pateikt kaa izdabut online speletaju name, score, un online time? Edited October 19, 2008 by RaaapuLis Link to comment Share on other sites More sharing options...
worm Posted October 19, 2008 Report Share Posted October 19, 2008 Tava nolasīšanas metode ne vienmēr nostrādās, jo serveris var atgriest datus vairāk kā vienā paketē vai arī kompresētus... Ja tu draudzējies ar to lietu, kas ir starp pleciem, tad tev noderēs šis te topiks. Lai nolasītu player vārdus, tev jānosūta ir headeris, kas sastāv no 4 0xff baitiem, kā arī x55. Atbildē tev ir jāsaņēm 0x45 baits, pēc kā seko 2 baitu cipars ar kopējo spēlētāju skaitu un pēctam seko spēlētāju saraksts, kas ir formātā baits string long float (long = 4 baiti, float = 4 baiti) vairāk info var izlasīt šeit: http://developer.valvesoftware.com/wiki/Server_Queries Link to comment Share on other sites More sharing options...
RaaapuLis Posted October 20, 2008 Author Report Share Posted October 20, 2008 (edited) es jau lasiju, bet man nesanak un tas ka ne vienmer strtadas jau saskaros ar sho problemu, vainigs fread, bet samainiju fread ar file_get_contents() vai tad shite nau padoti tie xff un x55? fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00\x55".chr(10)); Edited October 20, 2008 by RaaapuLis Link to comment Share on other sites More sharing options...
worm Posted October 20, 2008 Report Share Posted October 20, 2008 vai tad shite nau padoti tie xff un x55? fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00\x55".chr(10)); ar tavu fwrite() tu pieprasi servera info... pleijeru sarakstu pieprasa ar fwrite($fp, "\xFF\xFF\xFF\xFF\x55"); Es īsti neizprotu tavu domu gājienu ar file_get_contents()... tas ir tas pats kas novienkāršots fread(). Vai tu kādreiz vispār dokumentāciju izlasi? Vai tu iedziļinies rakstītajā? Izskatās, ka tu mēģini izspiest sūdu nepaverot kājas... Link to comment Share on other sites More sharing options...
wap1337 Posted October 21, 2008 Report Share Posted October 21, 2008 Un izsmērējot to pa visām tavām kajām +10cm Link to comment Share on other sites More sharing options...
RaaapuLis Posted October 21, 2008 Author Report Share Posted October 21, 2008 wapl33t ja nemaki neko normalu apteikt klusee labak! Tavu postu vajadzetu izdzest un tev warn. Par lietu: par to fwrite es jau pats sapratu, bet es velreiz atkartoju man nesanak tie SubStr un Ord. Nolasit man sanak bet kaa izvadit? Link to comment Share on other sites More sharing options...
worm Posted October 22, 2008 Report Share Posted October 22, 2008 neizmanto substr()... manā topikā ir ierakstītas ļoti labas funkcijas, kas izdabū ārā visu to, ko es tev aukstāk esmu minējis... piemēram, ja tev atbildes dati ir mainīgais $st un tev no viņa vajag novākt headeri, kas ir 4 baiti (kas atbilst long datu tipam), tad tu taisi getlong($st). Pēctam tev jānolasa atbildes baits, izmanto funkciju $atbilde = getbyte($st) un pēctam pārbaudi if ( $abilde == 0x55 ) ... Katru reizi izsaucot kādu no get...() funkcijām, atbildes mainīgais automātiski tiks ar substr() saīsināts par N-simboliem, atkarībā no tā, kādu funkciju tu izsauci. Ja tu esi ticis līdz tam, ka $atbilde == 0x55, tad tu esi uz pareizā ceļa p.s. ja tu izmanto manu query() funkciju, tad 4 baitu headeris jau ir noņemts pie datu atgriešanas Link to comment Share on other sites More sharing options...
ntw Posted October 26, 2008 Report Share Posted October 26, 2008 šis te topiks......http://developer.valvesoftware.com/wiki/Server_Queries Pāāāldies. Kā man šitas noderēs.... ( bookmarked ). Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now