饥荒联机版 mod制作求助。
饥荒联机版吧
全部回复
仅看楼主
level 1
a86620671 楼主
哪位大佬能回答一下小弟的疑惑?
如何才能让每个冬天比上一个冬天长2天?季节相关的代码网上没有指引看不懂 现在脑袋一个头俩大。[惊哭][惊哭][惊哭]
2020年05月31日 11点05分 1
level 1
TheWorld:PushEvent("ms_setseasonlength", {season = "winter", length = 20})
2020年06月02日 02点06分 2
感谢大佬的提示,这是设置冬季长度吧。我在seasons.luaw文件中找到了local OnSetSeasonLength = _ismastersim and function(src, data)
2020年06月02日 04点06分
这个代码。但在修改local OnAdvanceSeason = _ismastersim and function()这个函数的时候失败了。只要我更改_lengths["winter"]:set(50) 游戏在更新季度时就会断
2020年06月02日 04点06分
另外如何在modicon.lua 中调用游戏里自带的函数?为啥TheWorld:PushEvent("ms_setseasonlength", {season = "winter", length = 20}) 里的ms_setseasonlength 能调用seasons.lua里的 local 函数 ms_这有什么命名规则么?萌新啥也不懂,一直都在改游戏源文件。[泪]
2020年06月02日 04点06分
我要如何触发修改季节长度代码。有办法判断当前天数吗?
2020年06月02日 05点06分
level 1
a86620671 楼主
感谢村霸大佬的帮助 我用了一个很蠢的办法直接修改 seasons.lua 的季节更新模块实现了这个功能。
假如有兴趣的话欢迎大家指导一下萌新的我更改更简洁的代码完成这个功能。
下面是我修改的代码。
--添加一个计数器
local lxjishuqi = 0
local OnAdvanceSeason = _ismastersim and function()
_elapseddaysinseason:set(_elapseddaysinseason:value() + 1)
if _mode == MODES.cycle then
if _remainingdaysinseason:value() > 1 then
--Progress current season
_remainingdaysinseason:set(_remainingdaysinseason:value() - 1)
else
--Advance to next season
_season:set(GetNextSeason())
_totaldaysinseason:set(_lengths[_season:value()]:value())
_elapseddaysinseason:set(0)
_remainingdaysinseason:set(_totaldaysinseason:value())
_premode = false
--冬季每次+5天
lxjishuqi = lxjishuqi+1
TheWorld:PushEvent("ms_setseasonlength", {season = "winter", length = 15 + 5 * lxjishuqi})
--_lengths["winter"]:set(50)
--UpdateSeasonMode()
end
elseif _mode == MODES.endless then
if _premode then
if _remainingdaysinseason:value() > 1 then
--Progress pre endless season
_remainingdaysinseason:set(_remainingdaysinseason:value() - 1)
else
--Advance to endless season
_season:set(GetNextSeason())
_totaldaysinseason:set(ENDLESS_RAMP_DAYS * 2)
_elapseddaysinseason:set(0)
_remainingdaysinseason:set(_totaldaysinseason:value())
_endlessdaysinseason:set(true)
_premode = false
--冬季每次+5天
lxjishuqi = lxjishuqi+1
TheWorld:PushEvent("ms_setseasonlength", {season = "winter", length = 15 + 5 * lxjishuqi})
--local data1 = {}
--data1.season = 2
--data1.length = _lengths["winter"] + 5
--OnSetSeasonLength(data1,data1)
--_lengths["winter"]:set(50)
--UpdateSeasonMode()
end
elseif _remainingdaysinseason:value() > ENDLESS_RAMP_DAYS then
--Progress to peak of endless season
_remainingdaysinseason:set(math.max(_remainingdaysinseason:value() - 1, ENDLESS_RAMP_DAYS))
end
else
return
end
PushSeasonClockSegs()
end or nil
2020年06月02日 06点06分 3
1