Заставить ИИ кастовать заклинания из спеллбука
Как ?
Если нечего не делать то дефолтный ИИ вполне не плохо использует любые способности из спеллбука, но не так часто как хотелось
Дополнительные вызовы способностей для через IssueOrder ничего не дают
Добавлять теже самые абилы триггерно, выдрав их из спеллбука не хочется тоже
Неужели ForceUiKejBJ + order???
Есть ли альтернативные методы?

Лучший ответ:
Сегодня выложу систему, показывающую как я кастую из спеллбука, осторожно, много мемхака!
if UnitAbilityIsRealReady(u,'A013') then // проверяет готовность способности (сало, станы, ману, кд)
call UnitEmulateAbilityActivate(u,'A013') // отнимает ману столько стоит, запускает кд
call BlinkToPoint(u,x,y) // выполняет нужный кусок кода, тот же самый кусок, что и функция если применять вручную
endif



Просмотров: 487

ClotPh #1 - 6 месяцев назад 0
а чем форс кея плох, если он действует для ИИ?
мне в итоге очень помог открыть спеллбук для прелоада
Bergi_Bear #2 - 6 месяцев назад 0
ClotPh, я не пробовал, а надо ли задержку какую-то? или можно просто подряд force+issue?
ClotPh #3 - 6 месяцев назад 0
Bergi_Bear, у меня задержка около 0.3-0.4 секунды, что ли
точно влом перепроверять сейчас
но у меня там немного другое у меня прелоад спеллбуков с их нажатием чтобы лага не было
и если без задержки просто спеллбук добавлять прожимать удалять то они точно не успевают прожаться
а так - успевают
quq_CCCP #4 - 6 месяцев назад 0
Activate Ability на мемхаке, позволяет открыть спеллбук.
Steal nerves #5 - 6 месяцев назад (отредактировано ) 0
quq_CCCP, а какой это код. это позволяет открыть или активировать абилу из спелбука? что-то на открытие не работает ToggleActiveAbilityOnUnit (это работает только с двойными кнопками и автокастами). интересно ThrowTargetSpellTargetUnit можно каставать прямо из спелбука?
Bergi_Bear #6 - 6 месяцев назад 0
Если будет работать: открыть/кастовать/закрыть - тогда будет норм, это то что надо, останется вынести в отдельную функцию и готово, главное чтобы мгновенно без лишних пауз
Bergi_Bear #7 - 6 месяцев назад (отредактировано ) 0
Дошли руки проверить
call ForceUIKeyBJ(GetOwningPlayer(u),"F")
//call TriggerSleepAction(0.1)
call IssueTargetOrder(u,"holybolt",u)
//call TriggerSleepAction(0.1)
call ForceUICancelBJ(GetOwningPlayer(u))
не работает, просто открывает спеллбук а попытки каста нет =( даже если поставить задержку, он просто ходить с открым сбуком
Steal nerves, ThrowTargetSpellTargetUnit проверил, эффект весьма интересный, скил срабатывает игноря кд и возможно ману и прочее, но не регистрируется событие, что скил скастован, идёт только базованый эффект =(
ThrowTargetSpellTargetUnit даже мертый кастует!
Проверил ещё дальше получилось со способностями без цели через
call ForceUIKeyBJ(GetOwningPlayer(u),"F")
call ForceUIKeyBJ(GetOwningPlayer(u),"Q")
call ForceUICancelBJ(GetOwningPlayer(u))
Где F - хоткей спеллбука
Где Q - хоткей нужной способности
(работает на нулевых касттаймах, у меня меня так)
А как же быть с другими способностями на точку и на цель?
DracoL1ch #8 - 6 месяцев назад 0
ThrowTargetSpellTargetUnit создан как раз для бросков дефолтных заклинаний вместо даммиков, обеспечивает сугубо базовый эффект. если тебе нужен триггерный эффект, так вызывай ту функцию сразу после, не? С параметрами вместо GetTrigger*
Bergi_Bear #9 - 6 месяцев назад 0
DracoL1ch, да я вот и думаю, наверное я буду запускать скилл в кд (это вроде должно работь внутри спеллбука), все скилы переделать на лишний перевызов, ну вызывать дополнительно функцию HolyBolt (Gettriggerunit(),Getspalltargerunit()) и аналогичный, я думаю это оч. быстро получится сделать, тем более способностей проблемных не так уж и много, да и на будущее пригодтся, например всякие вызовы, при невозможных условиях (в кд, в стане, в дефиците маны)
quq_CCCP #10 - 5 месяцев назад 0
Bergi_Bear, а ии зачем нужен спеллбук? Когда ему пофиг на панель приказов, можно тыкать абилки прям так без спеллбука.
Bergi_Bear #11 - 5 месяцев назад 0
quq_CCCP, так не работает же говорю, ии играет за точно такого же персонажа как и человек, и напрямую приказы не работают на заклинанию в спеллбуке, даже есть тот открыт, (проверял на гибридном управлении человек+компьютер), разумеется всё работет если способности дать вне спеллбука, приказы успешно выполняются
quq_CCCP #12 - 5 месяцев назад 0
Bergi_Bear, ну так когда играет ИИ просто вручаешь кодом ему весь набор из спеллбука а спеллбук удаляешь.
Bergi_Bear #13 - 5 месяцев назад 0
quq_CCCP, Я не могу так сделать потому что много условий этому противится, такие как удаление всех способностей и возможность гибридного управления.
"Добавлять теже самые абилы триггерно, выдрав их из спеллбука не хочется тоже", а так я об этом написал ещё в шапке темы, я рассматривал эту идею самой первой, как только понял, что оно не работает так как мне хотелось бы
zogorlol #14 - 5 месяцев назад 0
Приказам скастовать спелл побоку находятся абилка в спеллбуке или нет. Просто работай так, как будто никаких спеллбуков нет.
Bergi_Bear #15 - 5 месяцев назад 0
zogorlol, это не работает, попробуйте сначала, а потом приложите результаты
zogorlol #16 - 5 месяцев назад 0
Bergi_Bear, Ок, подвела меня память. Ну тогда добавь юнитам каналов с приказами нужных абилок и отключенным отображением.
Bergi_Bear #17 - 5 месяцев назад 0

Сегодня выложу систему, показывающую как я кастую из спеллбука, осторожно, много мемхака!
if UnitAbilityIsRealReady(u,'A013') then // проверяет готовность способности (сало, станы, ману, кд)
call UnitEmulateAbilityActivate(u,'A013') // отнимает ману столько стоит, запускает кд
call BlinkToPoint(u,x,y) // выполняет нужный кусок кода, тот же самый кусок, что и функция если применять вручную
endif