SetTimeOfDayScale() crashes the game...

eXirrah

New Member
Reaction score
51
I got trigger like this that crashes the game ...

JASS:
function Trig_DayNightWeatherEffect_Actions takes nothing returns nothing
    local real t = GetTimeOfDay()
    if t >= 18 then
        call SetTimeOfDayScale(0.5) //<- this line crashes the game
    else
        call SetTimeOfDayScale(1) //<- this line crashes the game
    endif
endfunction


the events are TimeOfDay == 18 and TimeOfDay == 06.

EDIT: I want to make the night longer than the day. Since the game doesn't allow me
to change the time at which the day starts and the night starts then I got no choice
but to use SetTimeOfDayScale().
If anyone knows how to set the dawn at 16 and dusk at 8 plz tell me.
Changing the Gameplay Constants doesn't work.

EDIT2: The trigger crashes warcraft even when done using GUI
Trigger:
  • Untitled Trigger 001
    • Events
      • Game - The in-game time of day becomes Equal to 6.00
      • Game - The in-game time of day becomes Equal to 18.00
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (In-game time of day) Greater than or equal to 18.00
        • Then - Actions
          • Game - Set time of day speed to 50.00% of the default speed
        • Else - Actions
          • Game - Set time of day speed to 100.00% of the default speed
 

Xienoph

You can change this now in User CP.
Reaction score
43
Try pausing the game time first, then resuming it after you've changed the scaling.
 

Azlier

Old World Ghost
Reaction score
461
A wacky theory might be that setting the day scale causes that particular event to fire again when used within a trigger fired by that event.

That would cause a crash.
 

Xienoph

You can change this now in User CP.
Reaction score
43
Try pausing the game time first, then resuming it after you've changed the scaling.

I'll take that back. I just checked my map. Turns out that I didn't pause the game time. But try that anyway?

I have a suspicion that it's caused by the value being smaller than 1. If that's the case, half the speed in the Game Constants, and double your values (1 at night, 2 otherwise)
 

Azlier

Old World Ghost
Reaction score
461
Add a [ljass]call DisableTrigger(GetTriggeringTrigger())[/ljass] to that function, second line is good. If there's no crash, my theory is correct.
 

eXirrah

New Member
Reaction score
51
The problem is not that the value is smaller than 1, but exactly what azlier said.

I run a timer that changes the time of day scale exactly at 18.00 just when the
trigger is supposed to fire... just see the example.

Example:
JASS:
function FiresAt18OClock takes nothing returns nothing
    call msg("Time is 18.00") //<- shows 3 times
endfunction

function TimerExpiresAt18OClock takes nothing returns nothing
    call SetTimeOfDayScale(0.5)
endfunction

function InitTrig_Test takes nothing returns nothing
    local trigger trg = CreateTrigger()
    local trigger trg2 = CreateTrigger()
    local timer t = CreateTrimer()
    call TimerStart(t,30,false,null)
    call TriggerRegisterTimerExpireEvent(trg,t)
    call TriggerAddAction(trg,function TimerExpiresAt18OClock)
    call TriggerRegisterGameStateEvent(trg2,GAME_STATE_TIME_OF_DAY,EQUAL,18)
    call TriggerAddAction(trg2,function FiresAt18OClock)
endfunction


The trigger that is supposed to fire at 18 o'clock is firing 3 times, which means
that probably the game detects it as infinite loop... or 12.5% time scale is too low
msg() is a function that displays message on the screen.

I've been thinkin about it and tried it with DayOfTimeScale(2.0). It crashes
the game again... Why is that isn't it supposed to even skip the trigger?

EDIT: It crashes the game with time scale 1.0... so the game probably detects it as
infinite loop or something.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top