После обновления сервера не определяется статус

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

После обновления сервера не определяется статус

Сообщение [BMP] »

После очередного обновления сервера, бот перестал видеть статус игрока.
Единственное что он видит: Owg 50%, Night.
А все остальное - не видит. Подскажите в какую сторону копнуть (точнее в каком именно пакете пересылается статус).

Кора: 206SVN6317 и SVN -r6718
Сервер: WnRO
PS: защита не обновлялась

4epT: ответ тут
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Re: После обновления сервера не определяется статус

Сообщение piroJOKE »

Это не та хрень с таймерами, о которой где-то уже тут писали? Типо, в клиенте стало видно, сколько еще статус будет держаться?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение [BMP] »

piroJOKE писал(а):Это не та хрень с таймерами, о которой где-то уже тут писали? Типо, в клиенте стало видно, сколько еще статус будет держаться?
Да, именно оно ))
Изображение
Изображение
Аватара пользователя
prifits
Грамотный
Сообщения: 150
Зарегистрирован: Чт авг 28, 2008 4:03 am
Сервер RO:: Rro
Откуда: Москва
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение prifits »

Таже трабла =)
Полный дифф 2009-10-28 rRO Ragexe v(yu) - By PrIfItS
Изображение
52 40 00 2C 02 ED 2D 00 00 C3 00 00 00 00 00 00 00 00 00 7C 17 00 00 00 00 00 00 00 00 91 FD D1 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 8D
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение [BMP] »

Короче, вот что я нашел:
для статусов:

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

MAXIMIZEPOWER
RIDINGSI_FALCON
TRICKDEAD
BROKENARMOR
BROKENWEAPON
WEIGHT50
WEIGHT90
TENSIONRELAX
LANDENDOW
AUTOBERSERK
BUMP
READYSTORM
READYDOWN
READYTURN
READYCOUNTER
DODGE
DEVIL
NIGHT
INTRAVISION
используется старый пакет (0196 длинной 9 байт)

Для всех остальных статусов используется повый пакет 0х043F длинной 25 байт
Структура его следующая:
type - 2 байта \
ID - 4байта > как в старом пакете
flag - 1 байт /
tick - 4 байта - время до окончания действия статуса
unknown - 4 байта
unknown - 4 байта
unknown - 4 байта

Пакету 0х0196 соответствует обработчик actor_status_active. Туда же следует поместить и обработку пакета 0х043F (в обработчике ничего менять не надо я так думаю).

Вроде бы все просто, НО... Когда я вставляю строчку:

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

