Мониторинг сервера HL2DM на PHP

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Ответить
Сообщение
Автор
Аватара пользователя
Thomas23
Сержант
Сержант
Сообщения: 77
Зарегистрирован: 14.04.2009
Откуда: Kiev
Благодарил (а): 3 раза
Контактная информация:

#1 Сообщение 04.04.2011, 00:46

Сабж. Нужен простенький скрипт для парсинга названия сервера, карты, количества игроков. Мб есть у кого?
Изображение

Аватара пользователя
Temasan
Капитан
Капитан
Сообщения: 250
Зарегистрирован: 21.11.2009
Откуда: Minsk
Поблагодарили: 26 раз
Контактная информация:

#2 Сообщение 04.04.2011, 01:08

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

<?php

$ip = "80.94.235.5";
$port = "27020";
$timeout = 2;
$packet_count = 0;

function lgsl_unpack($string, $format)
{
list(,$string) = @unpack($format, $string);

return $string;
}

function lgsl_cut_byte(&$buffer, $length)
{
$string = substr($buffer, 0, $length);

$buffer = substr($buffer, $length);

return $string;
}

function lgsl_cut_string(&$buffer, $end_marker = "\x00")
{
$length = strpos($buffer, $end_marker);

if ($length === FALSE)
{
$length = strlen($buffer);
}

$string = substr($buffer, 0, $length);

$buffer = substr($buffer, $length + strlen($end_marker));

return $string;
} 

$server = array();

global $lgsl_fp; 

stream_set_timeout($lgsl_fp = @fsockopen("udp://" . $ip, $port, $errno, $errstr, $timeout), 1); 

if($lgsl_fp){ 

@fwrite($lgsl_fp, "\xFF\xFF\xFF\xFF\x54Source Engine Query\x00");

do
{
$packet = fread($lgsl_fp, 4096);
$packet_temp[$packet_count] = $packet;
$packet_count ++;

if (substr($packet, 0, 4) == "\xFF\xFF\xFF\xFF") { $packet_total = 1; $packet_type = 1; }
}
while ($packet && $packet_count < $packet_total);

foreach ($packet_temp as $packet)
{
if ($packet_type == 1) { $packet_index = 0; }


$buffer[$packet_index] = $packet;
}

$buffer = implode("", $buffer);

$response_type = 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);
$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']['dedicated'] = lgsl_cut_byte($buffer, 1);
}
?>
подойдет не только в HL2DM но и для других игр на движке

scorp75
Майор
Майор
Сообщения: 586
Зарегистрирован: 20.11.2008
Откуда: Чебоксары
Поблагодарили: 52 раза

#3 Сообщение 04.04.2011, 04:57

Temasan
Может лучше дать человеку весь lgsl а не только его кусок ?
Игры которые потдерживаются монитором
Aliens VS Predator 2010 ( Rebellion )
Americas Army
Americas Army 3
Arca Sim Racing
ArmA: Armed Assault
ArmA 2
Aliens VS. Predator 2
Battlefield Bad Company 2
Battlefield Vietnam
Battlefield 1942
Battlefield 2
Battlefield 2142
Call Of Duty
Call Of Duty: United Offensive
Call Of Duty: World at War
Call Of Duty 2
Call Of Duty 4
Command and Conquer: Renegade
Counter-Strike 2D
Crysis
Crysis Wars
Cube Engine ( AssaultCube, Sauerbraten, Blood Frontier )
Doom - Skulltag
Doom - ZDaemon
Doom 3
Deer Hunter 2005
Far Cry
F.E.A.R.
Operation Flashpoint
Freelancer
Frontlines: Fuel Of War
F1 Challenge 99-02
Generic GameSpy Protocol 1
Generic GameSpy Protocol 2
Generic GameSpy Protocol 3
Ghost Recon
Ghost Recon: Advanced Warfighter
Ghost Recon: Advanced Warfighter 2
GTR 2
Hidden and Dangerous 2
Half-Life 1 Steam ( CS 1.6, Natural Selection, FireArms, etc, etc )
Half-Life 1 WON ( CS 1.5 etc )
Halo
IL-2 Sturmovik
JediKnight 2: Jedi Outcast
JediKnight: Jedi Academy
Killing Floor
Kingpin: Life of Crime
Medal of Honor: Allied Assault
Medal of Honor: Allied Assault Breakthrough
Medal of Honor: Allied Assault Spearhead
Medal of Honor: Pacific Assault
Multi Theft Auto
Nascar Thunder 2004
NeverWinter Nights
NeverWinter Nights 2
Nexuiz
Open Transport Tycoon Deluxe
PainKiller
Plain Sight
Prey
Quake World
Enemy Territory: Quake Wars
Quake 2
Quake 3
Quake 4
Raven Shield
Red Orchestra
RFactor
San Andreas Multiplayer
Savage
Savage 2
Serious Sam
Serious Sam 2
Shattered Horizon
Soldier of Fortune 2
Soldat
Source ( Half-Life 2, CS:Source, TF2, Left4Dead, NeoTokyo, etc, etc )
S.T.A.L.K.E.R.
S.T.A.L.K.E.R. Clear Sky
StarTrek Elite-Force
Star Wars: Battlefront
Star Wars: Battlefront 2
Star Wars: Republic Commando
SWAT 4
Teeworlds
Tribes ( Starsiege )
Tribes 2
Tribes Vengeance
UrbanTerror
Unreal Tournament
Unreal Tournament 2003
Unreal Tournament 2004
Unreal Tournament 3
Vice City Multiplayer
Vietcong
Vietcong 2
Warsow
Wolfenstein: Enemy Territory
Wolfenstein: Return To Castle Wolfenstein
Wolfenstein ( 2009 By Raven )
Формат потдерживаемых картинок JPG, GIF, и PNG
Вот к примеру версия LGSL v5.8 Stand-Alone для тех у кого нет желания использовать мониторинг на готовую cms
Ну и вот тут русский форум мониторинга.

Ну и собственно как оно может выглядеть к примеру, не сочтите за рекламу =)

Аватара пользователя
Thomas23
Сержант
Сержант
Сообщения: 77
Зарегистрирован: 14.04.2009
Откуда: Kiev
Благодарил (а): 3 раза
Контактная информация:

#4 Сообщение 04.04.2011, 15:50

Благодарю. И кусок - отлично, и полный пригодится :).
Изображение

Ответить