普特莫斯维基 (Purtmars Wikipedia 📖)

“Chemdah 开发者文档:任务控制”的版本间的差异

来自Purtmars Wikipedia —— 普特莫斯维基
第74行: 第74行:
 
  * 获取元数据
 
  * 获取元数据
 
  */
 
  */
fun \<T : Meta<<*>> meta(metaId: String): T?
+
fun <<>T : Meta<<*>> meta(metaId: String): T?
  
 
/**
 
/**
 
  * 获取组件
 
  * 获取组件
 
  */
 
  */
fun \<T : Addon> addon(addonId: String): T?
+
fun <<>T : Addon> addon(addonId: String): T?
  
 
/**
 
/**

2021年6月12日 (六) 19:58的版本

目录

任务控制

任务模板注册在 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 addons: Set

/**
 * 所有启用的脚本代理名称
 */
val agents: List

/**
 * 当前节点
 * 任务则返回任务序号,条目则返回条目序号
 */
val node: String

/**
 * 任务路径
 * 作为持久化储存的唯一标识符
 */
val path: String

/**
 * 获取元数据
 */
fun <<>T : Meta<<*>> meta(metaId: String): T?

/**
 * 获取组件
 */
fun <<>T : Addon> addon(addonId: String): T?

/**
 * 获取正在进行中的所属任务
 */
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 task: Map

/**
 * 获取包含模板导入 (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