Some small loop trigger problems

maldruzard

Member
Reaction score
2
Hey there!

So I have a spawn trigger for units on my map, where every 60 seconds a new wave of units spawn at random regions (preset by a region setter trigger). Previously, the trigger went something like:

Create (Unit) at [REGION], etc...
Wait 0.02 seconds
Create (Unit) at [REGION], etc...
Wait 0.02 seconds

and so on, for over 100 units around the map. I realised this was not the most efficient way of spawning the units, and it also (presumably) leaked like hell. So I instead created a loop trigger which goes a little something like this:


Code:
    Events
        Time - Every 60.00 seconds of game time
    Conditions
    Actions
        For each (Integer A) from 1 to 70, do (Actions)
            Loop - Actions
                Set ZTempPoint[1] = (Random point in REGION)
                Unit - Create 1 Zomble for Neutral Hostile at ZTempPoint[1] facing Default building facing degrees
                Custom script:  call RemoveLocation(udg_ZTempPoint[1])
                Wait 0.02 seconds
However, this loop trigger seems to only spawn one of the units, not the 70 that the trigger should be spawning around the map. The 'wait' time in the trigger is there because the [REGION] variable is set to a different region every 0.02 seconds, so it is necessary for the spawns to be diverse in their locations. Does anyone know why this loop doesn't work? I don't have much experience with them :(
 

jig7c

Stop reading me...-statement
Reaction score
123
For each (Integer A) from 1 to 70, do (Actions)
Loop - Actions
Set ZTempPoint[Integer A] = (Random point in REGION)
Unit - Create 1 Zomble for Neutral Hostile at ZTempPoint[Integer A] facing Default building facing degrees
Custom script: call RemoveLocation(udg_ZTempPoint[i forget what goes here])

it has been many years since I have coded, can't remember how to clear that memory at the end
also:
wait will not work in Loops - Actions
 

Solu9

You can change this now in User CP.
Reaction score
216
It is because you use an array point variable. Just use a regular.
Set ZTempPoint = Random point in "your region"

Custom script: call RemoveLocation (udg_ZTempPoint)
And lastly. Remove the o.o2 sec wait.
 

vypur85

Hibernate
Reaction score
803
Nothing wrong with the array and point remove. It doesn't leak and it should work well.

However, change the Integer A loop to 'Custom variable loop'. It will solve the loop problem.

Then again, creating 70 units in 0.02 seconds interval (note that wait is not accurate at low values) every 60 seconds may cause some problem as well.
 

Solu9

You can change this now in User CP.
Reaction score
216
Why have an array when a regular works just as fine?
 

vypur85

Hibernate
Reaction score
803
Some people prefer to create one type of variable but with several arrays.
Some people prefer one type of variable but with several names.
Either way, it works the same. No problems there.

They're useful when you need more than one eg. point variable within a trigger.
 
General chit-chat
Help Users

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top