How to make variable able to store data from another variable?

Whisky

New Member
Reaction score
45
Just a quick question about variables.

Example:
Trigger:
  • Actions
    • Set Point1 = (Position of (Triggering unit))
    • Set Point2 = Point1
    • Custom script: call RemoveLocation (udg_Point1)
    • Unit - Create 1 Footman for Player 1 (Red) at Point2 facing Default building facing degrees


Is it possible to make the Point2 to recall the data of Point1 even after it being destroyed?
 

Komaqtion

You can change this now in User CP.
Reaction score
469
What do you mean ? :S
If you destroy Point1, Point2 will still have data stored in it...
 

Whisky

New Member
Reaction score
45
Well it doesn't seem so.

Tested with the trigger above, it creates the footman at the center of the map if I destroy Point1 before creating the footman.

I know that it uses the variable just to remember the real position in the game's memory, but is it possible to actually store the data to the variable?
 

Komaqtion

You can change this now in User CP.
Reaction score
469
This seems to work:
Trigger:
  • Set TempPoint2 = (Point((X of TempPoint), (Y of TempPoint)))
 

Cookiemaster

New Member
Reaction score
36
Handle-variables (units, locations, unit groups, pretty much anything except integer/boolean/real/string really) are actually pointers to the object.

The reason things like locations leak is because the created handle (location) will keep existing even though you remove/change the pointer to something else.

Which is why pretty much every use of a location variable is accompanied by a RemoveLocation(location variable), which destroys the location the pointer is pointing to, even though the pointer still remembers what it is pointing to. (Which is why you have to null every pointer-type local variable in jass to prevent memory leaks, since blizzard SUCKS with cleanup.)


It is only to be expected that if you have two variables point to the same handle, and destroy the handle with the use of one of them, that the other will cease to work as well.

If you wish to fix the location variable from stopping to work; then I suggest you'd reconsider your usage of variables. It seems completely pointless to me to do something like what you're doing.
 

Whisky

New Member
Reaction score
45
Actually I knew all that, and I also know that the trigger I used as an example is pointless, but it was the easiest example possible so I used it.

It's hard to imagine where this would be usable, but well, let's just say I had to know way around this for my research ;)
 

Rushhour

New Member
Reaction score
46
Imagine you have a finger that is pointing on an object (=handle). That's basically set TempPoint = CenterOfRegion
If you then do: set TempPoint2=TempPoint you have another finger that points on your first finger. So if you remove the first finger your second finger points to nothing.
The only way around this would be to get the data of the first pointer and set it for the second one.

In case of a location(point) this would be (as already said:)
JASS:

set udg_TempPoint2=Location(GetLocationX(udg_TempPoint1),GetLocationY(udg_TempPoint1))
call RemoveLocation(udg_TempPoint1)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top