Lua接口/NPC对话:修订间差异

来自雪舞天龙知识库
跳到导航跳到搜索
雪舞​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
Waylee​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
 
(未显示2个用户的2个中间版本)
第1行: 第1行:
__NOTOC__
__NOTOC__
<div class="lua-reference" style="max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,'Microsoft YaHei',sans-serif;letter-spacing:0;overflow-wrap:anywhere;">
<div class="lua-reference">
[[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]]
[[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]]


第6行: 第6行:


== 对话构造 ==
== 对话构造 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/BeginEvent|BeginEvent]]
| [[Lua接口/服务端/BeginEvent|BeginEvent]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code>;无返回值。清空当前对话内容,开始构造。
| <code>sceneId</code>;无返回值。清空当前对话内容,开始构造。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/AddText|AddText]]
| [[Lua接口/服务端/AddText|AddText]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, msg</code>;无返回值。追加一段文字。
| <code>sceneId, msg</code>;无返回值。追加一段文字。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/EndEvent|EndEvent]]
| [[Lua接口/服务端/EndEvent|EndEvent]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">()</code>;无返回值。结束构造。
| <code>()</code>;无返回值。结束构造。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DispatchEventList|DispatchEventList]]
| [[Lua接口/服务端/DispatchEventList|DispatchEventList]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId</code>;无返回值。派发给指定玩家。
| <code>sceneId, selfId, targetId</code>;无返回值。派发给指定玩家。
|}
|}
对话构造四步:[[Lua接口/服务端/BeginEvent|BeginEvent]] 清空 → [[Lua接口/服务端/AddText|AddText]] 追加文字 → [[Lua接口/服务端/EndEvent|EndEvent]] 结束 → [[Lua接口/服务端/DispatchEventList|DispatchEventList]] 派发。前三个都不返回值,[[Lua接口/服务端/DispatchEventList|DispatchEventList]] 也无返回值,不能据此判断对话是否显示成功。
对话构造四步:[[Lua接口/服务端/BeginEvent|BeginEvent]] 清空 → [[Lua接口/服务端/AddText|AddText]] 追加文字 → [[Lua接口/服务端/EndEvent|EndEvent]] 结束 → [[Lua接口/服务端/DispatchEventList|DispatchEventList]] 派发。前三个都不返回值,[[Lua接口/服务端/DispatchEventList|DispatchEventList]] 也无返回值,不能据此判断对话是否显示成功。


== 对话选项派发 ==
== 对话选项派发 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DispatchRegieEventList|DispatchRegieEventList]]
| [[Lua接口/服务端/DispatchRegieEventList|DispatchRegieEventList]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId</code>;无返回值。返回 NPC 可触发事件列表。
| <code>sceneId, selfId, targetId</code>;无返回值。返回 NPC 可触发事件列表。
|}
|}
[[Lua接口/服务端/DispatchRegieEventList|DispatchRegieEventList]] 用于在玩家点击 NPC 时返回该 NPC 可触发的事件列表,与 [[Lua接口/服务端/DispatchEventList|DispatchEventList]] 的区别是它派发的是 NPC 事件索引而非自定义对话文本。
[[Lua接口/服务端/DispatchRegieEventList|DispatchRegieEventList]] 用于在玩家点击 NPC 时返回该 NPC 可触发的事件列表,与 [[Lua接口/服务端/DispatchEventList|DispatchEventList]] 的区别是它派发的是 NPC 事件索引而非自定义对话文本。


