- Joined
- Aug 16, 2007
- Messages
- 885
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:







