Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: [problem] pobieranie danych z servera
Forum PHP.pl > Forum > PHP
adisoft
Witam mam problem z pewna classa do pobierania danych z serverow do gry
Counter-Strike, a wiec tak problem mozna zauwazyc na mojej stronie:
http://www.wiresslan.pl/adisoft/adisoft/in...php?cmd=servers

W czym jest rzecz?
chodzi o pobieranie obrazkow danej mapy jaka jest aktualnie grana
na serverze! cala classa i skrypt dziala bez problemu sami widzicie,
chodzi tylko o te obrazki map
wszystkie pliki znajduja sie w folderze /map/

czyli ustalane jest wszystko tutaj

  1. <?
  2.  
  3. $serv_ip = &#092;"81.219.9.50\";
  4.  
  5. $serv_port = &#092;"27015\";
  6.  
  7.  
  8. $players = &#092;"aktualnie nie ma zadnych graczy online\";
  9.  
  10. $pics = &#092;"map\";
  11.  
  12. $error = &#092;"nie mozna sie polaczyc z serverem!<br>server offline\";
  13.  
  14. itd....
  15.  
  16. ?>



nastepnie w server1.inc gdzie sa wprowadzane statsy ustalane jest pobieranie grafiki

  1. <TD height=\"106\" COLSPAN=\"2\" ALIGN=\"CENTER\"> 
  2. <div align=\"left\"><IMG SRC=\"<? 
  3. if(is_file($pics . $csinfo->m_servervars[&#092;"mapname\"] . \".gif\")) { print $pics . $csinfo->m_servervars[\"mapname\"] . \".gif\"; }
  4. else { print $pics . &#092;"cstrike_nopicture.gif\"; } ?>\" width=\"130\" 
  5. height=\"100\" ALT=\"<?=$csinfo->m_servervars[&#092;"mapname\"]?>\">  </div></TD> 
  6. </TR>


jak widzimy zmienianie ".gif" na jpg jpeg nie daje zadnego efektu
jesli sciezke dostepu podam nie map tylko /map

wyswietli sie tylko plik cstrike_nopicture.gif
scanner
Przeniesione: Skrypty php -> php

a) Klasa nie classa
cool.gif serwerów nie serverow
c) jakby¶ tak pokaza³ kod klasy $csinfo to byloby widaæ wiêcej.
adisoft
to dal juz to ktos do skryptow questionmark.gif czy pisac dalej tutaj ? ?
scanner
No domy¶l siê.. albo sójrz nad w±tekj, tam masz napisane gdzie siê w±tek znajduje..
Pozatym.. je¶li moderator przenosi, to pisze, sk±d dok±d, co tez uczyni³em..
adisoft
oto zrodla o jakie prosiles class

class_server

  1. <?
  2.  
  3. $serv_ip = &#092;"81.219.9.50\";
  4.  
  5. $serv_port = &#092;"27015\";
  6.  
  7.  
  8. $players = &#092;"aktualnie nie ma zadnych graczy online\";
  9.  
  10. $pics = &#092;"map\";
  11.  
  12. $error = &#092;"nie mozna sie polaczyc z serverem!<br>server offline\";
  13.  
  14.  
  15.  
  16. $creator = true;
  17.  
  18.  
  19. function fragsort ($a, $b) { 
  20.  
  21.  if ($a[&#092;"frags\"] == $b[\"frags\"]) return 0; 
  22.  
  23.  if ($a[&#092;"frags\"] > $b[\"frags\"]) { 
  24.  
  25. return -1; 
  26.  
  27.  } else { 
  28.  
  29. return 1; 
  30.  
  31.  } 
  32.  
  33. } 
  34.  
  35. Class CounterStrike { 
  36.  
  37.  var $m_playerinfo  =&#092;"\";
  38.  
  39.  var $m_servervars  =&#092;"\";
  40.  
  41.  var $m_serverrules =&#092;"\";
  42.  
  43.  
  44.  
  45.  function timenow() { 
  46.  
  47. return doubleval(ereg_replace('^0.([0-9]*) ([0-9]*)$','2.1',microtime())); 
  48.  
  49.  } 
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  function getServerData($command,$serveraddress,$portnumber,$waittime) { 
  56.  
  57. $serverdata =&#092;"\"; 
  58.  
  59. $serverdatalen =0; 
  60.  
  61.  
  62.  
  63. if ($waittime< 500) $waittime= 500; 
  64.  
  65. if ($waittime>2000) $waittime=2000; 
  66.  
  67. $waittime=doubleval($waittime/1000.0); 
  68.  
  69.  
  70.  
  71. if (!$cssocket=fsockopen(&#092;"udp://\".$serveraddress,$portnumber,$errnr)) { 
  72.  
  73.  $this->errmsg=&#092;"No connection\"; 
  74.  
  75.  return &#092;"\"; 
  76.  
  77. } 
  78.  
  79.  
  80.  
  81. socket_set_blocking($cssocket,true); 
  82.  
  83.  
  84. fwrite($cssocket,$command,strlen($command)); 
  85.  
  86.  
  87.  
  88. $starttime=$this->timenow(); 
  89.  
  90. do { 
  91.  
  92.  $serverdata.=fgetc($cssocket); 
  93.  
  94.  $serverdatalen++; 
  95.  
  96.  $socketstatus=socket_get_status($cssocket); 
  97.  
  98.  if ($this->timenow()>($starttime+$waittime)) { 
  99.  
  100. $this->errmsg=&#092;"Connection timed out\"; 
  101.  
  102. fclose($cssocket); 
  103.  
  104. return &#092;"\"; 
  105.  
  106.  } 
  107.  
  108. } while ($socketstatus[&#092;"unread_bytes\"] ); 
  109.  
  110. fclose($cssocket); 
  111.  
  112. return $serverdata; 
  113.  
  114.  } 
  115.  
  116.  
  117.  
  118.  function getnextstring(&$data) { 
  119.  
  120. $temp=&#092;"\"; 
  121.  
  122. $counter=0; 
  123.  
  124. while (ord($data[$counter++])!=0) $temp.=$data[$counter-1]; 
  125.  
  126. $data=substr($data,strlen($temp)+1); 
  127.  
  128. return $temp; 
  129.  
  130.  } 
  131.  
  132.  function getnextbytevalue(&$data) { 
  133.  
  134. $temp=ord($data[0]); 
  135.  
  136. $data=substr($data,1); 
  137.  
  138. return $temp; 
  139.  
  140.  } 
  141.  
  142.  function getnextfragvalue(&$data) { 
  143.  
  144. $frags=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24); 
  145.  
  146. if ($frags>=4294967294) $frags-=4294967296; 
  147.  
  148. $data=substr($data,4); 
  149.  
  150. return $frags; 
  151.  
  152.  } 
  153.  
  154.  function getnextplaytime(&$data) { 
  155.  
  156. $decnumber=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24); 
  157.  
  158. $binnumber=base_convert($decnumber,10,2); 
  159.  
  160. while (strlen($binnumber) < 32) $binnumber=&#092;"0\".$binnumber; 
  161.  
  162. $exp=abs(base_convert(substr($binnumber,1,8),2,10))-127; 
  163.  
  164. if (substr($binnumber,0,1)==&#092;"1\") $exp=0-$exp; 
  165.  
  166. $man=1;$manadd=0.5; 
  167.  
  168. for ($counter=9;$counter<32;$counter++) { 
  169.  
  170.  if (substr($binnumber,$counter,1)==&#092;"1\") $man+=$manadd; 
  171.  
  172.  $manadd=$manadd/2; 
  173.  
  174. } 
  175.  
  176. $time=round(pow(2,$exp)*$man); 
  177.  
  178. $playtime=&#092;"\"; 
  179.  
  180. if ($time>3600) { 
  181.  
  182.  $playtime=sprintf(&#092;"%2dh\",$time/3600); 
  183.  
  184. } 
  185.  
  186. $time%=3600; 
  187.  
  188. $playtime=$playtime.sprintf(&#092;"%2dm\",$time/60); 
  189.  
  190. $time%=60; 
  191.  
  192. $playtime=$playtime.sprintf(&#092;"%2ds\",$time); 
  193.  
  194. $data=substr($data,5); 
  195.  
  196. return $playtime; 
  197.  
  198.  } 
  199.  
  200.  
  201.  
  202.  function getServerRules($serveraddress,$portnumber,$waittime) { 
  203.  
  204. $cmd=&#092;"xFFxFFxFFxFFrulesx00\"; 
  205.  
  206. $serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ; 
  207.  
  208.  
  209.  
  210. if (strlen($serverdata)<5) return false; 
  211.  
  212.  
  213.  
  214. $rules=(ord($serverdata[5]))+(ord($serverdata[6])*256); 
  215.  
  216. if ($rules!=0) { 
  217.  
  218.  
  219.  
  220.  $serverdata=substr($serverdata,7); 
  221.  
  222.  for ($i=1;$i<=$rules;$i++) { 
  223.  
  224. $rulename =$this->getnextstring($serverdata); 
  225.  
  226. $rulevalue  =$this->getnextstring($serverdata); 
  227.  
  228. $this->m_serverrules[$rulename]=$rulevalue; 
  229.  
  230.  } 
  231.  
  232.  return true; 
  233.  
  234. } else { 
  235.  
  236.  return false; 
  237.  
  238. } 
  239.  
  240.  } 
  241.  
  242.  
  243.  
  244.  
  245.  function getServerInfo($serveraddress,$portnumber,$waittime) { 
  246.  
  247. $cmd=&#092;"xFFxFFxFFxFFinfox00\"; 
  248.  
  249. $serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ; 
  250.  
  251.  
  252.  
  253. if (strlen($serverdata)<5) return false; 
  254.  
  255.  
  256.  
  257. $serverdata=substr($serverdata,5); 
  258.  
  259. $this->m_servervars[&#092;"serveraddress\"]  =$this->getnextstring($serverdata); 
  260.  
  261. $this->m_servervars[&#092;"servername\"] =$this->getnextstring($serverdata); 
  262.  
  263. $this->m_servervars[&#092;"mapname\"]  =$this->getnextstring($serverdata); 
  264.  
  265. $this->m_servervars[&#092;"game\"] =$this->getnextstring($serverdata); 
  266.  
  267. $this->m_servervars[&#092;"gamename\"] =$this->getnextstring($serverdata); 
  268.  
  269. $this->m_servervars[&#092;"currentplayers\"] =$this->getnextbytevalue($serverdata); 
  270.  
  271. $this->m_servervars[&#092;"maxplayers\"] =$this->getnextbytevalue($serverdata); 
  272.  
  273. return true; 
  274.  
  275. } 
  276.  
  277.  
  278.  
  279.  
  280.  function getServerPlayers($serveraddress,$portnumber,$waittime) { 
  281.  
  282.  
  283.  
  284. $cmd=&#092;"xFFxFFxFFxFFplayersx00\"; 
  285.  
  286. $serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime); 
  287.  
  288.  
  289.  
  290.  
  291. if (strlen($serverdata)<5) return false; 
  292.  
  293.  
  294.  
  295.  
  296.  
  297. $players=ord($serverdata[5]); 
  298.  
  299.  
  300.  
  301.  
  302. $serverdata=substr($serverdata,7); 
  303.  
  304. for ($i=1;$i<=$players;$i++) { 
  305.  
  306.  $playername =htmlspecialchars($this->getnextstring($serverdata)); 
  307.  
  308.  $frags  =$this->getnextfragvalue($serverdata); 
  309.  
  310.  $playtime =$this->getnextplaytime($serverdata); 
  311.  
  312.  $this->m_playerinfo[$i] =array(&#092;"name\"=>$playername,\"frags\"=>$frags,\"time\"=>$playtime); 
  313.  
  314. } 
  315.  
  316.  
  317.  
  318. if ($players>1) usort($this->m_playerinfo,&#092;"fragsort\"); 
  319.  
  320. return true; 
  321.  
  322.  } 
  323.  
  324. } 
  325.  
  326. ?>



oraz plik server1.inc

  1. <? require 'counterstrikeClass.php'; ?>
  2.  
  3. <div align=\"left\">
  4. <table width=\"698\" height=\"350\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">
  5. <tr> 
  6. <td height=\"350\" valign=\"top\">
  7. <center>.::SERVER 1::.</center>
  8. <br>
  9. <? 
  10.  
  11. $serveradr =&#092;"$serv_ip\"; 
  12. $serverport=&#092;"$serv_port\"; 
  13.  
  14.  
  15. $csinfo=new CounterStrike; 
  16. $status=$csinfo->getServerInfo($serveradr,$serverport,1000); 
  17. if ($status) { 
  18.  
  19.  
  20. $server = new CounterStrike; 
  21. $status=$server->getServerPlayers($serveradr,$serverport,1000); 
  22. if ($status) { 
  23.  
  24.  
  25. ?> 
  26. <TABLE> 
  27. <TR> 
  28. <TD width=\"598\" height=\"196\"> 
  29. <TABLE width=\"400\"> 
  30. <TR> 
  31. <TD width=\"75\">Servername :</TD>
  32. <TD width=\"313\">
  33. <?=$csinfo->m_servervars[&#092;"servername\"] ?> 
  34. </font></TD> 
  35. </TR> 
  36. <TR> 
  37. <TD>Server ip :</TD>
  38. <TD>
  39. <?=$csinfo->m_servervars[&#092;"serveraddress\"] ?> 
  40. </font></TD> 
  41. </TR> 
  42. <TR> 
  43. <TD>Slots :</TD>
  44. <TD>
  45. <?=$csinfo->m_servervars[&#092;"currentplayers\"] ?> 
  46. /
  47. <?=$csinfo->m_servervars[&#092;"maxplayers\"]?> 
  48. </font></TD> 
  49. </TR> 
  50. <TR> 
  51. <TD>Map :</TD>
  52. <TD>
  53. <?=$csinfo->m_servervars[&#092;"mapname\"]?> 
  54. </font></TD> 
  55. </TR> 
  56. <TR> 
  57. <TD COLSPAN=\"2\">&nbsp;</TD> 
  58. </TR> 
  59. <TR> 
  60. <TD height=\"106\" COLSPAN=\"2\" ALIGN=\"CENTER\"> 
  61. <div align=\"left\"><IMG SRC=\"<? 
  62. if(is_file($pics . $csinfo->m_servervars[&#092;"mapname\"] . \".gif\")) { print $pics . $csinfo->m_servervars[\"mapname\"] . \".gif\"; }
  63. else { print $pics . &#092;"cstrike_nopicture.gif\"; } ?>\" width=\"130\" 
  64. height=\"100\" ALT=\"<?=$csinfo->m_servervars[&#092;"mapname\"]?>\">  </div></TD> 
  65. </TR> 
  66. </TABLE>  
  67. <table> 
  68. <tr> 
  69. <td width=\"85\">Name</td>
  70. <td width=\"78\">Frags</td>
  71. <td width=\"84\">Time</td>
  72. </tr> 
  73. <? 
  74.  if (is_array($server->m_playerinfo)) { 
  75.  while (list(,$player) = each ($server->m_playerinfo)) { 
  76. ?> 
  77. <tr> 
  78. <td><?=$player['name'];?></td> 
  79. <td><?=$player['frags'];?></td> 
  80. <td><?=$player['time'];?></td> 
  81. </tr> 
  82. <? 
  83.  } 
  84.  } else { 
  85. ?> 
  86. <tr> 
  87. <td class=\"error\" colspan=\"3\"><? echo $players ?></td>
  88. </tr> 
  89. <? 
  90.  } 
  91. ?> 
  92. </table></TD> 
  93. </TR> 
  94. <? } else { 
  95. } ?> 
  96. </TABLE> 
  97.  <? 
  98. } else { 
  99. ?> 
  100. <strong><? echo $error ?></strong>
  101. <? 
  102. } 
  103. ?> 
  104. </td>
  105. </tr> 
  106. </table> 
  107. </div>
To jest wersja lo-fi g³ównej zawarto¶ci. Aby zobaczyæ pe³n± wersjê z wiêksz± zawarto¶ci±, obrazkami i formatowaniem proszê kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.