Перейти к содержанию
Asterios

Состояние сервера на клановом сайте


Castro

Рекомендуемые сообщения

Здравствуйте, меня интересует вопрос - есть ли какой-либо скрипт, который позволил отображать информацию о сервере (количество народа онлайн, офф или он ли серв и т.д.) на сайте, созданном в системе ucoz. Заранее спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Такой скрипт есть, работает по тому же принципу что для оф. серверов. Нужно отправить и получить особый пакет.

Ищи в интернете.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Не считайте некропостером, никто так и не показал положительных результатов поиска ни в этой, ни в других темах форума (тему эту откопал в поиске по форуму).

Castro, на сайте, созданном в системе uCoz, можно показать только результат работы скрипта на другом сайте, где раздешены php скрипты, передав его юКозу в виде рисунка.

Такой скрипт есть, работает по тому же принципу что для оф. серверов. Нужно отправить и получить особый пакет.

Ищи в интернете.

Admin не уточнил только будет ли это работать на нашем сервере :)

Чем искать такой скрипт, оказалось проще написать самому скрипт, но берущий данные не из сервера, а со страницы http://asterios.tm/index.php'>http://asterios.tm/index.php

Вот сам скрипт:


// Получить содержимое файла в виде массива. Получение HTML-кода с удаленного сервера.
$aster = file('http://asterios.tm/index.php');

function online() {
global $aster, $block, $online, $off_tr, $live, $color;

//strpos -- Возвращает позицию первого вхождения подстроки
//int strpos ( string haystack, string needle [, int offset] )

//$nh - номер строки начала нужного блока
for ($nh=0; $nh<999; $nh++) { $pos_hunt = strpos($aster[$nh], "$block"); if ($pos_hunt > 0) break; }

//$ns - номер строки статуса
for ($ns=$nh; $ns<999; $ns++) { $pos_hunt = strpos($aster[$ns], "Status"); if ($pos_hunt > 0) break; }

// Функция strip_tags() удаляет из строки все теги HTML и РНР, оставляя в ней только текст
// string strip_tags(string строка [, string разрешённые_тeги])
$not_html = strip_tags($aster[$ns]);

// Функция strstr() возвращает часть строки, начинающуюся с первого вхождения заданной подстроки.
$status = strstr($not_html, "Status:"); // убрали непонятные символы в начале строки

// Функция substr() возвращает часть строки, начинающуюся с заданной начальной позиции и имеющую заданную длину.
// string substr(string строка, int начало [, int длина])
$online = substr($status, 7);

// $off_tr - число оффтрейдеров из строки, следующей за онлайном
$off_tr=substr(strstr(strip_tags($aster[$ns+1]), "Off-trade:"), 10);

// $live — «Живой» online — это онлайн за вычетом оффтрейдеров
$live = $online - $off_tr;

// ищем, есть ли в строке статуса вместо числа онлайна надпись off
$pos_off = strpos($aster[$ns], "off"); if ($pos_off > 0) {$color = "red";} else {$color = "green";}
} // конец функции online()

$block="hunter.png"; online();
$onl_x55 = $online; $off_tr_x55 = $off_tr; $live_x55 = $live; $color_x55 = $color;
$total += $online; $live_total += $live;

$block="tx.gif"; online();
$onl_x5 = $online; $off_tr_x5 = $off_tr; $live_x5 = $live; $color_x5 = $color;
$total += $online; $live_total += $live;

$block="prime.png"; online();
$onl_x1 = $online; $off_tr_x1 = $off_tr; $live_x1 = $live; $color_x1 = $color;
$total += $online; $live_total += $live;

$block="ember.png"; online();
$onl_x10 = $online; $off_tr_x10 = $off_tr; $live_x10 = $live; $color_x10 = $color;
$total += $online; $live_total += $live;

// ———————————————— Теперь делаем рисунок ————————————————————

$coord = imagettfbbox(
10, // размер шрифта
0, // угол наклона шрифта (0 = не наклоняем)
"timesbd.ttf", // имя шрифта, а если точнее, ttf-файла
$onl_x55 // собственно, текст
);
/* Функция imagettfbbox возвращает нам массив из восьми элементов,
содержащий всевозможные координаты минимального прямоугольника,
в который можно вписать данный текст. Индексы массива
удобно обозначить на схеме в виде координат (x,y):

(6,7) (4,5)
+--------------+
|Какой-то текст|
+--------------+
(0,1) (2,3)

По этой схеме легко вычислить ширину и высоту текста:
$width = $coord[2] - $coord[0];
$height = $coord[1] - $coord[7];
*/

$width_x55 = $coord[2] - $coord[0];

