- 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
-
-
-
-
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
-
-
Custom script: call RemoveLocation(udg_TempPoint[0])
-
Set Duel_StopRegeneration[(Integer A)] = (Life of Hero[(Integer A)])
-
-
Else - 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
-
-
-
-
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>)
-
-
-
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>)
-
-
-
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
-
-
-
-
Then - Actions
-
Camera - Pan camera for (Player((Integer A))) to TempPoint[0] over 0.00 seconds
-
-
Else - 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)]
-
-
-
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)]
-
-
-
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 - Run PathingBlockersFix AND LightningFix <gen> (checking conditions)
-
-
-
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
-
-
-
-
-
-
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
-
-
-
-
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 (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])
-
-
-
-
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
-
-
-
-
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
-
-
-
-
For each (Integer ISS) from 1 to 6, do (Actions)
-
Loop - Actions
-
Lightning - Destroy DuelAreaLightning[ISS]
-
-
-
-
-
-
-
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]])
-
-
-
-
-
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]])
-
-
-
-
-
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
-
-
-
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]
-
-
-
-
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
-
-
-
Player - Add 100 to (Owner of (Killing unit)) Current gold
-
Unit - Move dd_duellinghero[2] instantly to dd_duellheropointbefore[2]
-
-
Else - Actions
-
-
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
-
-
-
Player - Add 100 to (Owner of (Killing unit)) Current gold
-
Unit - Move dd_duellinghero[1] instantly to dd_duellheropointbefore[1]
-
-
Else - 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
-
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
-
-
Last edited: