Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [problem] pobieranie danych z servera
adisoft
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 24.01.2004
Skąd: Witten Zentrum <==> Chorzów Batory

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Przeniesione: Skrypty php -> php

a) Klasa nie classa
(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) serwerów nie serverow
c) jakbyś tak pokazał kod klasy $csinfo to byloby widać więcej.
Go to the top of the page
+Quote Post
adisoft
post
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 24.01.2004
Skąd: Witten Zentrum <==> Chorzów Batory

Ostrzeżenie: (10%)
X----


to dal juz to ktos do skryptow (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) czy pisac dalej tutaj ? ?
Go to the top of the page
+Quote Post
scanner
post
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




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..
Go to the top of the page
+Quote Post
adisoft
post
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 24.01.2004
Skąd: Witten Zentrum <==> Chorzów Batory

Ostrzeżenie: (10%)
X----


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>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 22:44