Как бы хорошо не работали триггерные спеллы, это всётаки Варкрафт, а не Heroes. Стратегия в реальном времени. Некоторые триггерно настроенные скиллы работают странно когда герои используют их друг на друга. Например у меня есть скилл Ледяная Стрела, и есть скилл Электрическая Стрела. Оба сделаны на основе Storm Bolt. Первый скилл станит и отбрасывает назад, второй скилл замораживает противника на месте. Когда оба героя используют их друг на друга, получается какая то хрень. А если есть 2 мили героя, у которых 2 разных, но по мути одинаковых скилла, отбрасывающих назад, то почему то скилы то срабатывают, но никто не отбрасывается назад. Или есть скилл Телекинез, когда герой поднимает юнита в воздух, и отпускает. Тот падает на землю теряя жизни при ударе об землю, станя всех юнитов вокруг. Так вот когда на кастующего героя используют какой то скилл в то время как он кастует Телекинез, то цель которую он поднимает остаётся наверху, в воздухе...
Я нашёл решение. Во время использования триггерного спелла, юнит который этот скилл кастует становится неуязвимым (Make Unit Invulnerable). Но и этот вариант не идеален. Теперь бывает такое что например в случае с 2мя мили героями, когда оба кастуют 2 станящих и отбрасывающих скилла друг на друга, никакой скилл не срабатывает, и они продолжают драться. Или бывает такое что герой не успел кастануть Ледяную стрелу, так как его застанили, но на цели всёравно появляется бафф Ледяная Стрела, хотя и юнит не замедлен.
Мне нужен совет как максимально уменьшить число таких недоразумений в карте. Жду ваших идей.
FatalBlade, эм, насколько я понял из описания проблемы, ты делаешь заклинания триггерами, и, скорее всего, используешь глобальные переменные. В данном случае ясно, чего они у тебя не срабатывают, надо делать на джассе с локальными переменными. Хотя мб что-то другое конечно.
Quote (SirNikolas)
Так нельзя делать. В крайнем случае, второй нужно на creepstormbolt ("Бросить камень").
Эти два скилла же у разных героев, в чём проблема? :о
Когда оба героя используют их друг на друга, получается какая то хрень.
Если у обоих героев реально оба скилла, тогда да, нельзя так. А если один у одного, а другой у другого, тогда реально проблема в глобальных переменных.
А если один у одного, а другой у другого, тогда реально проблема в глобальных переменных.
Тоесть? У меня для каждого скилла свой триггер, со своими переменными, которые вызываются только в этом триггере, и нигде больше. Например: BashUnit, BashTarget ChargeCaster, ChargeCasterPoint SlamCaster, SlamPoint
Тоесть? У меня для каждого скилла свой триггер, со своими переменными, которые вызываются только в этом триггере, и нигде больше. Например: BashUnit, BashTarget ChargeCaster, ChargeCasterPoint SlamCaster, SlamPoint
Как выглядят события и условия обоих триггеров? Скорее всего и там, и там "юнит кастует тандерболт", так ведь?
Как выглядят события и условия обоих триггеров? Скорее всего и там, и там "юнит кастует тандерболт", так ведь?
Не только
1) Events Unit - A unit Begins casting an ability Conditions And - All (Conditions) are true Conditions (Ability being cast) Equal to Bash Barbarian (Unit-type of (Casting unit)) Equal to Barbarian
2) Events Unit - A unit Begins channeling an ability Conditions And - All (Conditions) are true Conditions (Ability being cast) Equal to Fatal Strike Izual (Unit-type of (Casting unit)) Equal to Izual
Сообщение отредактировал FatalBlade - Понедельник, 13 Июня 2011, 15:54:53
Хм, а ты уверен, что эти два события написаны в And'е, а не под ним? Вроде эти триггеры всё-таки должны отдельно работать. Если кинешь оба триггера в ЛС (скринами, например), мб смогу узнать, в чём дело.
В And'e. Я сделал Copy as Text так что как тут написано так у меня и стоит в триггерах. Все триггеры для абилок которые требуют цель в качестве юнита, в условиях у меня просматривают ещё и того кто кастует.
Conditions And - All (Conditions) are true Conditions (Ability being cast) Equal to Bash Barbarian (Unit-type of (Casting unit)) Equal to Barbarian
Quote (FatalBlade)
Conditions And - All (Conditions) are true Conditions (Ability being cast) Equal to Fatal Strike Izual (Unit-type of (Casting unit)) Equal to Izual
And можно (лучше) не писать. Все последовательно объявленные условия по умолчанию объединяются в And. Если не веришь, посмотри код после конвертирования.
And можно (лучше) не писать. Все последовательно объявленные условия по умолчанию объединяются в And. Если не веришь, посмотри код после конвертирования.
Не понял. Типа можно просто написать (Ability being cast) Equal to Fatal Strike Izual (Unit-type of (Casting unit)) Equal to Izual ? И оно будет расцениваться как And?
Условия: (Ability being cast) = Молот бурь (Unit-type of (Target unit of ability being cast)) = Пехотинец
Code
function Trig_Test_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'AHtb' ) ) then return false endif if ( not ( GetUnitTypeId(GetSpellTargetUnit()) == 'hfoo' ) ) then return false endif return true endfunction
Условия: And _(Ability being cast) = Молот бурь _(Unit-type of (Target unit of ability being cast)) = Пехотинец
Code
function Trig_Test_Func001C takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'AHtb' ) ) then return false endif if ( not ( GetUnitTypeId(GetSpellTargetUnit()) == 'hfoo' ) ) then return false endif return true endfunction
function Trig_Test_Conditions takes nothing returns boolean if ( not Trig_Test_Func001C() ) then return false endif return true endfunction
Как видно, во втором случае добавляется лишняя функция.