hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 16:06



Jelenlévő felhasználók

Jelenleg 220 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 219 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 8 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.18. 19:57 
Offline
Fanatikus

Csatlakozott: 2018.05.05. 18:34
Hozzászólások: 198
Megköszönt másnak: 39 alkalommal
Megköszönték neki: 8 alkalommal
Hali valaki tudna adni egy ehhez hasonló referencia oldalt?
Akár olyat is amelyikhez a szerverbe plugin szükséges.
Kép
Előre is köszönöm.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.18. 20:11 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
https://github.com/Austinb/GameQ ezzel letudod kerni az adatokat szerverrol. A masodik egy sima progressbar ami a szerintem emelkedik ahany jatekos van gondolom.

_________________
Idk. Csak ugy funbooo.
Kép

Ők köszönték meg DeteCT0R nek ezt a hozzászólást: konfigos312 (2018.06.18. 21:01)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.18. 21:02 
Offline
Fanatikus

Csatlakozott: 2018.05.05. 18:34
Hozzászólások: 198
Megköszönt másnak: 39 alkalommal
Megköszönték neki: 8 alkalommal
Eztet hogy lehet installálni iletve hogy tudom a szervert hozzá adni?

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.18. 21:30 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2014.05.01. 13:18
Hozzászólások: 627
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 104 alkalommal
Egy php fájl percenként lefutva intézi a fent említett Queryt ami aztán egy Script alapján frissíti az adatokat egy SQL táblán. Ezt olvassa ki az oldal minden lekéréskor.
A csík megy csak egy progressbar, ahogyan DeteCT0R is írta.

