Trigger Sleep Action/Wait

dianamod27

Member
Reaction score
1
Edit: Solved

I just finished writing two triggers that allow creeps to respawn. Of course I tested it with low respawn times like 10 seconds, and it works perfectly. However, my desired respawn time is as high as 20 minutes, and that doesn't work.

Assuming that WC3 really just can't handle long waits, does anyone happen to know what the longest possible wait is?
 

Happy

Well-Known Member
Reaction score
71
first of all....why god damn you wanna respawn creeps every 20 MINUTES ? Oo

then afaik wait can be as long as you want them to be...there could be a trigger overiding something or such a thing.
 

MP®

Member
Reaction score
11
Maybe if you post your trigger here, we can help you. Without information, we can't say what's wrong.
 

dianamod27

Member
Reaction score
1
first of all....why god damn you wanna respawn creeps every 20 MINUTES ? Oo

Because.

Maybe if you post your trigger here, we can help you. Without information, we can't say what's wrong.

Well, I actually tested every aspect of these triggers and there are only two instances in which they don't work:
1. When I set the timer to 20 minutes rather than 5 seconds.
2. When I do the following. This is how I save position and facing angle of the preplaced creeps:
Trigger:
  • Creep Respawn Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set TempGroup = (Units owned by Neutral Hostile)
      • Unit Group - Pick every unit in TempGroup and do (Actions)
        • Loop - Actions
          • Custom script: local integer TempInteger
          • Custom script: call SetUnitUserData( GetEnumUnit(), TempInteger )
          • Custom script: set udg_PointArray[TempInteger] = GetUnitLoc(GetEnumUnit())
          • Custom script: set udg_AngleArray[TempInteger] = GetUnitFacing(GetEnumUnit())
          • Custom script: set TempInteger = ( TempInteger + 1 )
      • Custom script: call DestroyGroup (udg_TempGroup)

This part definitely works because I tested it thoroughly, even using the GUI and a global variable.

This is how I respawn the creeps:
Trigger:
  • Creep Respawn Action
    • Events
      • Unit - A unit owned by Neutral Hostile Dies
    • Conditions
    • Actions
      • Custom script: local unit TempUnit
      • Custom script: set TempUnit = GetDyingUnit()
      • Wait 5.00 seconds
      • Custom script: call CreateNUnitsAtLoc( 1, GetUnitTypeId(TempUnit), Player(PLAYER_NEUTRAL_AGGRESSIVE), GetUnitLoc(TempUnit), GetUnitFacing(TempUnit) )
      • Custom script: call SetUnitUserData( GetLastCreatedUnit(), GetUnitUserData(TempUnit) )

As you can see, the line immediately after the wait spawns the creeps right where they died and facing the same angle they were facing when they died, but since I want them to respawn as I put them in the editor, I wrote this line to replace the one immediately after the wait:
Trigger:
  • Custom script: call CreateNUnitsAtLoc( 1, GetUnitTypeId(TempUnit), Player(PLAYER_NEUTRAL_AGGRESSIVE), udg_PointArray[GetUnitUserData(TempUnit)], udg_AngleArray[GetUnitUserData(TempUnit)] )

This one doesn't work though and I can't figure out why for the life of me.
 

jnZ

I
Reaction score
64
Trigger:
  • Creep Respawn Action
    • Events
      • Unit - A unit owned by Neutral Hostile Dies
    • Conditions
    • Actions
      • Custom script: local integer ut = GetUnitTypeId(GetTriggerUnit())
      • Custom script: local location p = GetUnitLoc(GetTriggerUnit())
      • Custom script: local real facing = GetUnitFacing(GetTriggerUnit())
      • Custom script: local integer udata = GetUnitUserData(GetTriggerUnit())
      • Wait 5.00 seconds
      • Custom script: call CreateNUnitsAtLoc( 1, ut, Player(PLAYER_NEUTRAL_AGGRESSIVE), p, facing )
      • Custom script: call SetUnitUserData( GetLastCreatedUnit(), udata )


try it like this (note the leaks are still there)
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
612
It might be because the unit has fully decayed and no longer exists in the game after 20 minutes. Try saving all the necessary variables, like in jnZ's trigger.
 

dianamod27

Member
Reaction score
1
Going to try that, thanks guys. Dunno why I thought that local integer worked by the way, but I got it.

Edit: Works perfectly
 
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