Why it never stops

Gtam

Lerning how to write and read!! Yeah.
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.
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
 

Gtam

Lerning how to write and read!! Yeah.
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
Staff member
If you're gonna code like that, you might as well stick to GUI. =|
 

Gtam

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

Frozenhelfir

set Gwypaas = Guhveepaws
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.
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
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" 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't need them anymore
endfunction


hope you understand something
 

Dinowc

don't expect anything, prepare for everything
[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    :)" 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.
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.
  • C Cherry.Grove:
    So what's the whole reforged situation? Do we have to run the classic version bootleg now?
  • C Cherry.Grove:
    My boyfriend is super into Bethesda modding so I'm probably going to join him in that for a bit, then move on to making mobile/browser games.
  • C Cherry.Grove:
    I mostly just want to look at my old projects because I know I posted uploads on here somewhere.
  • C Cherry.Grove:
    My one game was basically Among Us but you sabotaged an entire medieval city simulated drastically inefficiently with dynamic NPCs :S
  • C Cherry.Grove:
    of course I never finished it x D
  • jonas jonas:
    xD
  • jonas jonas:
    I think you can still run the original game, just there's a chance your map won't work with the newer patches
  • jonas jonas:
    what development framework have you been looking at for mobile development?
  • jonas jonas:
    I'm currently creating (as a hobby) a space invaders like game for mobile using Xamarin, after starting a few larger projects that I also may not have finished :rolleyes::p
  • The Helper The Helper:
    Awesome! you should look at the Atari VCS platform it does not have a huge user base but the one it has is super active at around 11k and they have no games in there store
  • The Helper The Helper:
    basically it is linux
  • The Helper The Helper:
    OMG it is BanLord as Blackveiled on the forum
  • The Helper The Helper:
    what is up buddy
  • jonas jonas:
    thanks for the tip, that sounds cool. Never heard about the VCS before but seems like it should be a good match
  • tom_mai78101 tom_mai78101:
    The winter vacation left a toll on me. I missed staying up late and sleeping in late.
  • C Cherry.Grove:
    i haven't looked into it yet
  • C Cherry.Grove:
    If I could use something Python compatible it would save me some learning
  • C Cherry.Grove:
    But Unity might be easiest
  • C Cherry.Grove:
    looking at old posts here makes me happy. Makes me be all like "wow I was pretty smart in 2009"
  • C Cherry.Grove:
    mostly failing at life through adulthood really demotivated me for a while
  • C Cherry.Grove:
    ....what I don't get is why the fuck they would force us to permanently convert to a version of the game everyone fucking hated : \
  • C Cherry.Grove:
    Raid Shadow Legends texture pack smh
  • jonas jonas:
    Most people fail at life throughout their adulthood. Sometimes we get to learn from it. Usually it just feels like crap.
  • The Helper The Helper:
    What does not kill you makes you stronger is what they say

    Members online

    No members online now.

    Affiliates

    Hive Workshop NUON Dome
    Top