Castro Опубликовано 22 апреля, 2010 Поделиться Опубликовано 22 апреля, 2010 Здравствуйте, меня интересует вопрос - есть ли какой-либо скрипт, который позволил отображать информацию о сервере (количество народа онлайн, офф или он ли серв и т.д.) на сайте, созданном в системе ucoz. Заранее спасибо. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Castro Опубликовано 23 апреля, 2010 Автор Поделиться Опубликовано 23 апреля, 2010 ап 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Admin Опубликовано 25 апреля, 2010 Поделиться Опубликовано 25 апреля, 2010 Такой скрипт есть, работает по тому же принципу что для оф. серверов. Нужно отправить и получить особый пакет. Ищи в интернете. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Atandil Опубликовано 3 июня, 2011 Поделиться Опубликовано 3 июня, 2011 (изменено) Не считайте некропостером, никто так и не показал положительных результатов поиска ни в этой, ни в других темах форума (тему эту откопал в поиске по форуму). 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/ (сохранённый скрин)—> Как выглядит этот баннер можно посмотреть на тестовой странице 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/ цвета баннера изменил под стиль сайта.(сохранённый скрин)—> Так что есть раздолье для фантазии. В идеале, конечно же, было бы получать данные из самой базы сервера. Но и в таком виде свои плюсы: работа скрипта равносильна однократному открытию стрнанички сайта без возможной угрозы серверу Изменено 3 июня, 2011 пользователем Atandil 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.