JASS:
scope CampLeave initializer init
globals
private hashtable Data = InitHashtable()
private trigger Trig = CreateTrigger()
private integer Number = 0
private rect array Area
endglobals
private function Set takes rect Leave returns nothing
local region r = CreateRegion()
set Number = Number + 1
set Area[Number] = Leave
call RegionAddRect(r, Leave)
call TriggerRegisterLeaveRegion(Trig, r, null)
call SaveInteger(Data, 0, GetHandleId(r), Number)
call RemoveRect(Leave)
set r = null
endfunction
private function Setting takes nothing returns nothing
call Set(gg_rct_Test1)
call Set(gg_rct_Test2)
call Set(gg_rct_Test3)
call DestroyTrigger(GetTriggeringTrigger())
endfunction
function GroupFilter takes nothing returns boolean
return IsUnitType(GetEnumUnit(),UNIT_TYPE_HERO) == true and GetUnitState(GetEnumUnit(), UNIT_STATE_LIFE) > 0.405
endfunction
private function test takes nothing returns nothing
local unit u
local group g = CreateGroup()
local integer n = LoadInteger(Data, 0, GetHandleId(GetTriggeringRegion()))
call DisplayTextToForce( GetPlayersAll(), "test" )
call GroupEnumUnitsInRect(g, Area[n], Condition(function GroupFilter))
call DisplayTextToForce( GetPlayersAll(), I2S(CountUnitsInGroup(g)) )
loop
call DisplayTextToForce( GetPlayersAll(), "grouploop1" )
set u = FirstOfGroup(g)
exitwhen u == null
call DisplayTextToForce( GetPlayersAll(), "grouploop2" )
call GroupRemoveUnit(g,u)
endloop
call DestroyGroup(g)
set g = null
endfunction
private function CampLeave takes nothing returns nothing
local timer time = CreateTimer()
call DisplayTextToForce( GetPlayersAll(), "func" )
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true and IsUnitEnemy(GetTriggerUnit(), Player(0)) == false then
call DisplayTextToForce( GetPlayersAll(), "if" )
call TimerStart(time, 3.0, false, function test)
endif
set time = null
endfunction
private function init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterTimerEvent(t, 0.01, false)
call TriggerAddAction(t, function Setting)
call TriggerAddAction(Trig, function CampLeave)
set t = null
endfunction
endscope
I am sorry I don't know how to write code.
I am trying to make some triggers with jass.
I want it to be worked like this:
when a hero that is ally of player1 gets out of Test1, Test2, Test3,
I want to do some work on alive heroes left in the area where a hero left.
But somehow I never get any heroes in group g.
and is this leak safe?
I am using DisplayTextToForce to checking where the problem is.
And one more question, what is the difference between Filter and Condition?
Thanks
Last edited: