Does Special Effects on Units leak?!

NindoOne

TH.net Regular
Reaction score
17
Trigger:
  • Special Effect - Create a special effect attached to the origin of (Triggering unit) using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl


Does this kind of special effects leak and if so, how do I remove them?

NOTE: I know how to remove special effects at a point but the sam thing dont work here o_O

(How I remove SFX leaks at a point)
Trigger:
  • NoLeak
    • Events
    • Conditions
    • Actions
      • Set point = (Center of (Playable map area))
      • Special Effect - Create a special effect at point using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation(udg_point)


I will be happy for a quick answer!:D


EDIT: And also a quick question... Why the hell doesnt the effect work at all when its on a Unit?!
 

LearningCode

New Member
Reaction score
24
from what I understand..
Effects, objects, units all leak.

Integers and real don't.

You used:

Trigger:
  • Set point = (Center of (Playable map area))


CENTER OF PLAYABLE MAP AREA

You didn't set it to a unit
 

Dinowc

don't expect anything, prepare for everything
Reaction score
223
an effect added on a unit works same like a effect added to a point

if it isn't removed, it leaks.

store the effect in a Special Effect variable and you can destroy it later

EDIT:

Effects, objects, units all leak.

how can a unit leak?

sure, a unit is a handle and takes part of the memory, but once the unit dies (decays, vanishes), he's automatically removed from the memory, unlike points and effects

And also a quick question... Why the hell doesnt the effect work at all when its on a Unit?!

Special Effect - Create a special effect attached to the orgin of (Triggering unit) using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl

it should be "origin"

also, some units don't have certain attachment points
 

NindoOne

TH.net Regular
Reaction score
17
from what I understand..
Effects, objects, units all leak.

Integers and real don't.

You used:

Trigger:
  • Set point = (Center of (Playable map area))


CENTER OF PLAYABLE MAP AREA

You didn't set it to a unit

The 2:nd trigger is a correct SFX to a point... I'm just asking if the first exampel creates a leak and how to remove it:) I've been trying a bit more... Think i got it by my own, someone correct me if im wrong

Trigger:
Trigger:
  • HPandMANAreg
    • Events
      • Unit - A unit enters InnerCity1 <gen>
    • Conditions
      • (Triggering unit) Equal to Hero[(Player number of (Owner of (Triggering unit)))]
    • Actions
      • Unit - Set life of (Triggering unit) to 100.00%
      • Unit - Set mana of (Triggering unit) to 100.00%
      • Special Effect - Create a special effect attached to the origin of (Triggering unit) using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
      • Special Effect - Destroy (Last created special effect)
 

T.s.e

Wish I was old and a little sentimental
Reaction score
133
sure, a unit is a handle and takes part of the memory, but once the unit dies (decays, vanishes), he's automatically removed from the memory, unlike points and effects
But the handle that points to the now-removed unit isn't automatically removed, so you need to null that handle, or it'll keep pointing to the removed unit and cause a leak.

By the way NindoOne, your trigger is leakless.
 

T.s.e

Wish I was old and a little sentimental
Reaction score
133
I thought only local variables should be nulled?
It applies to global variables, too?
Touché. It isn't necessary to null global variables, silly me has forgotten how GUI works.
 

ZugZugZealot

New Member
Reaction score
33
You forgot GROUPS and POINTS.
He said objects, and those are objects. Anything that uses a handle Id is leakable.

Though nulling global variables isn't needed like locals, it's still nice in some cases. By nulling a global, you explicit that it's no longer in use.

JASS:
if (udg_MyUnit == null) then
    call BJDebugMsg( "Variable is available" )
endif


You don't need Jass to null global variables in GUI though. I just used Jass out of not wanting to put it together in GUI. You can just make variables in the variable editor and never define them (i.e. create unit variable named nullUnit) then set variables to it (i.e. set SomeFootman = nullUnit ).
 
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