_Yue_Yue_ Posted February 6, 2022 Share Posted February 6, 2022 (edited) -- 在 modinfo.lua 中 game_modes = { { name = "OceanFishing", label = "海钓", description = "海钓的自定义模式", settings = { text = "", description = "", --level_type = "CAVE", --level_type = "SURVIVAL", level_type = "oceanfishing", mod_game_mode = true, --产卵模式 spawn_mode = "fixed",--固定 --资源更新 resource_renewal = false, --鬼魂队友是否影响理智 ghost_sanity_drain = false, --死亡生成鬼魂,不然就直接重选人物了 ghost_enabled = true, --大门是否可以复活 portal_rez = true, --重置时间 reset_time = nil, --配方在游戏模式下有效吗 invalid_recipes = nil, -- 无科技 -- no_crafting = true, -- 无小地图 -- no_minimap = true, -- 没有饥饿 -- no_hunger = true, -- -- 没有理智 -- no_sanity = true, -- 没有头像弹出窗口,点尸体不会出现死亡小卡片 -- no_avatar_popup = true, -- 尸体没有记录, -- no_morgue_record = true, -- -- 大厅等待所有玩家 -- lobbywaitforallplayers = true, -- -- 隐藏worldgen加载屏幕 -- hide_worldgen_loading_screen = true, -- -- 隐藏你收到的礼物 -- hide_received_gifts = false, }, } } -- 在 modworldgenmain.lua 中 GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end}) -- 大部分是借鉴熔炉mod https://steamcommunity.com/sharedfiles/filedetails/?id=1938752683 --世界设置部分 --自定义起始位置 AddStartLocation("cs_sl", { name = "测试起始地", location = "forest", --起始布局 start_setpeice = "DefaultStart1", --房间 start_node = "Blank", }) --生物群落设置 AddTaskSet("cs_sz2", { name = "海岛", location = "forest",-- 森林地图 tasks = { "Make a pick", }, valid_start_tasks = nil, ocean_prefill_setpieces = { }, -- 海洋房间 ocean_population = { "OceanCoastalShore", }, }) --预设 AddLevel("oceanfishing", { id = "CS_ZDY_YS1", name = "默认预设", desc = "默认【海岛】,默认修改出生点", location = "forest", version = 4, overrides={ start_location = "cs_sl", season_start = "default", world_size = "default", task_set = "cs_sz2", layout_mode = "LinkNodesByKeys", wormhole_prefab = "wormhole", roads = "never", birds = "never", keep_disconnected_tiles = true, no_wormholes_to_disconnected_tiles = true, no_joining_islands = true, has_ocean = true, }, background_node_range = {0,1}, }) --前端部分 local IsTheFrontEnd = rawget(_G, "TheFrontEnd") local ModsTab = require("widgets/redux/modstab") local WorldSettingsTab = require("widgets/redux/worldsettings/worldsettingstab") local _OnConfirmEnable = ModsTab.OnConfirmEnable local _Cancel = ModsTab.Cancel local _Refresh = WorldSettingsTab.Refresh local function Reset(screen, modname) if screen and screen.server_settings_tab then local fancy_name = modname and KnownModIndex:GetModFancyName(modname) or nil --如果有人禁用了我们的mod或卸载了所有mod(无)。 if modname == nil or fancy_name == modinfo.name then -- 更改回默认的模式 即生存 screen.server_settings_tab.game_mode.spinner:Enable() screen.server_settings_tab.game_mode.spinner:SetOptions(GetGameModesSpinnerData(ModManager:GetEnabledServerModNames())) screen.server_settings_tab.game_mode.spinner:SetSelectedIndex(1) screen.server_settings_tab.game_mode.spinner:Changed() -- 重新打开洞穴选项 screen.world_tabs[2].isnewshard = true for i, v in pairs(screen.world_tabs[1].worldsettings_widgets) do v:LoadPreset() --重新载入预设 end end end end --卸下mod时会执行 ModsTab.OnConfirmEnable = function(self, restart, modname) local CurrentScreen = TheFrontEnd:GetActiveScreen() Reset(CurrentScreen, modname) _OnConfirmEnable(self, restart, modname) end -- 返回退出创建世界时执行 ModsTab.Cancel = function(self) local CurrentScreen = TheFrontEnd:GetActiveScreen() Reset(CurrentScreen, modname) _Cancel(self) end -- 刷新时,有问题,会解锁存档的世界生存选项。我也没办法,暂时不能找到客户端读取有这个mod的存档时,洞穴依旧可以添加,而导致崩 WorldSettingsTab.Refresh = function(self) -- 不让客户端显示添加洞穴 self.isnewshard = self.location_index == 1 and true or false return _Refresh(self) end --设置mod关闭时执行 local old_FrontendUnloadMod = ModManager.FrontendUnloadMod ModManager.FrontendUnloadMod = function(self, modname) old_FrontendUnloadMod(self, modname) local CurrentScreen = TheFrontEnd:GetActiveScreen() if CurrentScreen and CurrentScreen.server_settings_tab then local fancy_name = modname and KnownModIndex:GetModFancyName(modname) or nil --如果有人禁用了我们的mod或卸载了所有mod(无)。 if modname == nil or fancy_name == modinfo.name then --恢复原来的 ModsTab.OnConfirmEnable = _OnConfirmEnable ModsTab.Cancel = _Cancel ModManager.FrontendUnloadMod = old_FrontendUnloadMod WorldSettingsTab.Refresh = _Refresh end end end if IsTheFrontEnd then local CurrentScreen = TheFrontEnd:GetActiveScre() --获取活动屏幕ServerSlotScreen文档界面ServerCreationScreen具体档/新档 --server_settings_tab服务器设置选项卡game_mode游戏模式启用 如果CurrentScreen和CurrentScreen.server_settings_tab和CurrentScreen.server_settings_tab.game_mode。 spinner.enabled then --从mod中添加数据模式,并设置 uiCurrentScreen.server_settings_tab.game_mode.spinner:SetOptions(GetGameModesSpinnerData(ModManager:GetEnabledServerModNames())) --选择,有选择 CurrentScreen.server_settings_tab .game_mode.spinner:SetSelected("OceanFishing") --改变 CurrentScreen.server_settings_tab.game_mode.spinner:Changed() -- 锁定值 CurrentScreen.server_settings_tab.game_mode.spinner:Disable() -- 主是显示 --world_tabs第一个世界的设置(最多支持2个) worldsettings_widgets世界设置(1世界选项、2世界生成) settingslist设置列表scroll_list滚动列表widgets_to_update网格表opt_spinner选择器 local scroll_list = CurrentScreen.world_tabs[1].worldsettings_widgets[2].settingslist.scroll_list -- 生物群落 scroll_list.widgets_to_update [10].opt_spinner.spinner:SetSelected("cs_sz2") scroll_list.widgets_to_update[10].opt_spinner.spinner:Changed() -- 设置出生点 scroll_list.widgets_to_update[11].opt_spinner.spinner:SetSelected("cs_sl") scroll_list.widgets_to_update[11].opt_spinner.spinner:Changed() -- 重新加载一次预设 for i, v in pairs(CurrentScreen.world_tabs[1].worldsettings_widgets) do v:LoadPreset() -- 重新加载预设 end end end 我的英语不是很好。我不知道怎么翻译 我英语不好,不知道怎么才翻译好 Edited February 6, 2022 by _Yue_Yue_ Link to comment https://forums.kleientertainment.com/forums/topic/137373-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%BC%8F%E5%8F%8A%E5%AE%A2%E6%88%B7%E7%AB%AF/ Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now