Второй триггер можно сделать проще: проверку на отсутствие в группе поставить в условия триггера.
Ошибка в третьем триггере: первое условие, (Picked Unit has buff рано Нет) должно быть.
Второй триггер изначально немного иначе планировал сделать, потому и осталась от того раза конструкция if/then/else, она как бы не мешает, но да, лучше действия и условие вынести в сам триггер. А вот помимо ошибки в третьем триггере, ещё и бафф (буфферизируется), его же не висит на юнитах отравленных. Тоже не знаю, почему он присутствует в редакторе, но предполагаю, что он для версии Reign of Chaos, типа там иначе работает яд, и чтобы была своя версия яда у юнитов в каждой версии игры, просто поставили юнитам оба типа баффов, а каждая версия отключает другой.
Не знаю, как в 1.30, но в 1.26 Воскрешение не поднимает тех же юнитов, а создаёт на их месте таких же новых. Лишь герои могут быть нормально воскрешены, поэтому их и нельзя удалять из Poisoned_units. EHP_Sequence, так наоборот заменить надо было. (Triggering unit) реагирует на юнита в событии, но там такого нет, там время. (Picked unit) реагирует на юнита в группе, которую перебираешь.
В третьем триггере (Triggering unit) вместо (Picked unit).
Четвёртый триггер не нужен, он осуществляется в третьем триггере, при этом для героев будет сбой системы.
Clamp, по идее да, но вот возьмём, например, способность массовые корни. Вроде бы она имеет бафф, если один герой использует способность, то объединяет юнитов в радиусе действия в группу и по таймеру начинает наносить урон всем в группе, кто имеет бафф, а кто не имеет, удаляет из группы. Но если способность MUI, то нужно делать приоритет группам по уровню способности и переводить юнитов из более слабой группы в более сильную, если они попали под действие способности, будучи в корнях. В случае корней это не очень много, но для некоторых других способностей это критически всё усложняет. DracoL1ch, верю, что там всё хорошо с этим. Жаль, что без мемхака никак.
Rusvermilion, качественно сделать черепашек довольно сложно, обращайся к Эльрату. А анимации для них можно брать из моделей азиатских персонажей, например:
Rusvermilion, прикрепи модели-то.
А ведь правые и левые разные.
Не факт, что достаточно просто плащи снять, возможно придётся чьё-то мясо на другой скелет пересаживать.
EHP_Sequence, не третью, а вторую группу. Выводить из первой надо только после смерти юнита, иначе может создаться более одного события отлова урона во втором триггере.
Снижение брони происходит лишь один раз, потому что перед снижением проверяется его наличие во второй группе, если нет, то броня снижается и юнит заносится во вторую группу, а если есть во второй группе, то ничего.
Так в первом триггере условие, что атакованный не должен быть в Poisoned_units.
А по поводу юнитов как-то задавал вопрос, мне сказали, что типа (Attacked unit) утекает и остальные тоже.
Вот действие на установку скорости движения юнита, можно выбрать значения (Default), то есть прописанное в РО, и (Current), которое у юнита сейчас. Предполагал, что для Armor аналогично выбрать можно.
Сразу замечу по поводу того, как ты предложил делать, что переменная Initial armor будет переписываться с каждым юнитом, например, у одного 8 защиты, а у другого 4, в результате ядовитых атак у обоих может остаться 4 или 8. Правда, всё это будет не совсем правильное решение, порой оно будет глючить. Так как надо делать, как указал PT153 - отлов урона. Попозже подробнее опишу работу с этим.
По поводу отлова урона, событие Юнит Получает урон можно поставить лишь для Specific Unit, нельзя в редакторе по умолчанию его установить для Player-Owned Unit, либо Generic Unit. Не знаю конкретно, почему так сделано, лишь предполагаю, что это из-за механики игры. Игра наша весьма старая, нехватка вычислительных мощностей в её молодости была весьма актуальна, наверняка был использован приём, когда чётко отслеживался момент получения урона лишь у юнитов в области камеры, а для всех остальных не было просчётов замаха в соответствии с длинной анимации или как-то так. Сейчас нам нагрузка эта от игры на вычислительные мощности кажется мелочью, но в то время банально не хватало памяти, чтобы всё это хранить в ожидании вычислений, с современными мощными играми ситуация аналогичная. Исходя из этого, событие Юнит Получает урон просто не существует для всех юнитов на карте, а лишь для тех, которые попали в обзор камеры, если же юнит, указанный в событии, вне обзора, то возможны два варианта:
для него игра проводит более точные расчёты, в чём сомневаюсь;
происходят упрощённые расчёты, как и для всех юнитов вне обзора камеры.
Сейчас вычислительные мощности значительно выше, нам хочется иметь событие на отлов урона для всех юнитов, так как оно для распространившихся костыльных случаев лучше Юнит Атакован, для этого можно добавлять это событие любому юниту на карте через действие Триггер - Add New Event.
Например, можно сразу всех юнитов на карте выбрать и дать им это событие, такой способ нравится PT153, а можно давать его лишь юнитам, атакованным ядовитым пауком, такой способ нравится мне. Опишу свою версию триггеров:
триггеры
Первый триггер
События
Боевая единица - A unit Атакован
Условия
(Level of Яд (паук) for (Attacking unit)) больше 0
((Attacked unit) is in Poisoned_units) равно (==) Нет
Действия
Отряд - Add (Attacked unit) to Poisoned_units
Триггер - Add to Второй триггер <gen> the event (Боевая единица - (Attacked unit) Получает урон) Второй триггер
События
(никаких событий, их добавит первый триггер)
Условия
((Triggering unit) has buff Яд (не буферизуется) (паук1)) равно Да
Действия
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
((Triggering unit) is in Reduced_armor) равно (==) Нет
То - Действия
Set Armor of (Triggering unit) to ((Armor of (Triggering unit)) - 6.00))
Отряд - Add (Triggering unit) to Reduced_armor
Иначе - Действия Третий триггер
События
Время - Every 0.10 seconds of game time
Условия
Действия
Отряд - Pick every unit in Poisoned_units and do (Actions)
.Цикл - Действия
..Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
...Если - Условия
....((Picked unit) has buff Яд (не буферизуется) (паук1)) равно Нет
....((Picked unit) is in Reduced_armor) равно (==) Да
...То - Действия
....Set Armor of (Picked unit) to ((Armor of (Triggering unit)) + 6.00))
....Отряд - Remove (Picked unit) from Reduced_armor
...Иначе - Действия
....Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
.....Если - Условия
......((Picked unit) is alive) равно (==) Нет
......((Picked unit) is in Reduced_armor) равно (==) Да
.....То - Действия
......Отряд - Remove (Picked unit) from Reduced_armor
......If (((Picked unit) is Герой) равно (==) Нет) then do Отряд - Remove (Picked unit) from Poisoned_units else do (Боевая единица - Set Armor of (Picked unit) to ((Armor of (Picked unit)) + 6.00))
.....Иначе - Действия
Но и это ещё не всё) Если не ошибаюсь, такая система получилась весьма утечной, так как все эти (Picked unit), (Triggering unit), (Attacked unit) образуют утечки. Пусть поправят, если не прав. Как избавиться от них, разберём позже.
Перечитай ещё раз, если не поймёшь, то ещё, если всё равно не поймёшь, то ещё, если опять не поймёшь, то посмотри какую-нибудь стандартную декорацию с вариациями, найди в архиве игры её модели вариаций, сделай аналогично свою.
А если я создал свой нестандартный разрушаемый объект?
Также указываешь модели вариации с одним общим именем и окончаниями [число] и [число]S, в пути к модели ставишь только общее имя, указываешь количество вариаций. Суть в том, что импортированные модели декорации обычным именем отображаются в редакторе, а модели с тем же именем и окончанием S в игре.
Немного не так. Сейчас сделаю пример, а ты у себя проверишь.
Если кратко, то проблема во втором триггере, там ты не выбираешь всех юнитов в группе Poisoned_units, а также вместо Do nothing надо сделать установку юниту текущей брони.
Опишу на примере дерева. Чтобы были у дерева Ашенваля вариации, надо импортировать их модели по путям:
Doodads\Terrain\AshenTree\AshenTree0.mdx
Doodads\Terrain\AshenTree\AshenTree1.mdx
Doodads\Terrain\AshenTree\AshenTree2.mdx
и так далее.
Путь к модели надо указать Doodads\Terrain\AshenTree\AshenTree.mdx, номер в конце не надо ставить. А в количестве вариаций декорации указать последний номер импортированной модели.
Но для отображения в игре нужно загрузить эти же модели по путям:
Когда смотрел прошлую его способность, то там вообще дичь была: утечки, массовые москиты, супер-урон.
Посмотрел эту карту. Гораздо лучше Сферы Льда, но всё равно утечки и не убран визуальный эффект от способности Порча, на базе которого эта способность сделана.
Исправил способность, чтобы Rockmaf посмотрел, как без утечек/лишних эффектов/с описаниями делается. Но поменял владельца москитов на нейтрально-враждебного, чтобы на экране статистики они не засчитывались, а это привело к тому, что видимость при использовании способности пропадает. Мог бы её сделать, но там локальные переменные следует использовать, а вместе с утечками слишком много информации.
Скопируйте себе в карту юнита "Москиты", обе способности и триггер. Менять урон и его длительность нужно в способности без (AOE), менять описание в способности с (AOE), менять радиус в способности с (AOE) и в триггере в переменной AOE_er_r.
Только что осознал косяк, там же опыт и золото за юнитов на дадут, если они погибнут от корней нейтрально-враждебных. Всё-таки надо создавать Москитов, принадлежащих владельцу героя.
Карту с приключением, где используются все эти нестандартные способности. Таких мало, а разных арен много, причём таких крутых, что не сможешь конкурировать наравне. Если же реализуешь приключение на основе какого-нибудь произведения, либо сам придумаешь сюжет, то как раз займёшь часть полупустующей ниши.
Только сразу замечу, что способности твои имбовые, таких нигде не надо просто потому, что никакого баланса. Разве что только боссам. Для душевного приключения нужны способности с меньшим уроном и меньшим радиусом действия.
P. S. Ого! Цикл с Wait'ом работает. Надо бы разобраться, при каких условиях он не работает.
» WarCraft 3 / Проверка способности
» WarCraft 3 / Проверка способности
» WarCraft 3 / Проверка способности
Заскринь опять триггеры.
» WarCraft 3 / Проверка способности
EHP_Sequence, так наоборот заменить надо было. (Triggering unit) реагирует на юнита в событии, но там такого нет, там время. (Picked unit) реагирует на юнита в группе, которую перебираешь.
» WarCraft 3 / Можно ли уменьшить счётчик юнитов на экране статистики?
спустя 5 часов
Понятно, не придумал ещё)
» WarCraft 3 / Проверка способности
Четвёртый триггер не нужен, он осуществляется в третьем триггере, при этом для героев будет сбой системы.
Ред. 8gabriel8
» WarCraft 3 / Помощь с текстом в проекте
Ред. 8gabriel8
» WarCraft 3 / Можно ли уменьшить счётчик юнитов на экране статистики?
DracoL1ch, верю, что там всё хорошо с этим. Жаль, что без мемхака никак.
» WarCraft 3 / Можно ли уменьшить счётчик юнитов на экране статистики?
» WarCraft 3 / Нужна модель? - Вам сюда!
Ред. 8gabriel8
» WarCraft 3 / Нужна модель? - Вам сюда!
А ведь правые и левые разные.
Не факт, что достаточно просто плащи снять, возможно придётся чьё-то мясо на другой скелет пересаживать.
Ред. 8gabriel8
» WarCraft 3 / Проверка способности
Снижение брони происходит лишь один раз, потому что перед снижением проверяется его наличие во второй группе, если нет, то броня снижается и юнит заносится во вторую группу, а если есть во второй группе, то ничего.
» WarCraft 3 / Проверка способности
» WarCraft 3 / Проверка способности
А по поводу юнитов как-то задавал вопрос, мне сказали, что типа (Attacked unit) утекает и остальные тоже.
Ред. 8gabriel8
» WarCraft 3 / Проверка способности
Например, можно сразу всех юнитов на карте выбрать и дать им это событие, такой способ нравится PT153, а можно давать его лишь юнитам, атакованным ядовитым пауком, такой способ нравится мне. Опишу свою версию триггеров:
События
Боевая единица - A unit Атакован
Условия
(Level of Яд (паук) for (Attacking unit)) больше 0
Отряд - Add (Attacked unit) to Poisoned_units
Триггер - Add to Второй триггер <gen> the event (Боевая единица - (Attacked unit) Получает урон)
Второй триггер
События
(никаких событий, их добавит первый триггер)
Условия
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
((Triggering unit) is in Reduced_armor) равно (==) Нет
То - Действия
Set Armor of (Triggering unit) to ((Armor of (Triggering unit)) - 6.00))
Отряд - Add (Triggering unit) to Reduced_armor
Иначе - Действия
Третий триггер
События
Время - Every 0.10 seconds of game time
Условия
Действия
Отряд - Pick every unit in Poisoned_units and do (Actions)
.Цикл - Действия
..Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
...Если - Условия
....((Picked unit) has buff Яд (не буферизуется) (паук1)) равно Нет
....((Picked unit) is in Reduced_armor) равно (==) Да
...То - Действия
....Set Armor of (Picked unit) to ((Armor of (Triggering unit)) + 6.00))
....Отряд - Remove (Picked unit) from Reduced_armor
...Иначе - Действия
....Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
.....Если - Условия
......((Picked unit) is alive) равно (==) Нет
......((Picked unit) is in Reduced_armor) равно (==) Да
.....То - Действия
......Отряд - Remove (Picked unit) from Reduced_armor
......If (((Picked unit) is Герой) равно (==) Нет) then do Отряд - Remove (Picked unit) from Poisoned_units else do (Боевая единица - Set Armor of (Picked unit) to ((Armor of (Picked unit)) + 6.00))
.....Иначе - Действия
» WarCraft 3 / Как поменять модель у разрушаемого объекта?
» WarCraft 3 / Кто улучшит модели? Turtles
» WarCraft 3 / Как поменять модель у разрушаемого объекта?
Ред. 8gabriel8
» WarCraft 3 / Проверка способности
PT153:
EHP_Sequence, для Armor ведь есть значения (Default) и (Current)?
» WarCraft 3 / Проверка способности
Если кратко, то проблема во втором триггере, там ты не выбираешь всех юнитов в группе Poisoned_units, а также вместо Do nothing надо сделать установку юниту текущей брони.
» WarCraft 3 / Birth Undead v.2
Ред. 8gabriel8
» WarCraft 3 / Как поменять модель у разрушаемого объекта?
Путь к модели надо указать Doodads\Terrain\AshenTree\AshenTree.mdx, номер в конце не надо ставить. А в количестве вариаций декорации указать последний номер импортированной модели.
Но для отображения в игре нужно загрузить эти же модели по путям:
» WarCraft 3 / Способность Массовые Корни
Инструкция по установке
» WarCraft 3 / Способность Массовый Удар грома
Только сразу замечу, что способности твои имбовые, таких нигде не надо просто потому, что никакого баланса. Разве что только боссам. Для душевного приключения нужны способности с меньшим уроном и меньшим радиусом действия.
P. S. Ого! Цикл с Wait'ом работает. Надо бы разобраться, при каких условиях он не работает.
» WarCraft 3 / Способность Массовые Корни