Unit Groups in jass? (probably very basic question)

GetTriggerUnit-

DogEntrepreneur
Reaction score
129
Here's the same code with comments:

JASS:

function func takes nothing returns nothing
    local group g=CreateGroup() // Create a group..
    local unit u=null // A unit variable to store the FirstOfGroup..
    loop // Loop until group is emtpy..
         set u=FirstOfGroup(g) // Local variable u set to first unit of the group..
         exitwhen u==null // If the variable u is null which means the group is emtpy, exit the loop..
         call DoSomething(u) // Do something..
         call GroupRemoveUnit(g,u) // Remove unit from group so that it ain't taken anymore..
    endloop // Endloop..
    call DestroyGroup(g) // Destroy group..
    set g=null // Null the group variable..
endfunction
 

Azlier

Old World Ghost
Reaction score
461
Nobody should use [lJASS]FirstOfGroup[/lJASS] loops. Using the filter is faster, and more readable. It's faster than [lJASS]ForGroup[/lJASS], too.

Executor's code is the best, if you take out that [lJASS]GroupClear[/lJASS].
 

Sartan

New Member
Reaction score
23
GetTrigger... ty for the information.

Azlier:
if i use Executor's trigger, can i make that fuction take up local unit c (Triggering unit aka as the caster of the spell) and use it for example, making unit c to damage filter unit with x damage?
 

Azlier

Old World Ghost
Reaction score
461
Sure, just make a global unit variable and use it to store the triggering unit.
 

Sartan

New Member
Reaction score
23
Sure, just make a global unit variable and use it to store the triggering unit.

as?:


JASS:

globals
    private group Group = CreateGroup()
    private unit g = null
endglobals

private function KillEx takes nothing returns boolean
    call "casue g to damage target"( GetFilterUnit() )
    return false
endfunction


private function KillAllEx takes nothing returns boolean
    local unit c = TriggerUnit()
    set g = c
    call GroupEnumUnitsInRect(Group, GetPlayableMapRect(), Condition( function KillEx ))
    return false
endfunction


if you meant like this, would this work as mui?
aslo wouldn't unit group leak? or malfunction due there is no unit removed after they being added to unit group? or doesn't it work that way cuz its a condition?
 

GetTriggerUnit-

DogEntrepreneur
Reaction score
129
This is MUI in a way, but the global variable isn't of course.

A [lJASS]FirstOfGroup[/lJASS]-loop, in this case, would be useful.

EDIT: Since the group is global, it wouldn't leak.
Also, [lJASS]GroupEnumUnitsInRange[/lJASS] has an auto-clear group function so it won't group un-wanted units together.

ALSO:
[lJASS]GetPlayableMapRect()[/lJASS] -> [lJASS]bj_mapInitialPlayableArea[/lJASS] because
JASS:

function GetPlayableMapRect takes nothing returns rect
    return bj_mapInitialPlayableArea
endfunction

Makes sense... ^_^
 

Sartan

New Member
Reaction score
23
This is MUI in a way, but the global variable isn't of course.

A [lJASS]FirstOfGroup[/lJASS]-loop, in this case, would be useful.

EDIT: Since the group is global, it wouldn't leak.
Also, [lJASS]GroupEnumUnitsInRange[/lJASS] has an auto-clear group function so it won't group un-wanted units together.

ALSO:
[lJASS]GetPlayableMapRect()[/lJASS] -> [lJASS]bj_mapInitialPlayableArea[/lJASS] because
JASS:

function GetPlayableMapRect takes nothing returns rect
    return bj_mapInitialPlayableArea
endfunction

Makes sense... ^_^

well that answeard some of my needs thx, but created a few new questions as well^^

what exactly is the diffrent of a "bj usage" and a non-bj
for an example:

what is the diffrent usage of this?
 

ertaboy356b

Old School Gamer
Reaction score
86
A BJ is slow since it simply re calls native functions..

Like for example, I assume this is a BJ

JASS:

function KillUnitBJ takes unit u returns nothing // Assume this is a BJ
   call KillUnit(u) 
endfunction

function Actions takes nothing returns nothing
    call KillUnitBJ(YourUnit) // Works totally the same with KillUnit, only that, it passes into a function and calls KillUnit within which is slower
endfunction
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top