[php] Скрипт сбора статистики для l4d

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

[php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-23 16:47:57

Вот попросили меня написать такой скрипт!
Переписал скрипт старый который шел под кс 1.6
получилось почти то что хотел):

Код: Выделить всё

<?php

	// stats scripts
	
	$server="l4d.x-line.net.ua";
	$port="27015";
	$fp = fsockopen("udp://".$server, $port);

	if (!$fp) {
		echo $online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
    } else {
		fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
		$start = time();
		socket_set_timeout($fp, 2);
		$st=fread($fp,1);
		$r=socket_get_status($fp);
		$r ? $online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" : $online = "<font color=\"green\" size=\"3\" face=\"verdana\">On</font>" ;
		$r=$r["unread_bytes"];
		$r ? $st.=@fread($fp,$r) : "" ;
		fclose($fp);
		$st = substr($st, 6) ;
		print ($st) ;
		$stats[0] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[1] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[2] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[3] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+2) ;
		$stats[4] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[5] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[6] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[7] = substr($st, 0, strpos($st, chr(0))) ;
		$show_map="<img src=\"http://{$stats[0]}/mappics/{$stats[1]}.jpg\" width=\"100%\" border=\"0\" />";
		if (substr($stats[6],1,1) == "l") {
			$os = "Linux" ;
		} elseif (substr($stats[6],1,1) == "w"){
			$os = "Windows" ;
		} else {
			$os = "UNKNOWN" ;
		}
		echo strlen($stats[4]) ;
		if (strlen($stats[4])== "1") {
			$current = "0";
			$max = ord(substr($stats[4],0,1)) ;
			$online = "<font color=\"yellow\" size=\"3\" face=\"verdana\">Free</font>" ;
		} else {
			$current = ord(substr($stats[4],0,1)) ;
			$max = ord(substr($stats[4],1,1)) ;
		}
		echo "<table>\n" ;
		echo "<tr><td>\n" ;
		echo "<div><a href =\"http://l4d.x-line.net.ua\">l4d.x-line.net.ua</a></div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Server name : {$stats[0]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Status : {$online}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Map : {$stats[1]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>{$show_map}</div>" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Directory : {$stats[2]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Description : {$stats[3]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>OS : {$os}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Version : ".substr($stats[7], 1, 8)."</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Players(cur/max) : {$current}/{$max}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "</table>\n" ;
	}

?>
Одна беда осталась:
это то что при заходе игроков 1 бит в инфе с сервера заменяется и все коту под хвост

Код: Выделить всё

l4d.x-line.net.ua?l4d_vs_farm01_hilltop?left4dead?L4D - Versus?ф(((((?))))) ?dw?1.0.1.8? ‡iempty?1

Код: Выделить всё

(((((?)))))
заменяется на

Код: Выделить всё

l4d.x-line.net.ua?l4d_vs_farm01_hilltop?left4dead?L4D - Versus?ф((((())))) ?dw?1.0.1.8? ‡iempty?1
и сбиваеся все что написано!
данный сервер работает так что если кто может подскажите куда копать
Заранее спасибо!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Скрипт сбора статистики для l4d

Непрочитанное сообщение ProFTP » 2010-04-23 19:25:43

Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-23 21:09:42

не совсем понял что ты хотел этим сказать!
Про то что сбиваеться:
так это то что массив который имел например 8 позиций стает на 9,
то есть то что было именем стает картой(только это касается игроков current player <- max player )!если посмотреть массив, то все станет ясно)

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Скрипт сбора статистики для l4d

Непрочитанное сообщение ProFTP » 2010-04-23 21:26:09

мне показалось что кодировка сбилась ...
это русский символ?

вот это \xFF\xFF\xFF\xFF\x54\x53\ в 16 системе вроде бы так utf8 декодируется... (у меня такая часто с json приходит, нужно декодировать обратно...)

если разрезать строки с кодировкой utf8 c помощью substr и аналогичными, то последние символы в словах бывает сбиваются, из-за того что substr напрямую с utf8 кодировкой не работает...

у меня кс.16 нету, такую ошибку сделать у себя не смогу, я не телепат!
где именно ошибка и в чем?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-23 21:33:54

)))))
Вроде добил чуток этот монитор

Код: Выделить всё

