Unit Respawn

Coolio

New Member
Reaction score
7
how do i do so when a unit dies, another unit to spawn on that location after some time 1 minute for example. if i set it to wait 60 secs then create [this unit] to the location of the dying unit it does nothing.

If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Dying unit)) Equal to Ziggurat
Then - Actions
Wait 60.00 seconds
Unit - Create 1 Building Site (Undead) for (Owner of (Dying unit)) at (Position of (Dying unit)) facing Default building facing degrees
Else - Actions
 

Komaqtion

You can change this now in User CP.
Reaction score
469
Simply replace (Dying unit) with (Triggering unit) and it should work ;)
 

Coolio

New Member
Reaction score
7
asd
Events
Unit - A unit Dies
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Ziggurat
Then - Actions
Wait 60.00 seconds
Unit - Create 1 Building Site (Undead) for (Owner of (Triggering unit)) at (Position of (Triggering unit)) facing Default building facing degrees
Else - Actions


still doesn't work
 

HeX.16

Isn't Trollin You Right Now
Reaction score
131
Trigger:
  • Blah
    • Events
    • Unit - A unit Dies
    • Conditions
    • Unit-Type of (Dying unit)) Equal to Ziggurat
    • Actions
    • Wait 60 seconds
    • Unit - Create 1 Ziggurat for (Owner of (Dying unit)) at (Position of (Dying unit)) facing Default building facing degrees

Tested this and i works
 

Bogrim

y hello thar
Reaction score
154
Your trigger doesn't work because after 60 seconds, the unit has decayed and is no longer in the game. With other words, you're creating a unit at a location that no longer exists and for an owner of no unit.

You need to store the variables as local variables on the time of the actual event, then you can refer to them after the wait:
Trigger:
  • Your Trigger
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Ziggurat
    • Actions
      • Custom Script: local location l = GetUnitLoc(GetTriggerUnit())
      • Custom Script: local player p = GetOwningPlayer(GetTriggerUnit())
      • Wait 60.00 seconds
      • Custom Script: set udg_Temp_Point = l
      • Custom Script: set udg_Temp_Player = p
      • Unit - Create 1 Building Site (Undead) for Temp_Player at Temp_Point facing Default building facing degrees
      • Custom Script: call RemoveLocation( l )
      • Custom Script: set l = null
      • Custom Script: set p = null
 

Komaqtion

You can change this now in User CP.
Reaction score
469
And what is that supposed to be, Hex ?!
You (Basically) just reposted Coolio's code !

Anyways, I believe that the point (Position of (Dying/Triggering unit)) is lost after that long wait there, so I'd suggest you do something like this:

Trigger:
  • Events
    • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Ziggurat
    • Actions
      • Custom script: local location l = GetUnitLoc( GetTriggerUnit() )
      • Wait 60.00 seconds
      • Custom script: set udg_TempPoint = l
      • Unit - Create 1 Building Site (Undead) for (Owner of (Triggering unit)) at TempPoint facing Default building facing degrees
      • Custom script: call RemoveLocation( l )
      • Custom script: call RemoveLocation( udg_TempPoint )


Freehanded, but should work ;)

A point variable (Called TempPoint) is needed for this :D
 

HeX.16

Isn't Trollin You Right Now
Reaction score
131
Not tested a freehand i think that will work.
Trigger:
  • Timer Start
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Ziggurat
    • Actions
      • Set RespawnUnit = (Dying unit)
      • Set RespawnLoc = (Position of (Dying unit))
      • Countdown Timer - Start RespawnTimer as a One-shot timer that will expire in 60.00 seconds

Trigger:
  • Respawn
    • Events
      • Time - RespawnTimer expires
    • Conditions
    • Actions
      • Unit - Create 1 Ziggurat for (Owner of RespawnUnit) at RespawnLoc facing Default building facing degrees
      • Custom script: call RemoveLocation( udg_RespawnLoc)
 

HeX.16

Isn't Trollin You Right Now
Reaction score
131
Well that i just to clear the leak of my location. Oh i see he did it with custom scripts.
 

Bogrim

y hello thar
Reaction score
154
Komaqtion, you still can't refer to the owner of a unit that does not exist. Furthermore, you're removing the same location twice. Linking two variables isn't the same as creating a new location. You also forgot to null the local variable, so the variable is still in the game's memory.

HeX.16, using a single timer does not allow multiple instances of the same event. With other words, your timer is the same as a 60 seconds wait only with an additional trigger.
 

Bogrim

y hello thar
Reaction score
154
You can't without Jass. Timers are terrible to fill in for waits. You should only use timers when you want to be able to modify the waiting period while in progress. But that's hardly relevant to the topic. I suggest you start a thread of your own if you have any off-topic questions.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top