Ők köszönték meg JohanCorn nek ezt a hozzászólást: konfigos312 (2018.06.18. 21:37)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.18. 23:08 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.01.15. 19:04
Hozzászólások: 407
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 176 alkalommal
Ez kicsit egyszerűbb mint GameQ:
Include:
  1. <?php
  2. class ServerQuery
  3. {
  4.     var $challenge_number;
  5.     var $connected;
  6.     var $server_ip;
  7.     var $server_port;
  8.     var $socket;
  9.  
  10.     function ServerQuery()
  11.     {
  12.         $this->challenge_number = 0;
  13.         $this->connected = true;
  14.         $this->server_ip = "";
  15.         $this->server_port = "";
  16.     }
  17.  
  18.     function Connect($server_ip, $server_port)
  19.     {
  20.         $this->server_ip = gethostbyname($server_ip);
  21.         $this->server_port = $server_port;
  22.  
  23.         $fp = fsockopen("udp://" . $this->server_ip, $this->server_port, $errno, $errstr, 2);
  24.         stream_set_timeout($fp, 2);
  25.  
  26.         if($fp)
  27.             $this->connected = true;
  28.         else
  29.         {
  30.             $this->connected = false;
  31.             return false;
  32.         }
  33.  
  34.         $this->socket = $fp;
  35.  
  36.         return true;
  37.     }
  38.  
  39.     function Disconnect()
  40.     {
  41.         @fclose($this->socket);
  42.         $connected = false;
  43.     }
  44.  
  45.     function IsConnected()
  46.     {
  47.         return $this->connected;
  48.     }
  49.    
  50.     function queryServers($servers)
  51.     {
  52.         $server_array = array();
  53.         foreach($servers as $key => $s)
  54.         {
  55.             $this->Connect($s[0], $s[1]);
  56.             if($infos = $this->Info())
  57.             {
  58.                 $server_info = array(
  59.                     "sid"           => $key,
  60.                     "status"            => "1",
  61.                     "type"          => $infos['type'],
  62.                     "version"       => $infos['version'],
  63.                     "hostname"      => $infos['name'],
  64.                     "map"           => $infos['map'],
  65.                     "mod"           => $infos['mod'],
  66.                     "game"          => $infos['game'],
  67.                     "appid"         => $infos['appid'],
  68.                     "cur_players"   => $infos['activeplayers'],
  69.                     "max_players"   => $infos['maxplayers'],
  70.                     "bot_players"   => $infos['botplayers'],
  71.                     "dedicated"     => ($infos['dedicated']=="d")?"Dedicated":"Listen",
  72.                     "os"            => ($infos['os']=="l")?"Linux":"Windows",
  73.                     "password"      => $infos['password'],
  74.                     "secure"        => $infos['secure'],
  75.                     "sversion"      => $infos['sversion'],
  76.                     "address"       => $s[0].":".$s[1],
  77.                     "players"       => ""
  78.                 );
  79.                 $server_info['players'] = $this->Players();
  80.             }
  81.             else
  82.             {
  83.                 $server_info = array(
  84.                     "sid"           => $key,
  85.                     "status"            => "0",
  86.                     "type"          => "",
  87.                     "version"       => "",
  88.                     "hostname"      => $key,
  89.                     "map"           => "",
  90.                     "mod"               => '',
  91.                     "game"          => "",
  92.                     "appid"         => "",
  93.                     "cur_players"       => "0",
  94.                     "max_players"       => "0",
  95.                     "bot_players"       => "0",
  96.                     "dedicated"     => "",
  97.                     "os"            => "",
  98.                     "password"      => "",
  99.                     "secure"        => "",
  100.                     "sversion"      => "",
  101.                     "address"       => $s[0].":".$s[1],
  102.                     "players"       => ""
  103.                 );
  104.             }
  105.            
  106.             $server_array[] = $server_info;
  107.             $this->Disconnect();
  108.         }
  109.         return $server_array;
  110.     }
  111.  
  112.     private function get_challenge()
  113.     {
  114.         if($this->challenge_number == "")
  115.         {
  116.             $challenge = "\xff\xff\xff\xffchallenge rcon\n";
  117.             $buffer = $this->Communicate($challenge);
  118.  
  119.             if(trim($buffer) == "")
  120.             {
  121.                 $this->connected = false;
  122.                 return false;
  123.             }
  124.             $this->challenge_number = trim(substr($buffer,15));
  125.         }
  126.     }
  127.    
  128.     function Info()
  129.     {
  130.         if(!$this->connected)
  131.             return $this->connected;
  132.  
  133.         $command = "\xff\xff\xff\xffTSource Engine Query\x00";
  134.         $buffer = $this->Communicate($command);
  135.  
  136.         if(trim($buffer) == "")
  137.         {
  138.             $this->connected = false;
  139.             return false;
  140.         }
  141.  
  142.         $pos=0;
  143.         $result["type"] = $this->parse_buffer($buffer,$pos,"bytestr");
  144.         $result["version"] = $this->parse_buffer($buffer,$pos,"byte");
  145.         $result["name"] = $this->parse_buffer($buffer,$pos,"string");
  146.         $result["map"] = $this->parse_buffer($buffer,$pos,"string");
  147.         $result["mod"] = $this->parse_buffer($buffer,$pos,"string");
  148.         $result["game"] = $this->parse_buffer($buffer,$pos,"string");
  149.         $result["appid"] = $this->parse_buffer($buffer,$pos,"short");
  150.         $result["activeplayers"] = $this->parse_buffer($buffer,$pos,"byte");
  151.         $result["maxplayers"] = $this->parse_buffer($buffer,$pos,"byte");
  152.         $result["botplayers"] = $this->parse_buffer($buffer,$pos,"byte");
  153.         $result["dedicated"] = $this->parse_buffer($buffer,$pos,"bytestr");
  154.         $result["os"] = $this->parse_buffer($buffer,$pos,"bytestr");
  155.         $result["password"] = $this->parse_buffer($buffer,$pos,"byte");
  156.         $result["secure"] = $this->parse_buffer($buffer,$pos,"byte");
  157.         $result["sversion"] = $this->parse_buffer($buffer,$pos,"string");
  158.         $result["edf"] = $this->parse_buffer($buffer,$pos,"byte");
  159.         switch ($result["edf"])
  160.         {
  161.             case '\x80':
  162.                 $result["port"]= $this->parse_buffer($buffer,$pos,"short");
  163.                 break;
  164.             case '\x40':
  165.                 $result["specport"]= $this->parse_buffer($buffer,$pos,"short");
  166.                 $result["specservername"] = $this->parse_buffer($buffer,$pos,"string");
  167.                 break;
  168.             case '\x20':
  169.                 $result["gametagdata"] = $this->parse_buffer($buffer,$pos,"string");
  170.         }
  171.        
  172.         return $result;
  173.     }
  174.  
  175.     function parse_buffer($buffer,&$pos,$type)
  176.     {
  177.         $result = NULL;
  178.         switch ($type)
  179.         {
  180.             case 'string':
  181.                 while ( substr($buffer, $pos,1) !== "\x00" )
  182.                 {
  183.                     $result .= substr($buffer, $pos,1);
  184.                     $pos++;
  185.                 }
  186.                 break;
  187.             case 'short':
  188.                 $result = ord(substr($buffer, $pos,1)) + (ord(substr($buffer, $pos+1,1)) << 8);
  189.                 $pos++;
  190.                 break;
  191.             case 'long':       
  192.                 $result = ord($buffer[$pos]) + (ord($buffer[$pos + 1]) << 8) + (ord($buffer[$pos + 2]) << 16) + (ord($buffer[$pos + 3]) << 24);
  193.                 $pos+=3;
  194.                 break;
  195.             case 'byte':
  196.                 $result = ord(substr($buffer, $pos,1));
  197.                 break;
  198.             case 'bytestr':
  199.                 $result = substr($buffer, $pos,1);
  200.                 break;
  201.             case 'float':
  202.                 $tmptime = @unpack('ftime', substr($buffer, $pos, 4));
  203.                 $result = date('H:i:s', round($tmptime['time'], 0) + 82800);
  204.                 $pos+=3;
  205.                 break;
  206.         }
  207.         $pos++;
  208.         return $result;
  209.     }
  210.  
  211.     function Players()
  212.     {
  213.         if(!$this->connected)
  214.             return $this->connected;
  215.  
  216.         $challenge = "\xff\xff\xff\xff\x55\xff\xff\xff\xff";
  217.         $buffer = $this->Communicate($challenge);
  218.  
  219.         if(trim($buffer) == "")
  220.         {
  221.             $this->connected = false;
  222.             return false;
  223.         }
  224.  
  225.         $this->challenge_number = substr($buffer,1,4);
  226.         $command = "\xff\xff\xff\xff\x55$this->challenge_number";
  227.         $buffer = $this->Communicate($command);
  228.  
  229.         if(trim($buffer) == "")
  230.         {
  231.             $this->connected = false;
  232.             return false;
  233.         }
  234.         #$buffer = substr($buffer, 1);
  235.         $pos=0;
  236.         $header = $this->parse_buffer($buffer,$pos,"bytestr");
  237.         $numpl = $this->parse_buffer($buffer,$pos,"byte");
  238.  
  239.         if($header!='D') return;
  240.         $result=array();
  241.         for($i = 0; $i < $numpl; $i++)
  242.         {
  243.         $result[$i]["index"] = $this->parse_buffer($buffer,$pos,"byte");
  244.         $result[$i]["name"] = $this->parse_buffer($buffer,$pos,"string");
  245.         $result[$i]["frag"] = $this->parse_buffer($buffer,$pos,"long");
  246.         $result[$i]["time"] = $this->parse_buffer($buffer,$pos,"float");
  247.         }
  248.  
  249.         return $result;
  250.  
  251.     }
  252.  
  253.     function Communicate($command)
  254.     {
  255.         if(!$this->connected)
  256.             return $this->connected;
  257.  
  258.         if($command != "")
  259.             fputs($this->socket, $command, strlen($command));
  260.  
  261.         $buffer = fread ($this->socket, 1);
  262.         $status = socket_get_status($this->socket);
  263.  
  264.         if ($status["unread_bytes"] > 0)
  265.             $buffer .= fread($this->socket, $status["unread_bytes"]);
  266.  
  267.         if(substr($buffer, 0, 4) == "\xfe\xff\xff\xff")
  268.         {
  269.             $requestid=substr($buffer,4,4);
  270.  
  271.             $po=ord(substr($buffer,8,1));
  272.             $panum=($po & 1) + ($po & 2) + ($po & 4) + ($po & 8);
  273.  
  274.             $po=$po >> 4;
  275.             $pacur=($po & 1) + ($po & 2) + ($po & 4) + ($po & 8);
  276.  
  277.             if($pacur==($panum-1)) {
  278.             $splitbuffer[$pacur]=substr($buffer,9);
  279.             } else {
  280.             $splitbuffer[$pacur]=substr($buffer,14);
  281.             }
  282.  
  283.             for ($i=1;$i<$panum;$i++)
  284.             {
  285.                 $buffer2 = fread ($this->socket, 1);
  286.                 $status = socket_get_status($this->socket);
  287.                 $buffer2 .= fread($this->socket, $status["unread_bytes"]);
  288.  
  289.                 $requestid2=substr($buffer,4,4);
  290.                 $po=ord(substr($buffer2,8,1));
  291.                 $po=$po >> 4;
  292.                 $pacur=($po & 1) + ($po & 2) + ($po & 4) + ($po & 8);
  293.  
  294.                 if($requestid==$requestid2) {
  295.                     if($pacur==($panum-1))
  296.                         $splitbuffer[$pacur]=substr($buffer2,9);
  297.                     else
  298.                         $splitbuffer[$pacur]=substr($buffer2,14);
  299.                 }                  
  300.             }
  301.             for($i=0;$i<$panum;$i++) $bufferret.=$splitbuffer[$i];
  302.         }
  303.         else
  304.             $bufferret = substr($buffer, 4);
  305.  
  306.         return $bufferret;
  307.  
  308.     }
  309. }
  310. ?>

