В свое время Kristin@ переделала проверку статуса шарда с C# на php.
Как оказалось народ до сих пор ищет подобные скрипты, поэтому кину сюда вариант.
status.php
CODE |
<?php $address='udp://viking.r86.net'; #Адрес шарда $port=5121; #и порт. $refresh=120; # время обновления в секундах
################################################### ###################################################
$status = fsockopen($address,$port); socket_set_timeout($status, 000010); fwrite($status,"\x42\x4E\x58\x49\x00\x14"); $_data = fread($status, 5000); if($_data) { $_data = explode(ord("|"),substr($_data,10,2)); $_data = unpack("C*", $_data[0]); $result['players'] = $_data[1]; $result['players_max'] = $_data[2]; $result['color'] = '#078F07'; } else { $result['players'] = 0; $result['players_max'] = 0; $result['color'] = '#FF2020'; } fclose($status);
################################################### echo "<meta http-equiv='REFRESH' content='$refresh'>"; echo '<body style="background: '.$result['color'].';margin: 0 0 0 0; padding 0 0 0 0;font-family: Arial;font-size: 12px;color:yellow">'; echo $address.":".$port."["; echo $result['players'].'/'.$result['players_max']."]";
?>
|
Удобно расположить на рабочем столе, с помощью ActiveDesktop.
Пример работы
тут
baskan
Sep 20 2005, 15:10

За пример наш адресс взяли, хотя мы и искали
Вот вопросик у меня тут появился, как это мне впихнуть в блок PHPNuke

, ибо там ведь html код нужен.
QUOTE (baskan @ Sep 20 2005, 15:10) |
За пример наш адресс взяли, хотя мы и искали Вот вопросик у меня тут появился, как это мне впихнуть в блок PHPNuke , ибо там ведь html код нужен. |
если оно называется _php_nuke, то php наверняка держит. бери скрипт и ищи куда прикрутить.
ps. учите матчасть. phpnuke поставили - имейте совесть, хотя бы книжку по php почитайте.
helvene
Sep 20 2005, 16:17
Что я вижу:
QUOTE |
udp://viking.r86.net:5121[0/0] |
Все правильно?
Если да, то есть ли решения, наподобие этого, не требующие php?
В скрипте все описанно, если хотите можете реализовать подобное фактически на любом языке, который позволяет организовать tcpip подключение.
По сути это простое подсоединение по udp протоколу к нужному серверу, запись нескольких байт и чтение ответа. В ответе и содержится количество игроков.
Сам скрипт возращает ответ в визуальной форме, т.е. цветом бакграунда. Зеленый - работает, красный - висит. Цифры - так, заодно, раз уж прочитали их все равно.
2_advanced
Sep 20 2005, 17:27
*цензура покусала*
Такие вещи даже в слух говорить нельзя!
RiPPeR
Sep 21 2005, 12:35
/Offtop
Халявный хостинг с доступом во внешний инет не найдете? А то на моем халявном такие вещи думаю не будут работать, а попробовать хочется.
baskan
Sep 21 2005, 15:15
holm.ru
RiPPeR
Sep 21 2005, 18:17
Там нету вшених коннектов, уже нашел другой
[MoF]Darth_Nick
Sep 23 2005, 10:48
CODE |
#include <iostream> #include "winsock2.h"
void main() { using namespace std;
WSADATA wsaData; SOCKET SendSocket; sockaddr_in Addr; int Port = 5122; char Buff[1024] = {0x42, 0x4E, 0x58, 0x49, 0x00, 0x14}; int BufLen = 1024; int AddrSize = sizeof(Addr);
WSAStartup(MAKEWORD(2,2), &wsaData);
SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
Addr.sin_family = AF_INET; Addr.sin_port = htons(Port); Addr.sin_addr.s_addr = inet_addr("81.176.64.171");
sendto(SendSocket, Buff, BufLen, 0, (SOCKADDR *) &Addr, sizeof(Addr));
recvfrom(SendSocket, Buff, BufLen, 0, (SOCKADDR *)&Addr, &AddrSize); cout << "Server Address: " << "81.176.64.171:" << Port << endl; cout << "Players: " << (short)Buff[10]<< endl; cout << "Players Max: " << (short)Buff[11] << endl; closesocket(SendSocket);
WSACleanup(); return; }
|
Вот аналогичный код на с++ (by me

), может кому-то будет интерестно, правда за пример взят другой шард
Richard
Jan 4 2006, 13:44
Вобщем усовершенстовал код Каа.
Пример тут:
http://nwn-yugra.r86.net/И тут у меня возник вопрос. Можно ли с помощью аналогичных запросов ввести отображение персонажей на сервере? Я понимаю что классы\рассы\и тд это надо MySQL, а вот вывод типа акк | имя чара я считаю вполне реальным. Поправте меня если я неправ.
Balgarat
Jan 4 2006, 14:25
возможно т.к. такое было на экзисе...
[MoF]Darth_Nick
Jan 4 2006, 14:27
помойму(!) пакет о акках к клиенту не приходит(или я не заметил), а приходит только о чарах...но мне сделать не удалось(вернее влом было

и потом подумал, что идея бредовая)
http://nwcustom.jino-net.ru/nwn_servers.phpбольше помойму и не надо (основываясь на буржуйском скрипте) ...
Balgarat где ты это там увидел без БД о.О
З.Ы. я выше давал ссылку, там ф-ция реализована ParsePlayerList, только помойму не пашет
Richard
Jan 4 2006, 14:59
Да убогий этот буржуйский скрипт. Слишком много лажи. Я конечно не говорю что у меня супер пупер скрипт, но тем не менее статус и кол-во игроков отображено. А большего в принципе и не надо пока что.
Zirrex
Feb 24 2006, 03:46
Тоже пример отображения статуса сервера. Шард
Амен.
Кстати, в чем убогость того скрипта, информацию, какую нужно для быстрого ознакомления, он отображает.
[MoF]Darth_Nick
Feb 24 2006, 06:06
много лишнего..
у тебя, по ссылке, первая строка - Array..массив в виде строки
mysql дает намного больше возможности..( ну думаю, это вы и без меня знаете

)
Zirrex
Feb 24 2006, 13:24
[MoF]Darth_Nick, может и лишнее, только ведь это не напрягает

Про массив знаю, все забываю убрать.
Кстати, если уж использовать программу мониторинг, то для этого дела очень хорошо подходит программа
Hlsw. Конечно, она не отображает имена и тип пользователя на сервере, ибо эту опцию отключили, но всю остальную информацию выводит отлично.
Касаемо списка игроков, я видел вариант через базу данных.
А вообще, там надо просто пакеты отсылать аля клиент. Вон 2_advanced думаю вполне может описать процедуру логинья на сервере и запроса списка игроков
Richard
Apr 1 2006, 21:28
2_адвансед блестни)
То что каким то макаром шауты НД видны на Кормире меня уже немного настораживает)))
2_advanced
Apr 2 2006, 05:05
списки все - через самопальный ЕЛК (проверялку чаров/акков)
через неделю покажу рабочий сабж
зы. а легче вобще сделать скриптами + NWNX и всю инфу пихать в БД
в 1.67 даже есть функция для получения портрета
Richard
Apr 2 2006, 09:02
Ну это все конечно хорошо. Только вот я несмог настроить на рабочий лад nwnx на FreeBSD. Может кто помочь с этим?
[MoF]Darth_Nick
Apr 2 2006, 11:22
в 1.66 можно плюгин юзать, чтобы портрет получить... готовый где-то видел
2_advanced
Apr 2 2006, 16:34
у меня бетка 1.67.. под нее уже все переделал
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.