<?php

	// stats scripts
	
	$server="l4d.x-line.net.ua";
	$port="27015";
	$fp = fsockopen("udp://".$server, $port);

	if (!$fp) {
		echo $online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
    } else {
		fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
		$start = time();
		socket_set_timeout($fp, 2);
		$st=fread($fp,1);
		$r=socket_get_status($fp);
		!$r ? $online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" : $online = "<font color=\"green\" size=\"3\" face=\"verdana\">On</font>" ;
		$r=$r["unread_bytes"];
		$r ? $st.=@fread($fp,$r) : "" ;
		fclose($fp);
		$st = substr($st, 6) ;
		$stats[0] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[1] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[2] = utf8_decode(substr($st, 0, strpos($st, chr(0)))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[3] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+2) ;
		$stats[4] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[5] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[6] = substr($st, 0, strpos($st, chr(0))) ;
		$st = substr($st,strpos($st,chr(0))+1) ;
		$stats[7] = substr($st, 0, strpos($st, chr(0))) ;
		$show_map="<img src=\"http://image.www.gametracker.com/images/maps/160x120/l4d/{$stats[1]}.jpg\" width=\"100%\" border=\"0\" />";

		if (strlen($stats[4])== "1") {
			$current = "0";
			$max = ord(substr($stats[4],1,1)) ;
			$online = "<font color=\"yellow\" size=\"3\" face=\"verdana\">Free</font>" ;
			$version = substr($stats[7], 1, 8) ;
			if (substr($stats[6],1,1) == "l") {
				$os = "Linux" ;
			} elseif (substr($stats[6],1,1) == "w"){
				$os = "Windows" ;
			} else {
				$os = "UNKNOWN" ;
			}
		} else {
			$current = ord(substr($stats[4],1,1)) ;
			$max = ord(substr($stats[4],2,1)) ;
			$version = substr($stats[6], 1, 8) ;
			if (substr($stats[5],1,1) == "l") {
				$os = "Linux" ;
			} elseif (substr($stats[5],1,1) == "w"){
				$os = "Windows" ;
			} else {
				$os = "UNKNOWN" ;
			}
		}
		echo "<table>\n" ;
		echo "<tr><td>\n" ;
		echo "<div><a href =\"http://l4d.x-line.net.ua\">l4d.x-line.net.ua</a></div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Server name : {$stats[0]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Status : {$online}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Map : {$stats[1]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>{$show_map}</div>" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Directory : {$stats[2]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Description : {$stats[3]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>OS : {$os}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Version : {$version}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Players(cur/max) : {$current}/{$max}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "</table>\n" ;
	}

?>

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-23 21:47:57

ProFTP писал(а):мне показалось что кодировка сбилась ...
это русский символ?

вот это \xFF\xFF\xFF\xFF\x54\x53\ в 16 системе вроде бы так utf8 декодируется... (у меня такая часто с json приходит, нужно декодировать обратно...)

если разрезать строки с кодировкой utf8 c помощью substr и аналогичными, то последние символы в словах бывает сбиваются, из-за того что substr напрямую с utf8 кодировкой не работает...

у меня кс.16 нету, такую ошибку сделать у себя не смогу, я не телепат!
где именно ошибка и в чем?
Привожу пример:

Код: Выделить всё

яяяяm127.0.0.1:27015?NovaLAN CS 1.6 #1?de_aztec?cstrike?Counter-Strike?/dl??????????????
Это вывод кс1.6: первый байт толи бит отвечает сколько онлайн игроков,
второй - максимально игроков
при пустом и не пустом серваке эти байты(биты) остаются на месте
Это вывод л4д:

Код: Выделить всё

яяяяIl4d.x-line.net.ua?l4d_vs_farm01_hilltop?left4dead?L4D - Versus?ф ?dw?1.0.1.8?Ђ‡i
-вот они

Код: Выделить всё

яяяяIl4d.x-line.net.ua?l4d_vs_farm01_hilltop?left4dead?L4D - Versus?ф? ?dw?1.0.1.8?Ђ‡i
но при пустом сервере - имеют такой вид

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Скрипт сбора статистики для l4d

Непрочитанное сообщение ProFTP » 2010-04-23 21:49:18

понятно, но первый вопрос:
ProFTP писал(а): это русский символ?
(я не знаю, по этому спрашиваю...)
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-23 22:12:41

ProFTP писал(а):понятно, но первый вопрос:
ProFTP писал(а): это русский символ?
(я не знаю, по этому спрашиваю...)
Нет это вообще число)

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-24 0:12:52

Скрипт с фиксами)

Код: Выделить всё