Cél fájl:
  1. <?php
  2.     require_once('serverquery.inc');
  3.    
  4.     $query = new ServerQuery();
  5.    
  6.     $servers = array(
  7.         array('37.221.209.131', 27300),
  8.         array('37.221.209.130', 27210)
  9.     );
  10.    
  11.     foreach($servers as $s)
  12.     {
  13.         $query->Connect($s[0], $s[1]);
  14.        
  15.         if($infos = $query->Info())
  16.         {
  17.             $server_info = array(
  18.                 "status"            => "1",
  19.                 "map"           => $infos['map'],
  20.                 "players"   => ($infos['botplayers'] ? $infos['activeplayers'] - $infos['botplayers'] : $infos['activeplayers']) . ($infos['botplayers'] ? '(' . $infos['botplayers'] . ')' : '') . '/' . $infos['maxplayers'],
  21.                 "password"      => $infos['password'],
  22.             );
  23.         }
  24.         else
  25.         {
  26.             $server_info = array(
  27.                 "status"            => "0",
  28.                 "map"           => "",
  29.                 "players"   => "0(0)/0",
  30.                 "password"      => "1",
  31.             );
  32.         }
  33.        
  34.         echo "<pre>";
  35.         print_r($server_info);
  36.        
  37.         $query->Disconnect();
  38.     }
  39. }
  40. ?>

