Im not quite sure why this is happening, especially since your are stating it just happens in mutliplayer, whats really weird. Seems like timers and waits are not exactly synched or smth.
However i have to ask, do you really need the timer for your map? If yes, you can also try to set the label periodically to the remaining time of the timer.
If not i would just use a loop to simulate the timer, like you did.
start timer
Events
Timer - Elapsed time is 1.0 Real Time seconds
Local Variables
Conditions
Actions
Timer - Start my timer as a One Shot timer that will expire in 30.0 Real Time seconds
Trigger - Turn update label On
update label (initially off)
Events
Timer - Every 1.0 seconds of Real Time
Local Variables
Conditions
Actions
Dialog - Set my label text to (Text((Remaining time of my timer)) with 0 decimal places) for (Active Players)
You can also write a custom action to create your own little timers:
custom timer
Options: Action, Create Thread
Return Type: (None)
Parameters
duration (sec) = 0 <Integer>
time type = Real Time <Time Type>
executed trigger = No Trigger <Trigger>
Grammar Text: custom timer(duration (sec), time type, executed trigger)
Hint Text: (None)
Custom Script Code
Local Variables
time remaining = 0 <Integer>
tmp d = No Dialog <Dialog>
tmp di = No Dialog Item <Dialog Item>
Actions
Dialog - Create a Modal dialog of size (500, 400) at (0, 0) relative to Center of screen
Dialog - Show (Last created dialog) for (All players)
Variable - Set tmp d = (Last created dialog)
Dialog - Create a label for dialog (Last created dialog) with the dimensions (200, 50) anchored to Center with an offset of (0, 0) with the text "" color set to White text writeout set to False with a writeout duration of 2.0
Variable - Set tmp di = (Last created dialog item)
General - For each integer time remaining from duration (sec) to 0 with increment -1, do (Actions)
Actions
Dialog - Set tmp di text to (Text(time remaining)) for (Active Players)
General - Wait 1.0 time type seconds
Dialog - Destroy tmp d
Trigger - Run executed trigger (Check Conditions, Don't Wait until it finishes)
For sure you can add much more options to your custom timer function, like dialog size and position etc.
Im not quite sure why this is happening, especially since your are stating it just happens in mutliplayer, whats really weird. Seems like timers and waits are not exactly synched or smth.
However i have to ask, do you really need the timer for your map? If yes, you can also try to set the label periodically to the remaining time of the timer.
If not i would just use a loop to simulate the timer, like you did.
start timer
Events
Timer - Elapsed time is 1.0 Real Time seconds
Local Variables
Conditions
Actions
Timer - Start my timer as a One Shot timer that will expire in 30.0 Real Time seconds
Trigger - Turn update label On
update label (initially off)
Events
Timer - Every 1.0 seconds of Real Time
Local Variables
Conditions
Actions
Dialog - Set my label text to (Text((Remaining time of my timer)) with 0 decimal places) for (Active Players)
You can also write a custom action to create your own little timers:
custom timer
Options: Action, Create Thread
Return Type: (None)
Parameters
duration (sec) = 0 <Integer>
time type = Real Time <Time Type>
executed trigger = No Trigger <Trigger>
Grammar Text: custom timer(duration (sec), time type, executed trigger)
Hint Text: (None)
Custom Script Code
Local Variables
time remaining = 0 <Integer>
tmp d = No Dialog <Dialog>
tmp di = No Dialog Item <Dialog Item>
Actions
Dialog - Create a Modal dialog of size (500, 400) at (0, 0) relative to Center of screen
Dialog - Show (Last created dialog) for (All players)
Variable - Set tmp d = (Last created dialog)
Dialog - Create a label for dialog (Last created dialog) with the dimensions (200, 50) anchored to Center with an offset of (0, 0) with the text "" color set to White text writeout set to False with a writeout duration of 2.0
Variable - Set tmp di = (Last created dialog item)
General - For each integer time remaining from duration (sec) to 0 with increment -1, do (Actions)
Actions
Dialog - Set tmp di text to (Text(time remaining)) for (Active Players)
General - Wait 1.0 time type seconds
Dialog - Destroy tmp d
Trigger - Run executed trigger (Check Conditions, Don't Wait until it finishes)
For sure you can add much more options to your custom timer function, like dialog size and position etc.
Could you post the related source-code right here?
Just select all lines of your trigger, right-click and chose "copy as text".