Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » ломка | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Канал Freelancer: «ломка»
Xealus
 





Хотел бы открыть тему по программной стороне Freelancer, скрытые возможности, коды..., все что относится к программированию.

На данный момент ищу строку UDP запроса для получения данных с сервера.
Хочу написать свою программу для выкладывания на сайт данных о пинге и количестве игроков (язык Perl).

Если есть единомышлиники, прошу ответить, может сообразим ченить полезное?
    Добавлено: 14:46 27-05-2003   
Пассажир
 

Пассажир




Ну, я тут буду за единомышленника Улыбка

Я три раза приседал, так и не начал. Уж слишком там все заморочно. DirectPlay lobby и прочие премудрости. Пытался сниффать пакеты, думал, разберусь... Куда там, оно шлет фиг знает чего и сколько, включая ключи регистри. Кстати, ключи шлются на центральный сервер (который ведает списком публичных серверов), так что все ИМ прекрасно известно. И сколько пиратов в мире играет, и с каких IP, и с каких рег-номеров. Не удивлюсь, если до кучи ОСь пишут и т.д.

Ближе к теме. Есть сервак -- http://www.flserver.com/. Там прога на C# приведена, работает судя по всему только с .NET SDK. Но! есть там the "special" packet that will return the correct data. Посылая его на UDP порт сервера, получаем респонз с нужными данными -- имя, число игроков, server message и т.д. Пинг, насколько я понимаю, надо считать ручками с момента отсылки пакета.

Вот перловый код (без подсчета пинга, лениво было писать):

Код:

#!/usr/bin/perl -w
use strict;
use IO::Socket;

my $server=shift or die "Use: $0 <FL server to ping>\n";

# Create the "special" packet that will return the correct data
# copied from http://www.flserver.com/flping.htm
my $packet="";
$packet.=chr(0x00);
$packet.=chr(0x02);
$packet.=chr(0xF1);
$packet.=chr(0x26);
$packet.=chr(0x01);
$packet.=chr(0x26);
$packet.=chr(0xF0);
$packet.=chr(0x90);
$packet.=chr(0xA6);
$packet.=chr(0xF0);
$packet.=chr(0x26);
$packet.=chr(0x57);
$packet.=chr(0x4E);
$packet.=chr(0xAC);
$packet.=chr(0xA0);
$packet.=chr(0xEC);
$packet.=chr(0xF8);
$packet.=chr(0x68);
$packet.=chr(0xE4);
$packet.=chr(0x8D);
$packet.=chr(0x21);

#print "packet: [$packet]\n";

print "Trying $server...\n";

my $reply="";
my $remote = IO::Socket::INET->new(Proto => "udp", PeerAddr => $server, PeerPort => '2302')
        or die "Cannot connect to FL port at $server\n";

print $remote $packet;
recv($remote, $reply, 1024, 0);
#print "$reply\n";
close $remote;

my $nlen=ord(substr($reply,4,1))-91;

printf "Server: %s\n", substr($reply,92,$nlen);
printf "Max players: %2d\n", ord(substr($reply,20,1))-1;
printf "Current players: %2d\n", ord(substr($reply,24,1))-1;



Разберешься, разовьешь -- докладывай Спасибо, спасибо!..
    Добавлено: 20:06 27-05-2003   
Xealus
 





А это мой Улыбка

use IO::Socket;

$ipaddr = "195.149.21.31";

$port = "2302";

$buf = "%00%02%F1%26%01%26%F0%90%A6%F0%26%57%4E%AC%A0%EC%F8%68%E4%8D%21";
$buf =~ s/%([0-9A-H]{2})/pack('C', hex($1))/eg;

$socket = IO::Socket::INET->new(Proto => "udp") or die "Socket error: $@\n";

$portaddr = sockaddr_in($port, $ipaddr);

label:
$n++;
send($socket, $buf, 0, $portaddr) == length($buf) or die "Can't send: $!\n";
if ($n ne 1000000){goto label;}

print "Улыбка\n";

Но это правда не такой мирный как у тебя Улыбка
    Добавлено: 21:21 27-05-2003   
Tramp
 1220 EGP


Рейтинг канала: 2(12)
Репутация: 293
Сообщения: 15898
Откуда: Москва, деревня Чертаново
Зарегистрирован: 23.03.2002
Отцы, только не слишком в сторону "ломки" уходите, общие данные еще куда не шло, а вот все остальное. Между собой в привате или по мылу.
_________________
Вера в себя - это вера в то, что в вас есть нечто большее, чем вы о себе знаете
    Добавлено: 21:55 27-05-2003   
Xealus
 





>Dedis

Может ты подскажеш почему комманда print system ("ping $server"); в инете не пашет?
    Добавлено: 02:03 28-05-2003   
Пассажир
 

Пассажир




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

Xealus -- в инете это под CGI? Ну там же консоли нету, потому ping в никуда выводит (а print здесь вообще лишний Подмигиваю). А чем тебе Net::Ping не нравится?

И давай действительно с техникой в приват.

По сути -- пинговать серверы со своей страницы не осбо актуально. Все равно у всех по-разному будет. Имхо -- не совсем нужная инфа. А вот график загрузки прорисовать -- это вот да, интересно. Поставить десяток серверов на watch list и следить сколько там игроков. Это уже может быть действительно полезно.
    Добавлено: 11:24 28-05-2003   
Канал Freelancer: «ломка»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Отстаньте от меня, не буду я с ним заниматься, пусть жена его полоскает и за ногу трясет!!! (возмутился Vitalii)

  » ломка | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18