Przeglądaj źródła

Updated lgsl_protocol.php for Windows L4D2 Query Changes https://steamcommunity.com/discussions/forum/14/2974028351344359625/ - Fix Found From https://github.com/tltneon/lgsl/blob/master/lgsl_files/lgsl_protocol.php

own3mall 5 lat temu
rodzic
commit
608de37e1d
1 zmienionych plików z 18 dodań i 2 usunięć
  1. 18 2
      OGP/php-query/lgsl/lgsl_protocol.php

+ 18 - 2
OGP/php-query/lgsl/lgsl_protocol.php

@@ -1137,6 +1137,7 @@ if (!function_exists('lgsl_version')) { // START OF DOUBLE LOAD PROTECTION
 //------------------------------------------------------------------------------------------------------------+
 //------------------------------------------------------------------------------------------------------------+
 
+
 	function lgsl_query_05(&$server, &$lgsl_need, &$lgsl_fp)
 	{
 	//---------------------------------------------------------+
@@ -1152,7 +1153,7 @@ if (!function_exists('lgsl_version')) { // START OF DOUBLE LOAD PROTECTION
 		{
 			$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"); }
+			if     ($lgsl_need['s']) { fwrite($lgsl_fp, "\xFF\xFF\xFF\xFF\x54Source Engine Query\x00" . (isset($lgsl_need['challenge']) ? $challenge_code : "")); }
 			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}"); }
 		}
@@ -1242,7 +1243,7 @@ if (!function_exists('lgsl_version')) { // START OF DOUBLE LOAD PROTECTION
 
 		if ($response_type == "I") // SOURCE INFO ( HALF-LIFE 2 )
 		{
-			lgsl_cut_byte($buffer, 1);
+			$server['e']['netcode']     = ord(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);
@@ -1256,6 +1257,21 @@ if (!function_exists('lgsl_version')) { // START OF DOUBLE LOAD PROTECTION
 			$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);
+			
+			if (ord(lgsl_cut_byte($buffer, 1)) == 177) {
+				lgsl_cut_byte($buffer, 10);
+			}
+			else {
+				lgsl_cut_byte($buffer, 6);
+			}
+			$server['e']['tags']        = lgsl_cut_string($buffer);
+
+			if($server['s']['game'] == 'rust'){
+				preg_match('/cp\d{1,3}/', $server['e']['tags'], $e);
+				$server['s']['players'] = substr($e[0], 2);
+				preg_match('/mp\d{1,3}/', $server['e']['tags'], $e);
+				$server['s']['playersmax'] = substr($e[0], 2);
+			}
 		}
 
 		elseif ($response_type == "m") // HALF-LIFE 1 INFO