<?php

	// stats scripts
	
	$server="l4d.x-line.net.ua";
	$port="27015";
	$fp = fsockopen("udp://".$server, $port);
	if (!$fp) {
		echo $online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
    } else {
		fwrite($fp,"\x41\x32\x53\x5F\x53\x45\x52\x56\x45\x52\x51\x55\x45\x52\x59\x5F\x47\x45\x54\x43\x48\x41\x4C\x45\x4E\x47\x45");
		$start = time();
		socket_set_timeout($fp, 2);
		$st=fread($fp,1);
		$r=socket_get_status($fp);
		if (!$r){
			$online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
		} else {
			$online = "<font color=\"green\" size=\"3\" face=\"verdana\">On</font>" ;
			$r=$r["unread_bytes"];
			if ($r){
				$st.=@fread($fp,$r) ;
			}
			if ($st == ""){
				$online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
			} else {
				$online = "<font color=\"green\" size=\"3\" face=\"verdana\">On</font>" ;
			}
			fclose($fp);
			$st = substr($st, 6) ;
			$stats[0] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[1] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[2] = utf8_decode(substr($st, 0, strpos($st, chr(0)))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[3] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+2) ;
			$stats[4] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[5] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[6] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[7] = substr($st, 0, strpos($st, chr(0))) ;
			$show_map="<img src=\"http://image.www.gametracker.com/images/maps/160x120/l4d/{$stats[1]}.jpg\" width=\"100%\" border=\"0\" />";

			if (strlen($stats[4])== "1") {
				$current = "0";
				$max = ord(substr($stats[4],1,1)) ;
				$online = "<font color=\"yellow\" size=\"3\" face=\"verdana\">Free</font>" ;
				$version = substr($stats[7], 1, 8) ;
				if (substr($stats[6],1,1) == "l") {
					$os = "Linux" ;
				} elseif (substr($stats[6],1,1) == "w"){
					$os = "Windows" ;
				} else {
					$os = "UNKNOWN" ;
				}
			} else {
				$current = ord(substr($stats[4],1,1)) ;
				$max = ord(substr($stats[4],2,1)) ;
				$version = substr($stats[6], 1, 8) ;
				if (substr($stats[5],1,1) == "l") {
					$os = "Linux" ;
				} elseif (substr($stats[5],1,1) == "w"){
					$os = "Windows" ;
				} else {
					$os = "UNKNOWN" ;
				}
			}
		}
		echo "<table>\n" ;
		echo "<tr><td>\n" ;
		echo "<div><a href =\"http://l4d.x-line.net.ua\">l4d.x-line.net.ua</a></div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Server name : {$stats[0]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Status : {$online}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Map : {$stats[1]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>{$show_map}</div>" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Directory : {$stats[2]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Description : {$stats[3]}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>OS : {$os}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Game Version : {$version}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "<tr><td>\n" ;
		echo "<div>Players(cur/max) : {$current}/{$max}</div>\n" ;
		echo "</td></tr>\n" ;
		echo "</table>\n" ;
	}

?>

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение ProFTP » 2010-04-24 0:20:20

по ходу оборвалось, нужно как-то корректировать... и пробелы не отображаются...

я такую проблему видел только с utf8 если "порубать" букфы или если просто декодируются они... или если структура ut8 разбитая
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение ProFTP » 2010-04-24 0:21:12

а где фиксы?
а то разницу что-то сложно заметить...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-24 1:35:15

Фикс в отображении статуса сервера)
присмотрись там все видно

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-24 11:44:57

harmless писал(а):Фикс в отображении статуса сервера)
присмотрись там все видно

Код: Выделить всё

         if (strlen($stats[4])== "1") {
            $current = "0";
            $max = ord(substr($stats[4],1,1)) ;
            $online = "<font color=\"yellow\" size=\"3\" face=\"verdana\">Free</font>" ;
            $version = substr($stats[7], 1, 8) ;
            if (substr($stats[6],1,1) == "l") {
               $os = "Linux" ;
            } elseif (substr($stats[6],1,1) == "w"){
               $os = "Windows" ;
            } else {
               $os = "UNKNOWN" ;
            }
         } else {
            $current = ord(substr($stats[4],1,1)) ;
            $max = ord(substr($stats[4],2,1)) ;
            $version = substr($stats[6], 1, 8) ;
            if (substr($stats[5],1,1) == "l") {
               $os = "Linux" ;
            } elseif (substr($stats[5],1,1) == "w"){
               $os = "Windows" ;
            } else {
               $os = "UNKNOWN" ;
            }
         }

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение thefree » 2010-04-24 12:55:03

_http://forum.xakep.ru/m_1689785/mpage_1/key_/tm.htm#1689785
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-24 13:11:18

thefree писал(а):_http://forum.xakep.ru/m_1689785/mpage_1/key_/tm.htm#1689785
Вы там где-то видите поддержку л4д????
Я на офф сайте стима был!

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение thefree » 2010-04-25 9:23:01

вы почитайте про протокол ... и поймети что да как
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-25 11:55:10

thefree писал(а):вы почитайте про протокол ... и поймети что да как
А можно поточнее ссылку на протокол, а то что-то я не могу найти где там про протокол пишется!

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-25 12:11:21

harmless писал(а):
thefree писал(а):вы почитайте про протокол ... и поймети что да как
А можно поточнее ссылку на протокол, а то что-то я не могу найти где там про протокол пишется!
_http://developer.valvesoftware.com/wiki/Server_queries Сюда не посылать - там я был и про л4д ни слова :sorry:

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение thefree » 2010-04-25 12:49:38

