Chemdah 开发者文档:任务控制
来自Purtmars Wikipedia —— 普特莫斯维基
目录
- Chemdah
- 开始
- 基本
- 事件
- ink.ptms.chemdah.api.event.collect.ConversationEvents
- ink.ptms.chemdah.api.event.collect.ObjectiveEvents
- ink.ptms.chemdah.api.event.collect.PlayerEvents
- ink.ptms.chemdah.api.event.collect.QuestEvents
- ink.ptms.chemdah.api.event.collect.TemplateEvents
- ink.ptms.chemdah.api.event.InferEntityHookEvent
- ink.ptms.chemdah.api.event.InferItemHookEvent
- ink.ptms.chemdah.api.event.PartyHookEvent
- 对话相关
- 数据相关
- 任务相关
任务控制
任务模板注册在 ChemdahAPI 中,任务则储存在 PlayerProfile 中。通过以下方法获取任务模板。
1 ChemdahAPI.getQuestTemplate("foo")
通过以下方法获取玩家本人(禁用协作任务)正在进行中的任务。
1 player.chemdahProfile.getQuestById("foo", openAPI = false)
任务模板在接受后转换为任务,只有任务模板可以接受,而任务只能完成或放弃。如果你能理解这其中的关系。
任务模板
任务模板下包含数个可以完成的任务条目,任务模板与任务条目同属于 QuestContainer 类型,即任务容器。
它们有共同的特征可以储存元数据、组件和脚本代理,以及专属序号。
模板结构如下:
├── tremplate_01 ·························· 模板1 | ├── task_01 ··························· 条目1 | ├── task_02 ··························· 条目2 | └── task_03 ··························· 条目3
任务结构如下:
├── quest_01 ······························ 任务1 | ├── tremplate_01 ······················ 模板1 | | ├── task_01 ······················ 条目1 | | ├── task_02 ······················ 条目2 | | └── task_03 ······················ 条目3 | ├── persistentDataContainer ··········· 任务持久化数据
以下是 ink.ptms.chemdah.core.quest.QuestContainer 中提供的所有开放属性和方法。
1 /**
2 * 序号
3 */
4 val id: String
5
6 /**
7 * 配置文件
8 */
9 val config: ConfigurationSection
10
11 /**
12 * 所有元数据
13 */
14 val metaMap: HashMap<String, Meta>
15
16 /**
17 * 所有组件
18 */
19 val addonMap: HashMap<String, Addon>
20
21 /**
22 * 所有脚本代理
23 */
24 val agentList: ArrayList<Agent>
25
26 /**
27 * 返回所有脚本代理类型
28 */
29 val agents: List<String>
30
31 /**
32 * 当前节点
33 * 任务则返回任务序号,条目则返回条目序号
34 */
35 val node: String
36
37 /**
38 * 任务路径
39 * 作为持久化储存的唯一标识符
40 */
41 val path: String
42
43 /**
44 * 获取元数据
45 */
46 fun meta(metaId: String): Meta?
47
48 /**
49 * 获取组件
50 */
51 fun addon(addonId: String): Addon?
52
53 /**
54 * 获取正在进行中的所属任务
55 */
56 fun getQuest(profile: PlayerProfile, openAPI: Boolean = false): Quest?
57
58 /**
59 * 获取有效的脚本代理列表
60 */
61 fun getAgentList(agentType: AgentType, restrict: String = "self"): List<Agent>
62
63 /**
64 * 指定脚本代理
65 * 当高优先级的脚本代理取消行为时后续脚本代理将不再运行
66 *
67 * @param profile 玩家数据
68 * @param agentType 脚本代理类型
69 */
70 fun agent(profile: PlayerProfile, agentType: AgentType, restrict: String = "self"): CompletableFuture<Boolean>
以下是 ink.ptms.chemdah.core.quest.Template 中提供的所有开放属性和方法。
1 /**
2 * 所有任务条目
3 */
4 val taskMap: HashMap<String, Task>
5
6 /**
7 * 获取包含模板导入 (import) 的所有任务元数据
8 * 已配置的元数据会覆盖导入源
9 */
10 val metaAll(): Map<String, Meta<*>>
11
12 /**
13 * 使玩家接受任务
14 * 会执行 checkAccept 方法
15 */
16 fun acceptTo(profile: PlayerProfile): CompletableFuture<AcceptResult>
17
18 /**
19 * 检测玩家是否可以接受该任务
20 */
21 fun checkAccept(profile: PlayerProfile): CompletableFuture<AcceptResult>
以下是 ink.ptms.chemdah.core.quest.Task 中提供的所有开放属性和方法。
1 /**
2 * 条目目标(任务目标)
3 */
4 val objective: Objective<*>
5
6 /**
7 * 进行条件
8 */
9 val condition: DataContainer()
10
11 /**
12 * 完成条件
13 */
14 val goal: DataContainer()
15
16 /**
17 * 是否完成该条目
18 */
19 fun isCompleted(profile: PlayerProfile): Boolean