ModAPI

您所在的位置:网站首页 饥荒联机常用模组下载教程 ModAPI

ModAPI

#ModAPI| 来源: 网络整理| 查看: 265

ModAPI-ModUtil

本文的函数定义在游戏脚本跟目录下的modutil.lua,是一系列适用于Mod环境的API,它们是klei专门提供给Mod开发者的,在Mod环境内不需要引用全局变量即可使用。这些API作用非常丰富,掌握好了可以让你的Mod开发水平更上一层楼。

API列表¶

其中可用范围的含义,全部是指可以在modmain和modworldgenmain中使用。

函数名 输入参数 作用 分类 可用范围 已解析 GetModConfigData optionname, get_local_config 获取模组配置数据 Mod系统 全部 否 ReloadFrontEndAssets (无参数) 重新加载前端资源 Mod系统 全部 否 ReloadPreloadAssets (无参数) 重新加载预加载资源 Mod系统 全部 否 AddGameMode game_mode, game_mode_text [已废弃]添加游戏模式。此功能转移到了modinfo中进行定义 地图 全部 否 AddLevel arg1, arg2, ... 添加level 地图 全部 否 AddLevelPreInit levelid, fn 修改level 地图 全部 否 AddLevelPreInitAny fn 修改全部level 地图 全部 否 AddLocation arg1, ... 添加location 地图 全部 否 AddRoom arg1, ... 添加room 地图 全部 否 AddRoomPreInit roomname, fn 修改room 地图 全部 否 AddStartLocation arg1, ... 添加startlocation 地图 全部 否 AddTask arg1, ... 添加task 地图 全部 否 AddTaskPreInit taskname, fn 修改task 地图 全部 否 AddTaskSet arg1, ... 添加taskset 地图 全部 否 AddTaskSetPreInit tasksetname, fn 修改taskset 地图 全部 否 AddTaskSetPreInitAny fn 修改全部taskset 地图 全部 否 AddCustomizeGroup category, name, text, desc, atlas, order 添加自定义分组 建房UI 全部 否 AddCustomizeItem category, group, name, itemsettings 添加自定义项目 建房UI 全部 否 GetCustomizeDescription description 获取自定义描述 建房UI 全部 否 RemoveCustomizeGroup category, name 删除自定义分组 建房UI 全部 否 RemoveCustomizeItem category, name 删除自定义项目 建房UI 全部 否 AddClassPostConstruct package, fn [猜测]与类修改有关,常用于UI组件修改 其它 全部 否 AddGamePostInit fn [猜测]添加游戏后初始化函数,较少用到 其它 全部 否 AddGlobalClassPostConstruct package, classname, fn [猜测]与类修改有关,可指定单个类,常用于UI组件修改 其它 全部 否 AddSimPostInit fn [猜测]添加模拟后初始化函数,较少用到 其它 全部 否 AddBrainPostInit brain, fn 修改brain AI 仅modmain 否 AddLoadingTip stringtable, id, tipstring, controltipdata 添加加载提示 Mod系统 仅modmain 否 AddModCharacter name, gender, modes 添加Mod角色 Mod系统 仅modmain 否 RegisterInventoryItemAtlas atlas, prefabname 注册物品栏物品图集 Mod系统 仅modmain 否 RemoveDefaultCharacter name 移除默认角色 Mod系统 仅modmain 否 RemoveLoadingTip stringtable, id 移除加载提示 Mod系统 仅modmain 否 SetLoadingTipCategoryIcon category, categoryatlas, categoryicon 设置加载提示类别图标 Mod系统 仅modmain 否 SetLoadingTipCategoryWeights weighttable, weightdata 设置加载提示类别权重 Mod系统 仅modmain 否 AddStategraphActionHandler stategraph, handler 给指定sg添加ActionHandler SG 仅modmain 否 AddStategraphEvent stategraph, event 给指定sg添加Event SG 仅modmain 否 AddStategraphPostInit stategraph, fn 修改指定sg SG 仅modmain 否 AddStategraphState stategraph, state 给指定sg添加state SG 仅modmain 否 AddAction id, str, fn 添加动作 动作 仅modmain 否 AddComponentAction actiontype, component, fn 添加组件动作 动作 仅modmain 否 AddComponentPostInit component, fn 修改指定组件 基础修改 仅modmain 否 AddPlayerPostInit fn 修改玩家 基础修改 仅modmain 否 AddPrefabPostInit prefab, fn 修改指定prefab 基础修改 仅modmain 否 AddPrefabPostInitAny fn 修改任意Prefab 基础修改 仅modmain 否 AddPopup id 添加弹窗,未知用途 其它 仅modmain 否 AddUserCommand command_name, data 添加用户命令 其它 仅modmain 否 AddVoteCommand command_name, init_options_fn, process_result_fn, vote_timeout 添加投票命令 其它 仅modmain 否 ExcludeClothingSymbolForModCharacter name, symbol 为模组角色排除服装符号 其它 仅modmain 否 LoadPOFile path, lang 加载翻译文件 其它 仅modmain 否 SetModHUDFocus focusid, hasfocus 设置ModHUD焦点 其它 仅modmain 否 AddModShadersInit fn 添加shader初始化函数 特效 仅modmain 否 AddModShadersSortAndEnable fn 添加shader排序和启用函数 特效 仅modmain 否 AddClientModRPCHandler namespace, name, fn 添加客户端ModRPCHandler 网络 仅modmain 否 AddModRPCHandler namespace, name, fn 添加ModRPCHandler 网络 仅modmain 否 AddReplicableComponent name 添加replica 网络 仅modmain 否 AddShardModRPCHandler namespace, name, fn 添加分片ModRPCHandler 网络 仅modmain 否 GetClientModRPC namespace, name 获取客户端ModRPC 网络 仅modmain 否 GetClientModRPCHandler namespace, name 获取客户端ModRPCHandler 网络 仅modmain 否 GetModRPC namespace, name 获取ModRPC 网络 仅modmain 否 GetModRPCHandler namespace, name 获取ModRPCHandler 网络 仅modmain 否 GetShardModRPC namespace, name 获取分片ModRPC 网络 仅modmain 否 GetShardModRPCHandler namespace, name 获取分片ModRPCHandler 网络 仅modmain 否 SendModRPCToClient id_table, ... 向客户端ModRPC 网络 仅modmain 否 SendModRPCToServer id_table, ... 向主机端发送ModRPC 网络 仅modmain 否 SendModRPCToShard id_table, ... 向分片发送ModRPC 网络 仅modmain 否 RemapSoundEvent name, new_name 重映射声音事件 音效 仅modmain 否 RemoveRemapSoundEvent name 移除重映射声音事件 音效 仅modmain 否 AddMinimapAtlas atlaspath 添加小地图图标 游戏UI 仅modmain 否 AddCharacterRecipe name, ingredients, tech, config, extra_filters 添加角色专属制作配方 制作 仅modmain 是 AddCookerRecipe cooker, recipe 添加烹饪配方 烹饪 仅modmain 否 AddDeconstructRecipe name, return_ingredients 添加拆解配方 制作 仅modmain 否 AddIngredientValues names, tags, cancook, candry 添加食材属性值(批量修改) 烹饪 仅modmain 否 AddPrototyperDef prototyper_prefab, data [待测试]添加原型制作器定义 制作 仅modmain 否 AddRecipe arg1, ... [已废弃]添加新制作配方 制作 仅modmain 是 AddRecipe2 name, ingredients, tech, config, filters 添加新制作配方 制作 仅modmain 是 AddRecipeFilter filter_def, index 添加制作配方分类过滤器 制作 仅modmain 是 AddRecipePostInit recipename, fn 修改指定制作配方 制作 仅modmain 否 AddRecipePostInitAny fn 修改任意制作配方 制作 仅modmain 否 AddRecipeTab rec_str, rec_sort, rec_atlas, rec_icon, rec_owner_tag, rec_crafting_station [已废弃]添加制作栏分类 制作 仅modmain 是 AddRecipeToFilter recipe_name, filter_name 将制作配方添加到分类过滤器 制作 仅modmain 是 Recipe ... [已废弃]创建配方 制作 仅modmain 是 RemoveRecipeFromFilter recipe_name, filter_name 从过滤器中移除制作配方 制作 仅modmain 是 物品制作¶ AddRecipe2¶

作用: 添加一个新的制作配方

参数

name (string): 配方的名称。 ingredients (table): 配方所需的原料列表。 tech (string): 解锁该配方所需的科技名称。 (可选)config (table): 一个可选的配置表,包含以下字段: (可选)placer(string): 放置物 prefab,用于显示一个建筑的临时放置物,在放下建筑后就会消失。 (可选)min_spacing (num): 建造物的最小间距。 (可选)nounlock (bool): 如果为 false,只能在对应的科技建筑旁制作。否则在初次解锁后,就可以在任意地点制作。 (可选)numtogive (num): 制作成功后,玩家将获得的物品数量。 (可选)builder_tag (string): 要求具备的制作者标签。如果人物没有此标签,便无法制作物品,可以用于人物的专属物品。 (必须)atlas (string): 物品图标所在的 atlas 文件路径,用于制作栏显示图片,其实不填也行,但图标会是空的。 (可选)image (string): 物品图标的文件名,其实 atlas 中已包含,不必再填。 (可选)testfn (function): 放置时的检测函数,比如有些建筑对地形有特殊要求,可以使用此函数检测。 (可选)product (string): 产出物,表示制作成功后产生的物品。默认 (可选)build_mode (string): 建造模式,必须使用常量表BUILDMODE,形如BUILDMODE.LAND,具体取值为无限制(NONE)、地上(LAND)和水上(WATER)。 (可选)build_distance (num): 建造距离,表示玩家与建筑之间的最大距离。 (可选)filters (table): 一个可选的过滤器列表,包含要将配方添加到的过滤器名称。

