| 03-25-2007, 01:23 PM | #1 |
Now i know this is still partly GUI converted JASS but when i run the map with grimoire loaded, i get these debug errors. Total groups created: xxx Total undestroyed groups: xxx GetUnitsInRangeOfLocMatching with xxx active groups <init> with 6 active groups InitGlobals with 5 active groups. Now, i dont see how the hell its leaking but it is. I can watch the memory usage climb. Am i destroying the groups correctly? Help! JASS:function Trig_Untitled_Trigger_001_Func001Func001Func003002003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func003002003001002 takes nothing returns boolean return ( IsUnitAliveBJ(GetFilterUnit()) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func003002003001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func003002003001001(), Trig_Untitled_Trigger_001_Func001Func001Func003002003001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func003002003002 takes nothing returns boolean return ( IsPlayerAlly(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(udg_Control_Points[GetForLoopIndexA()])) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func003002003 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func003002003001(), Trig_Untitled_Trigger_001_Func001Func001Func003002003002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func004002003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func004002003001002 takes nothing returns boolean return ( IsUnitAliveBJ(GetFilterUnit()) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func004002003001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func004002003001001(), Trig_Untitled_Trigger_001_Func001Func001Func004002003001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func004002003002 takes nothing returns boolean return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(udg_Control_Points[GetForLoopIndexA()])) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func004002003 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func004002003001(), Trig_Untitled_Trigger_001_Func001Func001Func004002003002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func005002003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func005002003001002 takes nothing returns boolean return ( IsUnitAliveBJ(GetFilterUnit()) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func005002003001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func005002003001001(), Trig_Untitled_Trigger_001_Func001Func001Func005002003001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func005002003002 takes nothing returns boolean return ( IsPlayerInForce(GetOwningPlayer(GetFilterUnit()), udg_Players_Team[1]) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func005002003 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func005002003001(), Trig_Untitled_Trigger_001_Func001Func001Func005002003002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func006002003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func006002003001002 takes nothing returns boolean return ( IsUnitAliveBJ(GetFilterUnit()) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func006002003001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func006002003001001(), Trig_Untitled_Trigger_001_Func001Func001Func006002003001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func006002003002 takes nothing returns boolean return ( IsPlayerInForce(GetOwningPlayer(GetFilterUnit()), udg_Players_Team[2]) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func006002003 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func006002003001(), Trig_Untitled_Trigger_001_Func001Func001Func006002003002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003001002 takes nothing returns boolean return ( IsUnitAliveBJ(GetFilterUnit()) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003001001(), Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003002 takes nothing returns boolean return ( IsPlayerInForce(GetOwningPlayer(GetFilterUnit()), udg_Players_Team[2]) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003001(), Trig_Untitled_Trigger_001_Func001Func001Func007Func001002003002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003001002 takes nothing returns boolean return ( IsUnitAliveBJ(GetFilterUnit()) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003001001(), Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003002 takes nothing returns boolean return ( IsPlayerInForce(GetOwningPlayer(GetFilterUnit()), udg_Players_Team[1]) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003001(), Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001002001 takes nothing returns boolean return ( IsUnitAliveBJ(GetFilterUnit()) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001002002 takes nothing returns boolean return ( GetOwningPlayer(GetFilterUnit()) != Player(PLAYER_NEUTRAL_PASSIVE) ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001002 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001002001(), Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001002002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001001(), Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001002 takes nothing returns boolean return ( IsUnitAlly(GetFilterUnit(), GetOwningPlayer(udg_Control_Points[GetForLoopIndexA()])) == true ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001001(), Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003002001 takes nothing returns boolean return ( GetUnitTypeId(GetFilterUnit()) == 'h001' ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003002002 takes nothing returns boolean return ( GetUnitTypeId(GetFilterUnit()) == 'h000' ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003002 takes nothing returns boolean return GetBooleanOr( Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003002001(), Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003002002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003 takes nothing returns boolean return GetBooleanAnd( Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003001(), Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003002() ) endfunction function Trig_Untitled_Trigger_001_Func001Func002Func001Func004Func001Func006A takes nothing returns nothing call SetUnitOwner( GetEnumUnit(), ConvertedPlayer(( 10 + udg_Team_Of_Player[GetConvertedPlayerId(GetOwningPlayer(GroupPickRandomUnit(udg_Temp_Unit_Group_2)))] )), true ) endfunction function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing local integer I = 1 local integer TIME = 10 local group G1 local group G2 local group G3 = null local location L = null loop exitwhen I > 6 set L = GetUnitLoc(udg_Control_Points[i]) if ( GetOwningPlayer(udg_Control_Points[i]) == Player(PLAYER_NEUTRAL_PASSIVE) ) then set TIME = 15 set G1 = GetUnitsInRangeOfLocMatching(500.00, L, Condition(function Trig_Untitled_Trigger_001_Func001Func001Func005002003)) set G2 = GetUnitsInRangeOfLocMatching(500.00, L, Condition(function Trig_Untitled_Trigger_001_Func001Func001Func006002003)) if ( CountUnitsInGroup(G1) > CountUnitsInGroup(G2) ) then call DestroyGroup(G1) set G1 = G2 call DestroyGroup(G2) set G2 = GetUnitsInRangeOfLocMatching(300.00, L, Condition(function Trig_Untitled_Trigger_001_Func001Func001Func007Func002002003)) endif else set G1 = GetUnitsInRangeOfLocMatching(500.00, L, Condition(function Trig_Untitled_Trigger_001_Func001Func001Func003002003)) set G2 = GetUnitsInRangeOfLocMatching(500.00, L, Condition(function Trig_Untitled_Trigger_001_Func001Func001Func004002003)) endif if ( CountUnitsInGroup(G1) > CountUnitsInGroup(G2) ) then if ( GetUnitUserData(udg_Control_Points[i]) > 0 ) then call SetUnitUserData( udg_Control_Points[i], ( GetUnitUserData(udg_Control_Points[i]) - 1 ) ) endif else if ( ( CountUnitsInGroup(G2) > CountUnitsInGroup(G1) ) or ( ( GetOwningPlayer(GetFilterUnit()) == Player(PLAYER_NEUTRAL_PASSIVE) ) and ( CountUnitsInGroup(G1) > CountUnitsInGroup(G2) ) ) ) then set G3 = GetUnitsInRangeOfLocMatching(500.00, L, Condition(function Trig_Untitled_Trigger_001_Func001Func002Func001Func003002003)) if ( CountUnitsInGroup(G3) == 0 ) then if ( GetUnitUserData(udg_Control_Points[i]) < TIME ) then call CreateTextTagUnitBJ( ( "Control in: |c00ffff00" + ( I2S(( TIME - GetUnitUserData(udg_Control_Points[i]) )) + "|r Seconds" ) ), udg_Control_Points[i], 50.00, 10, 100, 100, 100, 0 ) call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false ) call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 1.00 ) call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 0.25 ) if ( GetUnitUserData(udg_Control_Points[i]) == 0 ) then call PlaySoundBJ( gg_snd_AirRaid_Siren1 ) call DisplayTextToForce( GetPlayersEnemies(GetOwningPlayer(GroupPickRandomUnit(G1))), "|cffff0000An enemy unit is trying to take over a control point.|r" ) call DisplayTextToForce( GetPlayersAllies(GetOwningPlayer(GroupPickRandomUnit(G2))), "|cff00ff00An allied player is trying to take over a control point.|r" ) call PingMinimapLocForForceEx( udg_Players, L, 0.80, bj_MINIMAPPINGSTYLE_SIMPLE, 64.00, 64.00, 64.00 ) endif call SetUnitUserData( udg_Control_Points[i], ( GetUnitUserData(udg_Control_Points[i]) + 1 ) ) else call SetUnitOwner( udg_Control_Points[i], ConvertedPlayer(( 10 + udg_Team_Of_Player[GetConvertedPlayerId(GetOwningPlayer(GroupPickRandomUnit(G2)))] )), true ) call DisplayTextToForce( GetPlayersEnemies(GetOwningPlayer(GroupPickRandomUnit(G1))), "|cffff0000An enemy unit has taken over a control point.|r" ) call DisplayTextToForce( GetPlayersAllies(GetOwningPlayer(GroupPickRandomUnit(G2))), "|cff00ff00An allied player has taken over a control point.|r" ) set udg_Control_Points_Captures[GetConvertedPlayerId(GetOwningPlayer(GroupPickRandomUnit(G2)))] = ( udg_Control_Points_Captures[GetConvertedPlayerId(GetOwningPlayer(GroupPickRandomUnit(G2)))] + 1 ) call SetUnitUserData( udg_Control_Points[i], 0 ) call ForGroupBJ( G3, function Trig_Untitled_Trigger_001_Func001Func002Func001Func004Func001Func006A ) call PingMinimapLocForForceEx( udg_Players, L, 0.80, bj_MINIMAPPINGSTYLE_SIMPLE, 64.00, 64.00, 64.00 ) call AddSpecialEffectLocBJ( L, "Abilities\\Spells\\Other\\Charm\\CharmTarget.mdl" ) call DestroyEffectBJ( GetLastCreatedEffectBJ() ) endif endif call DestroyGroup(G3) else if ( ( CountUnitsInGroup(G1) == 0 ) and ( CountUnitsInGroup(G2) == 0 ) and ( GetUnitUserData(udg_Control_Points[i]) > 0 ) ) then call SetUnitUserData( udg_Control_Points[i], ( GetUnitUserData(udg_Control_Points[i]) - 1 ) ) endif endif endif call DestroyGroup(G1) call DestroyGroup(G2) call RemoveLocation(L) set I = I + 1 endloop // call TriggerExecute( gg_trg_Base_Capture ) if(udg_Show_Tips == TRUE) then call TriggerExecute( gg_trg_Random_Tips ) endif call TriggerExecute( gg_trg_Player_Income_and_Upgrade ) call TriggerExecute( gg_trg_Clock ) set L = null set G1 = null set G2 = null set G3 = null endfunction //=========================================================================== function InitTrig_Untitled_Trigger_001 takes nothing returns nothing set gg_trg_Untitled_Trigger_001 = CreateTrigger( ) call TriggerRegisterTimerEventPeriodic( gg_trg_Untitled_Trigger_001, 1.00 ) call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions ) endfunction |
| 03-25-2007, 01:28 PM | #2 | |
Quote:
That was the only obvious thing I saw in a quick look-through. To fix that just put call DestroyGroup(G1) before the set G1 = G2. |
| 03-25-2007, 01:33 PM | #3 |
ah cool, it got rid of it, thanks! Edit: Nope, it didnt... I've added the modified code and it's still coming up. Any other ideas? |
| 03-25-2007, 02:08 PM | #4 |
Another quick browse (hurr) doesn't reveal any more group leaks to me. However: JASS:call DisplayTextToForce( GetPlayersEnemies(GetOwningPlayer(GroupPickRandomUnit(G1))), "|cffff0000An enemy unit is trying to take over a control point.|r" ) call DisplayTextToForce( GetPlayersAllies(GetOwningPlayer(GroupPickRandomUnit(G2))), "|cff00ff00An allied player is trying to take over a control point.|r" ) |
| 03-26-2007, 12:12 AM | #5 |
Ah yes forgot about the Forces. Thanks for you help! |