$coord = imagettfbbox(10,0,"timesbd.ttf",$onl_x5); $width_x5 = $coord[2] - $coord[0];
$coord = imagettfbbox(10,0,"timesbd.ttf",$onl_x1); $width_x1 = $coord[2] - $coord[0];
$coord = imagettfbbox(10,0,"timesbd.ttf",$onl_x10); $width_x10 = $coord[2] - $coord[0];

$width = 180 + $width_x55 + $width_x5 + $width_x1 + $width_x10;

$image = imagecreatetruecolor($width,60) // создаём изображение...
or die('Cannot create image'); // ...или прерываем работу скрипта в случае ошибки

// —————————————————————————— Используемые цвета ————————————————————————
$fon = imagecolorallocate($image, 0x21, 0x14, 0x10); // фон рисунка
$fon_serv = imagecolorallocate($image, 0xDE, 0x38, 0x10); // фон надписи сервера
$color_serv = imagecolorallocate($image, 0xDE, 0xDB, 0x7B); // цвет названия сервера
$color_table = imagecolorallocate($image, 0x7B, 0x69, 0x39); // цвет шрифта
$color_tr = imagecolorallocate($image, 0xB5, 0x9E, 0x73); // цвет шрифта первой строки
$green = imagecolorallocate($image, 0, 0x80, 0); // цвет онлайна
$red = imagecolorallocate($image, 0xBB, 0, 0); // цвет выключенного сервера
// ———————————————————————————————————————————————————————————————————————

imagefill($image, 0, 0, $fon); // зальём фон

imagefilledrectangle($image, 2, 2, 95, 18, $fon_serv); // Рисует закрашенный прямоугольник на изображении image
// Прямоугольник определяется координатами левого верхнего и правого нижнего углов

$w = 5; // горизонтальный отступ
$h = 16; // верт.
imagettftext(
$image, // картинка, на которую накладываем текст
13, // размер шрифта
0, // угол наклона шрифта
$w, $h, // координаты, соответствующие левому нижнему углу первого символа
$color_serv, // цвет шрифта названия сервера
"timesbd.ttf",// имя ttf-файла
"Asterios.tm" // накладываемый текст
);
imagettftext($image,10,0,30,30, $color_table,"times.ttf","Online");
imagettftext($image,10,0,22,43, $color_table,"times.ttf","Off-trade");

// Преобразование Windows 1251 -> Unicode
function win2uni($s)
{
$s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5
// преобразование iso8859-5 -> unicode:
for ($result='', $i=0; $i<strlen($s); $i++) {
$charcode = ord($s[$i]);
$result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
}
return $result;
}
imagettftext($image,10,0,3,56, $color_table,"times.ttf","«".win2uni('Живой')."» online");

// ——————————— Теперь наносим столбец х55 ———————————————

$w_x55 = 102 + $width_x55 / 2 - 7;
imagettftext($image,10,0,$w_x55,15, $color_tr,"times.ttf","x55");

if ($color_x55 == "green") {$color_x55 = $green;} else {$color_x55 = $red;}
imagettftext($image,10,0,102,30, $color_x55,"timesbd.ttf",$onl_x55);

$coord = imagettfbbox(10,0,"times.ttf",$off_tr_x55);
$w_x55 = 102 + $width_x55 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x55,43, $color_table,"times.ttf",$off_tr_x55);

$coord = imagettfbbox(10,0,"timesbd.ttf",$live_x55);
$w_x55 = 102 + $width_x55 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x55,56, $color_x55,"timesbd.ttf",$live_x55);

// ——————————— столбец х5 ———————————————

$stb2 = 102 + $width_x55 + 7;
$w_x5 = $stb2 + $width_x5 / 2 - 4;
imagettftext($image,10,0,$w_x5,15, $color_tr,"times.ttf","x5");

$w_x5 = $stb2;
if ($color_x5 == "green") {$color_x5 = $green;} else {$color_x5 = $red;}
imagettftext($image,10,0,$w_x5,30, $color_x5,"timesbd.ttf",$onl_x5);

$coord = imagettfbbox(10,0,"times.ttf",$off_tr_x5);
$w_x5 = $stb2 + $width_x5 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x5,43, $color_table,"times.ttf",$off_tr_x5);

$coord = imagettfbbox(10,0,"timesbd.ttf",$live_x5);
$w_x5 = $stb2 + $width_x5 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x5,56, $color_x5,"timesbd.ttf",$live_x5);

// ——————————— столбец х1 ———————————————

$stb3 = $stb2 + $width_x5 + 7;
$w_x1 = $stb3 + $width_x1 / 2 - 3;
imagettftext($image,10,0,$w_x1,15, $color_tr,"times.ttf","x1");

$w_x1 = $stb3;
if ($color_x1 == "green") {$color_x1 = $green;} else {$color_x1 = $red;}
imagettftext($image,10,0,$w_x1,30, $color_x1,"timesbd.ttf",$onl_x1);

