Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Помогите со скриптом

, мониторинг
Droby
сообщение 28.11.2013, 18:31
Сообщение #1
Стаж: 12 лет

Сообщений: 241
Благодарностей: 58
Полезность: 0

Всем привет, помогите сделать мониторинг что бы было:
Карта Ип Название и кол-во игроков / максимум игроков, примерно как тут хочу (realserver.kz)
под DLE сайт вот этот шаблон Gameserv.kz
буду благодарен с меня лойс)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
m1ku
сообщение 2.12.2013, 6:19
Сообщение #2
Стаж: 13 лет

Сообщений: 194
Благодарностей: 36
Полезность: < 0

Цитата(Droby @ 28.11.2013, 19:31) *
Всем привет, помогите сделать мониторинг что бы было:
Карта Ип Название и кол-во игроков / максимум игроков, примерно как тут хочу (realserver.kz)
под DLE сайт вот этот шаблон Gameserv.kz
буду благодарен с меня лойс)



пхп файл с ксс подайте? есть уже готовый.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kazakh777
сообщение 2.12.2013, 8:51
Сообщение #3


Стаж: 13 лет

Сообщений: 127
Благодарностей: 8
Полезность: 48

http://dle-shop.ru/freemoduldle/60-modul-m...lya-dle-96.html
Там стойт это
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Droby
сообщение 3.12.2013, 16:26
Сообщение #4
Стаж: 12 лет

Сообщений: 241
Благодарностей: 58
Полезность: 0

Цитата(m1ku @ 2.12.2013, 10:19) *
пхп файл с ксс подайте? есть уже готовый.

пойдет ))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Droby
сообщение 3.12.2013, 16:41
Сообщение #5
Стаж: 12 лет

Сообщений: 241
Благодарностей: 58
Полезность: 0

Цитата(kazakh777 @ 2.12.2013, 12:51) *

http://screenshot.su/show.php?img=249ea60b...d44ed3a5f70.jpg ОШИБКА
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Droby
сообщение 3.12.2013, 17:03
Сообщение #6
Стаж: 12 лет

Сообщений: 241
Благодарностей: 58
Полезность: 0

как решить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя counterstrikec4
сообщение 3.12.2013, 17:42
Сообщение #7
Стаж: 15 лет

Сообщений: 191
Благодарностей: 32
Полезность: 34

http://screenshot.su/show.php?img=249ea60b...d44ed3a5f70.jpg ОШИБКА
init.php в студию по пути со скрина
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Droby
сообщение 3.12.2013, 18:13
Сообщение #8
Стаж: 12 лет

Сообщений: 241
Благодарностей: 58
Полезность: 0

Цитата(counterstrikec4 @ 3.12.2013, 21:42) *
http://screenshot.su/show.php?img=249ea60b...d44ed3a5f70.jpg ОШИБКА
init.php в студию по пути со скрина

http://screenshot.su/show.php?img=bf4b78b2...f6f35cfc6b4.jpg
Скрытый текст
<?php

