Can you call GroupEnumUnitsInRange inside a periodic timer function?

romanandre

New Member
Reaction score
2
I'm been trying to make a periodic damage inside a timer function like this:

JASS:
globals
    constant attacktype AT = ATTACK_TYPE_NORMAL;
    constant damagetype DT = DAMAGE_TYPE_NORMAL;
    constant weapontype WT = WEAPON_TYPE_WHOKNOWS;
    
    private unit u
    private group grp
    endglobals
    
    
    struct data
        unit u;
        unit t;
        real x;
        real y;
    endstruct
    
    function Targets takes unit target returns boolean
        return (GetWidgetLife(target) > 0.405) and not 
        IsUnitType(target, UNIT_TYPE_STRUCTURE) and not 
        IsUnitType(target, UNIT_TYPE_FLYING) and not 
        IsUnitType(target, UNIT_TYPE_MAGIC_IMMUNE) and not 
        IsUnitType(target, UNIT_TYPE_MECHANICAL) and
        IsUnitEnemy(target, GetOwningPlayer(u))
    endfunction
    function Pick takes nothing returns boolean
        if (Targets(GetFilterUnit()))       
            UnitDamageTarget(u, GetFilterUnit(), 150, true, true, AT, DT, WT);
        endif
        return false;
    }
    function Timer takes nothing returns nothing
        timer t = GetExpiredTimer();
        data d = GetTimerData(t);
        GroupEnumUnitsInRange(grp, 0, 0, 10000, Filter(function Pick));
        BJDebugMsg("working");
    endfunction    

    function onSpellCast takes nothing returns nothing
        timer t = NewTimer();
        data d = data.create();
        d.u = GetTriggerUnit();
        d.t = GetSpellTargetUnit();
        d.x = GetUnitX(d.u);
        d.y = GetUnitY(d.u);
        SetTimerData(t, d);
        u = d.u;
        BJDebugMsg("working");
        TimerStart(t, 1, true, function Timer);
    endfunction

  
    function onInit takes nothing returns nothing
         RegisterSpellEffectEvent('A004', function onSpellCast);
    endfunction


there is probaly sintax errors , but can we use GroupEnumUnitsInRange inside a timer function?
 

Dirac

22710180
Reaction score
147
Yes of course.
Your code looks rambles between zinc and vJass lol fix that.
also it's better if you use FirstOfGroup loops to pick every unit inside a group instead of having a filter function for it
 

Bribe

vJass errors are legion
Reaction score
67
Better in that:

Doesn't require a second function
Faster to write (less verbosity)
Faster execution in-game
Can use locals from the key function avoiding the need for temp globals
More fun!
 
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