1

» WarCraft 3 / Приоритет для атаки AI

Пока для тестирования оставил вариант с маленькой атакой, так как для нее не требуется писать дополнительных скриптов. Я не знаю, как работают функции отбора групп (отрядов) по условиям и как это оптимизировано внутри игры, но есть подозрение, что если в таймере выбирать все стенки на карте и потом искать боевые единицы врага вокруг каждой из них, это может быть долго. Для такого варианта хорошо кэшировать стены при постройке, но я на время тестирования не стал над этим заморачиваться. Всем спасибо за помощь.
1

» WarCraft 3 / Приоритет для атаки AI

quq_CCCP, ничего не трогаю - просто ставлю башни, стенки и вражескую армию, запускаю и смотрю. То есть, сам атаку не навожу. Но стена должна работать и если игрок сам направит атаку.
1

» WarCraft 3 / Приоритет для атаки AI

rsfghd:
siwono, юнит вошёл в сферу другого юнита (стены) с условием что у юнита нет цели атаки и юнит враг стенки - приказ ему атаковать стенку
ничего сложного
МрачныйВорон:
мб попробовать периодично таймером дамажить 0.00 единиц урона триггерно этой стенкой вокруг врагов. они ДОЛЖНЫ будут агриться. только учти в самой нативке урона есть флаг атаки или че-то отвечающий за агр.
Интересные идеи, спасибо. Сегодня к вечеру постараюсь протестировать и напишу.
1

» WarCraft 3 / Приоритет для атаки AI

Hate, как же, не решится? Например, если добавить медленную и слабую атаку на 1ед. повреждения, то это приводит к необходимому эффекту. Ситуация такая: либо, решается как-то просто, либо, отказываемся от идеи (не такая идея, чтобы переписывать ради нее ИИ). Пока такое решение подходит (как минимум, для тестов), но если найдется что-то другое, тоже буду рад узнать.
1

» WarCraft 3 / Приоритет для атаки AI

С аурой торнадо ситуация чуть лучше, но все равно не то. Они наносят по одному удару и потом начинают обходить стену и бегут к башням. Переписывать ИИ ради только этой функции тоже не хотелось бы.
1

» WarCraft 3 / Можно ли отключить применение способностей компьютером?

В результате решил использовать такой вариант - пока вроде, работает.
  1. Создаем способность-дубликат на основе Канала и даем ее боевой единице.
  2. Сохраняем в кэш ключ - ID дубликата и значение - ID основной способности.
  3. Применяем при помощи специальной функции, которая берет из кэша нужную способность, добавляет ее боевой единице, заставляет применить и отключает через пару секунд. Пример такой функции:
nothing order_Immediate(unit u, integer abilId) {
  integer realAbilId = GetStoredIntegerBJ(I2S(abilId), "abildoubles", cache)
  
  if (GetUnitAbilityLevelSwapped(realAbilId, u) == 0) {UnitAddAbility(u, realAbilId)}
  else {SetUnitAbilityLevel(u, realAbilId, 1)}
  
  IssueImmediateOrder(u, AbilityId2String(realAbilId))

  PolledWait(3)

  SetUnitAbilityLevel(u, realAbilId, 0)
}
Отключаем, а не удаляем - чтобы не сбрасывалась перезарядка. К тому же, если удалить способность, то она перестанет применяться (например, неуязвимость), а если обнулить ее уровень, то не перестанет. Проблем с таким методом пока не обнаружил.
1

» WarCraft 3 / Можно ли отключить применение способностей компьютером?

quq_CCCP:
МрачныйВорон, мб SetPlayerAbilityAvalible?
Если других вариантов нет, то этот кажется подходящим. Разрешать способность, триггерно применять, и через пару секунд снова запрещать. А вариант с удалением и добавлением требует хранения массива соответствий - это лишние данные и лишние действия, чтобы определить, кому какую способность давать.

Но здесь проблема в другом. За те несколько секунд, пока способность разрешена, другие боевые единицы по всей карте вполне могут ее применить.

Пока приходит в голову только такой вариант (усовершенствованный вариант от МрачныйВорон): создать дубликаты всех необходимых способностей на основе какого-нибудь Канала, и потом по наличию способности-дубликата выдавать основную способность, триггерно ее применять и снова удалять. Дело, конечно, долгое, - жаль, если без этого никак.
1

» WarCraft 3 / Способности, созданные на основе одной стандартной

zogorlol:
Классическими методами не решается, потому что у способностей одинаковый приказ. Из активных способностей менять приказ можно только у канала.
Но из новых методов можно сделать кастомный интерфейс. Тогда триггером будет не Применение способности а клики по интерфейсу. А дальше нужно добавлять/удалять или блокировать/разблокировать нужные способности и приказывать их выполнять.
Подскажите, что за методы такие с кастомными интерфейсами.
1

» WarCraft 3 / Как активировать тип атаки для боевой единицы?

PT153:
siwono, нельзя включить атаку, если она выключена. Она должны быть настроена, а ниже выбрано "Только атака 1" Или "Только атака 2". Сферы включают доп атаку, но не отключают прежнюю. Поэтому нужно юзать "Вырвать дерево".
Я и полностью отключал, и ставил "Только атака 2" (атака 2 не настроена), и потом сферой переключал на 1. Мне нужно, чтобы из не атакующей боевая единица превратилась в атакующую. Возможно, есть смысл использовать "Вырвать дерево" с каким-то большим временем. Не знаю только, можно ли таким образом установить атаку на достаточное время. Но если я не ошибаюсь, эта способность работает только с деревьями, а мне нужно просто включить атаку.
1

» WarCraft 3 / Как активировать тип атаки для боевой единицы?

Я думал про дерево, но его надо вырывать, а атаку нужно активировать на постоянно. Может быть, что-то не так сделал.

Предмет: замораживающая атака
Включен индекс атаки: 1
У боевой единицы настроена атака 1, а поле "Бой - Атаки" установлено в "Нет".
Не появляется атака при выдаче способности.
1

» WarCraft 3 / Собственная модель для способности "Буран"

quq_CCCP, там выпадающий список с уже предустановленными значениями. Вопрос более в другом - можно ли в этот список добавить путь к импортированной модели и если да, то как? Я добавлял просто имя модели, но так не работает.
1

» WarCraft 3 / Возможно ли реализовать такие способности без триггеров?

quq_CCCP, там пустая модель, он невидимый. Тут важно, чтобы летел снаряд. Один - в выбранную цель и несколько других - в случайные. Бомба по этой причине не подойдет.
1

» WarCraft 3 / Возможно ли реализовать такие способности без триггеров?

quq_CCCP, понял, делаю через триггер. Вызываю боевую единицу, у нее способность "Ракеты" для атаки нескольких целей. Все работает, проблема только в том, что боевая единица начинает атаку не сразу, а через секунду после вызова. В итоге получается, что способность применяется с задержкой. Как с этим бороться?