28

» WarCraft 3 / Предмет: Божественный Щит

Лично я предлагаю сделать так: делаем предмет со способностью на основе спеллшилда. Если урон не смертельный, то удаляем предмет и даём новый (чтобы кд обнулить). Если урон смертельный и кд нет, то даём руну. Наличие кд можно проверять с помощью таймера+хеш, при каждом срабатывании стартуем таймер (главное, на паузу его не ставить).
28

» WarCraft 3 / Предмет: Божественный Щит

Ты ничего не путаешь? Или ты специально вводишь всех в заблуждение?
Открываем common.ai и смотрим. Чтобы использовать в обычных картах, её нужно определить после блока глобалок. Если есть vJass, то в любом удобном месте.
Речь о том что юнит мёртв, а игра сообщает обратное. И это так.
В момент перед получением урона (то есть пока триггер на получение урона работает) он ещё считается живым.

И я так и не понял самые первые придирки к реализации, они же ни о чём. Был бы полный комментарий, как сделать лучше, то и разговор был бы другой.
28

» WarCraft 3 / Предмет: Божественный Щит

При этом есть такой факт, что ХП юнита может быть БОЛЬШЕ 1 ед., в тот момент времени когда юнит по факту является МЁРТВЫМ
Это не так, юнит умирает только если хп меньше 0.405, доказанный тестами факт. Такие приколы возникают только в момент получения урона, ведь урон ещё не был нанесён, потому и хп больше 1.
функция IsUnitAliveBJ возвращает ответ функции IsUnitDeadBJ с приставкой not
функция IsUnitDeadBJ возвращает - ( ХП юнита <= 0 )
используя GetUnitState(whichUnit, UNIT_STATE_LIFE)
ты же говорить - про эффективность числа 0.405 в том же сравнении
И к чему это? Тут кто-то говорил про использование этих функций? Зачем их вообще их использовать, если есть IsUnitType, GetWidgetLife и UnitAlive, которые ТОЧНО лучше этих BJ?

Так что их можно суммировать и написать мегафункцию
Тоже самое делает UnitAlive.

Вот нормальные функции на все случаи жизни.
раскрыть
UnitDead и UnitIsAlive определённо сомнительные функции.
native UnitAlive takes unit id returns boolean

function UnitDead takes unit u returns boolean
    return not UnitAlive(u)  // returns true, if unit does not exist.
endfunction

function UnitExists takes unit u returns boolean
    return GetUnitTypeId(u) != 0
endfunction

function UnitDoesNotExist takes unit u returns boolean
    return GetUnitTypeId(u) == 0
endfunction

function UnitIsAlive takes unit u returns boolean
    return not IsUnitType(u, UNIT_TYPE_DEAD)
endfunction

function UnitIsDead takes unit u returns boolean
    return IsUnitType(u, UNIT_TYPE_DEAD)  // returns false, if unit does not exist.
endfunction
28

» WarCraft 3 / Выпадение предметов после смерти

Редактор - После смерти предметы могут быть брошены
А заголовок ни о чём не говорит? Это настройка ТОЛЬКО для редактора.

Чтобы после смерти выпадали предметы, нужно изменить настройки в самой способности инвентаря.
теряет итемы
Вот только это не так, предметы остаются в инвентаре уже мёртвого юнита, и после его полного разложения (по стандарту через 88 секунд после смерти) предметы выпадают и остаются на месте смерти.
28

» WarCraft 3 / Предмет: Божественный Щит

то что есть проверка статус смерти юнита
Да какая разница, IsUnitType и GetWidgetLife в данной ситуации одинаковы, первая функция берёт 2 аргумента, а вторая требует сравнения с 0 или с .405, UnitAlive всё равно лучше обеих.
28

» WarCraft 3 / Приказ

очередь приказов обрабатывает?
Запоминает только последний отданный.
Но вообще эта система не нужна, есть морфы, там всё нативно сохраняется.
28

» WarCraft 3 / Приказ

Недавно писал одному товарищу систему сохранения приказов на ГУИ (почти), чтобы юнит продолжал выполнять предыдущий приказ после замены.
Нужен JNGP, ибо необходим JassHelper.
Загруженные файлы
28

» WarCraft 3 / Предмет: Божественный Щит

