饥荒Mod 开发(十五):小地图显示物品
饥荒Mod 开发(十七):手动保存和加载,无限重生
源码
饥荒中的装备栏只有3个实在太少了,手,头,身体。 身体上装备的物品会有冲突,很多不能一起装备,比如 衣服,项链,背包等。 而这三种物品又有自己不同的功能,所以急需扩展饥荒的装备栏,让游戏更丰富。
下图是饥荒目前的装备栏。
修改之后的效果图
准备贴图
这个png图片中包含了两个装备栏贴图,可以打开slots5.xml文件看到里面定义了两个。
加载资源文件
在modmian.lua 文件中加载资源
Assets =
{
Asset("IMAGE", "images/inventoryimages/slots5.tex"),
Asset("ATLAS", "images/inventoryimages/slots5.xml"),
}
注入装备槽创建
默认情况下 装备槽只有3个,我们需要在主界面创建的过程中额外多创建2个槽。所以需要拦截 界面的创建
-- 增加两个物品栏
GLOBAL.EQUIPSLOTS.BACK = "back" -- 定义背包插槽
GLOBAL.EQUIPSLOTS.NECK = "neck" -- 定义项链插槽
-- 对"playerhud"类进行后构造
AddClassPostConstruct("screens/playerhud", function(self)
-- 保存原始的SetMainCharacter函数
local oldfn = self.SetMainCharacter
-- 重写SetMainCharacter函数
function self:SetMainCharacter(maincharacter,...)
-- 调用原始的SetMainCharacter函数
oldfn(self, maincharacter,...)
-- 检查是否可以注入
if not(self.controls and self.controls.inv) then
print("ERROR: Can't inject in screens/playerhud.")
return
end
-- 添加背包插槽
self.controls.inv:AddEquipSlot(GLOBAL.EQUIPSLOTS.BACK, "images/inventoryimages/slots5.xml", "back.tex"