harmless писал(а):
harmless писал(а):
thefree писал(а):вы почитайте про протокол ... и поймети что да как
А можно поточнее ссылку на протокол, а то что-то я не могу найти где там про протокол пишется!
_http://developer.valvesoftware.com/wiki/Server_queries Сюда не посылать - там я был и про л4д ни слова :sorry:
это и есть весь протокол остального и не надо
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-25 13:06:14

thefree писал(а):
harmless писал(а):
harmless писал(а):
thefree писал(а):вы почитайте про протокол ... и поймети что да как
А можно поточнее ссылку на протокол, а то что-то я не могу найти где там про протокол пишется!
_http://developer.valvesoftware.com/wiki/Server_queries Сюда не посылать - там я был и про л4д ни слова :sorry:
это и есть весь протокол остального и не надо
Ну так я про баг писал уже что битовая позиция в данном моде сбивается при заходе игроков в игру!
Но меня это стопорнуло аж на 1 сутки!(дома проверять гне на чём, пишу только на работе:))
Решение уже нашел!
Вот только не нашел ещё как инфу про игроков достать! :unknown:
Чтоб можно было выводить инфу про ники и фраги!
То что на вики у стима - чет не особо данный мод принимает комманды все которые там прописаны, а может ..... руки у меня кривые.
Если можешь помочь - пни в нужную сторону, буду весьма благодарен!

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: [php] Скрипт сбора статистики для l4d

Непрочитанное сообщение harmless » 2010-04-27 21:09:16

Дописал скрипт!
Точнее довел до того что смог пока сделать(много работы()

Код: Выделить всё

<?php

	/********************************************/
	/* stats scripts writen by harmless (harmless@bc-gold.org.ua) */
	/********************************************/
	
	$server	=	"l4d.x-line.net.ua" ;	// server name or IP address
	$ports	=	27015 ;				// server port
	$fp = fsockopen("udp://".$server, $port);
	if (!$fp) {
		echo $online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
    } else {
		fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
		$start = time();
		socket_set_timeout($fp, 2);
		$st=fread($fp,1);
		$r=socket_get_status($fp);
		if (!$r){
			$online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
		} else {
			$r=$r["unread_bytes"];
			if ($r){
				$st.=@fread($fp,$r) ;
			}
			if (empty($st)){
				$online = "<font color=\"red\" size=\"3\" face=\"verdana\">Off</font>" ;
			} else {
				$online = "<font color=\"green\" size=\"3\" face=\"verdana\">On</font>" ;
			}
			fclose($fp);
			$st = substr($st, 6) ;
			$stats[0] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[1] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[2] = utf8_decode(substr($st, 0, strpos($st, chr(0)))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[3] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+2) ;
			$stats[4] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[5] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[6] = substr($st, 0, strpos($st, chr(0))) ;
			$st = substr($st,strpos($st,chr(0))+1) ;
			$stats[7] = substr($st, 0, strpos($st, chr(0))) ;
			$show_map="<img src=\"http://image.www.gametracker.com/images/maps/160x120/l4d/{$stats[1]}.jpg\" width=\"100%\" border=\"0\" />";
			if (strlen($stats[4])== 1) {
				$current = "0" ;
				$max = ord($stats[5]) ;
				$online = "<font color=\"yellow\" size=\"3\" face=\"verdana\">Free</font>" ;
				$version = substr($stats[7], 1, 8) ;
				if (substr($stats[6],1,1) == "l") {
					$os = "Linux" ;
				} elseif (substr($stats[6],1,1) == "w"){
					$os = "Windows" ;
				} else {
					$os = "UNKNOWN" ;
				}
			} else {
				$current = ord(substr($stats[4],1,1)) ;
				$max = ord(substr($stats[4],2,1)) ;
				$version = substr($stats[6], 1, 8) ;
				if (substr($stats[5],1,1) == "l") {
					$os = "Linux" ;
				} elseif (substr($stats[5],1,1) == "w"){
					$os = "Windows" ;
				} else {
					$os = "UNKNOWN" ;
				}
			}
		}
		echo "<table border=\"1px\" cellpadding=\"0px\" cellspassing=\"0px\" bgcolor=\"grey\" width=\"310px\">\n\t<tr>\n\t\t<td>\n\t\t\t<div><a href =\"http://{$server}\">{$tats[0]}</a></div>\n\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t<td>\n\t\t\t<div>Server name : {$stats[0]}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>Status : {$online}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>Map : {$stats[1]}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>{$show_map}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>Game Directory : {$stats[2]}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>Game Description : {$stats[3]}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>OS : {$os}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>Game Version : {$version}</div>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<div>Players(cur/max) : {$current}/{$max}</div>\n\t\t</td>\n\t</tr>\n</table>\n" ;
	}

?>