代码示例

-- 文件: modmain.lua local recipe_name = "lotus_umbrella" -- 配方唯一名称,不可重复,通常用prefab名 local ingredients = {Ingredient("cutgrass", 1), Ingredient("twigs", 1)} -- 原料表 local tech = TECH.NONE -- 所需科技,必须使用常量表TECH的值 local config = { atlas = "images/inventoryimages/lotus_umbrella.xml", } AddRecipe2(recipe_name, ingredients, tech, config) STRINGS.RECIPE_DESC.LOTUS_UMBRELLA = "荷叶做的雨伞" -- 制作栏描述 AddCharacterRecipe¶

作用: 添加角色专属制作配方。实际上参数和作用都和AddRecipe2一样,专属体现在config中的builder_tag

参数 - name (string): 配方的名称。 - ingredients (table): 配方所需的原料列表。 - tech (string): 解锁该配方所需的科技名称。 - (可选) config (table): 一个可选的配置表,同AddRecipe2 - (可选) filters (table): 一个可选的过滤器列表,包含要将配方添加到的额外过滤器名称。

返回值:

rec (Recipe2): 创建的 Recipe2 对象。

代码示例

-- 创建一个角色专属配方,只有可读书的人才能使用 local config2 = { atlas = "images/inventoryimages/lotus_umbrella.xml", builder_tag = "reader", product = "lotus_umbrella", -- 当recipe名不是prefab名时,需要显式指定 } AddCharacterRecipe("lotus_umbrella_few", {Ingredient("cutgrass", 1)}, TECH.NONE, config2, {"SAMANSHA"}) AddRecipeFilter¶

作用: 添加一个新的配方过滤器。

参数

filter_def (table): 过滤器定义,包括以下字段: name (string): 过滤器的ID。主要用于两处,一是 STRINGS.UI.CRAFTING_FILTERS[name]。赋值给出在UI界面上显示的过滤器名字,二是在其它API使用过滤器作为参数时用于指代,请参考示例代码。 atlas (string 或 function): 图标的图集,可以是字符串或函数。 image (string 或 function): 显示在制作菜单中的图标,可以是字符串或函数。 (可选) image_size (table): 自定义图像尺寸,默认64。 (可选) custom_pos (table): 自定义的过滤器位置,默认为false。 如果为 true,则过滤器图标不会被添加到网格中,而是把这个分类下的物品都放在mod物品分类下。 recipes (table): 不支持此字段! 请创建过滤器后,将过滤器传递给 AddRecipe2() 或 AddRecipeToFilter() 函数。 (可选) index (number): 插入过滤器定义的索引。如果提供,将在指定索引处插入过滤器定义;否则,将过滤器定义添加到列表末尾。

代码示例

-- 加载资源 Assets = { Asset("ATLAS", "images/craft_samansha_icon.xml"), } -- 定义一个新的过滤器对象 local filter_samansha_def = { name = "SAMANSHA", atlas = "images/craft_samansha_icon.xml", image = "craft_samansha_icon.tex" } -- 添加自定义过滤器 AddRecipeFilter(filter_samansha_def, 1) STRINGS.UI.CRAFTING_FILTERS.SAMANSHA ="自定义过滤器" -- 制作栏中显示的名字 -- 创建一个配方,并将其添加到自定义过滤器中,注意用的是过滤器的name参数值 AddRecipe2("my_custom_recipe", ingredients, tech, config, {"SAMANSHA"}) AddRecipeToFilter¶

作用: 将配方添加到指定的过滤器中。

参数

recipe_name (string): 要添加的配方名称。 filter_name (string): 要添加配方的过滤器名称。

代码示例

-- 将荷叶伞放到「雨具」分类 AddRecipeToFilter("lotus_umbrella","RAIN") RemoveRecipeFromFilter¶

作用: 从指定的过滤器中移除配方。

参数

recipe_name (string): 要移除的配方名称。 filter_name (string): 要从中移除配方的过滤器名称。

