TriggerEvaluate(trig)
Что делает эта функция? И когда возвращает true, а когда false?

Лучший ответ:
» пояснения
Эта функция запускает условие триггера (точнее функцию, которая приписана в регистре) и эта функция может возвращать boolean. если TriggerEvaluate возвращает истину, значит условие триггера истино.
» пример для понимания
function ConditionalTriggerExecute takes trigger trig returns nothing
    if TriggerEvaluate(trig) then //если условие истино
        call TriggerExecute(trig) //то запускаем действие
    endif
endfunction
» тонкости jass
Хитрецы используют TriggerEvaluate в других способах. Например, урезают действие (action), а сами действия прописывают в условиях. Эта функция то же самое что и TriggerExecute, только здесь пишут в конце return boolean (условие). То есть вместо TriggerExecute используют TriggerEvaluate, а на конце прописывают return false.
function CCC takes nothing returns boolean
...... //действия
return false //по идее если триггер возвращает истину, то запускает действие (action). Но TriggerEvaluate не запускает действие, просто запускает функцию (проверяет условие) и возвращает boolean
endfunction

function DD takes nothing returns nothing
call TriggerEvaluate(trig) //вызываете условие триггера
endfunction
Часто условие может не срабатывать (возвращает ложь), возможно (мое предположение, так как не изучал TriggerEvaluate подробно, все особенности, как сработает ли условие с варкрафтовскими переменными) потому что потому что стоят варкрафтоские переменные (точно не знаю, проверь), ибо переменные пусты или заполнены другим чем-то. По идее переменные эти срабатывают по событию, а значит запускать TriggerEvaluate в момент срабатывания события



Просмотров: 100

Steal nerves #1 - 1 неделю назад (отредактировано ) 1

» пояснения
Эта функция запускает условие триггера (точнее функцию, которая приписана в регистре) и эта функция может возвращать boolean. если TriggerEvaluate возвращает истину, значит условие триггера истино.
» пример для понимания
function ConditionalTriggerExecute takes trigger trig returns nothing
    if TriggerEvaluate(trig) then //если условие истино
        call TriggerExecute(trig) //то запускаем действие
    endif
endfunction
» тонкости jass
Хитрецы используют TriggerEvaluate в других способах. Например, урезают действие (action), а сами действия прописывают в условиях. Эта функция то же самое что и TriggerExecute, только здесь пишут в конце return boolean (условие). То есть вместо TriggerExecute используют TriggerEvaluate, а на конце прописывают return false.
function CCC takes nothing returns boolean
...... //действия
return false //по идее если триггер возвращает истину, то запускает действие (action). Но TriggerEvaluate не запускает действие, просто запускает функцию (проверяет условие) и возвращает boolean
endfunction

function DD takes nothing returns nothing
call TriggerEvaluate(trig) //вызываете условие триггера
endfunction
Часто условие может не срабатывать (возвращает ложь), возможно (мое предположение, так как не изучал TriggerEvaluate подробно, все особенности, как сработает ли условие с варкрафтовскими переменными) потому что потому что стоят варкрафтоские переменные (точно не знаю, проверь), ибо переменные пусты или заполнены другим чем-то. По идее переменные эти срабатывают по событию, а значит запускать TriggerEvaluate в момент срабатывания события
ScopteRectuS #2 - 1 неделю назад 0
Steal nerves, спасибо за подробный ответ! )