System Easy Unit Linking and Attaching

The Undaddy

Creating with the power of rage
Reaction score
Easy Unit Linking and Attaching

Hello, what's this?

Well, it's a unit indexing system, assigns a unique integer (well more like real with SCII) value to every unit in the game, to its 0th Custom Value.Yes zeroth.I didn't know it was a word either.
So if you use this don't touch the zeroth custom value of units.Because I'm watching you.
And because anything containing "Unit Indexing" sounds just so cliche, this system comes with its own unfunny acronym.Consider it a bonus :p

So why'd you make this?

Well I needed one, and Jesus4Lyf's unit indexer didn't work for me for some reason (didn't index preplaced units, nor did I see any deallocating of indexes) and without searching anywhere else I decided to make my own from scratch.

How does it work?

Whenever a unit enters the map it's assigned a unique index, and periodically indexes are recycled.

So I just thought I share this :thup:
Comments welcome as always.


  • EULA.SC2Lib
    63.6 KB · Views: 520


New Member
Reaction score
Hmm This sounds like something I could use! I'll check it out as soon as possible.

Now just to let you know and to make things easier to other users you might want to explain it a little more. Like how it suppose to work and maybe give an example of if situations that it would come in most handy. I might be able to add more to this later after I check it out :)

The Undaddy

Creating with the power of rage
Reaction score
Well I'd assume since the many warcraft indexing systems most people would know what one would be used for but I'll give a few examples as per requested. I'm just gonna leave them in this post unless someone really wants them merged with the first one (I'm lazy :eek:)


Well the simplest (and I guess most common) use would be attaching values to specific/all units, like let's say you want to keep track of all damage the units in the map have dealt individually.So just create a real array like 'Damage <real> [1000]' (Or any array value depending on which index you believe your map is going to reach) and do /freehand incoming/

  • Events: Any unit takes any damage from any source
    • Conditions: Well, conditions
    • Actions: Modify Damage[Index of Damaging Unit]: +Damage Dealt

So that will keep track of how much damage every unit on the map has dealt and it will be stored in Damage[Index of Which Unit].


Something which I am using this system for currently is an "Is Unit Moving" condition.We need a Point array 'UnitLoc <Point> [1000]' and a Boolean array 'Flag <Boolean> [1000]' and this trigger:

  • Events: Every 0.0625 real time seconds
    • Conditions: I&#039;d presume none for this trigger
    • Local Variables: PrevLoc &lt;Point&gt;
    • Actions:
      • Pick every unit in entire map and do
      • Set PrevLoc = UnitLoc[Index of Picked Unit]
      • Set UnitLoc[Index of Picked Unit] = Position of Picked Unit
      • If PrevLoc == UnitLoc[Index of Picked Unit] then
        • Set Flag[Index of Picked Unit] = false
      • else
        • Set Flag[Index of Picked Unit] = true

And voila, if the unit is moving its Flag[Index of Which Unit] will be true.


Lastly you can use it to, for example, attach the creator of a unit to said unit.Lets say 'some unit' creates 'some other unit' like some sort of a pet.We can do

  • Set Custom Value 1 of &#039;some other unit&#039; to Index Of &#039;some unit&#039;

And we have the creator of the unit stored in its first custom value.


So I think this should cover some basics.
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online


      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.