Может быть такое, что если заспавнить боту юнит и приказать атаковать, то атака не произойдёт, потому что бот перехватывает управление моментально?
Проблема со способностью. Для игрока-человека способка работает как надо. Даммики нападают на врагов. А вот если способку использует бот, то ничего не происходит.
Триггер целиком:
Событие - Starts the effect of an ability

Да, может, у меня даммик у игрока-компьютера отказывался кидать молоток для кастомной системы стана.
Но меня больше волнует ахтунг, который ты развел в коде... Зачем ты прикрепляешь событие смерти к каждому задетому юниту? Это делается одним триггером на общее событие смерти, в котором можно проверить убитого и убийцу (на наличие определенного баффа или тип юнита и.т.п.). Зачем ты во время перебора юнитов удаляешь last created group, которую ты даже не используешь? Зачем attack once, когда есть нормальная функция нанесения урона? Загадка от Жака Фреско, на размышление одна секунда.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Этот комментарий удален
4
Принятый ответ
Да, может, у меня даммик у игрока-компьютера отказывался кидать молоток для кастомной системы стана.
Но меня больше волнует ахтунг, который ты развел в коде... Зачем ты прикрепляешь событие смерти к каждому задетому юниту? Это делается одним триггером на общее событие смерти, в котором можно проверить убитого и убийцу (на наличие определенного баффа или тип юнита и.т.п.). Зачем ты во время перебора юнитов удаляешь last created group, которую ты даже не используешь? Зачем attack once, когда есть нормальная функция нанесения урона? Загадка от Жака Фреско, на размышление одна секунда.
15
MACOH, у меня есть ответы. Всё ниже описанное я узнал в процессе изучения редактора, с форумов. Если где-то неправ - поправь.
Зачем ты прикрепляешь событие смерти к каждому задетому юниту?
Можно конечно и таймер пустить. Но для этого нужна отдельная переменная. Даже две. Проще на каждого кинуть событие, затем отследить его смерть, и подчистить за ним все эффекты. А событие "юнит умирает" удалится само, когда после конца его разложения наступит "remove". Либо по истечению действия способности ресетнуть триггер.
Это делается одним триггером на общее событие смерти, в котором можно проверить убитого и убийцу (на наличие определенного баффа или тип юнита и.т.п.).
А ты логически подумай, что легче с точки зрения процессов оптимизации: проверить 300 умерших юнитов на всей карте, или без проверки триггернуться на 10 конкретно умерших юнитов?
Зачем ты во время перебора юнитов удаляешь last created group, которую ты даже не используешь?
потому что при Unit - Create unit создаётся группа. Если её не удалять, эта группа до конца карты будет висеть в памяти.
Зачем attack once, когда есть нормальная функция нанесения урона?
Потому что мне нужна способность "заморозить здание", которая останавливает все процессы у юнита. Ну и до кучи урон наносит. Если есть другие способы как заморозить юнит, без использования Pause, буду рад узнать.
15
MACOH, пофиксил. Вроде через нейтрально-враждебного даммика, вроде через ignore unit guard pos.
4
WilliamBz,
  1. Нет, 1 общий триггер прекрасно работает. Да, он будет срабатывать каждую смерть, но игре это абсолютно никак не помешает.
  2. Слава богу я гуями перестал пользоваться много лет назад, посмотел стандартную функцию и ужаснулся) Группа, которая используется при создании юнита, это bj_lastCreatedGroup, которая, из того, что я увидел, создаётся 1 раз в начале игры при инициализации переменных и затем просто очищается перед использованием. Функция удаления группы ее не удаляет как таковую (и по-моему даже утекает сама по себе).
  3. Вот тут не уверен, но Вроде-Как(тм) пауза юнита от заморозки ничем не отличается (но на гуях трудно будет сделать динамический таймер, наверное).
15
1.
MACOH, а если мы отлавливаем attacked unit? Что тогда? А если у нас 24 игрока на карте? А если у нас 10 условий?
Если создать событие в триггере вызывает фриз, то это дело конечно другое. Только я про это не в курсе. Или какая ещё может быть причина чтобы этого не делать?
Это очень странно. Потому что если после создания юнита приказать последней созданной группе что либо - она выполнит приказ. И если эту группу записать в переменную, с ней ничего не произойдёт если создать нового юнита.
А можешь скинуть код? Интересно что там. Где вообще посмотреть код гуишных функций?
3.
Пауза скрывает способности юнита. Это неудобно. Надо чтобы игрок мог отдавать приказы, пока юнит стоит замороженным. Или хотя бы просто видел что приказы все на месте, просто заблочены.
4
WilliamBz,
  1. По 1 событию на каждого игрока. Прекрасно работает, даже если триггеров несколько и не надо заморачиваться с удалениями событий/пересозданием триггера.
  1. Я пользуюсь вот этим xgm.guru/p/wc3/jngp-r-updated, там есть список переменных и функций, которые можно поизучать. Чтобы было проще, можно выбрать нужные функции на гуи, потом перевести триггер в Custom Text (Edit > Convert To Custom Text).
  1. Из простого - поставить стану другой визуальный эффект и кидать даммиком невидимый молоток. Но в таком случае будут нюансы при продлении длительности стана другими скиллами (визуальный баг).
Чтобы оставить комментарий, пожалуйста, войдите на сайт.