$self->{packet_list}{'043F'} = ['actor_status_active', 'v1 a4 C1 a4 a4 a4', [qw(type ID flag tick unknown unknown1)]];
(в ресивпакетс добавил этот пакет)
То ничего не происходит (( (хотя с помошью ВПЕ я перехватываю этот пакет)

Подскажите где грабля зарыта.
Изображение
Изображение
Аватара пользователя
prifits
Грамотный
Сообщения: 150
Зарегистрирован: Чт авг 28, 2008 4:03 am
Сервер RO:: Rro
Откуда: Москва
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение prifits »

[BMP] писал(а): пакет 0х043F длинной 25 байт

если судить по packet_db атёны

то 0x043f равен 8 а не 25
Полный дифф 2009-10-28 rRO Ragexe v(yu) - By PrIfItS
Изображение
52 40 00 2C 02 ED 2D 00 00 C3 00 00 00 00 00 00 00 00 00 7C 17 00 00 00 00 00 00 00 00 91 FD D1 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 8D
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение [BMP] »

prifits писал(а):
[BMP] писал(а): пакет 0х043F длинной 25 байт

если судить по packet_db атёны

то 0x043f равен 8 а не 25

//2009-01-14aSakexe
0x043f,19

//2008-09-10aSakexe
0x043f,25

//2008-11-13aSakexe
0x043f,8

+пакстрактор выдал: 043F 25

а вообще я смотрел по другому:
файл src/map/clif.c

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

int clif_status_change(struct block_list *bl,int type,int flag,unsigned int tick)
{
	unsigned char buf[32];

	if (type == SI_BLANK)  //It shows nothing on the client...
		return 0;

	nullpo_retr(0, bl);

	if (type == SI_BLANK || type == SI_MAXIMIZEPOWER || type == SI_RIDING ||
		type == SI_FALCON || type == SI_TRICKDEAD || type == SI_BROKENARMOR ||
		type == SI_BROKENWEAPON || type == SI_WEIGHT50 || type == SI_WEIGHT90 ||
		type == SI_TENSIONRELAX || type == SI_LANDENDOW || type == SI_AUTOBERSERK ||
		type == SI_BUMP || type == SI_READYSTORM || type == SI_READYDOWN ||
		type == SI_READYTURN || type == SI_READYCOUNTER || type == SI_DODGE ||
		type == SI_DEVIL || type == SI_NIGHT || type == SI_INTRAVISION)
		tick=0;

	if( battle_config.display_status_timers && tick>0 )
		WBUFW(buf,0)=0x043f;
	else
		WBUFW(buf,0)=0x0196;
	WBUFW(buf,2)=type;
	WBUFL(buf,4)=bl->id;
	WBUFB(buf,8)=flag; // здесь длинна уже не может быть 8, так как она только что стала равной 9
	if( battle_config.display_status_timers && tick>0 )
	{
		WBUFL(buf,9)=tick; // уже длинна не может быть 8
		WBUFL(buf,13)=0;
		WBUFL(buf,17)=0;
		WBUFL(buf,21)=0;  // уже длинна не может быть 19
                //Вывод - длинна пакета 25 (вывод сделан из этого и из перехваченого пакета)
	}
	clif_send(buf,packet_len(WBUFW(buf,0)),bl,AREA);
	return 0;
}
Добавлено спустя 49 минут 1 секунду:
Все, вопрос снят )

просто в /src/Network/Receive.pm нужно было заменить функцию:

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

sub actor_status_active {
	my ($self, $args) = @_;

	return unless changeToInGameState();
	my ($type, $ID, $flag) = @{$args}{qw(type ID flag)};
	
	my $skillName = (defined($skillsStatus{$type})) ? $skillsStatus{$type} : "Unknown $type";
	$args->{skillName} = $skillName;
	my $actor = Actor::get($ID);
	$args->{actor} = $actor;

	my ($name, $is) = getActorNames($ID, 0, 'are', 'is');
	if ($flag) {
		# Skill activated
		my $again = 'now';
		if ($actor) {
			$again = 'again' if $actor->{statuses}{$skillName};
			$actor->{statuses}{$skillName} = 1;
		}
		if ($char->{party}{users}{$ID}{name}) {
			$again = 'again' if $char->{party}{users}{$ID}{statuses}{$skillName};
			$char->{party}{users}{$ID}{statuses}{$skillName} = 1;
		}
		my $disp = status_string($actor, $skillName, $again);
		message $disp, "parseMsg_statuslook", $ID eq $accountID ? 1 : 2;

	} else {
		# Skill de-activated (expired)
		delete $actor->{statuses}{$skillName} if $actor;
		delete $char->{party}{users}{$ID}{statuses}{$skillName} if ($char->{party}{users}{$ID}{name});
		my $disp = status_string($actor, $skillName, 'no longer');
		message $disp, "parseMsg_statuslook", $ID eq $accountID ? 1 : 2;
	}
}
на

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

sub actor_status_active {
	my ($self, $args) = @_;

	return unless changeToInGameState();
	my ($type, $ID, $flag, $tick, $unknown, $unknown2);
	#$type = unpack("v1", $args->{type});
	#$ID = unpack("a4", $args->{ID});
	#$flag = unpack("C1", $args->{flag});
	$type = $args->{type};
	$ID = $args->{ID};
	$flag = $args->{flag};
	if ($type != 46){ #какая-то левая команда, не на что не влияющая (ИМХО: фича )))
	my $skillName = (defined($skillsStatus{$type})) ? $skillsStatus{$type} : "Unknown $type";
	$args->{skillName} = $skillName;
	my $actor = Actor::get($ID);
	$args->{actor} = $actor;

	my ($name, $is) = getActorNames($ID, 0, 'are', 'is');
	if ($flag) {
		# Skill activated
		my $again = 'now';
		if ($actor) {
			$again = 'again' if $actor->{statuses}{$skillName};
			$actor->{statuses}{$skillName} = 1;
		}
		if ($char->{party}{users}{$ID}{name}) {
			$again = 'again' if $char->{party}{users}{$ID}{statuses}{$skillName};
			$char->{party}{users}{$ID}{statuses}{$skillName} = 1;
		}
		my $disp = status_string($actor, $skillName, $again);
		message $disp, "parseMsg_statuslook", $ID eq $accountID ? 1 : 2;

	} else {
		# Skill de-activated (expired)
		delete $actor->{statuses}{$skillName} if $actor;
		delete $char->{party}{users}{$ID}{statuses}{$skillName} if ($char->{party}{users}{$ID}{name});
		my $disp = status_string($actor, $skillName, 'no longer');
		message $disp, "parseMsg_statuslook", $ID eq $accountID ? 1 : 2;
	}
	}
}
Изображение
Изображение
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение 4epT »

это только для новых "серваков"?? для старых не подойдёт?

а ведь это же можно запихать в новый сервер тип, если уже не запихано...

Добавлено спустя 22 минуты 24 секунды:
у кого есть свн-ка? проверьте:
kLabMouse писал(а):"Unknown packet - 043F" -- Значит нездампили.
"eAthena SVN version: 13866" -- 100% СерверТип 22
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение [BMP] »

У меня СВН-ка, - там такого нет ((
Изображение
Изображение
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение 4epT »

замени это в своём боте
Вложения
SVN6699.rar
(1.94 КБ) 179 скачиваний
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение [BMP] »

На 22-м сервертайпе - вообще не распознаются ни монстры, ни нпс, ни чары )
У меня, по крайней мере.
Изображение
Изображение
klon
Новичок
Сообщения: 12
Зарегистрирован: Пн июн 29, 2009 9:54 pm

Re: После обновления сервера не определяется статус

Сообщение klon »

делаю как написано ничо не помогает, не показывает статус.. в чём проблема?
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: После обновления сервера не определяется статус

Сообщение [BMP] »

klon писал(а):делаю как написано ничо не помогает, не показывает статус.. в чём проблема?
Ставь ServerType 8_5 + В receivepackets.txt добавь строчку: 043F 25
Изображение
Изображение
klon
Новичок
Сообщения: 12
Зарегистрирован: Пн июн 29, 2009 9:54 pm

Re: После обновления сервера не определяется статус

Сообщение klon »

пробовал не помогает, точней Unknown packet - 043F больше не вылетает а статус всё равно не показывает
Dimanenok
Начинающий
Сообщения: 30
Зарегистрирован: Вт апр 08, 2008 9:12 pm

Re: После обновления сервера не определяется статус

Сообщение Dimanenok »

22 не хочет даже конектиться
8_5 в последнем рофановском и окшном нету
и чет все выше перечисленное толку не дало статусы не видны

можно конечно все через таймы прописывать но хотелось бы со статусами
Ответить