[решено] Наёмники

BugTraq: обнаруженные ошибки и обсуждение их устранения.

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

Аватара пользователя
[GM]#05
Профессионал
Сообщения: 593
Зарегистрирован: Пт фев 09, 2007 8:44 pm
Сервер RO:: rRO

[решено] Наёмники

Сообщение [GM]#05 »

Бот определяет наемника как монстра и пытается его убить. Если постоять в московии, то на наемника налипают кучи ботов, маги пытаются кастовать на них болты и т.д.

Добавляем Наемников в список Actor.
src/Actor/Mercenary.pm (создать)

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

package Actor::Mercenary;

use strict;

our @ISA = qw(Actor);

sub new {
	my ($class) = @_;
	return $class->SUPER::new('Mercenary');
}

1;
src/Actor/Player.pm
Найти

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

sub new {
	my ($class, $type) = @_;
	my $actorType = ($type >= 6001 && $type <= 6016) ? 'Homunculus' : 'Player';
	return $class->SUPER::new($actorType);
}

sub selfString {
	my ($self) = @_;

	return ($self->{actorType} eq 'Homunculus') ? 'itself' : ($self->{sex} ? 'himself' : 'herself');
}
Заменить на

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

sub new {
	my ($class, $type) = @_;
	my $actorType;
	if ($type >= 6001 && $type <= 6016) {
		$actorType = 'Homunculus';
	}
	elsif ($type >= 6017 && $type <= 6046) {
		$actorType = 'Mercenary';
	}
	else {
		$actorType = 'Player';
	}
	return $class->SUPER::new($actorType);
}

sub selfString {
	my ($self) = @_;

	return ($self->{actorType} eq 'Homunculus' || $self->{actorType} eq 'Mercenary') ? 'itself' : ($self->{sex} ? 'himself' : 'herself');
}
src/Globals.pm
Найти

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

	6016 => 'High Vanilmirth 2',
Ниже добавить

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

	6017 => 'Mercenary Archer 1',
	6018 => 'Mercenary Archer 2',
	6019 => 'Mercenary Archer 3',
	6020 => 'Mercenary Archer 4',
	6021 => 'Mercenary Archer 5',
	6022 => 'Mercenary Archer 6',
	6023 => 'Mercenary Archer 7',
	6024 => 'Mercenary Archer 8',
	6025 => 'Mercenary Archer 9',
	6026 => 'Mercenary Archer 10',
	6027 => 'Mercenary Lancer 1',
	6028 => 'Mercenary Lancer 2',
	6029 => 'Mercenary Lancer 3',
	6030 => 'Mercenary Lancer 4',
	6031 => 'Mercenary Lancer 5',
	6032 => 'Mercenary Lancer 6',
	6033 => 'Mercenary Lancer 7',
	6034 => 'Mercenary Lancer 8',
	6035 => 'Mercenary Lancer 9',
	6036 => 'Mercenary Lancer 10',
	6037 => 'Mercenary Swordman 1',
	6038 => 'Mercenary Swordman 2',
	6039 => 'Mercenary Swordman 3',
	6040 => 'Mercenary Swordman 4',
	6041 => 'Mercenary Swordman 5',
	6042 => 'Mercenary Swordman 6',
	6043 => 'Mercenary Swordman 7',
	6044 => 'Mercenary Swordman 8',
	6045 => 'Mercenary Swordman 9',
	6046 => 'Mercenary Swordman 10'
После этих исправлений бот будет определять Наемников как игроков и не будет их атаковать. Не совсем уверен, что исправил везде, где нужно, но работает. Я так понимаю еще в Receive.pm нужно копать...

