слетает TwoHand-Quicken найта при смене оружия [решено]
Модератор: 4epT
Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Слово? Легко. Я когда то начал было использовать эквипАвто, но... (черт, это давно было, я не знаю, как оно работает щас!) ... там получалась такая картина...
собираюсь атаковать монстра Х
атака по мобу Х, дамаг 20
автосвитч переключает оружие
атака по мобу Х, дамаг 600
атака по мобу Х, дамаг 600
...
Грубо говоря, эквипАуто срабатывает поздно, когда уже началась атака. Вероятно, этот блок изначально был расчитан именно на смену _брони_, после получения дамаги от какого-то моба.
Ну так вот, я описал это на форуме ОК, и мне сразу заявили, что мол "да, так оно и есть, используй автоСвитч, с ним всё окей".
Как минимум, нужно проверить этот момент - "запоздалое переключение".
ЗЫ: Причем иногда случались даже переключения после 2 ударов по мобу. А когда чар атакует скиллами - это критично: у него просто в пустоту уходит СП.
собираюсь атаковать монстра Х
атака по мобу Х, дамаг 20
автосвитч переключает оружие
атака по мобу Х, дамаг 600
атака по мобу Х, дамаг 600
...
Грубо говоря, эквипАуто срабатывает поздно, когда уже началась атака. Вероятно, этот блок изначально был расчитан именно на смену _брони_, после получения дамаги от какого-то моба.
Ну так вот, я описал это на форуме ОК, и мне сразу заявили, что мол "да, так оно и есть, используй автоСвитч, с ним всё окей".
Как минимум, нужно проверить этот момент - "запоздалое переключение".
ЗЫ: Причем иногда случались даже переключения после 2 ударов по мобу. А когда чар атакует скиллами - это критично: у него просто в пустоту уходит СП.
Вот как то так должно быть...
Находим в AI.pm sub attack {
В нем находим:
найти экипированное оружие 2 ручное
отключаем это - так как не будем снимать 2 ручное оружие без проверки
Далее ищем опять
убираем его
Далее добавлем проверку
ищем
комментируем последнюю из найденных строчек а перед ней вставляем
Находим в AI.pm sub attack {
В нем находим:
Код: Выделить всё
$Ldef = findLastIndex(\@{$chars[$config{'char'}]{'inventory'}}, "equipped",34) if ($Ldef eq "");
отключаем это - так как не будем снимать 2 ручное оружие без проверки
Код: Выделить всё
###$Ldef = findLastIndex(\@{$chars[$config{'char'}]{'inventory'}}, "equipped",34) if ($Ldef eq "");
Код: Выделить всё
$Ldef = findLastIndex(\@{$chars[$config{'char'}]{'inventory'}}, "equipped",34) if ($Ldef eq "");
Код: Выделить всё
###$Ldef = findLastIndex(\@{$chars[$config{'char'}]{'inventory'}}, "equipped",34) if ($Ldef eq "");
ищем
Код: Выделить всё
$Rdef = findIndex(\@{$chars[$config{'char'}]{'inventory'}}, "equipped", 34);
$Rdef = findIndex(\@{$chars[$config{'char'}]{'inventory'}}, "equipped", 2) if ($Rdef eq "");
$net->sendUnequip($chars[$config{'char'}]{'inventory'}[$Rdef]{'index'}) if($Rdef ne "" && $chars[$config{'char'}]{'inventory'}[$Rdef]{'equipped'} && $Rdef ne $Ldef);
Код: Выделить всё
#Debug for 2hand Quicken and Bare Hand attack with 2hand weapon
if((!Misc::whenStatusActive("Twohand Quicken, Adrenaline, Spear Quicken") || $config{"autoSwitch_$i"."_rightHand"} eq "[NONE]") && $Rdef ne "" && $Rdef ne $Ldef) {
$net->sendUnequip($chars[$config{'char'}]{'inventory'}[$Rdef]{'index'});
}
[Feb 1 23:41:31 2007.33] [console] Attacking: Monster Goblin Hammer (1)
[Feb 1 23:41:31 2007.33] [console] Encounter Monster : Goblin Hammer
[Feb 1 23:41:31 2007.34] [equip] Auto Equiping [R]: Claymore
[Feb 1 23:41:31 2007.40] [inventory] You unequip Two-handed Sword [1] (25) - Two-Handed Weapon
[Feb 1 23:41:31 2007.42] [inventory] You equip Claymore (33) - Two-Handed Weapon (type 34)
...
[Feb 1 23:41:41 2007.81] [console] Attacking: Monster Santa Poring (0)
[Feb 1 23:41:41 2007.97] [equip] Auto equiping default [R]: Two-handed Sword [1] (unequip 33)
[Feb 1 23:41:41 2007.14] [inventory] You unequip Claymore (33) - Two-Handed Weapon
[Feb 1 23:41:41 2007.15] [inventory] You equip Two-handed Sword [1] (25) - Two-Handed Weapon (type 34)
- Вложения
-
- AI_equip.txt
- вся процедура
- (8.63 КБ) 163 скачивания
Последний раз редактировалось DInvalid Чт фев 01, 2007 11:52 pm, всего редактировалось 1 раз.
DInvalid
И зачем так сложно???
AutoEquip + условия на Twohand Quicken решают.
ТЕ:
Первое Условие: Использовать таймеро-независимый блок для каста Twohand Quicken в случае если одето оружие 1.
Второе Условие ==//== если одето оружие 2.
ИТД.
Автоматически одевать если оружие Упало, или выбито с рук.
Ыроде проще чем ковырять исходники Коры. Верно???
И зачем так сложно???
AutoEquip + условия на Twohand Quicken решают.
ТЕ:
Первое Условие: Использовать таймеро-независимый блок для каста Twohand Quicken в случае если одето оружие 1.
Второе Условие ==//== если одето оружие 2.
ИТД.
Автоматически одевать если оружие Упало, или выбито с рук.
Ыроде проще чем ковырять исходники Коры. Верно???
Я не понимаю о чем ты.kLabMouse писал(а):DInvalid
AutoEquip + условия на Twohand Quicken решают.
ТЕ:
Первое Условие: Использовать таймеро-независимый блок для каста Twohand Quicken в случае если одето оружие 1.
Второе Условие ==//== если одето оружие 2.
ИТД.
Автоматически одевать если оружие Упало, или выбито с рук.
Ыроде проще чем ковырять исходники Коры. Верно???
У людей есть проблема - багнутый autoswitch.
Я ковыряю исходники Коры что бы посмотреть где он бажит.
autoswitch - багнутый.kLabMouse писал(а):DInvalid
autoswitch пашет безукоризненно!
А вот 99.9% багов, из-за тараканов в мозгу.
Я это просто так говорить бы не стал.
Я сел и проверил его - да, баг есть.
Потом поискал на форуме OK (ссылки есть в моих постах выше) - баг есть.
Потом посмотрел исходники и нашел место где этот баг (можно спорить баг это или фича) - есть.
Что бы его воспризвести тебе нужен
Найт с Twohand Quicken, соотв в конфиге
useSelf_skill Twohand Quicken {
lvl 5
sp > 20
whenStatusInactive Twohand Quicken
...
}
Несколько разных двуручников
Устанавливаешь на разных мобов разные двуручники,
по умолчанию тоже другой
например
autoSwitch_default_rightHand Two-handed Sword [1]
autoSwitch_default_leftHand
autoSwitch_default_arrow
autoSwitch Goblin Hammer {
rightHand Claymore
leftHand
arrow
distance
useWeapon
}
и смотришь что он будет делать
у меня он делает вот что:
[console] Encounter Monster : Goblin Hammer
[equip] Auto Equiping [R]: Claymore
[inventory] You unequip Two-handed Sword [1] (22) - Two-Handed Weapon
[parseMsg_statuslook] You are no longer: Twohand Quicken
[inventory] You equip Claymore (30) - Two-Handed Weapon (type 34)
[selfSkill] You use Twohand Quicken on yourself : Lv 5
[parseMsg_statuslook] You are now: Twohand Quicken
Это баг.
Ты о чем вообше?kLabMouse писал(а):DInvalid
Ето не БАГ,Ето Фича. У тебя в useSelf_skill Twohand Quicken не указано условие когда не использовать скил по причине того что одет одноручный мечь. Что есть багом пользователя.
Если-бы ты воспользовался тем что дают, а не только тем что привык. То бы знал что и такое возможно.
У меня оба меча двуручные. Это кстати написано в логе.
Мне не важно условие в useSelf_skill Twohand Quicken, тем более оно там не полностью описано, только основаная часть.
Баг не в useSelf_skill, а в autoSwitch, и он выражается в том что при переключении двуручных мечей спадает Twohand Quicken, что быть не должно.
"Если-бы ты читал то что тебе пишут, а не только слушал себя... "
piroJOKE
Сорь, Сорь. Видимо лекарств много сварил.
Короче как-я понял. Нужно чтоб при смене на еквивалентный тип оружия, он его не снимал сначала. А в случае если на нееквивалентный, то снимал.
ТЕ:
Двуручник на двуручник -- не снимать
Двуручник на одноручник -- Не снимать, можно одеть щит
Одноручник на двуручник -- снять одноручник и щит, одеть двуручник.
Надя подумать в правильном пути, более универсальном нежели DInvalid предложил вышше. Ибо оно касалось скила только, и никак не емулирует поведение клиента/пользователя.
Сорь, Сорь. Видимо лекарств много сварил.
Короче как-я понял. Нужно чтоб при смене на еквивалентный тип оружия, он его не снимал сначала. А в случае если на нееквивалентный, то снимал.
ТЕ:
Двуручник на двуручник -- не снимать
Двуручник на одноручник -- Не снимать, можно одеть щит
Одноручник на двуручник -- снять одноручник и щит, одеть двуручник.
Надя подумать в правильном пути, более универсальном нежели DInvalid предложил вышше. Ибо оно касалось скила только, и никак не емулирует поведение клиента/пользователя.
Упрямый как сто китайцев =)kLabMouse писал(а):piroJOKE
Сорь, Сорь. Видимо лекарств много сварил.
Короче как-я понял. Нужно чтоб при смене на еквивалентный тип оружия, он его не снимал сначала. А в случае если на нееквивалентный, то снимал.
ТЕ:
Двуручник на двуручник -- не снимать
Двуручник на одноручник -- Не снимать, можно одеть щит
Одноручник на двуручник -- снять одноручник и щит, одеть двуручник.
Надя подумать в правильном пути, более универсальном нежели DInvalid предложил вышше. Ибо оно касалось скила только, и никак не емулирует поведение клиента/пользователя.
По теме - я исправил то что есть уже в коде что бы оно не глючило, а то что оно не эмулирует поведение клиента... хз, что есть то есть.
То что ты предложил - это тоже не катит, потому что во первых тип оружия заранее не известен, и у синов вообще $item->{equip_type} для ножиков в левой руке даст щит, а во вторых, если мы одеваем двуручник то вообше ничего не снимать можно, ну в общем то вообще всегда можно ничего не снимать, кроме случая когда сину надо взять 2 ножа.
П.С. с тем исправлением все вроде работает (нужны еще проверки), но можно переписать код заново конечно.
П.П.С.
piroJoke и все заинтересованные (найты, крюзы) протестируйте плз
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
DInvalid
Я соррри не читал, чего ты понаписывал, (еще раз сорри!), однако даже начало мне уже не нравится:
"...... - так как не будем снимать 2 ручное оружие"
Наша проблема не имеет никакого отношения к двуручности, одноручности, или трехручности оружия. Это уже неправильный подход.
Пример - мерч с одноручным мейсом в руке, с накастованным адреналином.
kLabMouse
Тоже не совсем правильно; точнее правильно, но не до конца. Давайте еще раз подумаем - проблема ТОЛЬКО у сина с его вторым ножом, или еще могут быть исключения?...
Вопрос №2 - а у сина есть какие-то скиллы, на которых может "плохо" подействовать unequip? Хотя это тоже неправильный подход.
Я соррри не читал, чего ты понаписывал, (еще раз сорри!), однако даже начало мне уже не нравится:
"...... - так как не будем снимать 2 ручное оружие"
Наша проблема не имеет никакого отношения к двуручности, одноручности, или трехручности оружия. Это уже неправильный подход.
Пример - мерч с одноручным мейсом в руке, с накастованным адреналином.
kLabMouse
Тоже не совсем правильно; точнее правильно, но не до конца. Давайте еще раз подумаем - проблема ТОЛЬКО у сина с его вторым ножом, или еще могут быть исключения?...
Вопрос №2 - а у сина есть какие-то скиллы, на которых может "плохо" подействовать unequip? Хотя это тоже неправильный подход.
Бу на тебя!! =)piroJOKE писал(а):DInvalid
Я соррри не читал, чего ты понаписывал, (еще раз сорри!), однако даже начало мне уже не нравится:
"...... - так как не будем снимать 2 ручное оружие"
Наша проблема не имеет никакого отношения к двуручности, одноручности, или трехручности оружия. Это уже неправильный подход.
Я еще раз говорю что это ИСПРАВЛЕНИЕ того, что когда то кто то написал, этот код там есть, и не я все это придумал. Но даже этот неправильный код был написан криво, поэтому приходится извращаться что бы обойти баг.
Да, это не правильный подход, но он уже есть в Коре, он реализован (но криво).
Я исправляю лишь то что там не дает работать, и с подобным исправлением найты будут весело махать меЧом
---------------------------------------
Но мы же не ищем легких путей?
Я переписал этот код, что бы он использовал bulkEquip, аналогично как сделано в АвтоЭквипе, и это правильный способ (mua ha ha ... really ? ggg).
Теперь принудительно снимаем вещи только тогда когда это явно задано указанием [NONE] в блоках.
- Вложения
-
- AIpatch.rar
- (1.68 КБ) 172 скачивания