Help with custom event

dudeim

New Member
Reaction score
22
Hey,

I'm making a system which triggers a custom event.
Now I want something like when the event triggers you can acces the struct data of the system in the trigger that is triggered by the event.


JASS:
library x

struct x
real x
endstruct

endlibrary

function a takes ..
//here I should be able to use something like x.x = 15.0
endfunction

function triggerevent takes ...
local trigger t = CreateTrigger()
call triggermyevent(t)
call addaction (t, function a)
endfunction


How can I do this?

Thanks!
 

tooltiperror

Super Moderator
Reaction score
231
Ugh, don't use Jesus4Lyf's Event.

I'm all the way with Event by Nestharus. It uses [LJASS]TriggerRegisterVariableEvent[/LJASS] which is superior in speed.
 

dudeim

New Member
Reaction score
22
Hmm read that Event by Nestharus can't unregister event's and that can be usefull in some situations so I think I'll just J4L's Event.
Btw I read the info on Event, but how can I attach a struct to the event and then retrieve it in the trigger which is ran when the event fires? What do I use? Couldn't really figure it out:p
 

Solmyr

Ultra Cool Member
Reaction score
30
If you're talking about Jesus4Lyf's Event, then apparently, you didn't read the documentation thoroughly. Here's what you missed:
JASS:
//============================================================
    
    // For reading this far, you can learn one thing more.
    // Unlike normal Warcraft III events, you can attach to Event registries.
    // 
    // Event Registries are registrations of one trigger on one event.
    // These cannot be created or destroyed, just attached to.
    //
    // It is VERY efficient for loading and saving data.
    // 
    //  Functions:
    //         - set eventReg.data = someStruct --> Store data.
    //         - eventReg.data                  --> Retreive data.
    //         - Event.getTriggeringEventReg()  --> Get the triggering EventReg.
    //         - eventReg.destroy()             --> Undo this registration.

//============================================================
 

Laiev

Hey Listen!!
Reaction score
188
or you can use the API

JASS:
    function CreateEvent takes nothing returns Event
    function DestroyEvent takes Event whichEvent returns nothing
    function FireEvent takes Event whichEvent returns nothing
    function TriggerRegisterEvent takes trigger whichTrigger, Event whichEvent returns EventReg
    
    // And for EventRegs...
    function SetEventRegData takes EventReg whichEventReg, integer data returns nothing
    function GetEventRegData takes EventReg whichEventReg returns integer
    function GetTriggeringEventReg takes nothing returns integer
 

dudeim

New Member
Reaction score
22
so in the lib I do something like

set eventReg.data = mystructvar

and then in the trigger that launches when the event fires I use

set mystruct mystructvar = eventReg.data
or am I thinking the wrong way?
 

Nestharus

o-o
Reaction score
84
Actually, the Dynamic version of Event (only suggested for map makers) does have the exact same features as that of j4l, but is magically slightly faster =). The speed is a result of shorter variable names and a slightly better loop. Furthermore, if you pass in functions rather than triggers, it'll be much faster and allow you to still unregister those functions from the event.

But really, your call ; ).
 

dudeim

New Member
Reaction score
22
"Furthermore, if you pass in functions rather than triggers, it'll be much faster and allow you to still unregister those functions from the event."
Ok that sentence I did not get:p what do you mean by passing functions rather than triggers?
Edit: ok I got stuck at one point

I use this to attach the struct data to the event:

JASS:
set t.i = 5 //just a simple integer var in the struct that I set to 5 for testing purpose
call SetEventRegData(t.er,t) //t.er is the EventReg in the struct and t is the structs var
call OnEvent.fire()

Now this is what I use to obtain the struct in the trigger that goes when the event fires
JASS:
scope test initializer tes

private function go takes nothing returns nothing
local TestStruct t = GetEventRegData(GetTriggeringEventReg()) //I think this line is wrong cus even when I do "integer i = 57" in the struct var list it says 0
    call BJDebugMsg("The integer is [" + I2S(t.i) + "]" //this displays 0
endfunction

private function tes takes nothing returns nothing
local trigger t = CreateTrigger()
    call TestStruct.registerEvent(t) //teststruct is the struct I used for testing how this all works, registerEvent(t) simply registers the event to this trigger
    call TriggerAddAction(t,function go)
endfunction
endscope


What am I doing wrong?
 

dudeim

New Member
Reaction score
22
"Furthermore, if you pass in functions rather than triggers, it'll be much faster and allow you to still unregister those functions from the event."
Ok that sentence I did not get:p what do you mean by passing functions rather than triggers?
Edit: ok I got stuck at one point

I use this to attach the struct data to the event:

JASS:
set t.i = 5 //just a simple integer var in the struct that I set to 5 for testing purpose
call SetEventRegData(t.er,t) //t.er is the EventReg in the struct and t is the structs var
call OnEvent.fire()

Now this is what I use to obtain the struct in the trigger that goes when the event fires
JASS:
scope test initializer tes

private function go takes nothing returns nothing
local TestStruct t = GetEventRegData(GetTriggeringEventReg()) //I think this line is wrong cus even when I do "integer i = 57" in the struct var list it says 0
    call BJDebugMsg("The integer is [" + I2S(t.i) + "]" //this displays 0
endfunction

private function tes takes nothing returns nothing
local trigger t = CreateTrigger()
    call TestStruct.registerEvent(t) //teststruct is the struct I used for testing how this all works, registerEvent(t) simply registers the event to this trigger
    call TriggerAddAction(t,function go)
endfunction
endscope


What am I doing wrong?

Comon can't someone help me with this?
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top