Добавлено спустя 19 минут 24 секунды:
Скилы Наемников
tables/skills.txt
8201 MS_BASH Bash
8202 MS_MAGNUM Magnum Break
8203 MS_BOWLINGBASH Bowling Bash
8204 MS_PARRYING Parrying
8205 MS_REFLECTSHIELD Reflect Shield
8206 MS_BERSERK Berserk
8207 MA_DOUBLE Double Strafing
8208 MA_SHOWER Arrow Shower
8209 MA_SKIDTRAP Skid Trap
8210 MA_LANDMINE Land Mine
8211 MA_SANDMAN Sandman
8212 MA_FREEZINGTRAP Freezing Trap
8213 MA_REMOVETRAP Remove Trap
8214 MA_CHARGEARROW Charge Arrow
8215 MA_SHARPSHOOTING Sharp Shooting
8216 ML_PIERCE Pierce
8217 ML_BRANDISH Brandish Spear
8218 ML_SPIRALPIERCE Spiral Pierce
8219 ML_DEFENDER Defender
8220 ML_AUTOGUARD Auto Guard
8221 ML_DEVOTION Devotion
8222 MER_MAGNIFICAT Magnificat
8223 MER_QUICKEN Two-Hand Quicken
8224 MER_SIGHT Sight
8225 MER_CRASH Crash
8226 MER_REGAIN Regain
8227 MER_TENDER Tender
8228 MER_BENEDICTION Benediction
8229 MER_RECUPERATE Recuperate
8230 MER_MENTALCURE Mental Cure
8231 MER_COMPRESS Compress
8232 MER_PROVOKE Provoke
8233 MER_AUTOBERSERK Auto Berserk
8234 MER_DECAGI Decrease Agility
8235 MER_SCAPEGOAT Scapegoat
8236 MER_LEXDIVINA Lex_Divina
8237 MER_ESTIMATION Monster Property
Вложения
До
До
before.jpg (19.72 КБ) 4222 просмотра
После
После
after.jpg (27.14 КБ) 4212 просмотров
Последний раз редактировалось [GM]#05 Пт дек 19, 2008 3:52 pm, всего редактировалось 1 раз.
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Re: Бот определяет Наемника как монстра.

Сообщение Click »

а чего этого разве ещё нету?
эти айдишники равносильны и на оф и на антену?
если так всё красиво то добавим.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Re: Бот определяет Наемника как монстра.

Сообщение kLabMouse »

[GM]#05
Commited.
Местную сборку чур месяц не обновлять.
Аватара пользователя
[GM]#05
Профессионал
Сообщения: 593
Зарегистрирован: Пт фев 09, 2007 8:44 pm
Сервер RO:: rRO

Re: Бот определяет Наемника как монстра.

Сообщение [GM]#05 »

Click писал(а):а чего этого разве ещё нету?
эти айдишники равносильны и на оф и на антену?
если так всё красиво то добавим.
Как ни странно этого небыло, а айдишники и для офа и для антены одинаковы.
Еще не пробовал зайти на чара с наемником с бота. Если новые пакетики viewtopic.php?p=67361#p67361 наемников, то их нужно разобрать и сделать возможным доступность информации о наемниках из $char->{'mercenary'}.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Re: Бот определяет Наемника как монстра.

Сообщение kLabMouse »

[GM]#05
Уху. Нужно! :Yahoo!:
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Re: Бот определяет Наемника как монстра.

Сообщение piroJOKE »