== 任务信息派发 ==
== 任务信息派发 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DispatchMissionInfo|DispatchMissionInfo]]
| [[Lua接口/服务端/DispatchMissionInfo|DispatchMissionInfo]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId, scriptId, misId</code>;无返回值。
| <code>sceneId, selfId, targetId, scriptId, misId</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DispatchMissionDemandInfo|DispatchMissionDemandInfo]]
| [[Lua接口/服务端/DispatchMissionDemandInfo|DispatchMissionDemandInfo]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId, scriptId, misId, done, nIssueScript</code>;无返回值。
| <code>sceneId, selfId, targetId, scriptId, misId, done, nIssueScript</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DispatchMissionContinueInfo|DispatchMissionContinueInfo]]
| [[Lua接口/服务端/DispatchMissionContinueInfo|DispatchMissionContinueInfo]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId, scriptId, misId, nIssueScript</code>;无返回值。
| <code>sceneId, selfId, targetId, scriptId, misId, nIssueScript</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DispatchMissionTips|DispatchMissionTips]]
| [[Lua接口/服务端/DispatchMissionTips|DispatchMissionTips]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code>;无返回值。
| <code>sceneId, selfId</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DispatchMissionResult|DispatchMissionResult]]
| [[Lua接口/服务端/DispatchMissionResult|DispatchMissionResult]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, IsFinished</code>;无返回值。
| <code>sceneId, selfId, IsFinished</code>;无返回值。
|}
|}
这组接口向客户端返回任务信息,都无返回值。[[Lua接口/服务端/DispatchMissionDemandInfo|DispatchMissionDemandInfo]] 需要 7 个参数(含 done 和 nIssueScript),不能省略。
这组接口向客户端返回任务信息,都无返回值。[[Lua接口/服务端/DispatchMissionDemandInfo|DispatchMissionDemandInfo]] 需要 7 个参数(含 done 和 nIssueScript),不能省略。


== 对白与日志 ==
== 对白与日志 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/MonsterTalk|MonsterTalk]]
| [[Lua接口/服务端/MonsterTalk|MonsterTalk]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, monsterId, sceneName, msg</code> → 部分分支无返回值。
| <code>sceneId, monsterId, sceneName, msg</code> → 部分分支无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnNpcChat|LuaFnNpcChat]]
| [[Lua接口/服务端/LuaFnNpcChat|LuaFnNpcChat]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, monsterId, isSceneBroadcast, msg</code> → 部分分支无返回值。
| <code>sceneId, monsterId, isSceneBroadcast, msg</code> → 部分分支无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/MissionLog|MissionLog]]
| [[Lua接口/服务端/MissionLog|MissionLog]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, msg</code>;无返回值。
| <code>sceneId, msg</code>;无返回值。
|}
|}
[[Lua接口/服务端/MonsterTalk|MonsterTalk]] 和 [[Lua接口/服务端/LuaFnNpcChat|LuaFnNpcChat]] 发送 NPC/怪物对白,部分分支不返回值。[[Lua接口/服务端/MissionLog|MissionLog]] 将文本写入 Mission 日志文件,无返回值。
[[Lua接口/服务端/MonsterTalk|MonsterTalk]] 和 [[Lua接口/服务端/LuaFnNpcChat|LuaFnNpcChat]] 发送 NPC/怪物对白,部分分支不返回值。[[Lua接口/服务端/MissionLog|MissionLog]] 将文本写入 Mission 日志文件,无返回值。


== 构造并派发对话 ==
== 构造并派发对话 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">BeginEvent(sceneId)
<pre>BeginEvent(sceneId)
AddText(sceneId, "你好, traveller。")
AddText(sceneId, "你好, traveller。")
EndEvent()
EndEvent()
第81行: 第81行:


== 派发任务信息 ==
== 派发任务信息 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">DispatchMissionInfo(sceneId, selfId, targetId, scriptId, misId)
<pre>DispatchMissionInfo(sceneId, selfId, targetId, scriptId, misId)
-- 无返回值;客户端收到后展示任务信息</pre>
-- 无返回值;客户端收到后展示任务信息</pre>
[[Lua接口/服务端/DispatchMissionInfo|DispatchMissionInfo]] 需要传入 targetId(NPC 对象 ID)、scriptId 和 misId,无返回值。
[[Lua接口/服务端/DispatchMissionInfo|DispatchMissionInfo]] 需要传入 targetId(NPC 对象 ID)、scriptId 和 misId,无返回值。
第110行: 第110行:
* [[Lua接口/时间与计时|时间与计时]]
* [[Lua接口/时间与计时|时间与计时]]
* [[Lua接口/怪物相关|怪物相关]]
* [[Lua接口/怪物相关|怪物相关]]
* [[Lua接口/队伍相关|队伍相关]]
* [[Lua接口/帮会相关|帮会相关]]
* [[Lua接口/消息与提示|消息与提示]]
* [[Lua接口/聊天与公告|聊天与公告]]


