Couple of random questions

Darius34

New Member
Reaction score
30
1. Say I want to create a function that takes another function as an argument and executes it.

JASS:
function A takes string funcname returns nothing
    call ExecuteFunc(funcname)
endfunction


JASS:
function B takes code funcname returns nothing
    local trigger t = CreateTrigger()
    call TriggerAddCondition(t, Condition(funcname))
    call TriggerEvaluate(t)
    call DestroyTrigger(t)
    set t = null
endfunction

What are the differences between these, if any? Cohadar's TT system uses the latter - is there a reason for that?

2. I read only recently that because DestroyTrigger() was unsafe (handle stack index corruption apparently), dynamic triggers (i.e. triggers created for a while with events, then later destroyed) were unsafe. I also heard there were better alternatives to using dynamic triggers. Are there, and what are they?

2.5. Oh yes, someone also said that timers were perfect substitutes for triggers, hence rendering the latter obsolete. How so? I know that some events can be simulated with periodic checks, but some can't.

Thanks in advance.
 

Larcenist

REP: Respect, Envy, Prosperity?
Reaction score
211
TriggerEvaluate() returns true or false, and Cohadar's TT destroys the instance when returning true if I recall correctly.
 

Darius34

New Member
Reaction score
30
Oh, I see. I presume there are no speed differences then (or none of consequence)?

On the topic of TT, by the way, a new trigger is used for every instance. Couldn't just one trigger be used, with the conditions constantly added/cleared?

Edit: Is it because code arrays are not allowed?
 

Darius34

New Member
Reaction score
30
Alright, I think I sort of understand how interfaces work, but I'm still not sure how to apply them to my scenario. Interfaces can't work with dynamic function names, can they? Could you elaborate?

This is actually for my Wait System, which I recently posted.

2. The DestroyTrigger bug is related to triggeractions, so only use conditions in dynamic triggers to avoid the hassle of having to remove them manually, etc. It may also not be safe to destroy a trigger in its own conditions, so avoid that too. Otherwise it should be fine.
Okay, I'll keep those precautions in mind. I also just searched for and read practically every thread on DestroyTrigger() bugs I could find at WC3C. It's apparently only safe to destroy a trigger once all threads started by it end. I guess waiting for a while (say, a minute) before destroying a trigger could serve as a workaround for those bugs.

2.5. LOL.
I phrased the question badly. :eek:

Thanks for the reply.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top