kLabMouse писал(а):Commited. Местную сборку - чур месяц не обновлять!
Ну, здрасьте... ((( И какая тут идея?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
[GM]#05
Профессионал
Сообщения: 593
Зарегистрирован: Пт фев 09, 2007 8:44 pm
Сервер RO:: rRO

Re: Бот определяет Наемника как монстра.

Сообщение [GM]#05 »

Помучил WPE. Информация о наемнике приходит с сервера в пакете 01D7 (Weapon / Shield Display). Пакет пойман при переходе с одной карты на другую. Сервер eAthena
D7 01 A9 49 1F 00 02 00 00 00 00 EE 01 3A 00 02
00 93 03 03 01 01 00 00 00 00 00 00 00 00 00 00
00 03 00 7C 2F 02 01 07 00 00 00 00 00 00 00 00
00 00 00 04 00 47 2F 00 01 1E 00 00 00 00 00 00
00 00 00 00 00 B0 00 18 00 1E 05 00 00 B0 00 19
00 4C 4F 00 00 9D 00 1C 00 00 00 8D 03 01 66 01
C7 00 01 00 09 03 9D 00 1E 00 00 00 03 02 01 69
01 C5 00 01 00 09 03 78 00 00 95 7F 8E 06 C8 00
00 00 00 00 00 00 2D 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 5D 4C D0 00 00 00 01 00 7C 00
00 11 95 93 06 96 00 00 00 00 00 00 00 00 00 00
00 00 00 84 17 00 00 00 00 00 00 00 00 00 00 00
00 00 00 5B CC D2 00 00 9B 02 11 95 93 06 8A 01
07 00 6E 00 00 00 12 00 0B 00 53 00 B0 01 45 6C
66 69 6E 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
32 00 44 04 00 00 44 04 00 00
74 00 00 00 74 00 00 00 05 E0 4B 49 01 00 04 00
00 00
33 00 00 00 0A 00 9D 02 73 00 1E 20 04 00
00 00 01 00 28 00 09 00 4D 45 52 5F 4D 41 47 4E
49 46 49 43 41 54 00 00 00 00 00 00 00 00 00 00
00
23 20 10 00 00 00 01 00 0A 00 09 00 4D 45 52
5F 54 45 4E 44 45 52 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
2D 20 01 00 00 00 01 00 0A 00
09 00 4D 45 52 5F 45 53 54 49 4D 41 54 49 4F 4E
00 00 00 00 00 00 00 00 00 00 00
41 01 0D 00 00
00 01 00 00 00 00 00 00 00 41 01 0E 00 00 00 01
00 00 00 00 00 00 00 41 01 0F 00 00 00 01 00 00
00 00 00 00 00 41 01 10 00 00 00 01 00 00 00 00
00 00 00 41 01 11 00 00 00 01 00 00 00 00 00 00
00 41 01 12 00 00 00 01 00 00 00 00 00 00 00 7F
00 B5 0F AB F0
84 17 - Mercenary Type
8A 01 - Atc
07 00 - Matc
6E 00 - Hit
00 00 - Critical
12 00 - Def
0B 00 - Mdef
53 00 - Flee
B0 01 - aDelay для расчета Aspd
01 00 - Loyality
04 00 00 00 - Number of Summons
33 00 00 00 - Kill
44 04 00 00 - HP
44 04 00 00 - MaxHP
74 00 00 00 - SP
74 00 00 00 - MaxSP
32 00 - Level
45 6C 66 69 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - Name
1E 20 - Skill ID
01 00 - Skill Level
28 00 - SP Cost
4D 45 52 5F 4D 41 47 4E 49 46 49 43 41 54 00 00 00 00 00 00 00 00 00 00 00 - Skill (напирмер MER_MAGNIFICAT)

Не нашел время, когда заканчивается контракт с наемником. Что делать дальше не знаю ><
Вложения
mercenary.jpg
mercenary.jpg (111.59 КБ) 4001 просмотр
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Re: Бот определяет Наемника как монстра.

Сообщение Kissa2k »

Что делать дальше не знаю ><
Добавить парсинг этих данных в OpenKore.
Т.е. добавить в список пакетов в src/Network/Receive.pm и там же добавить функцию обработчик этого пакета.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Re: Бот определяет Наемника как монстра.

Сообщение kLabMouse »

[GM]#05
Похоже ето не пакет 01D7
Смотрим внимательнее на длинну. :twisted:

ЗЫ: Жаль у меня ни клиента, ни сервера поддерживающего их в полном ебёме (хотя, в 12.1 они должны быть... нужно поковырять).
Есди есть ссылки, например на Афину с мерценари + клиент для тестинга, прошу в студию (быстро переберём ему косточки).
Аватара пользователя
[GM]#05
Профессионал
Сообщения: 593
Зарегистрирован: Пт фев 09, 2007 8:44 pm
Сервер RO:: rRO

Re: Бот определяет Наемника как монстра.

Сообщение [GM]#05 »

Длина как раз меня и смутила, при перезаходе сразу появляется диалог от НПЦ и текст этого диалога тоже находится в этом пакете, по крайней мере так говорит WPE.
Сервер есть
http://play.ratemyserver.net/ragnarok/index.php
Для сервера нужен любой клиент эпизода 11.3+ и их патч (3 метра гдет). На сервере доступны Gm команды, поэтому можно просто прописать получение свитка наемника @item 12156, заюзать его и колдовать)
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Бот определяет Наемника как монстра.

Сообщение EternalHarvest »

Из клиента надо ragexe или что?
Аватара пользователя
[GM]#05
Профессионал
Сообщения: 593
Зарегистрирован: Пт фев 09, 2007 8:44 pm
Сервер RO:: rRO

Re: Бот определяет Наемника как монстра.

Сообщение [GM]#05 »

Подойдет любой более менее свежий сакраевский клиент, в их патче есть необходимый ексешник.
Аватара пользователя
Aib0
Бывалый
Сообщения: 961
Зарегистрирован: Чт ноя 16, 2006 12:50 am
Контактная информация:

Re: Бот определяет Наемника как монстра.

Сообщение Aib0 »

М... возникла трабла - с фиксом скилов появляется задвоение названий -> найт, к примеру, отказывается юзать пирс(пытается юзать наменичий)
Wtf is "OpenKore"?

"What we're dealing with here is a total lack of respect for the law"
Аватара пользователя
[GM]#05
Профессионал
Сообщения: 593
Зарегистрирован: Пт фев 09, 2007 8:44 pm
Сервер RO:: rRO

Re: Бот определяет Наемника как монстра.

Сообщение [GM]#05 »

можно Merc добавить перед скилами наемников, чтобы отличать..
8201 MS_BASH Merc Bash
8202 MS_MAGNUM Merc Magnum Break
8203 MS_BOWLINGBASH Merc Bowling Bash
8204 MS_PARRYING Merc Parrying
8205 MS_REFLECTSHIELD Merc Reflect Shield
8206 MS_BERSERK Merc Berserk
8207 MA_DOUBLE Merc Double Strafing
8208 MA_SHOWER Merc Arrow Shower
8209 MA_SKIDTRAP Merc Skid Trap
8210 MA_LANDMINE Merc Land Mine
8211 MA_SANDMAN Merc Sandman
8212 MA_FREEZINGTRAP Merc Freezing Trap
8213 MA_REMOVETRAP Merc Remove Trap
8214 MA_CHARGEARROW Merc Charge Arrow
8215 MA_SHARPSHOOTING Merc Sharp Shooting
8216 ML_PIERCE Merc Pierce
8217 ML_BRANDISH Merc Brandish Spear
8218 ML_SPIRALPIERCE Merc Spiral Pierce
8219 ML_DEFENDER Merc Defender
8220 ML_AUTOGUARD Merc Auto Guard
8221 ML_DEVOTION Merc Devotion
8222 MER_MAGNIFICAT Merc Magnificat
8223 MER_QUICKEN Merc Two-Hand Quicken
8224 MER_SIGHT Merc Sight
8225 MER_CRASH Merc Crash
8226 MER_REGAIN Merc Regain
8227 MER_TENDER Merc Tender
8228 MER_BENEDICTION Merc Benediction
8229 MER_RECUPERATE Merc Recuperate
8230 MER_MENTALCURE Merc Mental Cure
8231 MER_COMPRESS Merc Compress
8232 MER_PROVOKE Merc Provoke
8233 MER_AUTOBERSERK Merc Auto Berserk
8234 MER_DECAGI Merc Decrease Agility
8235 MER_SCAPEGOAT Merc Scapegoat
8236 MER_LEXDIVINA Merc Lex Divina
8237 MER_ESTIMATION Merc Monster Property
Еще Lex_Devina надо исправить на Lex Devina

На форуме OK нашел макрос выводящий статус наемника

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

automacro merce_status_update {
   hook parseMsg/pre
   save switch
   save msg
   var .hooksave0 == 02A2
   overrideAI 1
   exclusive 1
   run-once 1
   call {
      if (@eval(unpack('H2', substr($.hooksave1, 2, 1)) == 05) goto hp
      if (@eval(unpack('H2', substr($.hooksave1, 2, 1)) == 06) goto max_hp
      if (@eval(unpack('H2', substr($.hooksave1, 2, 1)) == 07) goto sp
      if (@eval(unpack('H2', substr($.hooksave1, 2, 1)) == 08) goto max_sp
      goto end
      
      :hp
         $merc_hp = @eval(unpack('V1', substr($.hooksave1, 4, 4))
         goto end
      :max_hp
         $merc_max_hp = @eval(unpack('V1', substr($.hooksave1, 4, 4))
         goto end
      :sp
         $merc_sp = @eval(unpack('V1', substr($.hooksave1, 4, 4))
         goto end
      :max_sp
         $merc_max_sp = @eval(unpack('V1', substr($.hooksave1, 4, 4))
         goto end
         
      :end                           
   }
}
Но он вроде сам не проверял работает ли это.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Бот определяет Наемника как монстра.

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

[GM]#05, спасибо за макрос, это первый макрос, который демонстрирует работу условий "hook", "save".. а то я всё не втыкал как оно работает :) надо по разбираться.. :good:
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Ответить