[[Lua接口/服务端调用约定|服务端调用约定]] · [[Lua接口/服务端调用示例|服务端调用示例]] · [[Lua接口/服务端函数索引|服务端函数索引]]
[[Lua接口/服务端调用约定|服务端调用约定]] · [[Lua接口/服务端调用示例|服务端调用示例]] · [[Lua接口/服务端函数索引|服务端函数索引]]


[[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]]
[[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]]
<div style="margin-top:20px;padding-top:10px;border-top:1px solid #dbe3e6;color:#657078;font-size:12px;">本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。</div>


</div>
</div>

2026年10月26日 (一) 17:29的最新版本

首页 · 服务端接口 · 调用约定

构造 NPC 对话内容、派发对话列表、发送任务信息与 NPC 对白。对话构造遵循 BeginEvent → AddText → EndEvent → DispatchEventList 的流程。

对话构造

接口 参数与返回
BeginEvent sceneId;无返回值。清空当前对话内容,开始构造。
AddText sceneId, msg;无返回值。追加一段文字。
EndEvent ();无返回值。结束构造。
DispatchEventList sceneId, selfId, targetId;无返回值。派发给指定玩家。

对话构造四步:BeginEvent 清空 → AddText 追加文字 → EndEvent 结束 → DispatchEventList 派发。前三个都不返回值,DispatchEventList 也无返回值,不能据此判断对话是否显示成功。

对话选项派发

接口 参数与返回
DispatchRegieEventList sceneId, selfId, targetId;无返回值。返回 NPC 可触发事件列表。

DispatchRegieEventList 用于在玩家点击 NPC 时返回该 NPC 可触发的事件列表,与 DispatchEventList 的区别是它派发的是 NPC 事件索引而非自定义对话文本。

任务信息派发

接口 参数与返回
DispatchMissionInfo sceneId, selfId, targetId, scriptId, misId;无返回值。
DispatchMissionDemandInfo sceneId, selfId, targetId, scriptId, misId, done, nIssueScript;无返回值。
DispatchMissionContinueInfo sceneId, selfId, targetId, scriptId, misId, nIssueScript;无返回值。
DispatchMissionTips sceneId, selfId;无返回值。
DispatchMissionResult sceneId, selfId, IsFinished;无返回值。

这组接口向客户端返回任务信息,都无返回值。DispatchMissionDemandInfo 需要 7 个参数(含 done 和 nIssueScript),不能省略。

对白与日志

接口 参数与返回
MonsterTalk sceneId, monsterId, sceneName, msg → 部分分支无返回值。
LuaFnNpcChat sceneId, monsterId, isSceneBroadcast, msg → 部分分支无返回值。
MissionLog sceneId, msg;无返回值。

MonsterTalk 和 LuaFnNpcChat 发送 NPC/怪物对白,部分分支不返回值。MissionLog 将文本写入 Mission 日志文件,无返回值。

构造并派发对话

BeginEvent(sceneId)
AddText(sceneId, "你好, traveller。")
EndEvent()
DispatchEventList(sceneId, selfId, targetId)
-- 四步都无返回值;不能据此判断对话是否显示

对话构造四步全部无返回值。EndEvent 当前不执行额外操作,但仍是配对入口,需要调用。派发后对话是否显示需要客户端确认。

派发任务信息

DispatchMissionInfo(sceneId, selfId, targetId, scriptId, misId)
-- 无返回值;客户端收到后展示任务信息

DispatchMissionInfo 需要传入 targetId(NPC 对象 ID)、scriptId 和 misId,无返回值。

相关主题

服务端调用约定 · 服务端调用示例 · 服务端函数索引

函数不存在或提示 nil · 参数类型与顺序 · 返回值判断 · 对象 ID 与 GUID