Добавлен DopaMine
Подскажите плз, как сделать на JASS такой таймер, чтоб он не периодически что-то выполнял, а чтоб просто обратный отчёт начинался. Чтоб перед его началом я смог написать local boolean check = true. Дальше типо стартует таймер, и когда таймер истечёт( GetExpiredTimer(), как я понял ), чтоб я смог написать local boolean = false. И чтоб это правильно работало.
у меня функции такие:
у меня функции такие:
function CheckTimer takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local integer h = GetHandleId(caster)
local timer t = GetExpiredTimer()
local location point = LoadLocationHandle(udg_hash,h,StringHash("point"))
local boolean check = LoadBoolean(udg_hash,h,StringHash("check"))
call LoadUnitHandle(udg_hash,h,StringHash("caster"))
call SaveInteger(udg_hash,h,StringHash("h"), h )
call SaveBoolean(udg_hash,h,StringHash("check"), false)
set caster = null
set point = null
set t = null
endfunction
function Attack takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local location point = GetSpellTargetLoc()
local timer t = CreateTimer() //Создаём таймер
local integer h = GetHandleId(caster)
local boolean check = true
call SaveUnitHandle(udg_hash,h,StringHash("caster"),caster)
call SaveLocationHandle(udg_hash,h,StringHash("point"),point)
call SaveBoolean(udg_hash,h,StringHash("check"),check)
call TimerStart(t, 1, false, function CheckTimer) //Стартуем таймер (fasle - так как не цикличен, если я правильно понял)
set caster = null
set point = null
set t = null
endfunction
Когда я убираю этот таймер вообще, у меня работает, как надо всё. А мне надо, чтоб у меня включался таймер на секунду и за это время работала верхняя функция.
Принятый ответ
Если это то, о чём идёт речь, то я бы делал так:если юнита бьют, он может нажать кнопку и заменит себя на бревно, исчезнет(hide), появится бревно, эффекты и звук, и через 1.5 секунды появится(unhide) в точке, которая указана, как цель заклинания. А если не бьют, то ничего не произоидёт. Так же эффект работает всего 1 секунду(то есть применять типо надо прям перед ударом)
- Создаётся триггер
событие — юнит атакован (то есть был отдан приказ атаки с этим юнитом в качестве цели и он находится в пределах дальности атаки атакующего)
условие — атакованный юнит имеет эту абилку
действия — сохранить на юнита-цель флаг "сейчас можно применить Каварими но Дзюцу" (как я понимаю, это ты и делаешь в коде в посте), затем создать таймер и запустить его на функцию, в которой этот флаг поменяется на обратное значение/удалится (больше ничего). - Создаётся ещё один триггер
событие — юнит применяет способность Каварими но Дзюцу
условие — для применяющего юнита сохранён флаг "сейчас можно применить Каварими но Дзюцу"
действия — скрыть кастера, создать таймер, сохранить на этот таймер кастера и целевые координаты применённой способности, затем запустить его с задержкой 1.5 секунды на функцию, в которой из таймера будут выгружены координаты с юнитом, юнит будет в них перемещён (кстати, перемещать ничто не мешает сразу, разницы в игре не будет, а данных меньше таскать/хранить) и раскрыть кастера.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
В пищевой цепочке оно примерно так лежит
Событие => Условие => Действие
Условие тоже является функцией (на 3 скрине самая верхняя)
Если функция-условие вернет true - значит триггер начнет вызывать функции-действия
Если вернет false - значит не будет вызывать
функций условий может быть несколько
Ща примеры подгоню
Hodor:
Ред. Clamp
событие — юнит атакован (то есть был отдан приказ атаки с этим юнитом в качестве цели и он находится в пределах дальности атаки атакующего)
условие — атакованный юнит имеет эту абилку
действия — сохранить на юнита-цель флаг "сейчас можно применить Каварими но Дзюцу" (как я понимаю, это ты и делаешь в коде в посте), затем создать таймер и запустить его на функцию, в которой этот флаг поменяется на обратное значение/удалится (больше ничего).
событие — юнит применяет способность Каварими но Дзюцу
условие — для применяющего юнита сохранён флаг "сейчас можно применить Каварими но Дзюцу"
действия — скрыть кастера, создать таймер, сохранить на этот таймер кастера и целевые координаты применённой способности, затем запустить его с задержкой 1.5 секунды на функцию, в которой из таймера будут выгружены координаты с юнитом, юнит будет в них перемещён (кстати, перемещать ничто не мешает сразу, разницы в игре не будет, а данных меньше таскать/хранить) и раскрыть кастера.
Ред. Hodor
Так же записываются условия и действия
Срабатывает событие
Вызывается первая функция-условие Condition1, она возвращает true - значит всё нормально
так же у Condition2
text1
text2
Срабатывает событие
Вызывается первая функция-условие Condition1, она возвращает true - значит всё нормально
а вот Condition2 возвращает false - значит действия триггера не будут выполняться и на экран ничего не выведется