class ServerMon {
private static $timeout = 1;
private static $servers;
private static $imDir;
private static $csDir;
private static $cssDir;

public static function run() {
global $tpl, $js_array, $member_id, $metatags, $config;
self::$imDir = '/engine/modules/ServerMon/images';
self::$csDir = '/engine/modules/ServerMon/maps/cs';
self::$cssDir = '/engine/modules/ServerMon/maps/css';

self::$servers = @unserialize(file_get_contents(ENGINE_DIR . '/modules/ServerMon/data/servers.php'));

if(isset($_POST['getPlayers']) && isset($_POST['server']) && !empty($_POST['server'])){
@header( "Content-type: text/html; charset=utf-8" );
echo '<div id="ServerMonPlayers" title="' . iconv("CP1251", "UTF-8", "Список игроков на сервере ") . htmlentities($_POST['server']) . '">';
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
$players = self::getPlayers($_POST['server']);
if(!is_array($players)) $players = array();
echo '<table width="100%" border="1">';
echo iconv("CP1251", "UTF-8", '<tr><td>&nbsp;№</td><td>&nbsp;Ник</td><td>&nbsp;Килов:</td><td>&nbsp;На сервере:</td></tr>');
foreach($players as $num => $player){
echo '<tr>
<td>&nbsp;' . $num . '</td>
<td>&nbsp;' . htmlspecialchars($player['name'], ENT_NOQUOTES, "UTF-8") . '</td>
<td>&nbsp;' . $player['score'] . '</td>
<td>&nbsp;' . $player['time'] . '</td>
</tr>';
}
echo '</table></div>';
} elseif(isset($_POST['getSettings']) && isset($_POST['server']) && !empty($_POST['server'])){
@header( "Content-type: text/html; charset=utf-8" );
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
echo '<div id="ServerMonSettings" title="' . iconv("CP1251", "UTF-8", "Настройки сервера ") . htmlentities($_POST['server']) . '">';
$settings = self::getSettings($_POST['server']);
if(!is_array($settings)) $settings = array();
$num = 1;
echo '<table width="100%" border="1">';
echo iconv("CP1251", "UTF-8", '<tr><td>&nbsp;№</td><td>&nbsp;Название</td><td>&nbsp;Значение:</td></tr>');
foreach($settings as $setting => $value){
echo '<tr>
<td>&nbsp;' . $num . '</td>
<td>&nbsp;' . htmlspecialchars($setting, ENT_NOQUOTES, "UTF-8") . '</td>
<td>&nbsp;' . htmlspecialchars($value, ENT_NOQUOTES, "UTF-8") . '</td>
</tr>';
$num++;
}
echo '</table></div>';
} elseif(isset($_GET['iframe']) && isset($_GET['server']) && !empty($_GET['server'])){
if(!(bool)preg_match('/[A-Za-z0-9.-_]:[0-9]/', $_GET['server'])){
die('Сервер имеет неверный формат!');
}
$serv = explode(':', $_GET['server']);
$server = self::getInfo($_GET['server']);

if(!$server){
$server['ip'] = $serv[0];
$server['port'] = $serv[1];
$server['offline'] = true;
}

$monTpl = new dle_template;
$monTpl->dir = ENGINE_DIR . '/modules/ServerMon';
$monTpl->load_template('iframe.tpl');

if($server['offline']){
$monTpl->set_block("'\[offline\](.*?)\[/offline\]'si", "\\1");
$monTpl->set_block("'\[online\](.*?)\[/online\]'si", "");

$monTpl->set('{ip}', $server['ip']);
$monTpl->set('{port}', $server['port']);
$monTpl->set('{image}', self::$imDir . '/offline.png');
$monTpl->compile($server['ip'] . ':' . $server['port']);
} else {
$monTpl->set_block("'\[offline\](.*?)\[/offline\]'si", "");
$monTpl->set_block("'\[online\](.*?)\[/online\]'si", "\\1");

$image = ($server['game'] == 'cs') ? self::$csDir . DIRECTORY_SEPARATOR . $server['mapname'] . '.jpg' : self::$cssDir . DIRECTORY_SEPARATOR . $server['mapname'] . '.jpg' ;
$image = file_exists( ROOT_DIR . $image ) ? $image : self::$imDir . '/noimage.png' ;

$monTpl->set('{game}', $server['game']);
$monTpl->set('{mapname}', $server['mapname']);
$monTpl->set('{image}', $image);
$monTpl->set('{hostname}', $server['hostname']);
$monTpl->set('{players}', $server['players']);
$monTpl->set('{maxplayers}', $server['maxplayers']);
$monTpl->set('{ip}', $server['ip']);
$monTpl->set('{port}', $server['port']);
$monTpl->set('{os}', self::$imDir . '/' . $server['server_os'] . '.png');
$monTpl->compile($server['ip'] . ':' . $server['port']);
}
echo '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />';
echo $monTpl->result[$server['ip'] . ':' . $server['port']];
die();
} else {
$monTpl = new dle_template;
$monTpl->dir = ENGINE_DIR . '/modules/ServerMon';

self::$servers = is_array(self::$servers) ? self::$servers : array();

foreach(self::$servers as $server) {

$serv = explode(':', $server);
$server = self::getInfo($server);

if(!$server){
$server['ip'] = $serv[0];
$server['port'] = $serv[1];
$server['offline'] = true;
}

if(file_exists($monTpl->dir . DIRECTORY_SEPARATOR . $server['ip'] . ':' . $server['port'] . '.tpl')) $monTpl->load_template($server['ip'] . ':' . $server['port'] . '.tpl');
else $monTpl->load_template('block.tpl');

if($server['offline']){
$monTpl->set_block("'\[offline\](.*?)\[/offline\]'si", "\\1");
$monTpl->set_block("'\[online\](.*?)\[/online\]'si", "");

$monTpl->set('{ip}', $server['ip']);
$monTpl->set('{port}', $server['port']);
$monTpl->set('{image}', self::$imDir . '/offline.png');
$monTpl->compile($server['ip'] . ':' . $server['port']);
} else {
$monTpl->set_block("'\[offline\](.*?)\[/offline\]'si", "");
$monTpl->set_block("'\[online\](.*?)\[/online\]'si", "\\1");

$image = ($server['game'] == 'cs') ? self::$csDir . DIRECTORY_SEPARATOR . $server['mapname'] . '.jpg' : self::$cssDir . DIRECTORY_SEPARATOR . $server['mapname'] . '.jpg' ;
$image = file_exists( ROOT_DIR . $image ) ? $image : self::$imDir . '/noimage.png' ;

$monTpl->set('{game}', $server['game']);
$monTpl->set('{mapname}', $server['mapname']);
$monTpl->set('{image}', $image);
$monTpl->set('{hostname}', $server['hostname']);
$monTpl->set('{players}', $server['players']);
$monTpl->set('{maxplayers}', $server['maxplayers']);
$monTpl->set('{ip}', $server['ip']);
$monTpl->set('{port}', $server['port']);
$monTpl->set('{os}', self::$imDir . '/' . $server['server_os'] . '.png');
$monTpl->compile($server['ip'] . ':' . $server['port']);
}

$tpl->set('{' . $server['ip'] . ':' . $server['port'] . '}', $monTpl->result[$server['ip'] . ':' . $server['port']]);
}
if($config['version_id'] < 9.0) {
$js_array[] = "engine/modules/ServerMon/js/jq.js";
$metatags .= PHP_EOL . '<link rel="stylesheet" type="text/css" href="/engine/modules/ServerMon/css/jq.css" />';
}

$js_array[] = "engine/modules/ServerMon/js/ServerMon.js";
if($member_id['user_group'] == 1) $js_array[] = "engine/modules/ServerMon/js/admin.js";
}
}
private static function getServer($server) {
return explode(':', $server);
}
private static function getInfo($server) {
$data = array();
$server = self::getServer($server);
$ip = $server[0];
$port = intval($server[1]);

$fp = @fsockopen("udp://$ip", $port, $errno, $errstr, self::$timeout);
if (!$fp) {
return false;
}
stream_set_timeout($fp, self::$timeout);
stream_set_blocking($fp, true);

$challenge = "\xFF\xFF\xFF\xFFTSource Engine Query\x00";

fwrite($fp, $challenge);

$buffer = fread($fp, 4096);

if (!$buffer) {
fclose($fp);
return false;
}

$buffer = trim(substr($buffer, 4));
fclose($fp);
if (!trim($buffer)) {
return false;
}

$tmp = explode("\x00", $buffer);

$place = strlen($tmp[0] . $tmp[1] . $tmp[2] . $tmp[3] . $tmp[4]) + 5;
$version = ord($buffer[$place + 2]); // Network Version
if ($version == 47 || $version == 48) {
$data['game'] = 'cs';
$data['mapname'] = self::toShow($tmp[2]);
$data['hostname'] = self::toShow($tmp[1]);
} else {
$data['game'] = 'css';
$data['mapname'] = self::toShow($tmp[1]);
$data['hostname'] = self::toShow($tmp[0]);
}
$data['players'] = ord($buffer[$place]);
$data['maxplayers'] = ord($buffer[$place + 1]);
$data['ip'] = self::toShow($ip);
$data['port'] = $port;
$data['server_os'] = $buffer[$place + 4]; // W indows or L inux
#$data['server_secure'] = ord($tmp[14]); // VAC

return $data;
}

private static function getPlayers($server) {
$server = self::getServer($server);
$ip = $server[0];
$port = $server[1];

$fp = fsockopen("udp://$ip", $port, $errno, $errstr, self::$timeout);
if (!$fp) {
return false;
}
stream_set_timeout($fp, self::$timeout);
stream_set_blocking($fp, true);

$challenge_code = "\xFF\xFF\xFF\xFF\x55\x00\x00\x00\x00";

fwrite($fp, $challenge_code);
$buffer = fread($fp, 4096);

if (!trim($buffer)) {
fclose($fp);
return false;
}

$challenge_code = substr($buffer, 5, 4);

$challenge = "\xFF\xFF\xFF\xFFU" . $challenge_code;
fwrite($fp, $challenge);

$buffer = fread($fp, 4096);

if (!$buffer) {
fclose($fp);
return false;
}
$buffer = trim(substr($buffer, 4));
fclose($fp);
if (!trim($buffer)) {
return false;
}

$player = array();
$player_number = 0;
$position = 2;

do {
$player_number++;
$player[$player_number]['name'] = null;
if (!isset($buffer[$position])) {
return 'Сервер пуст sad.gif';
}
$player[$player_number]['id'] = ord($buffer[$position]);
$position++;
while ($buffer[$position] != "\x00" && $position < strlen($buffer)) {
$player[$player_number]['name'] .= $buffer[$position];
$position++;
}
$player[$player_number]['score'] = (ord($buffer[$position + 1])) + (ord($buffer[$position +
2]) * 256) + (ord($buffer[$position + 3]) * 65536) + (ord($buffer[$position + 4]) *
16777216);
if ($player[$player_number]['score'] > 2147483648)
$player[$player_number]['score'] -= 4294967296;
$time = substr($buffer, $position + 5, 4);
if (strlen($time) < 4) {
return false;
}
list(, $time) = unpack("f", $time);
$time = mktime(0, 0, $time);
$player[$player_number]['time'] = date("H:i:s", $time);
$position += 9;
} while ($position < strlen($buffer));
return $player;
}

private static function getSettings($server) {
$server = self::getServer($server);
$ip = $server[0];
$port = $server[1];

$fp = fsockopen("udp://$ip", $port, $errno, $errstr, self::$timeout);
if (!$fp) {
return false;
}
stream_set_timeout($fp, self::$timeout);
stream_set_blocking($fp, true);
$challenge_code = "\xFF\xFF\xFF\xFF\x56\x00\x00\x00\x00";

fwrite($fp, $challenge_code);
$buffer = fread($fp, 4096);

if (!trim($buffer)) {
fclose($fp);
return false;
}

$challenge_code = substr($buffer, 5, 4);

$challenge = "\xFF\xFF\xFF\xFFV" . $challenge_code;

fwrite($fp, $challenge);

$buffer = fread($fp, 4096);

if (!$buffer) {
fclose($fp);
return false;
}

$second_packet = fread($fp, 4096);
if (strlen($second_packet) > 0) {
$reverse_check = dechex(ord($buffer[8]));
if ($reverse_check[0] == "1") {
$tmp = $buffer;
$buffer = $second_packet;
$second_packet = $tmp;
}
$buffer = substr($buffer, 13);
$second_packet = substr($second_packet, 9);
$buffer = trim($buffer . $second_packet);
} else
$buffer = trim(substr($buffer, 4));


$setting = array();
$tmp = substr($buffer, 2);
$rawdata = explode("\x00", $tmp);
for ($i = 1; $i < count($rawdata); $i += 2) {
$rawdata[$i] = strtolower($rawdata[$i]);
@$setting[$rawdata[$i]] = $rawdata[$i + 1];
}
return $setting;
}
private static function toShow($string){
return htmlentities(iconv("UTF-8", "CP1251//IGNORE", $string), ENT_NOQUOTES, "CP1251");
}
}
ServerMon::run();
?>


Отредактировал: Droby, - 3.12.2013, 18:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя counterstrikec4
сообщение 3.12.2013, 18:22
Сообщение #9
Стаж: 15 лет

Сообщений: 191
Благодарностей: 32
Полезность: 34

ладно дабы не пилить твой мозг, и не терять моё время попробуй:
Этот модуль(Не реклама): http://www.hotstrike.kiev.ua/oformlenie-i-...ya-dle-dle.html

Отредактировал: counterstrikec4, - 3.12.2013, 19:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: