Reoccurring X Movement Fails

WolfieeifloW

WEHZ Helper
Reaction score
372
I thought this was quite a simple thing, but it's not working.
The unit's simply do not move at all.
Everything is running fine, and both BJ's show up with 'ran' increasing by 1 every time like it should.
JASS:
scope StackerAttach initializer init

    globals
        private unit s1 = gg_unit_h001_0001
        private unit s2 = gg_unit_h001_0002
        private timer t = CreateTimer()
        private integer ran = 0
    endglobals
    
    private function Callback takes nothing returns nothing
        call BJDebugMsg("Ran " + I2S(ran) + " times")
        call SetUnitX(s1, GetUnitX(s1) + 50.)
        call SetUnitX(s2, GetUnitX(s2) + 50.)
        set ran = ran + 1
    endfunction
    
    private function Conditions takes nothing returns boolean
        call BJDebugMsg("Run")
        call TimerStart(t, 2., true, function Callback)
        return false
    endfunction

    private function init takes nothing returns nothing
        local trigger trig = CreateTrigger()
        
        call TriggerRegisterTimerEvent(trig, 3, false)
        call TriggerAddCondition(trig, Condition(function Conditions))
        set trig = null
    endfunction
    
endscope

Any reason the units aren't moving?
 

Solmyr

Ultra Cool Member
Reaction score
30
Make sure your units have more than 0.0 base speed by checking their Movement - Speed Base values in the Object Editor.
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Hmm..
Gave them a 1 speed base, but they still don't move.

I thought setting X/Y's didn't require movement?
 

Solmyr

Ultra Cool Member
Reaction score
30
I thought setting X/Y's didn't require movement?
It's a hardcoded bug. The unit is actually moved, but its model isn't updated properly. This happens only when [ljass]SetUnitX()[/ljass] and [ljass]SetUnitY()[/ljass] are used on a unit with 0.0 base speed.

Hmm..
Gave them a 1 speed base, but they still don't move.
Try using [ljass]SetUnitPosition()[/ljass] instead. It's much slower, but if that doesn't work either, then the issue is somewhere else.
 

WolfieeifloW

WEHZ Helper
Reaction score
372
[ljass]SetUnitPosition()[/ljass] doesn't work either.
JASS:
scope StackerAttach initializer init

    globals
        private unit s1 = gg_unit_h001_0001
        private unit s2 = gg_unit_h001_0002
        private timer t = CreateTimer()
        private integer ran = 0
    endglobals
    
    private function Callback takes nothing returns nothing
        call BJDebugMsg("Ran " + I2S(ran) + " times")
        call SetUnitPosition(s1, GetUnitX(s1) + 50, GetUnitY(s1))
        call SetUnitPosition(s2, GetUnitX(s2) + 50, GetUnitY(s2))
        set ran = ran + 1
    endfunction
    
    private function Conditions takes nothing returns boolean
        call BJDebugMsg("Run")
        call TimerStart(t, 2., true, function Callback)
        return false
    endfunction

    private function init takes nothing returns nothing
        local trigger trig = CreateTrigger()
        
        call TriggerRegisterTimerEvent(trig, 3, false)
        call TriggerAddCondition(trig, Condition(function Conditions))
        set trig = null
    endfunction
    
endscope
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Hmm..
It's not finding the units.
JASS:
scope StackerAttach initializer init

    globals
        private unit s1 = gg_unit_h001_0001
        private unit s2 = gg_unit_h001_0002
        private timer t = CreateTimer()
        private integer ran = 0
    endglobals
    
    private function Callback takes nothing returns nothing
        call BJDebugMsg("Ran " + I2S(ran) + " times")
        if (s1 == null) then// or s2 == null) then
            call BJDebugMsg("s1 not found")
        endif
        if (s2 == null) then
            call BJDebugMsg("s2 not found")
        endif
        call SetUnitX(s1, GetUnitX(s1) + 50.)
        call SetUnitX(s2, GetUnitX(s2) + 50.)
        set ran = ran + 1
    endfunction
    
    private function Conditions takes nothing returns boolean
        call BJDebugMsg("Run")
        call TimerStart(t, 2., true, function Callback)
        return false
    endfunction

    private function init takes nothing returns nothing
        local trigger trig = CreateTrigger()
        
        call TriggerRegisterTimerEvent(trig, 3, false)
        call TriggerAddCondition(trig, Condition(function Conditions))
        set trig = null
    endfunction
    
endscope

Both s1 and s2 are not found.
 

Laiev

Hey Listen!!
Reaction score
188
this will work :p
and will work the same way as rects
JASS:

scope StackerAttach initializer init

    globals
        private unit s1
        private unit s2
        private timer t = CreateTimer()
        private integer ran = 0
    endglobals
    
    private function Callback takes nothing returns nothing
        call BJDebugMsg("Ran " + I2S(ran) + " times")
        if (s1 == null) then// or s2 == null) then
            call BJDebugMsg("s1 not found")
        endif
        if (s2 == null) then
            call BJDebugMsg("s2 not found")
        endif
        call SetUnitX(s1, GetUnitX(s1) + 50.)
        call SetUnitX(s2, GetUnitX(s2) + 50.)
        set ran = ran + 1
    endfunction
    
    private function Conditions takes nothing returns boolean
        call BJDebugMsg("Run")
        call TimerStart(t, 2., true, function Callback)
        return false
    endfunction

    private function init takes nothing returns nothing
        local trigger trig = CreateTrigger()
        
        call TriggerRegisterTimerEvent(trig, 3, false)
        call TriggerAddCondition(trig, Condition(function Conditions))
        set trig = null
        set s1 = gg_unit_h001_0001 //because preplaced units compile after triggers <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 s2 = gg_unit_h001_0002
    endfunction
    
endscope
 

tooltiperror

Super Moderator
Reaction score
231
JASS:
//because preplaced units compile after triggers <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" />

Genius.

[Init Globals -> config -> vJASS Main -> main] I think.
 

Solmyr

Ultra Cool Member
Reaction score
30
because preplaced units compile after triggers
I thought as much.

And a side note, you don't need that global timer. Simply replace [ljass]call TimerStart(t, 2.0, true, function Callback)[/ljass] with [ljass]call TimerStart(CreateTimer(), 2.0, true, function Callback)[/ljass] and remove the global timer.
 
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