饥荒Mod 开发(十六):五格装备栏
饥荒游戏会自动保存,本来是一个好的机制,但是当角色死亡的时候存档会被删除,又要从头开始,有可能一不小心玩了很久的档就直接给整没了,又或者是打怪没爆好东西, 需要SL 大法。打怪之前手动保存一下,如果没有 掉落 有用的物品可以手动加载,一直到掉落有用的物品的时候。
手动保存
当我们按下 键盘 F5 的时候可以触发保存,在modmain.lua 增加下面代码
GLOBAL.TheInput:AddKeyHandler(function(key, down)if key == GLOBAL.KEY_F5 and not down thenGLOBAL.GetPlayer().components.autosaver:DoSave()end
end)
进入游戏之后,按下F5 按键即可手动保存
手动加载
按下F6键可以触发手动加载
GLOBAL.TheInput:AddKeyHandler(function(key, down)if key == GLOBAL.KEY_F5 and not down thenGLOBAL.GetPlayer().components.autosaver:DoSave()elseif key == GLOBAL.KEY_F6 and not down thenGLOBAL.Settings.save_slot = GLOBAL.SaveGameIndex.saveslotGLOBAL.SetPause(true)GLOBAL.StartNextInstance({reset_action=GLOBAL.RESET_ACTION.LOAD_SLOT, save_slot = GLOBAL.SaveGameIndex:GetCurrentSaveSlot()}, true)GLOBAL.SetPause(false) end
end)
死亡不删档
需要重写删档函数,当角色死亡的时候,重新加载游戏回到上一个存档。在modmain.lua 文件中添加下面代码
-- 重写全局的SaveIndex对象上方法 EraseCurrent
function GLOBAL.SaveIndex:EraseCurrent(cb)-- 获取当前的玩家,并在2秒后执行一个任务GLOBAL.GetPlayer():DoTaskInTime(2, function()-- 使前端界面进行淡出GLOBAL.TheFrontEnd:Fade(false,1)end )-- 获取当前的玩家,并在5秒后执行一个任务GLOBAL.GetPlayer():DoTaskInTime(5, function()-- 启动下一个实例,重置动作为加载存档,存档槽为当前的存档槽GLOBAL.StartNextInstance({reset_action=GLOBAL.RESET_ACTION.LOAD_SLOT, save_slot = GLOBAL.SaveGameIndex:GetCurrentSaveSlot()}, true)end )
end
上面代码添加完成之后角色就会无限重生,每次死亡都会回到上一次的存档。