Ők köszönték meg demon nek ezt a hozzászólást: konfigos312 (2018.06.19. 21:36)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.19. 21:36 
Offline
Fanatikus

Csatlakozott: 2018.05.05. 18:34
Hozzászólások: 198
Megköszönt másnak: 39 alkalommal
Megköszönték neki: 8 alkalommal
Ezt pontosan hogy kell felrakni?

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.21. 13:15 
Offline
SM Fejlesztő
Avatar

Csatlakozott: 2012.10.18. 15:58
Hozzászólások: 2486
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 132 alkalommal
Mivel a html5 készen kínálja a fogyasztóknak a lehetőségeket, ezért egy progress-bar minden bonyolultság, esetleg css nélkül megoldható.
  1. <?php
  2.     $max_slot = 32;
  3.     $current_slot = 8;
  4.    
  5.     $percent_slot = $current_slot/$max_slot*100;
  6. ?>
  7. <table style="width:300px;">
  8.     <tr>
  9.         <td><b>Szerver1</b></td>
  10.         <td><?PHP echo $current_slot." / ".$max_slot;?></td>
  11.     </tr>
  12.     <tr>
  13.         <td>192.168.1.1:27015</td>
  14.         <td>de_dust2</td>
  15.     </tr>
  16.     <tr>
  17.         <td colspan="2">
  18.             <progress max="100" value="<?PHP echo $percent_slot; ?>" style="width:100%;"></progress>
  19.         </td>
  20.     </tr>
  21. </table>


Ehhez már csak a szerver infó lekérdezést kell beleírni.

_________________
www.akosvagyok.hu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Referencia oldal egyszerüen.
HozzászólásElküldve: 2018.06.22. 20:01 
Offline
Fanatikus

