Jump to content

Recommended Posts

I need help to put in a custom length, I was getting a script from another mod.
At first it worked fine, however I made a few changes and it didn't work.

The mod I used is this: 

https://steamcommunity.com/sharedfiles/filedetails/?id=1940293917

and the script is (random season duration)

local require = GLOBAL.require
 
local function OnSeasonChange(wrld)
    wrld:DoTaskInTime(1function(inst)
    local autumnseasonlength = GLOBAL.GetRandomItem({ 181920212223242526272829303132 })
local springseasonlength = GLOBAL.GetRandomItem({ 181920212223242526272829303132 })
local winterseasonlength = GLOBAL.GetRandomItem({ 131415161718192021222324252627 })
local summerseasonlength = GLOBAL.GetRandomItem({ 131415161718192021222324252627 })
 
    if wrld.state.season == "winter" then
wrld:PushEvent("ms_setseasonlength", {season="autumn", length=autumnseasonlength})
wrld:PushEvent("ms_setseasonlength", {season="winter", length=winterseasonlength})
wrld:PushEvent("ms_setseasonlength", {season="spring", length=springseasonlength})
wrld:PushEvent("ms_setseasonlength", {season="summer", length=summerseasonlength})
    end
    end)
end
function WaitPlayerActivated(wrld)
    wrld:WatchWorldState("season", OnSeasonChange)
end
 
AddPrefabPostInit("world", WaitPlayerActivated)
------

However, I changed it to:

local require = GLOBAL.require
 
local function OnSeasonChange(wrld)
    wrld:DoTaskInTime(1function(inst)
    local autumnseasonlength = GLOBAL.GetRandomItem({ 8990 })
local springseasonlength = GLOBAL.GetRandomItem({ 9293 })
local winterseasonlength = GLOBAL.GetRandomItem({ 8789 })
local summerseasonlength = GLOBAL.GetRandomItem({ 9394 })
 
    if wrld.state.season == "autumn" then
wrld:PushEvent("ms_setseasonlength", {season="autumn", length=autumnseasonlength})
wrld:PushEvent("ms_setseasonlength", {season="winter", length=winterseasonlength})
wrld:PushEvent("ms_setseasonlength", {season="spring", length=springseasonlength})
wrld:PushEvent("ms_setseasonlength", {season="summer", length=summerseasonlength})
    end
    end)
end
function WaitPlayerActivated(wrld)
    wrld:WatchWorldState("season", OnSeasonChange)
end
 
AddPrefabPostInit("world", WaitPlayerActivated)

What I'm trying to do is make the stations longer, without the randomness, but I'm afraid to move the code and it won't work, like now.

I'm new at this and I'm trying to learn. TY
Sorry for my bad english btw.

I don't know about coding the season, but since I have seen something relating to this, I'll share it...

On the DST Commands webpage,https://dontstarve.fandom.com/wiki/Console/Don't_Starve_Together_Commands there is a way to customize the season seg lengths like so:

TheWorld:PushEvent("ms_setseasonclocksegs", {summer={day=sx,dusk=sy,night=sz}, winter={day=wx,dusk=wy,night=wz}})

and it is followed by an example stating that the total of the day, dusk, and night segs must equal 16:

TheWorld:PushEvent("ms_setseasonclocksegs", {summer={day=14,dusk=1,night=1}, winter={day=13,dusk=1,night=2}})

perhaps you could run this in a modmain right after the world starts, maybe an AddSimPostInit...

  • Thanks 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...