Описание способности: Находясь 3 секунды вне боя, не нанося и не получая урона, вы можете войти в состояние незаметности на 1 минуту. Скорость вашего передвижения снижается на 30%, а следующий удар нанесет дополнительно 48 урона. Чтобы выйти из режима незаметности нажмите "escape". Перезарядка 7 секунд.
У данной способности 2 уровня, отличающихся друг от друга тем что второй требует 9999 маны, а первый требует нормальное количество. Как только герой наносит или получает урон способность становится 2го уровня что делает ее недоступной к использованию как будто не хватает маны, спустя же 3 секунды уровень снова понижается делая абилу доступной.
Проблема в том что постоянно находясь в бою, сразу по прошествию этих 3 секунд, на долю секунды абила становиться доступной, хотя герой находится в бою. Никак не могу придумать как это исправить. Триггерно это выглядит так:
  1. триггер
    Событие
    -периодическое событие - каждые 0.1 сек.-
    Условие
    нет
    Действие -
    -боевая единица - понизить уровень способности "незаметность" для "герой" до 1
  1. триггер
    Событие
    -боевая единица - юнит атакован
    Условие
    -Атакующий юнит=герой или Атакованный юнит=герой
    Действие
    -Триггер-выключить триггер номер 1
    -Триггер-выключить триггер номер 2
    -боевая единица - повысить уровень способности "незаметность" для "герой" до 2
    -ждать 3 секунды
    -Триггер-включить триггер номер 2
    -Триггер-включить триггер номер 1
Вот и мелькает на долю секунды абила после этих 3 секунд... ничего в голову не идет

Принятый ответ

не стоит использовать ждать
создаём для юнита целочисленную переменную time
1 триггер
 Событие 
 	периодическое событие - каждые 0.1 сек.-
 Условие 
	time > 0
Действие  
	set time = time - 1
	если time == 0 то понизить уровень способности "незаметность" для "герой" до 1
	
2 триггер
 Событие
	боевая единица - юнит атакован
 Условие
	Атакующий юнит=герой или Атакованный юнит=герой
 Действие
	set time=30
	боевая единица - повысить уровень способности "незаметность" для "герой" до 2
не забудь закрыть вопрос (для этого выбери лучший ответ)
0
1
7 лет назад
0
1 триггер
Событие
-периодическое событие - каждые 0.1 сек.-
Условие
нет
Действие -
-боевая единица - понизить уровень способности "незаметность" для "герой" до 1
2 триггер
Событие
-боевая единица - юнит атакован
Условие
-Атакующий юнит=герой или Атакованный юнит=герой
Действие
-логическая переменная = ДА
-Триггер-выключить триггер номер 1
-Триггер-выключить триггер номер 2
-боевая единица - повысить уровень способности "незаметность" для "герой" до 2
-ждать 2 секунды
-логическая переменная=НЕТ
-Триггер-включить триггер номер 2
-ждать 2 секунды
-ЕСЛИ логическая переменная = НЕТ, то включить триггер 1
вот до чего допер, теперь у триггера 2 есть 2 секунды чтобы сновать сделать переменную "ДА" и недопустить срабатывания тригера 1. ПРавда недочетом остается что при удачном стечении обстоятельств время ожидания до состояния "вне боя" может быть 2 секунды а не 4, как заявлено ,(пришлось повысить с 3х). кароче я смог сделать систему "в бою" "вне боя" только работающюю рандомно от 2 до 4 секунд от последнего удара или получения урона , У кого есть предложения(кроме джаза) пишите
0
6
7 лет назад
0
А еще можно абилку заменять пассивной заглушкой (например запретить абилку для игрока после срабатывания и разрешить другу, потом поменять). Чудеса, да и только, да?
0
22
7 лет назад
Отредактирован PROSHELDOTU
0
Не то событие
Делаешь событие Юнит - Получает урон
Условие DamageSource == твой юнит OR TriggerUnit == твой юнит THEN
Делаешь переменную типа Real, Time = 3.00
Включаешь второй триггер: Событие каждые 0.1 с Time=Time - 0.1
Условие, если Time <= 0.00 Then
Делаешь переход в состояние незаметности и т.д.
Третий триггер:
событие Игрок нажимает Escape
Условие TriggerPlayer == владелец твоего юнита AND выбран твою юнит THEN
Делаешь выход из скрытности
0
30
7 лет назад
0
Делаешь событие Юнит - Получает урон
Находиться в бою != наносить или получать урон: представь ситуацию, что ты постоянно атакуешь цель, но из раза в раз промахиваешься.
0
28
7 лет назад
Отредактирован nvc123
0
не стоит использовать ждать
создаём для юнита целочисленную переменную time
1 триггер
 Событие 
 	периодическое событие - каждые 0.1 сек.-
 Условие 
	time > 0
Действие  
	set time = time - 1
	если time == 0 то понизить уровень способности "незаметность" для "герой" до 1
	
2 триггер
 Событие
	боевая единица - юнит атакован
 Условие
	Атакующий юнит=герой или Атакованный юнит=герой
 Действие
	set time=30
	боевая единица - повысить уровень способности "незаметность" для "герой" до 2
не забудь закрыть вопрос (для этого выбери лучший ответ)
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.