Csatlakozott: 2018.05.05. 18:34
Hozzászólások: 198
Megköszönt másnak: 39 alkalommal
Megköszönték neki: 8 alkalommal
demon írta:
Ez kicsit egyszerűbb mint GameQ:
Include:
  1. <?php
  2. class ServerQuery
  3. {
  4.     var $challenge_number;
  5.     var $connected;
  6.     var $server_ip;
  7.     var $server_port;
  8.     var $socket;
  9.  
  10.     function ServerQuery()
  11.     {
  12.         $this->challenge_number = 0;
  13.         $this->connected = true;
  14.         $this->server_ip = "";
  15.         $this->server_port = "";
  16.     }
  17.  
  18.     function Connect($server_ip, $server_port)
  19.     {
  20.         $this->server_ip = gethostbyname($server_ip);
  21.         $this->server_port = $server_port;
  22.  
  23.         $fp = fsockopen("udp://" . $this->server_ip, $this->server_port, $errno, $errstr, 2);
  24.         stream_set_timeout($fp, 2);
  25.  
  26.         if($fp)
  27.             $this->connected = true;
  28.         else
  29.         {
  30.             $this->connected = false;
  31.             return false;
  32.         }
  33.  
  34.         $this->socket = $fp;
  35.  
  36.         return true;
  37.     }
  38.  
  39.     function Disconnect()
  40.     {
  41.         @fclose($this->socket);
  42.         $connected = false;
  43.     }
  44.  
  45.     function IsConnected()
  46.     {
  47.         return $this->connected;
  48.     }
  49.    
  50.     function queryServers($servers)
  51.     {
  52.         $server_array = array();
  53.         foreach($servers as $key => $s)
  54.         {
  55.             $this->Connect($s[0], $s[1]);
  56.             if($infos = $this->Info())
  57.             {
  58.                 $server_info = array(
  59.                     "sid"           => $key,
  60.                     "status"            => "1",
  61.                     "type"          => $infos['type'],
  62.                     "version"       => $infos['version'],
  63.                     "hostname"      => $infos['name'],
  64.                     "map"           => $infos['map'],
  65.                     "mod"           => $infos['mod'],
  66.                     "game"          => $infos['game'],
  67.                     "appid"         => $infos['appid'],
  68.                     "cur_players"   => $infos['activeplayers'],
  69.                     "max_players"   => $infos['maxplayers'],
  70.                     "bot_players"   => $infos['botplayers'],
  71.                     "dedicated"     => ($infos['dedicated']=="d")?"Dedicated":"Listen",
  72.                     "os"            => ($infos['os']=="l")?"Linux":"Windows",
  73.                     "password"      => $infos['password'],
  74.                     "secure"        => $infos['secure'],
  75.                     "sversion"      => $infos['sversion'],
  76.                     "address"       => $s[0].":".$s[1],
  77.                     "players"       => ""
  78.                 );
  79.                 $server_info['players'] = $this->Players();
  80.             }
  81.             else
  82.             {
  83.                 $server_info = array(
  84.                     "sid"           => $key,
  85.                     "status"            => "0",
  86.                     "type"          => "",
  87.                     "version"       => "",
  88.                     "hostname"      => $key,
  89.                     "map"           => "",
  90.                     "mod"               => '',
  91.                     "game"          => "",
  92.                     "appid"         => "",
  93.                     "cur_players"       => "0",
  94.                     "max_players"       => "0",
  95.                     "bot_players"       => "0",
  96.                     "dedicated"     => "",
  97.                     "os"            => "",
  98.                     "password"      => "",
  99.                     "secure"        => "",
  100.                     "sversion"      => "",
  101.                     "address"       => $s[0].":".$s[1],
  102.                     "players"       => ""
  103.                 );
  104.             }
  105.            
  106.             $server_array[] = $server_info;
  107.             $this->Disconnect();
  108.         }
  109.         return $server_array;
  110.     }
  111.  
  112.     private function get_challenge()
  113.     {
  114.         if($this->challenge_number == "")
  115.         {
  116.             $challenge = "\xff\xff\xff\xffchallenge rcon\n";
  117.             $buffer = $this->Communicate($challenge);
  118.  
  119.             if(trim($buffer) == "")
  120.             {
  121.                 $this->connected = false;
  122.                 return false;
  123.             }
  124.             $this->challenge_number = trim(substr($buffer,15));
  125.         }
  126.     }
  127.    
  128.     function Info()
  129.     {
  130.         if(!$this->connected)
  131.             return $this->connected;
  132.  
  133.         $command = "\xff\xff\xff\xffTSource Engine Query\x00";
  134.         $buffer = $this->Communicate($command);
  135.  
  136.         if(trim($buffer) == "")
  137.         {
  138.             $this->connected = false;
  139.             return false;
  140.         }
  141.  
  142.         $pos=0;
  143.         $result["type"] = $this->parse_buffer($buffer,$pos,"bytestr");
  144.         $result["version"] = $this->parse_buffer($buffer,$pos,"byte");
  145.         $result["name"] = $this->parse_buffer($buffer,$pos,"string");
  146.         $result["map"] = $this->parse_buffer($buffer,$pos,"string");
  147.         $result["mod"] = $this->parse_buffer($buffer,$pos,"string");
  148.         $result["game"] = $this->parse_buffer($buffer,$pos,"string");
  149.         $result["appid"] = $this->parse_buffer($buffer,$pos,"short");
  150.         $result["activeplayers"] = $this->parse_buffer($buffer,$pos,"byte");
  151.         $result["maxplayers"] = $this->parse_buffer($buffer,$pos,"byte");
  152.         $result["botplayers"] = $this->parse_buffer($buffer,$pos,"byte");
  153.         $result["dedicated"] = $this->parse_buffer($buffer,$pos,"bytestr");
  154.         $result["os"] = $this->parse_buffer($buffer,$pos,"bytestr");
  155.         $result["password"] = $this->parse_buffer($buffer,$pos,"byte");
  156.         $result["secure"] = $this->parse_buffer($buffer,$pos,"byte");
  157.         $result["sversion"] = $this->parse_buffer($buffer,$pos,"string");
  158.         $result["edf"] = $this->parse_buffer($buffer,$pos,"byte");
  159.         switch ($result["edf"])
  160.         {
  161.             case '\x80':
  162.                 $result["port"]= $this->parse_buffer($buffer,$pos,"short");
  163.                 break;
  164.             case '\x40':
  165.                 $result["specport"]= $this->parse_buffer($buffer,$pos,"short");
  166.                 $result["specservername"] = $this->parse_buffer($buffer,$pos,"string");
  167.                 break;
  168.             case '\x20':
  169.                 $result["gametagdata"] = $this->parse_buffer($buffer,$pos,"string");
  170.         }
  171.        
  172.         return $result;
  173.     }
  174.  
  175.     function parse_buffer($buffer,&$pos,$type)
  176.     {
  177.         $result = NULL;
  178.         switch ($type)
  179.         {
  180.             case 'string':
  181.                 while ( substr($buffer, $pos,1) !== "\x00" )
  182.                 {
  183.                     $result .= substr($buffer, $pos,1);
  184.                     $pos++;
  185.                 }
  186.                 break;
  187.             case 'short':
  188.                 $result = ord(substr($buffer, $pos,1)) + (ord(substr($buffer, $pos+1,1)) << 8);
  189.                 $pos++;
  190.                 break;
  191.             case 'long':       
  192.                 $result = ord($buffer[$pos]) + (ord($buffer[$pos + 1]) << 8) + (ord($buffer[$pos + 2]) << 16) + (ord($buffer[$pos + 3]) << 24);
  193.                 $pos+=3;
  194.                 break;
  195.             case 'byte':
  196.                 $result = ord(substr($buffer, $pos,1));
  197.                 break;
  198.             case 'bytestr':
  199.                 $result = substr($buffer, $pos,1);
  200.                 break;
  201.             case 'float':
  202.                 $tmptime = @unpack('ftime', substr($buffer, $pos, 4));
  203.                 $result = date('H:i:s', round($tmptime['time'], 0) + 82800);
  204.                 $pos+=3;
  205.                 break;
  206.         }
  207.         $pos++;
  208.         return $result;
  209.     }
  210.  
  211.     function Players()
  212.     {
  213.         if(!$this->connected)
  214.             return $this->connected;
  215.  
  216.         $challenge = "\xff\xff\xff\xff\x55\xff\xff\xff\xff";
  217.         $buffer = $this->Communicate($challenge);
  218.  
  219.         if(trim($buffer) == "")
  220.         {
  221.             $this->connected = false;
  222.             return false;
  223.         }
  224.  
  225.         $this->challenge_number = substr($buffer,1,4);
  226.         $command = "\xff\xff\xff\xff\x55$this->challenge_number";
  227.         $buffer = $this->Communicate($command);
  228.  
  229.         if(trim($buffer) == "")
  230.         {
  231.             $this->connected = false;
  232.             return false;
  233.         }
  234.         #$buffer = substr($buffer, 1);
  235.         $pos=0;
  236.         $header = $this->parse_buffer($buffer,$pos,"bytestr");
  237.         $numpl = $this->parse_buffer($buffer,$pos,"byte");
  238.  
  239.         if($header!='D') return;
  240.         $result=array();
  241.         for($i = 0; $i < $numpl; $i++)
  242.         {
  243.         $result[$i]["index"] = $this->parse_buffer($buffer,$pos,"byte");
  244.         $result[$i]["name"] = $this->parse_buffer($buffer,$pos,"string");
  245.         $result[$i]["frag"] = $this->parse_buffer($buffer,$pos,"long");
  246.         $result[$i]["time"] = $this->parse_buffer($buffer,$pos,"float");
  247.         }
  248.  
  249.         return $result;
  250.  
  251.     }
  252.  
  253.     function Communicate($command)
  254.     {
  255.         if(!$this->connected)
  256.             return $this->connected;
  257.  
  258.         if($command != "")
  259.             fputs($this->socket, $command, strlen($command));
  260.  
  261.         $buffer = fread ($this->socket, 1);
  262.         $status = socket_get_status($this->socket);
  263.  
  264.         if ($status["unread_bytes"] > 0)
  265.             $buffer .= fread($this->socket, $status["unread_bytes"]);
  266.  
  267.         if(substr($buffer, 0, 4) == "\xfe\xff\xff\xff")
  268.         {
  269.             $requestid=substr($buffer,4,4);
  270.  
  271.             $po=ord(substr($buffer,8,1));
  272.             $panum=($po & 1) + ($po & 2) + ($po & 4) + ($po & 8);
  273.  
  274.             $po=$po >> 4;
  275.             $pacur=($po & 1) + ($po & 2) + ($po & 4) + ($po & 8);
  276.  
  277.             if($pacur==($panum-1)) {
  278.             $splitbuffer[$pacur]=substr($buffer,9);
  279.             } else {
  280.             $splitbuffer[$pacur]=substr($buffer,14);
  281.             }
  282.  
  283.             for ($i=1;$i<$panum;$i++)
  284.             {
  285.                 $buffer2 = fread ($this->socket, 1);
  286.                 $status = socket_get_status($this->socket);
  287.                 $buffer2 .= fread($this->socket, $status["unread_bytes"]);
  288.  
  289.                 $requestid2=substr($buffer,4,4);
  290.                 $po=ord(substr($buffer2,8,1));
  291.                 $po=$po >> 4;
  292.                 $pacur=($po & 1) + ($po & 2) + ($po & 4) + ($po & 8);
  293.  
  294.                 if($requestid==$requestid2) {
  295.                     if($pacur==($panum-1))
  296.                         $splitbuffer[$pacur]=substr($buffer2,9);
  297.                     else
  298.                         $splitbuffer[$pacur]=substr($buffer2,14);
  299.                 }                  
  300.             }
  301.             for($i=0;$i<$panum;$i++) $bufferret.=$splitbuffer[$i];
  302.         }
  303.         else
  304.             $bufferret = substr($buffer, 4);
  305.  
  306.         return $bufferret;
  307.  
  308.     }
  309. }
  310. ?>

Cél fájl:
  1. <?php
  2.     require_once('serverquery.inc');
  3.    
  4.     $query = new ServerQuery();
  5.    
  6.     $servers = array(
  7.         array('37.221.209.131', 27300),
  8.         array('37.221.209.130', 27210)
  9.     );
  10.    
  11.     foreach($servers as $s)
  12.     {
  13.         $query->Connect($s[0], $s[1]);
  14.        
  15.         if($infos = $query->Info())
  16.         {
  17.             $server_info = array(
  18.                 "status"            => "1",
  19.                 "map"           => $infos['map'],
  20.                 "players"   => ($infos['botplayers'] ? $infos['activeplayers'] - $infos['botplayers'] : $infos['activeplayers']) . ($infos['botplayers'] ? '(' . $infos['botplayers'] . ')' : '') . '/' . $infos['maxplayers'],
  21.                 "password"      => $infos['password'],
  22.             );
  23.         }
  24.         else
  25.         {
  26.             $server_info = array(
  27.                 "status"            => "0",
  28.                 "map"           => "",
  29.                 "players"   => "0(0)/0",
  30.                 "password"      => "1",
  31.             );
  32.         }
  33.        
  34.         echo "<pre>";
  35.         print_r($server_info);
  36.        
  37.         $query->Disconnect();
  38.     }
  39. }
  40. ?>

Amikor felrakom ezt írja Az oldal nem működik
A(z) mwp.*****.hu jelenleg nem tudja kezelni ezt a kérést.
HTTP ERROR 500
A szerver ipt- meg a portot mind a kettőbe kell modositanom?

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 8 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole