会话控制 (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
- 对话相关
- 数据相关
- 任务相关
关系
对话(Conversation)与会话(Session)是两个不同的概念,如同类(Class)与对象(Object)的关系。
对话(Conversation)中包含一个核心方法:
/**
* 唤起对话
* 脚本代理的执行在添加对话内容之前
* 所有脚本包括嵌入式在内都会继承会话中的所有变量
*
* @param player 玩家
* @param origin 原点(对话实体的头顶坐标)
* @param sessionTop 上层会话(继承关系)
* @param npcName 对话 NPC 名称
* @param npcObject 对话 NPC 对象
*/
fun open(
player: Player,
origin: Location,
sessionTop: Session? = null,
npcName: String? = null,
npcObject: Any? = null
): CompletableFuture
ink.ptms.chemdah.core.conversation.Session
通过 player.conversationSession 扩展属性可以获取到玩家正在进行的会话,若返回空则视为玩家不在对话。
/**
* 当前会话所属对话实例
*/
val conversation: Conversation
/**
* 会话坐标(指发起对话的坐标)
*/
val location: Location
/**
* 会话原点(指 NPC 头部坐标)
*/
val origin: Location
/**
* 会话所属玩家
*/
val player: Player
/**
* 会话变量(指整个会话中的所有由脚本代理创建的变量)
* 会在下级对话中继承
* 可修改
*/
val variables: MutableMap
/**
* 会话是否有效
* 即玩家当前正在进行的会话对象是否为当前对象
*/
val isValid: Boolean
get()
/**
* 与会话原点的距离
*/
val distance: Boolean
get()
/**
* NPC 即将发送的信息
* 仅在对话开始渲染之前可以修改
*/
val npcSide: ArrayList()
/**
* NPC 展示名称
* 仅在对话开始渲染之前可以修改
*/
var npcName: String
/**
* NPC 实例
* 可能是 Minecraft 实体,也可能是其他插件的对象
*/
var npcObject: Any?
/**
* NPC 是否在发言状态(动态效果)
* 通过修改这个属性可以提前结束发言状态
*/
var npcTalking: Boolean
/**
* 玩家当前选择的回复(目前仅 Chat 模式下被应用)
*/
var playerSide: PlayerReply?
/**
* 玩家当前被展示的所有回复(目前仅 Chat 模式下被应用,视觉缓存)
*/
var playerReplyForDisplay: ArrayList
/**
* 对话是否被关闭
*/
var isClosed: Boolean
/**
* 是否触发告别,如果为 true 则该会话已不可逆
*/
var isFarewell: Boolean
/**
* 关闭这个会话
* @param refuse 这个参数仅区别于执行的脚本代理,是 agent:refuse 主动放弃还是 agent:end 自然结束。
*/
fun close(refuse: Boolean = false): CompletableFuture