饥荒联机版Mod开发——制作栏(九)

前言

物品栏的API是写在modmain.lua里的,基本上就一行代码。不过在使用前先加上下面这行代码,实现一键GLOBAL,直接用XXX来访问GLOBAL.XXX。

GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end})

添加物品到制作栏

--写法参考:recipes.lua,直接把Recipe2(...)的那堆参数copy过来用就行,参数是对应的

--添加配方,默认添加在MODS过滤器中
--name: 预设物名,自定义预设物需要配置config中的atlas

--ingredients:{Ingredient(...),Ingredient(...)} Ingredient定义在在recipe.lua
--Ingredient(prefab, amount, atlas=nil, deconstruct=false, imageoverride=nil)
--当材料是自定义prefab时,指定atlas为材料物品栏贴图即可, "images/inventoryimages/yyy.xml" 

--tech:TECH.NONE TECH.SCIENCE_ONE TECH.SCIENCE_TWO,看constants.lua中的TECH表
--[[ 
config={
	builder_tag = {"wilson"},	--建筑者需要的tag,一般用于专属配方
	atlas = "images/inventoryimages/xxx.xml", 	--自定义预设物需要指定贴图
	image = "xxx.tex",	--不填就默认是参数 name..".tex"
	--其他参数如:build_distance,min_spacing,nounlock等建筑解锁相关的
}  
--看recipe.lua中Recipe2的config参数]]
--filters = {"TOOLS", "LIGHT"},recipes_filter.lua中CRAFTING_FILTER_DEFS的name
AddRecipe2(name, ingredients, tech, config=nil, filters=nil)

--添加角色专属配方
--在建筑者标签是必须的,记得在你人物的预设物中添加这个标签
--config={builder_tag = ""}
--extra_filters:除角色过滤器外的过滤器名,如{"TOOLS", "LIGHT"}
AddCharacterRecipe(name, ingredients, tech, config, extra_filters=nil)

例子:添加自定义预设物到MODS过滤器

--modmain.lua
GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end})	

PrefabFiles = {
	"xxx",
}
--[[
xxx.lua 预设物中记得加载贴图
local assets = {
	Asset( "IMAGE", "images/inventoryimages/xxx.tex" ),	
	Asset( "ATLAS", "images/inventoryimages/xxx.xml" ),
}
--]]
AddRecipe2("xxx", {Ingredient("cutgrass", 2), Ingredient("ice", 1)},
 TECH.NONE, {atlas = "images/inventoryimages/xxx.xml"})

添加分解配方

--recipes.lua,直接把DeconstructRecipe(...)的那堆参数copy过来用就行,参数是对应的
--name和ingredients参数同上
AddDeconstructRecipe(name, ingredients)

自定义制作栏过滤器

--[[
filter_def = {	--参考recipes_filter.lua中的CRAFTING_FILTER_DEFS的写法
	name = "MYFILTER",	--独一无二的过滤器名
	atlas = "images/myfilter.xml",	--原始贴图54x54像素,64x64的也会默认缩放成54x54
	image = "myfilter.tex",
	--下面是可选参数
	--image_size = 80,  --表示缩放到80x80像素	
	--custom_pos = true,  --表示不添加在下面的网格中,如FAVORITES(收藏夹)
}
--]]
--index:插入表的位置,默认是插在最后面
同时要在modmain.lua中设置鼠标悬浮时的文字
STRINGS.UI.CRAFTING_FILTERS[filter_def.name] = "Hover Text"

AddRecipeFilter(filter_def, index=#CRAFTING_FILTER_DEFS+1)

--从过滤器中添加/删除配方
--recipe_name:Recipe2及AddRecipe2中的name
--filter_name:filter_def中的name,及recipes_filter.lua中CRAFTING_FILTER_DEFS的name
AddRecipeToFilter(recipe_name, filter_name)
RemoveRecipeFromFilter(recipe_name, filter_name)

例子:

--modmain.lua
GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end})		

--加载必须的贴图资源
Assets = {
    Asset( "IMAGE", "images/myfilter.tex" ),	--64x64像素即可
	Asset( "ATLAS", "images/myfilter.xml" ),
}

--添加悬浮文字
STRINGS.UI.CRAFTING_FILTERS["myfilter"] = "Hover Text"
--自定义过滤器
AddRecipeFilter({
	name = "MYFILTER",	--独一无二的过滤器名
	atlas = "images/myfilter.xml",	--原始贴图54x54像素,64x64的也会默认缩放成54x54
	image = "myfilter.tex",
	--下面是可选参数
	--image_size = 80,  --表示缩放到80x80像素	
	--custom_pos = true,  --表示不添加在下面的网格中,如FAVORITES(收藏夹)
})
--添加配方到过滤器
AddRecipeToFilter("tophat", "MYFILTER")
AddRecipe2("waterballoon",{Ingredient("cutgrass", 2), Ingredient("ice", 1)},  
TECH.NONE, nil, {"MYFILTER"})

在这里插入图片描述

配方后初始化

--fn参数:self,对应recipe中的Recipe类的对象
AddRecipePostInitAny(fn)
AddRecipePostInit(recipe_name, fn)

传送门

→饥荒联机版Mod开发——两种帽子(十)
←饥荒联机版Mod开发——常用inst方法(八)

### 自制 MOD 教程及相关工具资源 #### 制作 Transport Fever 的 MOD Transport Fever 是一款高度自由的交通模拟类游戏,其 MOD 开发需求较高。为了制作该游戏的 MOD开发者通常需要掌握以下技能和工具: - **建模软件**:熟练使用 3D 建模工具(如 3ds Max 或 Maya),用于创建车辆、建筑或其他物体的三维模型[^1]。 - **图像处理**:利用 Photoshop 等图形设计工具来绘制纹理贴图和其他视觉素材。 - **编程基础**:了解游戏脚本语言的基础语法以及如何修改现有代码逻辑以实现新的功能或行为。 以下是简单的流程概述: ```python # 示例伪代码展示如何加载自定义资产到游戏中 def load_custom_asset(asset_path, game_engine): asset_data = parse_file(asset_path) # 解析外部文件数据 validate_model(asset_data) # 验证模型结构是否正确 integrate_into_game(game_engine, asset_data) # 将新内容加入引擎运行环境中 def main(): custom_vehicle = "path/to/my_new_train.obj" transport_fever_engine = initialize_game() load_custom_asset(custom_vehicle, transport_fever_engine) if __name__ == "__main__": main() ``` --- #### Don’t Starve Together (饥荒联机) MOD 制作 对于《饥荒》系列而言,官方提供了专用的开发套件——“Don't Starve Mod Tools”。此工具包简化了许多复杂过程,并允许创作者轻松导入图片与动画序列作为角色特性的一部分[^2]。 具体操作如下: 1. 安装 Steam 上发布的 “Don't Starve Mod Tools” 应用程序; 2. 编辑 XML 文件配置项指定所需材质路径; 3. 运用 Lua 脚本来控制实体交互动作; 下面是一段示例代码片段说明如何设置精灵帧数切换效果: ```lua local function createSpriteAnimation(spriteName, framesCount) local animData = {} -- 初始化每一帧的时间间隔参数 for i=1,framesCount do table.insert(animData,{image=spriteName..tostring(i)..".png", time=i*0.1}) end return animData end -- 主函数调用部分 function initCharacterAnimations(characterID) local walkAnim = createSpriteAnimation("walk_",8) set_character_animation_sequence(characterID,"walking",walkAnim) end ``` --- #### Nintendo Switch 游戏开发辅助 —— Switch-Toolbox Switch-Toolbox 是针对任天堂主机平台的一款综合性开源解决方案集合体。它不仅限于单一领域应用,在多个方面均表现出色,比如但不限于以下几个亮点特色[^3]: - 支持多款设备间的数据交换共享服务; - 提供详尽的技术手册指导新手入门学习曲线平缓化; - 社区成员积极贡献补丁修复已知漏洞保持长期稳定性。 实际案例演示提取某 NS ROM 中嵌入音频片段方法论: ```bash #!/bin/bash # 批量导出所有 BGM 曲目至单独目录下保存 switch_toolbox extract-audio-archive input.nsp output_folder/ ls -lR ./output_folder | grep ".wav$" ``` ---
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值