Warcraft III resources & community, 2003–2006 · archived

passing local variable in JASS? Channeled effects with JASS?

3 posts
#1

passing local variable in JASS? Channeled effects with JASS?

I'm looking to make timed effects for channeled spells in JASS. Namely, a channeled dummy spell is activated or being channeled, which will fulfill a condition. The condition, when true, will cause something to happen every x seconds, until the spell is no longer being channelled, at which point the condition is false. I could do this with three regular triggers, but that would require a global variable.

So, how could this be done? And can local variable be passed from function to function in JASS?
#2
That's pretty simple...

The first thing is to use a local trigger that takes place when the caster stops casting any spell (which will obviously be our channeling spell).

local trigger t = CreateTrigger()
call TriggerRegisterUnitEvent(t, GetTriggerUnit(), EVENT_UNIT_SPELL_ENDCAST)

And now, you keep the trigger going until the unit stops casting the spell, like this:

loop
exitwhen GetTriggerEvalCount(t)>0
call TriggerSleepAction(0.10)
endloop

GetTriggerEvalCount(t) counts how many times was trigger t fired. This function ignores the fact that the conditions of the trigger are fulfilled or not, when the event takes place. But that's not a problem in this case.

As for the effect, I would do it inside the loop above (if condition is true, make the dummy do something).

~Daelin
#3

Gracias

Ah, thanks