DestroyForce doing it's job a little too well.

Kitt

New Member
Reaction score
5
Here is my trigger code for some Goldmines that simply give you gold every second as long as you control them:

Code:
ttGoldMine
    Events
        Time - Every 1.00 seconds of game time
    Conditions
    Actions
        Set Temp_PlayerGroup = (All players)
        Player Group - Pick every player in Temp_PlayerGroup and do (Actions)
            Loop - Actions
                Player - Add (Number of living tu_Gold Mine units owned by (Picked player)) to (Picked player) Current gold
        Custom script:   call DestroyForce(udg_Temp_PlayerGroup)

This works great for the first second. But, after that, nothing happens. The trigger refuses to give players gold. If you remove the last line (DestroyForce) the trigger works fine. It seems, that for whatever reason, DestroyForce is just completely removing my variable off the face of the earth...

I don't have the problem with the other leak management functions such as RemoveLocation or DestroyGroup. Am I doing something wrong? And if so, how should I stop that function from leaking, but still have it work?

Thanks in advance!

Meow.
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
890
> DestroyForce is just completely removing my variable off the face of the earth...

Precisely. Look:

Code:
Set Temp_PlayerGroup = (All players)

You set your group to (All Players). Since that has no conditions, it, in effect, becomes All Players. So, when you destroy the variable, you're destroying the ability to use All Players. When you do that, you'll never be able to use All Players in that game again.

Besides, All Players does not leak in the first place as far as I know.
 

Kitt

New Member
Reaction score
5
> DestroyForce is just completely removing my variable off the face of the earth...

Precisely. Look:

Code:
Set Temp_PlayerGroup = (All players)

You set your group to (All Players). Since that has no conditions, it, in effect, becomes All Players. So, when you destroy the variable, you're destroying the ability to use All Players. When you do that, you'll never be able to use All Players in that game again.

Besides, All Players does not leak in the first place as far as I know.

I vaguely understand that. Why do conditions make a variable work any differently?

Well, as long as All Players doesn't leak, I suppose I can just remove that all together then.

Mrew.
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
890
> Why do conditions make a variable work any differently?

I believe it is because all players is a preset. In JASS, it's GetPlayersAll. There are no presets for the others; you specify the filter conditions for the groups.
 

Kitt

New Member
Reaction score
5
> Why do conditions make a variable work any differently?

I believe it is because all players is a preset. In JASS, it's GetPlayersAll. There are no presets for the others; you specify the filter conditions for the groups.

Alright, so it's more of a strange specificity to that command rather than a general rule. That makes a little more sense =D

Mew.
 

SFilip

Gone but not forgotten
Reaction score
634
Conditions have little to nothing to do with this.
You see most of what you see in that player group picking box (the one where all players is) are actually functions that, when ran, create a new group and store it somewhere in the memory. These created groups need to be removed after use so that they don't take your memory. Simple like that.
But (All Players) is the only exception to this, it is not a function but a global variable just like your Temp_PlayerGroup. Therefore (All Players) is only created once, doesn't leak and should not be destroyed.
 

Rheias

New Helper (I got over 2000 posts)
Reaction score
232
I think you got a group leak over there.

Code:
Add ([B]Number of living tu_Gold Mine units owned by (Picked player)[/B]) to (Picked player) Current gold
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
890
Does that leak? It's just an integer... but I suppose it could be creating a group for the units....
 
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