项目介绍
“魔法工坊"是一个为《饥荒联机版》开发的模组,主要提供多种超模魔法物品,让游戏生存变得更加轻松。本文将详细介绍该模组的开发过程、使用的游戏API以及资源引入方法。
模组功能
目前模组包含两个主要物品:
1. 魔法背包
特性:
- 2x6格大容量布局
- 提供持续照明效果(半径6,亮度0.9)
- 120点保温和防暑效果
- 100%防水效果
- 每5秒恢复5点生命值、3点饥饿值和5点精神值
- 物品永久保鲜,防止腐烂
- 装备时自动打开背包
制作材料:
2. 创世工具
特性:
- 集成所有工具功能:斧子、锤子、铲子、镐子、钓鱼竿、捕虫网
- 2倍采集效率
- 68点武器伤害
- 提供50%伤害减免(相当于50点护甲)
- 1.5倍移动速度
- 999点耐久度(耗尽后消失)
- 装备时提供照明效果(半径8,亮度0.9)
- 2格武器攻击范围
技术实现
项目结构
饥荒模组的标准结构如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| modmain.lua -- 模组入口文件
modinfo.lua -- 模组信息文件
scripts/
├── prefabs/ -- 预制体定义
│ ├── mofabackpack.lua
│ └── csstool.lua
└── components/ -- 自定义组件
anim/ -- 动画文件
├── mofabackpack.zip
└── swap_csstool.zip
images/ -- 图标文件
├── mofabackpack.tex
├── mofabackpack.xml
├── csstool.tex
└── csstool.xml
|
使用的游戏API
1. 物品注册API
1
2
3
4
5
6
7
8
9
| -- 在modmain.lua中注册预制体
PrefabFiles = {
"mofabackpack",
"csstool",
}
-- 添加小地图图标
AddMinimapAtlas("images/mofabackpack.xml")
AddMinimapAtlas("images/csstool.xml")
|
2. 物品属性API
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| -- 背包容器API
inst:AddComponent("container")
inst.components.container:SetNumSlots(12)
inst.components.container.widgetslotpos = SLOTPOS
inst.components.container.widgetanimbank = "ui_backpack_2x6"
inst.components.container.widgetanimbuild = "ui_backpack_2x6"
-- 光源API
inst:AddComponent("lightsource")
inst.components.lightsource:SetRadius(6)
inst.components.lightsource:SetIntensity(0.9)
inst.components.lightsource:SetFalloff(0.5)
inst.components.lightsource:SetColour(180/255, 195/255, 225/255)
inst.components.lightsource:Enable(true)
-- 保鲜API
inst:AddComponent("preserver")
inst.components.preserver:SetPerishRateMultiplier(0)
|
3. 工具功能API
1
2
3
4
5
6
7
8
9
10
11
| -- 工具API
inst:AddComponent("tool")
inst.components.tool:SetAction(ACTIONS.CHOP, 2) -- 2倍砍树效率
inst.components.tool:SetAction(ACTIONS.MINE, 2) -- 2倍挖矿效率
inst.components.tool:SetAction(ACTIONS.HAMMER, 2) -- 2倍锤击效率
inst.components.tool:SetAction(ACTIONS.DIG, 2) -- 2倍挖掘效率
-- 武器API
inst:AddComponent("weapon")
inst.components.weapon:SetDamage(68)
inst.components.weapon:SetRange(2)
|
4. 装备效果API
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| -- 装备API
inst:AddComponent("equippable")
inst.components.equippable.equipslot = EQUIPSLOTS.BODY
inst.components.equippable.walkspeedmult = 1.5 -- 移动速度提升
-- 装备时的事件监听
inst.components.equippable:SetOnEquip(onequip)
inst.components.equippable:SetOnUnequip(onunequip)
-- 保暖/防暑API
inst:AddComponent("insulator")
inst.components.insulator:SetInsulation(120)
inst.components.insulator:SetSummer()
inst.components.insulator:SetWinter()
|
5. 制作配方API
1
2
3
4
5
6
7
8
9
10
11
12
| -- 在modmain.lua中添加制作配方
local mofabackpack = Recipe("mofabackpack",
{
Ingredient("silk", 6), -- 蜘蛛丝
Ingredient("bluegem", 2), -- 蓝宝石
Ingredient("redgem", 2), -- 红宝石
},
RECIPETABS.SURVIVAL, -- 在生存栏制作
TECH.SCIENCE_TWO, -- 需要科学机器
nil, nil, nil, nil, nil,
"images/mofabackpack.xml") -- 制作图标
mofabackpack.atlas = "images/mofabackpack.xml"
|
资源创建与引入
1. 贴图创建
饥荒模组的贴图需要两个文件:
.tex
文件:实际的贴图文件.xml
文件:Atlas文件,定义贴图的UV坐标
创建贴图的步骤:
- 使用图像编辑软件(如Photoshop)创建PNG图像
- 使用Klei的TEXTool工具将PNG转换为TEX格式
- 使用Klei的Atlas工具生成XML文件
1
2
| # 转换命令示例
TEXTool.exe mofabackpack.png mofabackpack.tex
|
2. 动画文件创建
动画文件需要使用Spriter软件创建,然后导出为饥荒可用的格式:
- 在Spriter中创建角色动画
- 导出为SCML格式
- 使用Klei的SCML工具转换为饥荒的动画格式(.zip和.bin文件)
1
2
| # 转换命令示例
ktech.exe --atlas mofabackpack.scml
|
3. 资源引入
在模组代码中引入资源的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
| -- 在预制体定义中引入资源
local assets = {
Asset("ANIM", "anim/mofabackpack.zip"),
Asset("ANIM", "anim/ui_backpack_2x6.zip"),
Asset("ATLAS", "images/mofabackpack.xml"),
Asset("IMAGE", "images/mofabackpack.tex"),
}
-- 在装备时切换角色动画
function onequip(inst, owner)
owner.AnimState:OverrideSymbol("swap_body", "swap_mofabackpack", "backpack")
owner.AnimState:OverrideSymbol("swap_body", "swap_mofabackpack", "swap_body")
end
|
模组扩展方法
要添加新物品到模组中,需要以下步骤:
在 scripts/prefabs
目录下创建新的物品脚本文件
在 modmain.lua
中添加新物品的注册信息:
- 添加预制体名称到
PrefabFiles
表中 - 添加小地图图标(如需要)
- 添加物品名称和描述的本地化
- 添加物品的制作配方
创建必要的资源文件:
- 动画文件:
anim/物品名.zip
(地面显示)和 anim/swap_物品名.zip
(装备时显示) - 图标文件:
images/物品名.xml
(Atlas文件)和 images/物品名.tex
(贴图文件)
总结
“魔法工坊"模组通过饥荒的Lua API实现了强大的游戏物品,包括多功能背包和全能工具。开发过程涉及到物品属性设置、装备效果、容器系统、光照系统等多种游戏机制的使用。
模组开发需要了解饥荒的API体系和资源格式,包括贴图创建、动画制作和代码编写。通过合理组织项目结构和资源文件,可以创建出功能丰富、体验良好的游戏模组。
未来计划添加更多魔法物品,进一步丰富模组内容,为玩家提供更多有趣的游戏体验。