Why it never stops

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
Why does this trigger keep going and never stops
JASS:
function Trig_Bolt_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'AHtb'
endfunction

function Trig_Bolt_Actions takes nothing returns nothing
    set udg_Boolean = true
    set udg_u = GetTriggerUnit()
    set udg_t = GetSpellTargetUnit()
    call TriggerSleepAction(2)
    set udg_Boolean = false
endfunction
//===========================================================================
function InitTrig_Bolt takes nothing returns nothing
    set gg_trg_Bolt = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Bolt, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Bolt, Condition( function Trig_Bolt_Conditions ) )
    call TriggerAddAction( gg_trg_Bolt, function Trig_Bolt_Actions )
endfunction

JASS:
function Trig_Knock_Conditions takes nothing returns boolean
    return udg_Boolean == true
endfunction
     
function Trig_Knock_Actions takes nothing returns nothing
    local unit u = udg_u
    local unit t = udg_t
    local real x = GetUnitX(t)
    local real y = GetUnitY(t)
    local real f = GetUnitFacing(t) - 180.
    local real a = 3 * Cos(f * .0175)
    local real b = 3 * Sin(f * .0175)
//Now all the locals are declared time to knock back the unit
    call PauseUnit(t, true)
    call SetUnitPosition(t, x + a, y + b)
    call UnitDamageTargetBJ(u, t, 5.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    call AddSpecialEffectTarget("Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl", t, "chest")
    call PauseUnit(t, false)
// Time to get those Leaks
    call DestroyEffect( GetLastCreatedEffectBJ() )
    set u = null
    set t = null
endfunction
//===========================================================================
function InitTrig_Knock takes nothing returns nothing
    set gg_trg_Knock = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Knock, 0.03 )
    call TriggerAddAction( gg_trg_Knock, function Trig_Knock_Actions )
endfunction
 

Troll-Brain

You can change this now in User CP.
Reaction score
85
I guess you are setting "udg_Boolean" to true somewhere else

EDIT : No you don't have added any condition to your trigger gg_trg_Knock
 

Komaqtion

You can change this now in User CP.
Reaction score
469
Well, instead of 2 lines for the effect, it could be this:
JASS:
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl", t, "chest"))


And instead of using two/four variable do this:
JASS:
    local real x = GetUnitX(t) + (3 * Cos(f * .0175))
    local real y = GetUnitY(t) + (3 * Sin(f * .0175))


And move those line below:
JASS:
    local real f = GetUnitFacing(t) - 180.
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
Like This
JASS:
function Trig_Bolt_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'AHtb'
endfunction

function Trig_Bolt_Actions takes nothing returns nothing
    set udg_Boolean = true
    set udg_u = GetTriggerUnit()
    set udg_t = GetSpellTargetUnit()
    call TriggerSleepAction(2)
    set udg_Boolean = false
endfunction
//===========================================================================
function InitTrig_Bolt takes nothing returns nothing
    set gg_trg_Bolt = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Bolt, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Bolt, Condition( function Trig_Bolt_Conditions ) )
    call TriggerAddAction( gg_trg_Bolt, function Trig_Bolt_Actions )
endfunction

JASS:
function Trig_Knock_Conditions takes nothing returns boolean
    return udg_Boolean == true
endfunction
     
function Trig_Knock_Actions takes nothing returns nothing
    local unit u = udg_u
    local unit t = udg_t
    local real f = GetUnitFacing(t) - 180.
    local real x = GetUnitX(t) + (3 * Cos(f * .0175)) 
    local real y = GetUnitY(t) + (3 * Sin(f * .0175))
//Now all the locals are declared time to knock back the unit
    call PauseUnit(t, true)
    call SetUnitPosition(t, x, y)
    call UnitDamageTargetBJ(u, t, 5.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl", t, "chest"))
    call PauseUnit(t, false)
// Time to get those Leaks
    set u = null
    set t = null
endfunction
//===========================================================================
function InitTrig_Knock takes nothing returns nothing
    set gg_trg_Knock = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Knock, 0.03 )
    call TriggerAddCondition( gg_trg_Knock, Condition( function Trig_Knock_Conditions ) )
    call TriggerAddAction( gg_trg_Knock, function Trig_Knock_Actions )
endfunction
 

Romek

Super Moderator
Reaction score
963
If you're gonna code like that, you might as well stick to GUI. =|
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
Wow. Im sorry for my terrible code but cheez cut me some slak im still learning unlike you
 

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
If you're gonna code like that, you might as well stick to GUI. =|

This. Either that or start with some more basic stuff. Also those two triggers don't even seem related. You also need to provide more information, such as how do these two triggers tie together and what the purpose is for it. "Fix it" doesn't cut it. You may want to look into using structs for this though.
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
I dont know how structs work. And they are related by the one turns a boolean true and the other on runs when its true
 

Dinowc

don't expect anything, prepare for everything
Reaction score
223
structs are like arrays that allow you to store different type of data into one which you can access easily

a normal array would be:

JASS:
set data[0] = 1
set data[1] = 5
set data[2] = 12
set data[3] = 28


structs would be more like:

JASS:
set data[0] = 1
set data[1] = CreateTimer()
set data[2] = GetTriggerUnit()
set data[3] = "You get this example?"


you declare structs like this:

JASS:
struct <struct name>
      <struct's members>
endstruct


so in the previous example, you would declare it like:

JASS:
struct data
      integer int
      timer t
      unit u
      string s
endstruct


to use this in a function, you must create the struct
here's is another example:

