普特莫斯维基 (Purtmars Wikipedia 📖)

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

来自Purtmars Wikipedia —— 普特莫斯维基
 
(未显示同一用户的2个中间版本)
第1行: 第1行:
 
{{:Chemdah 开发者文档目录}}
 
{{:Chemdah 开发者文档目录}}
 +
 
= 关系 =
 
= 关系 =
 
对话(Conversation)与会话(Session)是两个不同的概念,如同类(Class)与对象(Object)的关系。<br>
 
对话(Conversation)与会话(Session)是两个不同的概念,如同类(Class)与对象(Object)的关系。<br>
第24行: 第25行:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
= ink.ptms.chemdah.core.conversation.Session =
 
通过 '''player.conversationSession''' 扩展属性可以获取到玩家正在进行的会话,若返回空则视为玩家不在对话。
 
通过 '''player.conversationSession''' 扩展属性可以获取到玩家正在进行的会话,若返回空则视为玩家不在对话。
 +
<syntaxhighlight lang="kotlin" line="line">
 +
/**
 +
* 当前会话所属对话实例
 +
*/
 +
val conversation: Conversation
 +
 +
/**
 +
* 会话坐标(指发起对话的坐标)
 +
*/
 +
val location: Location
 +
 +
/**
 +
* 会话原点(指 NPC 头部坐标)
 +
*/
 +
val origin: Location
 +
 +
/**
 +
* 会话所属玩家
 +
*/
 +
val player: Player
 +
 +
/**
 +
* 会话变量(指整个会话中的所有由脚本代理创建的变量)
 +
* 会在下级对话中继承
 +
* 可修改
 +
*/
 +
val variables: MutableMap<String, Any?>
 +
 +
/**
 +
* 会话是否有效
 +
* 即玩家当前正在进行的会话对象是否为当前对象
 +
*/
 +
val isValid: Boolean
 +
    get()
 +
 +
/**
 +
* 与会话原点的距离
 +
*/
 +
val distance: Boolean
 +
    get()
 +
 +
/**
 +
* NPC 即将发送的信息
 +
* 仅在对话开始渲染之前可以修改
 +
*/
 +
val npcSide: ArrayList<String>()
 +
 +
/**
 +
* NPC 展示名称
 +
* 仅在对话开始渲染之前可以修改
 +
*/
 +
var npcName: String
 +
 +
/**
 +
* NPC 实例
 +
* 可能是 Minecraft 实体,也可能是其他插件的对象
 +
*/
 +
var npcObject: Any?
 +
 +
/**
 +
* NPC 是否在发言状态(动态效果)
 +
* 通过修改这个属性可以提前结束发言状态
 +
*/
 +
var npcTalking: Boolean
 +
 +
/**
 +
* 玩家当前选择的回复(目前仅 Chat 模式下被应用)
 +
*/
 +
var playerSide: PlayerReply?
 +
 +
/**
 +
* 玩家当前被展示的所有回复(目前仅 Chat 模式下被应用,视觉缓存)
 +
*/
 +
var playerReplyForDisplay: ArrayList<PlayerReply>
 +
 +
/**
 +
* 对话是否被关闭
 +
*/
 +
var isClosed: Boolean
 +
 +
/**
 +
* 是否触发告别,如果为 true 则该会话已不可逆
 +
*/
 +
var isFarewell: Boolean
 +
 +
/**
 +
* 关闭这个会话
 +
* @param refuse 这个参数仅区别于执行的脚本代理,是 agent:refuse 主动放弃还是 agent:end 自然结束。
 +
*/
 +
fun close(refuse: Boolean = false): CompletableFuture<Void>
 +
</syntaxhighlight>

2021年6月9日 (三) 16:06的最新版本

目录

关系

对话(Conversation)与会话(Session)是两个不同的概念,如同类(Class)与对象(Object)的关系。
对话(Conversation)中包含一个核心方法:

 1 /**
 2  * 唤起对话
 3  * 脚本代理的执行在添加对话内容之前
 4  * 所有脚本包括嵌入式在内都会继承会话中的所有变量
 5  *
 6  * @param player 玩家
 7  * @param origin 原点(对话实体的头顶坐标)
 8  * @param sessionTop 上层会话(继承关系)
 9  * @param npcName 对话 NPC 名称
10  * @param npcObject 对话 NPC 对象
11  */
12 fun open(
13     player: Player, 
14     origin: Location, 
15     sessionTop: Session? = null, 
16     npcName: String? = null, 
17     npcObject: Any? = null
18 ): CompletableFuture<Session>

ink.ptms.chemdah.core.conversation.Session

通过 player.conversationSession 扩展属性可以获取到玩家正在进行的会话,若返回空则视为玩家不在对话。

 1 /**
 2  * 当前会话所属对话实例
 3  */
 4 val conversation: Conversation
 5 
 6 /**
 7  * 会话坐标(指发起对话的坐标)
 8  */
 9 val location: Location
10 
11 /**
12  * 会话原点(指 NPC 头部坐标)
13  */
14 val origin: Location
15 
16 /**
17  * 会话所属玩家
18  */
19 val player: Player
20 
21 /**
22  * 会话变量(指整个会话中的所有由脚本代理创建的变量)
23  * 会在下级对话中继承
24  * 可修改
25  */
26 val variables: MutableMap<String, Any?>
27 
28 /**
29  * 会话是否有效
30  * 即玩家当前正在进行的会话对象是否为当前对象
31  */
32 val isValid: Boolean
33     get()
34 
35 /**
36  * 与会话原点的距离
37  */
38 val distance: Boolean
39     get()
40 
41 /**
42  * NPC 即将发送的信息
43  * 仅在对话开始渲染之前可以修改
44  */
45 val npcSide: ArrayList<String>()
46 
47 /**
48  * NPC 展示名称
49  * 仅在对话开始渲染之前可以修改
50  */
51 var npcName: String
52 
53 /**
54  * NPC 实例
55  * 可能是 Minecraft 实体,也可能是其他插件的对象
56  */
57 var npcObject: Any?
58 
59 /**
60  * NPC 是否在发言状态(动态效果)
61  * 通过修改这个属性可以提前结束发言状态
62  */
63 var npcTalking: Boolean
64 
65 /**
66  * 玩家当前选择的回复(目前仅 Chat 模式下被应用)
67  */
68 var playerSide: PlayerReply?
69 
70 /**
71  * 玩家当前被展示的所有回复(目前仅 Chat 模式下被应用,视觉缓存)
72  */
73 var playerReplyForDisplay: ArrayList<PlayerReply>
74 
75 /**
76  * 对话是否被关闭
77  */
78 var isClosed: Boolean
79 
80 /**
81  * 是否触发告别,如果为 true 则该会话已不可逆
82  */
83 var isFarewell: Boolean
84 
85 /**
86  * 关闭这个会话
87  * @param refuse 这个参数仅区别于执行的脚本代理,是 agent:refuse 主动放弃还是 agent:end 自然结束。
88  */
89 fun close(refuse: Boolean = false): CompletableFuture<Void>