виджет лайф > .405 ............ серьёзно?
Ну а то тут не так, хотя UnitAlive гораздо лучше.
28

» WarCraft 3 / Спел похищение жизни!

Молнию можно создавать в абсолютных координатах и двигать по ним безо всяких даммиков.
Но для этого нужна бд для точки, откуда снаряд юнита вылетает.
28

» WarCraft 3 / Смерть в лаве

чтоб использовать Воскрешение
Насколько мне известно, воскрешение создаёт нового юнита, но вот это я не проверял, так как практически не работаю со стандартными способностями.

А так добротно сделано, особенно передвижение точки, я сначала подумал, что для передвижения точки тоже используется точка, но там X of Unit, а не X of Point.
Единственный минус, передвижения точки нет в стандартном WE.
28

» WarCraft 3 / Смерть в лаве

С чего бы это?
Вот поэтому, данный триггер указан в посте.

А в твоём примере сначала выполнится триггер, а уже только потом юнит умрёт, но так как из группы юнит не удалён, эффект будет проигрываться.

Карта из предыдущего комментария, но с триггером, что на скриншоте.
Загруженные файлы
28

» WarCraft 3 / Смерть в лаве

На юнитах тоже.
Как, если они удаляются они группы при смерти?
28

» WarCraft 3 / Смерть в лаве

Неправда, я когда тестил, то эффекты спамились на мёртвых юнитов.
На мёртвых героях, ведь они не удаляются.
28

» WarCraft 3 / Смерть в лаве

Имеете ввиду так?
Так, или после Or, суть особо не поменяется.
Проверка на мёртвость вообще немного бесполезна, ведь в группе не могут быть мёртвые юниты, они сразу из неё удаляются.
28

» WarCraft 3 / Смерть в лаве

Не совсем понятно, зачем в То условие, когда можно это условие запихнуть после Or. Да и само условие стоит заменить на встроенную проверку.
28

» WarCraft 3 / Проверка убийства героев

Я так понял, что если дерева меньше 100 и убийств 0, то предмет удаляем. Тогда условие верно.
Но вот в триггере с прибавлением убийств героев ты накосячил.
Надо такое действие.
set УбитоГероев[Player Number of Owner of Killing Unit] = УбитоГероев[Player Number of Owner of Killing Unit] + 1
Ну и проверку на мёртвость юнита надо убрать, ведь понятно, что если юнит умирает, то он мёртв.
28

» WarCraft 3 / Проверка убийства героев

Зачем ты проверяешь, что убитый юнит мёртв?
Стоит показать полностью триггер с условиями из 3-го скриншота.
28

» WarCraft 3 / Правильно ли проверка строки if()

Принятый ответ
  1. Условия типа bool1() and bool2(). Если bool1() ложь, то bool2() выполнятся не будет.
  2. Условия типа bool1() or bool2(). Если bool1() правда, то bool2() выполнятся не будет.
  3. JASS2 не шарит за приоритет операций, то есть bool1() or bool2() and bool3() имеет тот же результат, что и (bool1() or bool2()) and bool3().
28

» WarCraft 3 / Ошибка Missing endblock, cJass

KaneThaumaturge, по поводу первой картинки: в конце каждого триггера оставляй как минимум 1 пустую строку, потому что в скрипте первая строка триггера n и последняя строка триггера n-1 склеиваются. n - номер триггера, если считать сверху вниз.
28

» WarCraft 3 / Порядок инициализации

Не хочу даже спрашивать как вы это обнаружили
А чего спрашивать, я уже описал, как это заметить.
28

» WarCraft 3 / Порядок инициализации

меняется, сколько их не перетаскивай
Меняется.
После открытия карты все новые триггеры будут располагаться ниже всех и инициализироваться последними (в порядке создания), а перетаскивание не имеет эффекта. Но после переоткрытия карты и сохранения, триггеры будут располагаться и инициализироваться как они находятся в редакторе в порядке сверху вниз.

Это легко проверить, просто сравнив скрипт карты до переоткрытия и после. Так как я скрипт заливаю на репозиторий, сравнение файлов это замечает.
28

» WarCraft 3 / Как убрать функцию "Страх" у ИИ

Этот вопрос уже задавался. Всё просто)
Совершенно верный ответ.

Для атакуемых целей нужно посмотреть, что написано у Стрелка, и скопировать для Древня.