Loops - GrandeurHammers/Overwatch-Script-To-Workshop GitHub Wiki
If you get the Server closed due to excessive server load error, you may have an infinite loop with no waits.
The for's block or statement will execute while the expression evaluates to true. After every loop, the iterator will update.
for (define i = 0; i < CountOf(AllPlayers()); i++)
{
define teamID = RandomInteger(0, 4);
SmallMessage(AllPlayers()[i], <"team: <0>", teamID + 1>);
AllPlayers()[i].team = teamID;
}This for variant uses the workshop's For() action rather than a while loop.
When the for runs, the variable will be set to the initial start expression. After each iteration, the step expression is added to the variable. Iteration will stop when the variable exceeds end.
It will have less output elements than a normal for.
However, this for variant requires an entire variable. Variables in the extended collection will not work. Additional conditions also do not work, you can only input a number
where the variable will stop counting.
// Creates a variable that can only be accessed inside the for.
for (define = start; end; step) { ... }
// Uses an already existing variable.
for (var = start; end; step) { ... }foreach will iterate through each value in an array.
define radius = 8;
define locations = [Vector(56.64, 21.00, -67.14), Vector(50.46, 9.15, -92.95), Vector(30.00, 14.00, -77.91), Vector(82.59, 12.68, -88.21)];
foreach (define loc in locations)
{
CreateEffect(AllPlayers(), Effect.Sphere, Color.Red, loc, radius, EffectRev.VisibleTo);
}The while's block or statement will execute while the expression evaluates to true.
while (scanning)
{
if (AngleOfVectors(cameraPos, cameraLookingAt, targetPlayer) < 45)
{
scanning = false;
SmallMessage(targetPlayer, "Warning: Detected by camera!");
}
}