DestroyForce / (All Players) / LeakChecker

Bird

Ultra Cool Member
Reaction score
29
This is the visual part of my custom Bounty trigger(s). Tmp_Integer (gold awarded) is calculated elsewhere, then displayed above the Triggering (dying) unit. It then hides the Bounty text for All Players, and then un-hides it for the Killer.

Trigger:
  • GoldTest
    • Events
    • Conditions
    • Actions
      • Floating Text - Create floating text that reads (+ + (String(Tmp_Integer))) above (Triggering unit) with Z offset 0.00, using font size 9.00, color (100.00%, 100.00%, 0.00%), and 0.00% transparency
      • Set Tmp_PG = (All players)
      • Floating Text - Hide (Last created floating text) for Tmp_PG
      • Custom script: call DestroyForce(udg_Tmp_PG)
      • Set Tmp_PG = (Player group((Owner of (Killing unit))))
      • Floating Text - Show (Last created floating text) for Tmp_PG
      • Custom script: call DestroyForce(udg_Tmp_PG)
      • Floating Text - Set the velocity of (Last created floating text) to 32.00 towards 90.00 degrees
      • Custom script: call FloatByeText()


JASS:

function FloatByeText takes nothing returns nothing
    call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
    call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 2.00 )
    call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 1.50 )
endfunction


1. I read conflicting info on here about Destroying a Force variable that was set to All Players. This, logically, shouldn't be a problem. But, is it?
2. The error I get in LeakChecker. Why?
Code:
(Line: 9) (Word: 3) Player Group Leak
Set Tmp_PG = (Player group((Owner of (Killing unit))))
Set Tmp_PG = ^Leak
(Suggested Fix) No suggested fixes.
 

Sirroelivan

Gunnerkrigg Court
Reaction score
95
Hmm, as far as I remember destroying a group variable that refers to all players shouldn't be a problem, destroying all players would be. Don't quote me on it though, since I'm not entirely sure...
 

Rushhour

New Member
Reaction score
46
There is no need to set 'All Players' to a group variable. Just use 'All Players' directly in the specific action. And yes, there is no need to destroy it. If you did, it would be destroyed for the rest of the game. So it would be pretty senseless :D

And yes, you need to destroy the force created by 'PlayerGroup(Owner of....)' . But the way you did it was correct. I just think that the leak checker didn't recognize that you destroyed your temp force.
 

Bird

Ultra Cool Member
Reaction score
29
So, to summarize, this trigger is leak-free? And I don't even need to bother with creating an All Players force?

The Killer Force and the Floating Text are all destroyed properly?

(It's important because I believe this is the Leak causing my map crashes)
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
1). leak-free
2). no need to create/destroy (all players), destroying it is even dangerous.
3). leaks wont cause a map to crash, only slowing it down. (at least as long as the leaks wont feed up all of your memory what is very unlikely to happen)
 

Bird

Ultra Cool Member
Reaction score
29
Well this is my Bounty trigger, which before posting here I just added in the Force removal. This is an AOS type map, and thousands and thousands of Units die over time... thus thousands and thousands of bounties get displayed, and thousands and thousands of Forces were leaking.

The only way I have ever caused a crash (before this) in any map of mine was with an infinite loop, and I def don't think I have any in this map.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top