任务控制 (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 中。通过以下方法获取任务模板。
ChemdahAPI.getQuestTemplate("foo")
通过以下方法获取玩家本人(禁用协作任务)正在进行中的任务。
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 中提供的所有开放属性和方法。
/**
* 序号
*/
val id: String
/**
* 配置文件
*/
val config: ConfigurationSection
/**
* 所有元数据
*/
val metaMap: HashMap
/**
* 所有组件
*/
val addonMap: HashMap
/**
* 所有脚本代理
*/
val agentList: ArrayList
/**
* 返回所有脚本代理类型
*/
val agents: List
/**
* 当前节点
* 任务则返回任务序号,条目则返回条目序号
*/
val node: String
/**
* 任务路径
* 作为持久化储存的唯一标识符
*/
val path: String
/**
* 获取元数据
*/
fun meta(metaId: String): Meta?
/**
* 获取组件
*/
fun addon(addonId: String): Addon?
/**
* 获取正在进行中的所属任务
*/
fun getQuest(profile: PlayerProfile, openAPI: Boolean = false): Quest?
/**
* 获取有效的脚本代理列表
*/
fun getAgentList(agentType: AgentType, restrict: String = "self"): List
/**
* 指定脚本代理
* 当高优先级的脚本代理取消行为时后续脚本代理将不再运行
*
* @param profile 玩家数据
* @param agentType 脚本代理类型
*/
fun agent(profile: PlayerProfile, agentType: AgentType, restrict: String = "self"): CompletableFuture
以下是 ink.ptms.chemdah.core.quest.Template 中提供的所有开放属性和方法。
/**
* 所有任务条目
*/
val taskMap: HashMap
/**
* 获取包含模板导入 (import) 的所有任务元数据
* 已配置的元数据会覆盖导入源
*/
val metaAll(): Map>
/**
* 使玩家接受任务
* 会执行 checkAccept 方法
*/
fun acceptTo(profile: PlayerProfile): CompletableFuture
/**
* 检测玩家是否可以接受该任务
*/
fun checkAccept(profile: PlayerProfile): CompletableFuture
以下是 ink.ptms.chemdah.core.quest.Task 中提供的所有开放属性和方法。
/**
* 条目目标(任务目标)
*/
val objective: Objective<*>
/**
* 进行条件
*/
val condition: DataContainer()
/**
* 完成条件
*/
val goal: DataContainer()
/**
* 是否完成该条目
*/
fun isCompleted(profile: PlayerProfile): Boolean