Before reading on I just want to point out that I do not have the CK or the game on PC and can hence not verify that any of what I write actually works. However, based on all I've read and my understanding so far, this should work or at least be a nudge in the right direction. All I can do is read code and have no idea of the layout of the CK and changing stuff there. So, to continue. To your first question the answer is very simple: States. You code would simply become:
Scriptname DashScript extends ActiveMagicEffect
State Waiting Auto ; auto tells it to start in this state
Event OnEffectStart(Actor akTarget, Actor akCaster)
GoToState("Busy") ; sets the script to busy state, but the rest of the event will continue to run
#...SOMETHING...#
GoToState("Waiting") ; we're done so we can once again be used
EndEvent
EndState
State Busy
Event OnEffectStart(Actor akTarget, Actor akCaster)
; leave this empty as we don't want it to do anything if we're in this state
EndEvent
EndState
I think you're original script would work, but the error was that you can't declare properties in script like this: "Bool Property canUse =false Auto". You should have either declared the property false in the CK, or have used a variable since you're script isn't a Const. Edit: You should be able to declare auto properties like that, sorry. Either way, states are the way to go. As for your second question, I'm not sure I completely understand what you're trying to do due to my limited understanding of the CK. But I don't think you can get way from using spells. Those are the only things (from what I've gathered) that can apply MagicEffects. But you can use AddSpell on any actor you wish to apply it to, as well as DispelSpell to remove it's effects. If if you want the LinkToDispell to be a Controller property, you should just define it as such and I think it will show up in the menus correctly: "Controller Property LinkToDispell Auto". I am assuming that you have another script named "Controller". Then just calling it as "LinkToDispell.EndCloakEffect()" should be enough. Otherwise, the way to call functions on remote scripts is through the use of CallFunction. The wiki entry is pretty self explanatory, but this shouldn't be needed in your case. I hope this has helped you somewhat, but I am limited in my situation not having access to the CK.