Trigger crashes?

Grurf

Ultra Cool Member
Reaction score
30
Hi all,

I'm busy making a new map, and I'm having some trouble. The map has lots of triggered spells, maybe that is the cause of the problem. Sometimes (and especially in the boss level) all triggers are suddenly messed up. Bosses either stop spawning or keep spawning forever. Spells that temporarely pause the caster using a trigger suddenly keep the caster paused for long times, sometimes forever. Players suddenly die, conditions are being ignored, in other words, the map is unplayable for a short amount of time, and if the bosses keep spawning, the game simply never ends. Are there common causes for things like this? Here is the trigger part that spawns the bosses, if it helps:

Code:
For each (Integer A) from 1 to 5, do (Actions)
    Loop - Actions
        Wait 5.00 seconds
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player1Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of NorthWestSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player2Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of NorthEastSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player3Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of EastNorthSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player4Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of EastSouthSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player5Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of SouthEastSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player6Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of SouthWestSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player7Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of WestSouthSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Player8Playing Equal to True
            Then - Actions
                Unit - Create BossAmount WaveUnitType for Player 12 (Brown) at (Center of WestNorthSpawn <gen>) facing Default building facing (270.0) degrees
            Else - Actions

If you pm me, I will send you my map, but I don't like to make it downloadable here. If somebody steals it right now and publishes it under his name I might never be able to prove that I'm the maker :D.
 

Grurf

Ultra Cool Member
Reaction score
30
Bump. Sorry for bumping this early, but I would like to continue working on my map, and before I do I want to be sure I'm not triggering more stuff that causes trigger crashes. BTW some more info: it seems like I forgot to mention that I use WEU (without the advanced triggers btw), and that the chance that the triggers crash becomes bigger when more people are playing (the map supports up to 8 players). Therefore, it seems like some kind of overflow. Maybe the triggers I use are too cpu-intensive?
 

xPheRe

New Member
Reaction score
43
I'm pretty sure that it's because you used a for-loop with the A variable and then a wait inside the loop.
It is possible that other triggers change the A variable value while this trigger is waiting
And then, after the wait, the value has no meaning within the loop.
Try using local vars for the loop counters

Also, as a suggestion, try to make your code more friendly by storing all the data related to the trigger in arrays and accessing it via "Pick every player in <Player group>"

Code:
Event
    Map initialization
Conditions
    None
Actions
    Set SpawningRegion[1] = <NorthWestSpawn <gen> >
    Set SpawningRegion[2] = <NorthEastSpawn <gen> >
    ...
    Set SpawningRegion[8] = <WestNorthSpawn <gen> >

    Set Players = Player group matching <<Matching player> slot equals to is playing>

Code:
Pick every player in <Players> and do
    Unit - Create <BossAmount> <WaveUnitType> for Player 12 (Brown) at (Center of <SpawningRegion[Number of <Picked player>]>) facing Default building facing (270.0) degrees
 

Grurf

Ultra Cool Member
Reaction score
30
xPheRe said:
I'm pretty sure that it's because you used a for-loop with the A variable and then a wait inside the loop.
It is possible that other triggers change the A variable value while this trigger is waiting
And then, after the wait, the value has no meaning within the loop.
Try using local vars for the loop counters

Also, as a suggestion, try to make your code more friendly by storing all the data related to the trigger in arrays and accessing it via "Pick every player in <Player group>"

Code:
Event
    Map initialization
Conditions
    None
Actions
    Set SpawningRegion[1] = <NorthWestSpawn <gen> >
    Set SpawningRegion[2] = <NorthEastSpawn <gen> >
    ...
    Set SpawningRegion[8] = <WestNorthSpawn <gen> >

    Set Players = Player group matching <<Matching player> slot equals to is playing>

Code:
Pick every player in <Players> and do
    Unit - Create <BossAmount> <WaveUnitType> for Player 12 (Brown) at (Center of <SpawningRegion[Number of <Picked player>]>) facing Default building facing (270.0) degrees

Oh that's it! I didn't know A was a global variable. A lot of spells use loops, and I have always used the A loop. So there can only be one A loop at a time? Well, loops save a lot of work, but if they can't run simultaneous I think I should find an other way to do it. IIRC there also is a one for each integer B, but then there would be trouble when two B loops are running at the same time... Is there a better way to loop actions?

Im_On_56k said:
Your triggers arn't "cpu-intensive".

Make sure your variables are set.

And why are you looping this 5 times?

The variables are set, and I am looping it 5 times because there should spawn 5 bosses, with 5 seconds between each spawn.
 

Grurf

Ultra Cool Member
Reaction score
30
AceHart said:
> there also is a one for each integer B

And there also is one for whatever integer variable you define yourself.

Yeah, I just found out lol =). Thanks for the help people!
 
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