- Joined
- Aug 16, 2007
- Messages
- 884
Well, feels like I'm creating a thread/day, haha, but this one is really important.
The map I'm working at is crashing INSTANTLY with absolutely no error message, at all. Just like that...
I know this must be caused by one (or more) of my triggers and now I wonder what exactly could cause a crash like this?
I know one of them, an infinite loop, but is there any more things? I'm using a lot of loops in my map, but they are GUI-loops and they should be pretty safe, right, because they're just looping through min > max...
Another thing is that the map always crashes after about 12 minutes of gameplay...
So, now I really need all help you've got!
The Error
I've found the error causing the crash in my map. The thing is... I don't understand the crash and I can't find the crash reason.
I found the error by disabling and enabling triggers and test the map many times and I found out that my duel system is the crash reason. BUT, the duel system has never caused any crashes before... Well, the map runs without a crash more than 20 minutes when I've disabled the Duel system, but if it's activated the map crashes at 11:55 - 12:05.
A fun thing though: I don't even think the trigger will run once, because the event is to run every 720 seconds (12 minutes) but I've got a delay until the trigger will be activated by 120 seconds. If this is a bug caused by wc3 or something I don't know.
Well, I hope you can find something in the triggers (or any optimize solutions):
The map I'm working at is crashing INSTANTLY with absolutely no error message, at all. Just like that...
I know this must be caused by one (or more) of my triggers and now I wonder what exactly could cause a crash like this?
I know one of them, an infinite loop, but is there any more things? I'm using a lot of loops in my map, but they are GUI-loops and they should be pretty safe, right, because they're just looping through min > max...
Another thing is that the map always crashes after about 12 minutes of gameplay...
So, now I really need all help you've got!
The Error
I've found the error causing the crash in my map. The thing is... I don't understand the crash and I can't find the crash reason.
I found the error by disabling and enabling triggers and test the map many times and I found out that my duel system is the crash reason. BUT, the duel system has never caused any crashes before... Well, the map runs without a crash more than 20 minutes when I've disabled the Duel system, but if it's activated the map crashes at 11:55 - 12:05.
A fun thing though: I don't even think the trigger will run once, because the event is to run every 720 seconds (12 minutes) but I've got a delay until the trigger will be activated by 120 seconds. If this is a bug caused by wc3 or something I don't know.
Well, I hope you can find something in the triggers (or any optimize solutions):
-
Duel New System
-
Events
- Time - Every 720.00 seconds of game time
- Conditions
-
Actions
- Game - Display to (All players) for 10.00 seconds the text: |cff008080Game|r: |...
- Countdown Timer - Start DuelTimer as a One-shot timer that will expire in 180.00 seconds
- Set DuelTimer = (Last started timer)
- Countdown Timer - Create a timer window for DuelTimer with title Duel Ends:
- Set DuelTimerWindow = (Last created timer window)
- Countdown Timer - Show DuelTimerWindow
-
For each (Integer A) from 1 to 12, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
- (Integer A) Not equal to 6
- (Integer A) Not equal to 12
-
Conditions
-
And - All (Conditions) are true
-
Then - Actions
- Set FDR_RespawnTimer[(Integer A)] = 0
- Set HeroIsDead[(Integer A)] = False
- Set TempPoint[0] = ((Player((Integer A))) start location)
- Hero - Instantly revive Hero[(Integer A)] at TempPoint[0], Show revival graphics
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit-type of Hero[(Integer A)]) Equal to Death Dragon
-
Then - Actions
- Animation - Change Hero[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
- Animation - Change Hero[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with (31.00 x (Real((Level of Ghost Evasion for Hero[(Integer A)]))))% transparency
- Else - Actions
-
If - Conditions
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Set Duel_StopRegeneration[(Integer A)] = (Life of Hero[(Integer A)])
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- -------- ---- --------
- Unit - Pause all units
- -------- ---- --------
- Trigger - Run CheckHero1 <gen> (checking conditions)
- -------- ---- --------
- Trigger - Run CheckHero2 <gen> (checking conditions)
- -------- ---- --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
- dd_duellinghero[1] Not equal to No unit
- dd_duellinghero[2] Not equal to No unit
-
Conditions
-
And - All (Conditions) are true
-
Then - Actions
- Game - Display to (All players) for 10.00 seconds the text: |cff008080Game|r: |...
- Set WhatDuelArea = (Random integer number between 1 and 2)
- Set Duel_Active = True
- Trigger - Turn off SpawnUnitsSystemNEW <gen>
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- WhatDuelArea Equal to 1
-
Then - Actions
- Set TempPoint[0] = (Center of Team1DuellSpawn <gen>)
-
Else - Actions
- Set TempPoint[0] = (Center of Team1DuellSpawn2 <gen>)
-
If - Conditions
- Unit - Move dd_duellinghero[1] instantly to TempPoint[0]
- Custom script: call RemoveLocation(udg_TempPoint[0])
- -------- - - - --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- WhatDuelArea Equal to 1
-
Then - Actions
- Set TempPoint[0] = (Center of Team2DuellSpawn <gen>)
-
Else - Actions
- Set TempPoint[0] = (Center of Team2DuellSpawn2 <gen>)
-
If - Conditions
- Unit - Move dd_duellinghero[2] instantly to TempPoint[0]
- -------- SET CAMERA --------
-
For each (Integer A) from 1 to 12, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
- (Integer A) Not equal to 6
- (Integer A) Not equal to 12
-
Conditions
-
And - All (Conditions) are true
-
Then - Actions
- Camera - Pan camera for (Player((Integer A))) to TempPoint[0] over 0.00 seconds
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Custom script: call RemoveLocation(udg_TempPoint[0])
- -------- - - - --------
- Trigger - Turn on DontLeaveDuelArea <gen>
- Trigger - Turn on DuelSystemStopRegeneration <gen>
- Wait 3.00 seconds
-
For each (Integer A) from 1 to 2, do (Actions)
-
Loop - Actions
- Unit - Remove All buffs from dd_duellinghero[(Integer A)]
- Unit - Unpause dd_duellinghero[(Integer A)]
- Unit - Set life of dd_duellinghero[(Integer A)] to 100.00%
- Unit - Set mana of dd_duellinghero[(Integer A)] to 100.00%
- Unit - Reset ability cooldowns for dd_duellinghero[(Integer A)]
-
Loop - Actions
- Game - Display to (All players) for 10.00 seconds the text: |cff008080Game|r: |...
-
Else - Actions
- Game - Display to (All players) for 10.00 seconds the text: |cff008080Game|r: |...
- Countdown Timer - Destroy DuelTimerWindow
- Countdown Timer - Pause DuelTimer
- Set Duel_Active = False
- Trigger - Turn on SpawnUnitsSystemNEW <gen>
- Trigger - Turn off DontLeaveDuelArea <gen>
- -------- ---- --------
- Unit - Unpause all units
- -------- ---- --------
-
For each (Integer A) from 1 to 2, do (Actions)
-
Loop - Actions
- Unit - Move dd_duellinghero[(Integer A)] instantly to dd_duellheropointbefore[(Integer A)]
-
Loop - Actions
- Custom script: call RemoveLocation(udg_dd_duellheropointbefore[1])
- Custom script: call RemoveLocation(udg_dd_duellheropointbefore[2])
- Custom script: set udg_dd_duellinghero[1] = null
- Custom script: set udg_dd_duellinghero[2] = null
-
If - Conditions
- Trigger - Run PathingBlockersFix AND LightningFix <gen> (checking conditions)
-
Events
-
DuelSystemStopRegeneration
-
Events
- Time - Every 0.50 seconds of game time
- Conditions
-
Actions
-
For each (Integer Integer[50]) from 1 to 12, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Integer[50] Not equal to 6
- Integer[50] Not equal to 12
- dd_duellinghero[1] Not equal to Hero[Integer[50]]
- dd_duellinghero[2] Not equal to Hero[Integer[50]]
-
Then - Actions
- Unit - Set life of Hero[Integer[50]] to Duel_StopRegeneration[Integer[50]]
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer Integer[50]) from 1 to 12, do (Actions)
-
Events
-
PathingBlockersFix AND LightningFix
- Events
- Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Duel_Active Equal to True
-
Then - Actions
-
Destructible - Pick every destructible in DuellArea1 <gen> and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- ((Picked destructible) is alive) Equal to False
-
Then - Actions
- Destructible - Resurrect (Picked destructible) with (Max life of (Picked destructible)) life and Hide birth animation
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
Destructible - Pick every destructible in DuellArea2 <gen> and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- ((Picked destructible) is alive) Equal to False
-
Then - Actions
- Destructible - Resurrect (Picked destructible) with (Max life of (Picked destructible)) life and Hide birth animation
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- WhatDuelArea Equal to 1
-
Then - Actions
- Set TempPoint[0] = (Center of DuelLightning1 <gen>)
- Set TempPoint[1] = (Center of DuelLightning2 <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[1] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning2 <gen>)
- Set TempPoint[1] = (Center of DuelLightning3 <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[2] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning3 <gen>)
- Set TempPoint[1] = (Center of DuelLightning4 <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[3] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning4 <gen>)
- Set TempPoint[1] = (Center of DuelLightning5 <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[4] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning5 <gen>)
- Set TempPoint[1] = (Center of DuelLightning6 <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[5] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning6 <gen>)
- Set TempPoint[1] = (Center of DuelLightning1 <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[6] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
-
Else - Actions
- Set TempPoint[0] = (Center of DuelLightning1 Copy <gen>)
- Set TempPoint[1] = (Center of DuelLightning2 Copy <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[1] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning2 Copy <gen>)
- Set TempPoint[1] = (Center of DuelLightning3 Copy <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[2] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning3 Copy <gen>)
- Set TempPoint[1] = (Center of DuelLightning4 Copy <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[3] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning4 Copy <gen>)
- Set TempPoint[1] = (Center of DuelLightning5 Copy <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[4] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning5 Copy <gen>)
- Set TempPoint[1] = (Center of DuelLightning6 Copy <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[5] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
- -------- - - - --------
- Set TempPoint[0] = (Center of DuelLightning6 Copy <gen>)
- Set TempPoint[1] = (Center of DuelLightning1 Copy <gen>)
- Lightning - Create a Finger of Death lightning effect from source TempPoint[0] to target TempPoint[1]
- Set DuelAreaLightning[6] = (Last created lightning effect)
- Custom script: call RemoveLocation(udg_TempPoint[0])
- Custom script: call RemoveLocation(udg_TempPoint[1])
-
If - Conditions
-
Destructible - Pick every destructible in DuellArea1 <gen> and do (Actions)
-
Else - Actions
-
Destructible - Pick every destructible in DuellArea1 <gen> and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- ((Picked destructible) is alive) Equal to True
-
Then - Actions
- Destructible - Kill (Picked destructible)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
Destructible - Pick every destructible in DuellArea2 <gen> and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- ((Picked destructible) is alive) Equal to True
-
Then - Actions
- Destructible - Kill (Picked destructible)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer ISS) from 1 to 6, do (Actions)
-
Loop - Actions
- Lightning - Destroy DuelAreaLightning[ISS]
-
Loop - Actions
-
Destructible - Pick every destructible in DuellArea1 <gen> and do (Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
CheckHero1
- Events
- Conditions
-
Actions
- Set Integer[0] = (Random integer number between 1 and 5)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- dd_duellinghero[1] Equal to No unit
-
Then - Actions
- Trigger - Run (This trigger) (checking conditions)
-
Else - Actions
- Set dd_duellinghero[1] = Hero[Integer[0]]
- Set dd_duellheropointbefore[1] = (Position of Hero[Integer[0]])
-
If - Conditions
-
CheckHero2
- Events
- Conditions
-
Actions
- Set Integer[0] = (Random integer number between 7 and 11)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- dd_duellinghero[2] Equal to No unit
-
Then - Actions
- Trigger - Run (This trigger) (checking conditions)
-
Else - Actions
- Set dd_duellinghero[2] = Hero[Integer[0]]
- Set dd_duellheropointbefore[2] = (Position of Hero[Integer[0]])
-
If - Conditions
-
DuelTimerEnds
-
Events
- Time - DuelTimer expires
- Conditions
-
Actions
- Countdown Timer - Destroy DuelTimerWindow
- Countdown Timer - Pause DuelTimer
- Game - Display to (All players) for 10.00 seconds the text: |cff008080Game|r: |...
- Set Duel_Active = False
- Unit - Move dd_duellinghero[1] instantly to dd_duellheropointbefore[1]
- Unit - Move dd_duellinghero[2] instantly to dd_duellheropointbefore[2]
- Custom script: call RemoveLocation(udg_dd_duellheropointbefore[1])
- Custom script: call RemoveLocation(udg_dd_duellheropointbefore[2])
- Custom script: set udg_dd_duellinghero[1] = null
- Custom script: set udg_dd_duellinghero[2] = null
- Trigger - Turn on SpawnUnitsSystemNEW <gen>
- Trigger - Turn off DontLeaveDuelArea <gen>
- Trigger - Turn off DuelSystemStopRegeneration <gen>
- Trigger - Run PathingBlockersFix AND LightningFix <gen> (checking conditions)
- Unit - Unpause all units
-
Events
-
WinTheDuel
-
Events
- Unit - A unit Dies
-
Conditions
-
Or - Any (Conditions) are true
-
Conditions
- (Triggering unit) Equal to dd_duellinghero[1]
- (Triggering unit) Equal to dd_duellinghero[2]
-
Conditions
-
Or - Any (Conditions) are true
-
Actions
- Set Duel_Active = False
- Game - Display to (All players) for 10.00 seconds the text: (|cff008080Game|r: + (Color[(Player number of (Owner of (Killing unit)))] + (PlayerName[(Player number of (Owner of (Killing unit)))] + |cffFF8000won the duell!|r (|cffffcc00+200 gold|r (|cffffcc00+100 gold/teammate|r)))))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Triggering unit) Equal to dd_duellinghero[1]
-
Then - Actions
-
For each (Integer A) from 7 to 11, do (Actions)
-
Loop - Actions
- Player - Add 100 to (Player((Integer A))) Current gold
-
Loop - Actions
- Player - Add 100 to (Owner of (Killing unit)) Current gold
- Unit - Move dd_duellinghero[2] instantly to dd_duellheropointbefore[2]
-
For each (Integer A) from 7 to 11, do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Triggering unit) Equal to dd_duellinghero[2]
-
Then - Actions
-
For each (Integer A) from 1 to 5, do (Actions)
-
Loop - Actions
- Player - Add 100 to (Player((Integer A))) Current gold
-
Loop - Actions
- Player - Add 100 to (Owner of (Killing unit)) Current gold
- Unit - Move dd_duellinghero[1] instantly to dd_duellheropointbefore[1]
-
For each (Integer A) from 1 to 5, do (Actions)
- Else - Actions
-
If - Conditions
- Custom script: call RemoveLocation(udg_dd_duellheropointbefore[1])
- Custom script: call RemoveLocation(udg_dd_duellheropointbefore[2])
- Custom script: set udg_dd_duellinghero[1] = null
- Custom script: set udg_dd_duellinghero[2] = null
- Countdown Timer - Pause DuelTimer
- Countdown Timer - Destroy DuelTimerWindow
- -------- // Unpause all Units --------
- Trigger - Turn on SpawnUnitsSystemNEW <gen>
- Trigger - Turn off DontLeaveDuelArea <gen>
- Trigger - Turn off DuelSystemStopRegeneration <gen>
- Trigger - Run PathingBlockersFix AND LightningFix <gen> (checking conditions)
- Unit - Unpause all units
-
Events
Last edited: