Страница 1 из 1

Конструкция serverType

Добавлено: Пт фев 24, 2012 10:51 pm
4epT
Есть ли какая-то идеология как правильно писать sT?
вот выдержки из send\bRO.pm:

Код: Выделить всё

sub new {
	my ($class) = @_;
	my $self = $class->SUPER::new(@_);
	my %packets = (
		'0437' => ['move','a4', [qw(coordString)]],
	);
	$self->{packet_list}{$_} = $packets{$_} for keys %packets;
	my %handlers = qw(
		move 0437
	);
	$self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
	return $self;
}
sub sendMove {
	my ($self, $x, $y) = @_;
	$self->sendToServer($self->reconstruct({
		switch => 'move',
		coordString => getCoordString(int $x, int $y, 1),
	}));
	debug "Sent move to: $x, $y\n", "sendPacket", 2;
}
вот выдержки из send\iRO.pm:

Код: Выделить всё

sub new {
	my ($class) = @_;
	my $self = $class->SUPER::new(@_);
	my %handlers = qw(

	);
	$self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
	return $self;
}

sub sendMove {
   my $self = shift;
   my $x = int scalar shift;
   my $y = int scalar shift;
   my $msg;
   $msg = pack("C*", 0x5F, 0x03) . getCoordString($x, $y, 1);
   $self->sendToServer($msg);
   debug "Sent move to: $x, $y\n", "sendPacket", 2;
}
в первом случае пакет move записан и в %packets и в %handlers, далее идёт фукнция sub sendMove
во втором случае пакет move никуда не записан, сразу идёт функция sub sendMove

хде правда?

Re: Конструкция serverType

Добавлено: Сб фев 25, 2012 6:46 am
EternalHarvest
4epT писал(а):в первом случае пакет move записан и в %packets и в %handlers, далее идёт фукнция sub sendMove
во втором случае пакет move никуда не записан, сразу идёт функция sub sendMove

хде правда?
move там записан в packet_list и packet_lut. Это нужно, чтоб посылать его через ->reconstruct и не иметь функции sendMove вообще в этом файле (как для master_login, game_login, char_login, map_login, map_loaded, sync и прочего из Send.pm). Только конкретно пакет с move (который в kRO называется character_move, в bRO надо переименовать чтоб не было расхождений) пока требует всё равно sendMove из-за беспорядка в ST 1-22. Если с этим беспорядком разобраться - то sendMove в bRO.pm и остальных файлах будет не нужна.

Предлагаемая идеология: для всех пакетов, участвующих в новых изменениях, во всех serverType добавляем соответсвующие записи в packet_list/packet_lut, а функции их отправки (с reconstruct) переносим в Send.pm.

Re: Конструкция serverType

Добавлено: Сб фев 25, 2012 11:09 am
4epT
а вообще кто-то пользуется ST 1-22??
раньше был сервер статистик.. там нет таких данных?

Re: Конструкция serverType

Добавлено: Вс фев 26, 2012 1:36 pm
EternalHarvest
4epT писал(а):а вообще кто-то пользуется ST 1-22??
Возможно. Не все же официальные сервера у нас имеют свой ST (некоторых вообще нет в servers).
раньше был сервер статистик.. там нет таких данных?
Именно, что раньше.
http://openkore.svn.sourceforge.net/vie ... 15&r2=6916&

В данном случае пакет character_move в kRO ST уже реализован нормально, там с этим проблем нет.