任务框架

任务框架

一个用于组织和显示任务的简单框架。

游戏玩法

本模组旨在为《Valheim》实现各种类型的任务系统。

如需了解其工作原理,请参考以下示例:

[list] [][url=https://www.nexusmods.com/valheim/mods/1584]Haldor 任务[/url] [][url=https://www.nexusmods.com/valheim/mods/1588]Hugin 任务[/url] [/list]

本模组有两个基本功能——显示任务和组织任务。

[b][size=5]显示任务[/size][/b]

任务可以有名称和描述;每个任务阶段可以有名称和描述;阶段内的每个目标也可以有名称和描述。

配置文件包含用于显示这些内容的模板,以及显示区域的主标题。如果任务没有对应的字段,则该模板将被忽略。

模板支持富文本标签,例如 <color=#xxxxxx><b><i><size=xx>

可以使用自定义快捷键(默认为 [b]J[/b])切换显示。可通过鼠标拖拽移动显示位置。

[b][size=5]组织任务[/size][/b]

如果您不是模组开发者,可以跳过此部分。

简而言之,其他模组通过本模组实现其任务功能,依赖本模组告知玩家拥有哪些任务及其状态。任务信息会以二进制文件形式保存在 [b]BepInEx\plugins\QuestFramework[/b] 目录下,每个 [b]玩家_世界[/b] 组合对应一个文件。

[size=3][b]任务操作[/b][/size]

将本模组的 dll 设置为您模组的依赖项,并使用 [b]QuestFrameworkAPI[/b] 类来访问当前玩家的任务。

[list] [][b]GetCurrentQuests()[/b] 获取一个以任务 ID 为键的任务字典。 [][b]GetQuestByID(string ID)[/b] 获取指定 ID 的任务,如果该任务未激活则返回 null。 [][b]AddQuest(QuestData qd, bool force = false)[/b] 添加一个任务。若要更新已有任务,须将 [b]force[/b] 设为 [b]true[/b]。成功返回 [b]true[/b]。 [][b]RemoveQuest(string ID[/b][b])[/b] 从玩家任务中移除一个任务。成功返回 [b]true[/b]。 [][b]IsQuestActive(string ID)[/b] 如果本地玩家已激活该任务则返回 [b]true[/b]。 [][b]ChangeStage(string questID, string stageID)[/b] 设置指定任务的当前阶段。成功返回 [b]true[/b]。 [*][b]GetCurrentStage(string questID)[/b] 返回指定任务的当前阶段 ID。 [/list]

您也可以直接通过 [b]QuestFramework.BepInExPlugin.currentQuests.questDict[/b] 访问本模组的任务字典。

[size=3][b]任务格式[/b][/size]

使用 [b]QuestFramework.QuestData[/b] 类向本模组提交任务。

[list] []string QuestData.name []string QuestData.desc []string QuestData.ID - 任务的唯一 ID []string QuestData.currentStage []Dictionary<string, object> QuestData.data - 用于存储您任务模组具体任务数据的任意集合(例如进度等)。 []Dictionary<string, QuestStage> QuestData.questStages [/list]

[b]QuestStage[/b] 类

[list] []string QuestStage.name []string QuestStage.desc []string QuestStage.ID - 阶段的唯一 ID []Dictionary<string, object> QuestStage.data - 用于存储您任务模组具体任务数据的任意集合(例如进度等)。 [*]Dictionary<string, QuestObjective> QuestStage.objectives [/list]

[b]QuestObjective[/b] 类

[list] []string QuestObjective.name []string QuestObjective.desc []string QuestObjective.ID - 阶段的唯一 ID []Dictionary<string, object> QuestObjective.data - 用于存储您任务模组具体任务数据的任意集合(例如进度等)。 [/list]

[size=5][b]控制台指令[/b][/size]

[b]questframework reset[/b] - 重置模组配置

[b]questframework end [/b] - 放弃一个任务(使用 list 获取任务的索引)

[b]questframework list[/b] - 获取当前激活任务的索引列表

[b]questframework clear[/b] - 放弃所有任务

[size=5][b]配置[/b][/size]

使用本模组运行一次游戏后,将创建配置文件 [b]BepInEx/config/aedenthorn.QuestFramework.cfg[/b]。

您可以通过文本编辑器直接编辑文件,或借助配置管理器 在游戏中调整配置值。

[size=5][b]技术信息[/b][/size]

安装本模组最简单的方法是使用 Vortex(Nexus Mods 模组管理器)。它将自动处理所有依赖项。

若要手动安装,请将 dll 文件放置在 BepInEx/plugins 文件夹中。您需要先安装 BepInEx。

源代码位于 https://github.com/aedenthorn/ValheimMods

如果您需要反馈问题、寻求帮助,或希望协助测试我的模组,欢迎访问我的 Discord 服务器

点击此处查看我所有的《Valheim》模组列表。