JASS:
function func takes nothing returns nothing
       local data d = data.create() // data is the struct which we gonna use, d is just a name (it can be anything)
      
       set d.int = 1 // notice the &quot;.&quot; after the data, you use it a lot in structs <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite7" alt=":p" title="Stick Out Tongue    :p" loading="lazy" data-shortname=":p" />
       set d.t = CreateTimer()
       set d.u = GetTriggerUnit()
       set d.s = &quot;You get this example?&quot;
       
       ......
       
       call d.destroy()  // you should always destroy structs when you don&#039;t need them anymore
endfunction


hope you understand something
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
So data is the struct. What do i then do with the struct.
 

Dinowc

don't expect anything, prepare for everything
Reaction score
223
[del]data is the name

a is the struct

I made a bad example xd[/del]

What do i then do with the struct

well you could have made it like:

JASS:
globals
      integer array int
      timer array t
      unit array u
      string array s
endglobals

function func takes nothing returns nothing
      set int[0] = 1
      set t[0] = CreateTimer()
      set u[0] = GetTriggerUnit()
      set s[0] = &quot;You get this example?&quot;
endfunction


it's completely the same, but it just makes everything complicated

I don't know how to explain... just 1 thing:

struct is your friend :thup:


you would attach the struct to a timer using TimerUtils like this:

JASS:
function A takes nothing returns nothing
      local data d = data.create() 
      
      set d.int = 1
      set d.t = CreateTimer()
      set d.u = GetTriggerUnit()
      set d.s = &quot;You get this example?&quot;
       
      call SetTimerData(d.t, data)
      call StartTimer(d.t, 0.03, true, function B)
endfunction


and retrieve the struct like this:

JASS:
function B takes nothing returns nothing
       local data d = GetTimerData(GetExpiredTimer)
        
       and use it <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite1" alt=":)" title="Smile    :)" loading="lazy" data-shortname=":)" />
endfunction


that's how you do knockback in Jass, that's what I meant when I said you should use periodic timers, not events :)

I think it's harder for me to explain, than for you to learn
it's so easy when you get used to it, trust me
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
Yes but im still pretty new to jass. Is there a tut for structs
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • The Helper The Helper:
    Actually I was just playing with having some kind of mention of the food forum and recipes on the main page to test and see if it would engage some of those people to post something. It is just weird to get so much traffic and no engagement
  • The Helper The Helper:
    So what it really is me trying to implement some kind of better site navigation not change the whole theme of the site
  • Varine Varine:
    How can you tell the difference between real traffic and indexing or AI generation bots?
  • The Helper The Helper:
    The bots will show up as users online in the forum software but they do not show up in my stats tracking. I am sure there are bots in the stats but the way alot of the bots treat the site do not show up on the stats
  • Varine Varine:
    I want to build a filtration system for my 3d printer, and that shit is so much more complicated than I thought it would be
  • Varine Varine:
    Apparently ABS emits styrene particulates which can be like .2 micrometers, which idk if the VOC detectors I have can even catch that
  • Varine Varine:
    Anyway I need to get some of those sensors and two air pressure sensors installed before an after the filters, which I need to figure out how to calculate the necessary pressure for and I have yet to find anything that tells me how to actually do that, just the cfm ratings
  • Varine Varine:
    And then I have to set up an arduino board to read those sensors, which I also don't know very much about but I have a whole bunch of crash course things for that
  • Varine Varine:
    These sensors are also a lot more than I thought they would be. Like 5 to 10 each, idk why but I assumed they would be like 2 dollars
  • Varine Varine:
    Another issue I'm learning is that a lot of the air quality sensors don't work at very high ambient temperatures. I'm planning on heating this enclosure to like 60C or so, and that's the upper limit of their functionality
  • Varine Varine:
    Although I don't know if I need to actually actively heat it or just let the plate and hotend bring the ambient temp to whatever it will, but even then I need to figure out an exfiltration for hot air. I think I kind of know what to do but it's still fucking confusing
  • The Helper The Helper:
    Maybe you could find some of that information from AC tech - like how they detect freon and such
  • Varine Varine:
    That's mostly what I've been looking at
  • Varine Varine:
    I don't think I'm dealing with quite the same pressures though, at the very least its a significantly smaller system. For the time being I'm just going to put together a quick scrubby box though and hope it works good enough to not make my house toxic
  • Varine Varine:
    I mean I don't use this enough to pose any significant danger I don't think, but I would still rather not be throwing styrene all over the air
  • The Helper The Helper:
    New dessert added to recipes Southern Pecan Praline Cake https://www.thehelper.net/threads/recipe-southern-pecan-praline-cake.193555/
  • The Helper The Helper:
    Another bot invasion 493 members online most of them bots that do not show up on stats
  • Varine Varine:
    I'm looking at a solid 378 guests, but 3 members. Of which two are me and VSNES. The third is unlisted, which makes me think its a ghost.
    +1
  • The Helper The Helper:
    Some members choose invisibility mode
    +1
  • The Helper The Helper:
    I bitch about Xenforo sometimes but it really is full featured you just have to really know what you are doing to get the most out of it.
  • The Helper The Helper:
    It is just not easy to fix styles and customize but it definitely can be done
  • The Helper The Helper:
    I do know this - xenforo dropped the ball by not keeping the vbulletin reputation comments as a feature. The loss of the Reputation comments data when we switched to Xenforo really was the death knell for the site when it came to all the users that left. I know I missed it so much and I got way less interested in the site when that feature was gone and I run the site.
  • Blackveiled Blackveiled:
    People love rep, lol
    +1

      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