В свое время 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']."]"; ?> |
За пример наш адресс взяли, хотя мы и искали
Вот вопросик у меня тут появился, как это мне впихнуть в блок PHPNuke , ибо там ведь html код нужен.
QUOTE (baskan @ Sep 20 2005, 15:10) |
За пример наш адресс взяли, хотя мы и искали Вот вопросик у меня тут появился, как это мне впихнуть в блок PHPNuke , ибо там ведь html код нужен. |
Что я вижу:
QUOTE |
udp://viking.r86.net:5121[0/0] |
В скрипте все описанно, если хотите можете реализовать подобное фактически на любом языке, который позволяет организовать tcpip подключение.
По сути это простое подсоединение по udp протоколу к нужному серверу, запись нескольких байт и чтение ответа. В ответе и содержится количество игроков.
Сам скрипт возращает ответ в визуальной форме, т.е. цветом бакграунда. Зеленый - работает, красный - висит. Цифры - так, заодно, раз уж прочитали их все равно.
*цензура покусала*
Такие вещи даже в слух говорить нельзя!
/Offtop
Халявный хостинг с доступом во внешний инет не найдете? А то на моем халявном такие вещи думаю не будут работать, а попробовать хочется.
holm.ru
Там нету вшених коннектов, уже нашел другой
http://nwvault.ign.com/View.php?view=other.Detail&id=322
тут вроде чо та похожее
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; } |
Вобщем усовершенстовал код Каа.
Пример тут: http://nwn-yugra.r86.net/
И тут у меня возник вопрос. Можно ли с помощью аналогичных запросов ввести отображение персонажей на сервере? Я понимаю что классы\рассы\и тд это надо MySQL, а вот вывод типа акк | имя чара я считаю вполне реальным. Поправте меня если я неправ.
возможно т.к. такое было на экзисе...
помойму(!) пакет о акках к клиенту не приходит(или я не заметил), а приходит только о чарах...но мне сделать не удалось(вернее влом было и потом подумал, что идея бредовая)
http://nwcustom.jino-net.ru/nwn_servers.php
больше помойму и не надо (основываясь на буржуйском скрипте) ...
Balgarat где ты это там увидел без БД о.О
З.Ы. я выше давал ссылку, там ф-ция реализована ParsePlayerList, только помойму не пашет
Да убогий этот буржуйский скрипт. Слишком много лажи. Я конечно не говорю что у меня супер пупер скрипт, но тем не менее статус и кол-во игроков отображено. А большего в принципе и не надо пока что.
Тоже пример отображения статуса сервера. Шард http://nwn.fireground.ru/?legends=99.
Кстати, в чем убогость того скрипта, информацию, какую нужно для быстрого ознакомления, он отображает.
много лишнего..
у тебя, по ссылке, первая строка - Array..массив в виде строки
mysql дает намного больше возможности..( ну думаю, это вы и без меня знаете )
[MoF]Darth_Nick, может и лишнее, только ведь это не напрягает Про массив знаю, все забываю убрать.
Кстати, если уж использовать программу мониторинг, то для этого дела очень хорошо подходит программа http://www.hlsw.de/. Конечно, она не отображает имена и тип пользователя на сервере, ибо эту опцию отключили, но всю остальную информацию выводит отлично.
Касаемо списка игроков, я видел вариант через базу данных.
А вообще, там надо просто пакеты отсылать аля клиент. Вон 2_advanced думаю вполне может описать процедуру логинья на сервере и запроса списка игроков
2_адвансед блестни)
То что каким то макаром шауты НД видны на Кормире меня уже немного настораживает)))
списки все - через самопальный ЕЛК (проверялку чаров/акков)
через неделю покажу рабочий сабж
зы. а легче вобще сделать скриптами + NWNX и всю инфу пихать в БД
в 1.67 даже есть функция для получения портрета
Ну это все конечно хорошо. Только вот я несмог настроить на рабочий лад nwnx на FreeBSD. Может кто помочь с этим?
в 1.66 можно плюгин юзать, чтобы портрет получить... готовый где-то видел
у меня бетка 1.67.. под нее уже все переделал
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)