• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Questions about memory leaks (special effect)

Not open for further replies.
Level 31
Apr 17, 2009
Hey Guys,

I know that special effects do leak. What I do in my triggers is removing a unit from game that has a special effect atached. Is that bad?

Second question:

I know how to remove location leaks with the custom script.

For example I use this:

  • Custom script: call RemoveLocation( udg_TempPoint[0] )
But what do I have to write if I'm using the function "Player number of owner of triggering unit" for the array index?

Thanks for your time
Level 30
Nov 29, 2012
Based here which is same with your problem: http://www.hiveworkshop.com/forums/...tached-unit-destroy-when-unit-removed-206630/

You have to first store the special effect within the unit into an array or hashtable and then remove it with it "DestroyEffect" or simply Solu9's answer above. But it would always be best to store some special effects into variables when you are maybe using them many times and etc.

Second Question,
It would be best to store Triggering Unit to a variable or the command itself: "Player Number of Owner of Triggering Unit" to be in the safe side.

It might also help looking through the different memory leaks: http://world-editor-tutorials.thehelper.net/cat_usersubmit.php?view=27219

EDIT: Nevermind, my answer to the second question. I misunderstood it.
The actual function is GetPlayerId(GetOwningPlayer(GetTriggerUnit())).

But if you work with GUI you maybe need this: GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))

The difference is +1 in the 2nd function. (What actually is Player(0) in JASS is Player[1] in GUI)

A good tip for these things to look it up by your own is just to create an action where you use your wanted function and then convert it into JASS for a short moment. (so you can copy it, and then undo the convertion)
Not open for further replies.