$coord = imagettfbbox(10,0,"times.ttf",$off_tr_x1);
$w_x1 = $stb3 + $width_x1 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x1,43, $color_table,"times.ttf",$off_tr_x1);

$coord = imagettfbbox(10,0,"timesbd.ttf",$live_x1);
$w_x1 = $stb3 + $width_x1 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x1,56, $color_x1,"timesbd.ttf",$live_x1);

// ——————————— столбец х10 ———————————————

$stb4 = $stb3 + $width_x1 + 7;
$w_x10 = $stb4 + $width_x10 / 2 - 8;
imagettftext($image,10,0,$w_x10,15, $color_tr,"times.ttf","x10");

$w_x10 = $stb4;
if ($color_x10 == "green") {$color_x10 = $green;} else {$color_x10 = $red;}
imagettftext($image,10,0,$w_x10,30, $color_x10,"timesbd.ttf",$onl_x10);

$coord = imagettfbbox(10,0,"times.ttf",$off_tr_x10);
$w_x10 = $stb4 + $width_x10 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x10,43, $color_table,"times.ttf",$off_tr_x10);

$coord = imagettfbbox(10,0,"timesbd.ttf",$live_x10);
$w_x10 = $stb4 + $width_x10 - $coord[2] + $coord[0];
imagettftext($image,10,0,$w_x10,56, $color_x10,"timesbd.ttf",$live_x10);

// ——————————— столбец суммарного онлайна ———————————————

$stb5 = $stb4 + $width_x10 +5;
$w_sum = $stb5;
imagettftext($image,10,0,$w_sum,15, $color_tr,"times.ttf",win2uni('В сумме'));

$coord = imagettfbbox(10,0,"times.ttf",$total);
$w_sum = $stb5 + 25 - ($coord[2] - $coord[0])/2;
imagettftext($image,10,0,$w_sum,30, $color_table,"times.ttf",$total);

$coord = imagettfbbox(10,0,"times.ttf",$live_total);
$w_sum = $stb5 + 25 - ($coord[2] - $coord[0])/2;
imagettftext($image,10,0,$w_sum,56, $color_table,"times.ttf",$live_total);

header('Content-type: image/png'); // устанавливаем тип документа - "изображение в формате PNG".
imagepng($image); //выводим сгенерированную картинку в формате PNG
imagedestroy($image); // освобождаем память, выделенную для изображения
?>
<?php

Чтобы работал скрипт, ещё нужно положить в папку с файлом скрипта файлы шрифтов timesbd.ttf и times.ttf (можно залить, скопировав из системной папки компьютера С:\Windows\Fonts )

Открывает страничку сайта астериоса, списывает с неё данные по онлайну серверов и делает рисунок в формате .png

Полученный рисунок уже можно вставлять на юКозовском сайте тегом рисунка. Но для этого нужен сервер, где он будет выполняться. Нашёл один такой бесплатный сервер.

Тег для вставки на сайт клана полученного баннера

<a href='http://asterios.tm/' target=_blank><img border='0' align='absmiddle' src='http://apo.u-gu.ru/banner_aster.php' alt='Asterios.tm'></a>

Цвета подобраны в стиле страничек сайта http://asterios.tm/ (сохранённый скрин)—>post-19709-0-07589400-1307119106_thumb.p

Как выглядит этот баннер можно посмотреть на тестовой странице http://apo.u-gu.ru/aster.html

Чтобы легко изменить цвета под другой стиль, все изпользуемые в скрипте цвета собрал в одном блоке.


$fon = imagecolorallocate($image, 0x21, 0x14, 0x10); // фон рисунка
$fon_serv = imagecolorallocate($image, 0xDE, 0x38, 0x10); // фон надписи сервера
$color_serv = imagecolorallocate($image, 0xDE, 0xDB, 0x7B); // цвет названия сервера
$color_table = imagecolorallocate($image, 0x7B, 0x69, 0x39); // цвет шрифта
$color_tr = imagecolorallocate($image, 0xB5, 0x9E, 0x73); // цвет шрифта первой строки
$green = imagecolorallocate($image, 0, 0x80, 0); // цвет онлайна
$red = imagecolorallocate($image, 0xBB, 0, 0); // цвет выключенного сервера
// ———————————————————————————————————————————————————————————————————————
// —————————————————————————— Используемые цвета ————————————————————————

На своём сайте клана http://apo.clan.su/ цвета баннера изменил под стиль сайта.(сохранённый скрин)—> post-19709-0-07470200-1307119122_thumb.p

Так что есть раздолье для фантазии.

В идеале, конечно же, было бы получать данные из самой базы сервера. Но и в таком виде свои плюсы: работа скрипта равносильна однократному открытию стрнанички сайта без возможной угрозы серверу :)

Изменено пользователем Atandil
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...