Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
0
Cevap
239
Tıklama
0
Öne Çıkarma
Oyundan siteye veri çekerken hata! Yardım pls.
0
8 yıl
Er
Konu Sahibi

Merhaba arkadaşlar bilen vardır belki lgsl adında bir live game server list scripti var ben serverimin verisini çekmek istiyorum ve çekiyorumda fakat çekilen veriler "Nick"-"Frag"-"Süre" şeklinde ben buna birde "Team" olayını çekmek istiyorum fakat bir türlü çekemedim yardımlarınızı bekliyorum.

lgsl_protocol.php
 	function lgsl_query_05(&$server, &$lgsl_need, &$lgsl_fp)
{
//---------------------------------------------------------+
// REFERENCE:http://developer.valvesoftware.com/wiki/Server_Queries
if ($server['b']['type'] == "halflifewon")
{
if ($lgsl_need['s']) { fwrite($lgsl_fp, "\xFF\xFF\xFF\xFFdetails\x00"); }
elseif ($lgsl_need['e']) { fwrite($lgsl_fp, "\xFF\xFF\xFF\xFFrules\x00"); }
elseif ($lgsl_need['p']) { fwrite($lgsl_fp, "\xFF\xFF\xFF\xFFplayers\x00"); }
}
else
{
$challenge_code = isset($lgsl_need['challenge']) ? $lgsl_need['challenge'] : "\x00\x00\x00\x00";
if ($lgsl_need['s']) { fwrite($lgsl_fp, "\xFF\xFF\xFF\xFF\x54Source Engine Query\x00"); }
elseif ($lgsl_need['e']) { fwrite($lgsl_fp, "\xFF\xFF\xFF\xFF\x56{$challenge_code}"); }
elseif ($lgsl_need['p']) { fwrite($lgsl_fp, "\xFF\xFF\xFF\xFF\x55{$challenge_code}"); }
}
//---------------------------------------------------------+
// THE STANDARD HEADER POSITION REVEALS THE TYPE BUT IT MAY NOT ARRIVE FIRST
// ONCE WE KNOW THE TYPE WE CAN FIND THE TOTAL NUMBER OF PACKETS EXPECTED
$packet_temp = array();
$packet_type = 0;
$packet_count = 0;
$packet_total = 4;
do
{
//$packet = fread($lgsl_fp, 4096); if (!$packet) { return FALSE; }
if (!($packet = fread($lgsl_fp, 4096))) {
if ($lgsl_need['s']) { return FALSE; }
elseif ($lgsl_need['e']) { $lgsl_need['e'] = FALSE; return TRUE; }
else { return TRUE; }
}
//---------------------------------------------------------------------------------------------------------------------------------+
// NEWER HL1 SERVERS REPLY TO A2S_INFO WITH 3 PACKETS ( HL1 FORMAT INFO, SOURCE FORMAT INFO, PLAYERS )
// THIS DISCARDS UN-EXPECTED PACKET FORMATS ON THE GO ( AS READING IN ADVANCE CAUSES TIMEOUT DELAYS FOR OTHER SERVER VERSIONS )
// ITS NOT PERFECT AS [s] CAN FLIP BETWEEN HL1 AND SOURCE FORMATS DEPENDING ON ARRIVAL ORDER ( MAYBE FIX WITH RETURN ON HL1 APPID )
if ($lgsl_need['s']) { if ($packet[4] == "D") { continue; } }
elseif ($lgsl_need['e']) { if ($packet[4] == "m" || $packet[4] == "I" || $packet[4] == "D") { continue; } }
elseif ($lgsl_need['p']) { if ($packet[4] == "m" || $packet[4] == "I") { continue; } }
//---------------------------------------------------------------------------------------------------------------------------------+
if (substr($packet, 0, 5) == "\xFF\xFF\xFF\xFF\x41") { $lgsl_need['challenge'] = substr($packet, 5, 4); return TRUE; } // REPEAT WITH GIVEN CHALLENGE CODE
elseif (substr($packet, 0, 4) == "\xFF\xFF\xFF\xFF") { $packet_total = 1; $packet_type = 1; } // SINGLE PACKET - HL1 OR HL2
elseif (substr($packet, 9, 4) == "\xFF\xFF\xFF\xFF") { $packet_total = ord($packet[8]) & 0xF; $packet_type = 2; } // MULTI PACKET - HL1 ( TOTAL IS LOWER NIBBLE OF BYTE )
elseif (substr($packet, 12, 4) == "\xFF\xFF\xFF\xFF") { $packet_total = ord($packet[8]); $packet_type = 3; } // MULTI PACKET - HL2
elseif (substr($packet, 18, 2) == "BZ") { $packet_total = ord($packet[8]); $packet_type = 4; } // BZIP PACKET - HL2
$packet_count ++;
$packet_temp[] = $packet;
}
while ($packet && $packet_count < $packet_total);
if ($packet_type == 0) { return $server['s'] ? TRUE : FALSE; } // UNKNOWN RESPONSE ( SOME SERVERS ONLY SEND [s] )
//---------------------------------------------------------+
// WITH THE TYPE WE CAN NOW SORT AND JOIN THE PACKETS IN THE CORRECT ORDER
// REMOVING ANY EXTRA HEADERS IN THE PROCESS
$buffer = array();
foreach ($packet_temp as $packet)
{
if ($packet_type == 1) { $packet_order = 0; }
elseif ($packet_type == 2) { $packet_order = ord($packet[8]) >> 4; $packet = substr($packet, 9); } // ( INDEX IS UPPER NIBBLE OF BYTE )
elseif ($packet_type == 3) { $packet_order = ord($packet[9]); $packet = substr($packet, 12); }
elseif ($packet_type == 4) { $packet_order = ord($packet[9]); $packet = substr($packet, 18); }
$buffer[$packet_order] = $packet;
}
ksort($buffer);
$buffer = implode("", $buffer);
//---------------------------------------------------------+
// WITH THE PACKETS JOINED WE CAN NOW DECOMPRESS BZIP PACKETS
// THEN REMOVE THE STANDARD HEADER AND CHECK ITS CORRECT
if ($packet_type == 4)
{
if (!function_exists("bzdecompress")) // REQUIREShttp://php.net/bzip2
{
$server['e']['bzip2'] = "unavailable"; $lgsl_need['e'] = FALSE;
return TRUE;
}
$buffer = bzdecompress($buffer);
}
$header = lgsl_cut_byte($buffer, 4);
if ($header != "\xFF\xFF\xFF\xFF") { return FALSE; } // SOMETHING WENT WRONG
//---------------------------------------------------------+
$response_type = lgsl_cut_byte($buffer, 1);
if ($response_type == "I") // SOURCE INFO ( HALF-LIFE 2 )
{
lgsl_cut_byte($buffer, 1);
$server['s']['name'] = lgsl_cut_string($buffer);
$server['s']['map'] = lgsl_cut_string($buffer);
$server['s']['game'] = lgsl_cut_string($buffer);
$server['e']['description'] = lgsl_cut_string($buffer);
$server['e']['appid'] = lgsl_unpack(lgsl_cut_byte($buffer, 2), "S");
$server['s']['players'] = ord(lgsl_cut_byte($buffer, 1));
$server['s']['playersmax'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['bots'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['dedicated'] = lgsl_cut_byte($buffer, 1);
$server['e']['os'] = lgsl_cut_byte($buffer, 1);
$server['s']['password'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['anticheat'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['version'] = lgsl_cut_string($buffer);
}
elseif ($response_type == "m") // HALF-LIFE 1 INFO
{
$server_ip = lgsl_cut_string($buffer);
$server['s']['name'] = lgsl_cut_string($buffer);
$server['s']['map'] = lgsl_cut_string($buffer);
$server['s']['game'] = lgsl_cut_string($buffer);
$server['e']['description'] = lgsl_cut_string($buffer);
$server['s']['players'] = ord(lgsl_cut_byte($buffer, 1));
$server['s']['playersmax'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['netcode'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['dedicated'] = lgsl_cut_byte($buffer, 1);
$server['e']['os'] = lgsl_cut_byte($buffer, 1);
$server['s']['password'] = ord(lgsl_cut_byte($buffer, 1));
if (ord(lgsl_cut_byte($buffer, 1))) // MOD FIELDS ( OFF FOR SOME HALFLIFEWON-VALVE SERVERS )
{
$server['e']['mod_url_info'] = lgsl_cut_string($buffer);
$server['e']['mod_url_download'] = lgsl_cut_string($buffer);
$buffer = substr($buffer, 1);
$server['e']['mod_version'] = lgsl_unpack(lgsl_cut_byte($buffer, 4), "l");
$server['e']['mod_size'] = lgsl_unpack(lgsl_cut_byte($buffer, 4), "l");
$server['e']['mod_server_side'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['mod_custom_dll'] = ord(lgsl_cut_byte($buffer, 1));
}
$server['e']['anticheat'] = ord(lgsl_cut_byte($buffer, 1));
$server['e']['bots'] = ord(lgsl_cut_byte($buffer, 1));
}
elseif ($response_type == "D") // SOURCE AND HALF-LIFE 1 PLAYERS
{
$returned = ord(lgsl_cut_byte($buffer, 1));
$player_key = 0;
while ($buffer)
{
$server['p'][$player_key]['pid'] = ord(lgsl_cut_byte($buffer, 1));
$server['p'][$player_key]['name'] = lgsl_cut_string($buffer);
$server['p'][$player_key]['score'] = lgsl_unpack(lgsl_cut_byte($buffer, 4), "l");
$server['p'][$player_key]['time'] = lgsl_time(lgsl_unpack(lgsl_cut_byte($buffer, 4), "f"));

[size=3]/* Benim e[simage]https://store.donanimhaber.com/35/9e/3f/359e3fe05a2d21e37810cf71fb8f4de3.png[/simage]klediğim kod
[color=#FF0000]$server['p'][$player_key]['team'] = lgsl_cut_byte($buffer, 4);[/color]
*/[/size]

$player_key ++;
}
}
elseif ($response_type == "E") // SOURCE AND HALF-LIFE 1 RULES
{
$returned = lgsl_unpack(lgsl_cut_byte($buffer, 2), "S");
while ($buffer)
{
$item_key = strtolower(lgsl_cut_string($buffer));
$item_value = lgsl_cut_string($buffer);
$server['e'][$item_key] = $item_value;
}
}
//---------------------------------------------------------+
// IF ONLY [s] WAS REQUESTED THEN REMOVE INCOMPLETE [e]
if ($lgsl_need['s'] && !$lgsl_need['e']) { $server['e'] = array(); }
if ($lgsl_need['s']) { $lgsl_need['s'] = FALSE; }
elseif ($lgsl_need['e']) { $lgsl_need['e'] = FALSE; }
elseif ($lgsl_need['p']) { $lgsl_need['p'] = FALSE; }
//---------------------------------------------------------+
return TRUE;
}


Sayfa çıktısı:
https://store.donanimhaber.com/35/9e/3f/359e3fe05a2d21e37810cf71fb8f4de3.png " target="_blank">< Resime gitmek için tıklayın >

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.