代码示例

-- 将斧头移出「工具」分类 RemoveRecipeFromFilter("axe", "TOOLS") AddDeconstructRecipe¶

作用: 添加分解配方,不会在任何过滤器下出现,这只是供「分解法杖」或敲碎不可制作的物品而设计的。

参数

name (string): 要添加配方的prefab名。 return_ingredients (string): 返还的材料

代码示例

-- 分解斧头得到一个燧石 AddDeconstructRecipe("axe", {Ingredient("flint", 1)}) AddPrototyperDef¶

作用: 自定义原型机(研究或制作站)在制作菜单中的显示方式。光看这个名字有点难理解,其实原型机就是指科学机器、炼金机器、远古制作台这类东西,过年活动时的神龛也算此类。角色站在旁边时可以制作对应的物品 参数

prototyper_prefab (string): 用于原型机的prefab名 prototyper_def (table) icon_atlas (string): 图标文档 icon_image (string): 图标图片 action_str (string): 「建造」按钮显示的字符串,比如神龛显示的是「供奉」 is_crafting_station (bool): 是否是制作站,也就是是否只能在停留附近时才能制作对应物品 filter_text (string): 在过滤器上的名称

代码示例

local prototyper_prefab = "moon_altar" prototyper_def = { icon_atlas = "images/xxxx.xml", icon_image = "moon_altar.tex", is_crafting_station = true, action_str = "生产", filter_text = "月之产品“ }, AddPrototyperDef(prototyper_prefab, prototyper_def) AddRecipePostInit¶

作用: 修改指定的Recipe

参数

recipe (string): 要修改的recipe名 fn (function): 修改函数,传入参数为这个recipe对象

代码示例

local function fn(recipe) -- 修改制作栏描述 recipe.description = "适合砍树" end AddRecipePostInit("axe", fn) AddRecipePostInitAny¶

作用: 修改任意Recipe

参数

fn (function): 修改函数,传入参数为recipe对象。这个修改会对所有的recipe生效

代码示例

local function fn(recipe) -- 统一修改制作栏描述 local old_str = recipe.description recipe.description = "描述: " ... old_str end AddRecipePostInitAny(fn) 已废弃¶

以下API已废弃,不推荐在新的Mod制作中使用

AddRecipe 添加新制作配方 Recipe 创建配方 AddRecipeTab 添加制作栏分类 其它¶ AddUserCommand¶

作用: 向游戏中添加一个自定义用户命令。

参数

name (string): 命令的名称。 data (table): 命令的详细信息,包括以下字段: (可选) aliases (table): 命令的别名列表。 (可选) prettyname (string): 写在UI上的名称。 (可选) desc (string): 命令的描述。 permission (string): 命令所需的权限(如:COMMAND_PERMISSION.USER)。 (可选) slash (boolean): 是否在命令前加斜杠。 (可选) usermenu (boolean): 是否在用户菜单中显示命令。 (可选) servermenu (boolean): 是否在服务器菜单中显示命令。 (可选) params (table): 命令的参数列表。 (可选) paramsoptional (table): 参数是否可选的布尔值列表。 (可选) localfn (function): 本地函数,当命令被调用时执行。 (可选) serverfn (function): 服务器函数,当命令被调用时执行。 (可选)vote (boolean): 是否允许对此命令进行投票,默认为false。 (可选)votetimeout (number): 投票持续时间(秒)。 (可选)voteminstartage (number): 用户必须在服务器上待至少多少秒才能开始投票。 (可选)voteminpasscount (number): 投票通过所需的最小票数。 (可选)votecountvisible (boolean): 投票结果是否对玩家可见。 (可选)voteallownotvoted (boolean): 是否允许未投票的玩家看到投票结果。 (可选)voteoptions (table): 投票选项 (可选)votetitlefmt (string): 投票标题的格式 (可选)votenamefmt (string): 投票名称的格式 (可选)votepassedfmt (string): 投票通过后的显示信息 (可选)votecanstartfn (function): 检查投票是否可以开始的函数 (可选)voteresultfn (function): 根据投票结果执行相应操作的函数

代码示例

AddUserCommand("hello", { aliases = {"hi", "hey"}, prettyname = "Hello Command", desc = "Say hello to the server", permission = GLOBAL.COMMAND_PERMISSION.USER, slash = true, usermenu = false, servermenu = false, params = {"intro"}, paramsoptional = {true}, vote = false, serverfn = function(params, caller) if params.intro ~= nil then GLOBAL.TheNet:Say("Hello, everyone! "..params.intro) else GLOBAL.TheNet:Say("Hello, everyone!") end end, }) 评论


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3