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

来自天龙知识库
跳到导航跳到搜索
雪舞​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
Waylee​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
 
(未显示同一用户的1个中间版本)
第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接口/服务端/AddNumText|AddNumText]]
| [[Lua接口/服务端/AddNumText|AddNumText]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, id, msg, state, index, issueScript</code> → 部分分支无返回值。参数数量可变。
| <code>sceneId, id, msg, state, index, issueScript</code> → 部分分支无返回值。参数数量可变。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnSetNumText|LuaFnSetNumText]]
| [[Lua接口/服务端/LuaFnSetNumText|LuaFnSetNumText]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">value</code>;无返回值。设置脚本间交换值。
| <code>value</code>;无返回值。设置脚本间交换值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetNumText|GetNumText]]
| [[Lua接口/服务端/GetNumText|GetNumText]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">number</code> → 交换值;失败 -1。
| <code>number</code> → 交换值;失败 -1。
|}
|}
[[Lua接口/服务端/AddNumText|AddNumText]] 参数数量可变(verify 不校验实参数),但建议传满 6 个参数(id、msg、state、index、issueScript)。玩家选择选项后,[[Lua接口/服务端/GetNumText|GetNumText]] 用传入的 id 读取选中的编号。[[Lua接口/服务端/LuaFnSetNumText|LuaFnSetNumText]] 设置跨脚本交换值,无返回值。
[[Lua接口/服务端/AddNumText|AddNumText]] 参数数量可变(verify 不校验实参数),但建议传满 6 个参数(id、msg、state、index、issueScript)。玩家选择选项后,[[Lua接口/服务端/GetNumText|GetNumText]] 用传入的 id 读取选中的编号。[[Lua接口/服务端/LuaFnSetNumText|LuaFnSetNumText]] 设置跨脚本交换值,无返回值。


== 扩展任务事件 ==
== 扩展任务事件 ==
{| 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接口/服务端/TBeginEvent|TBeginEvent]]
| [[Lua接口/服务端/TBeginEvent|TBeginEvent]]
| 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接口/服务端/TAddText|TAddText]]
| [[Lua接口/服务端/TAddText|TAddText]]
| 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接口/服务端/TAddNumText|TAddNumText]]
| [[Lua接口/服务端/TAddNumText|TAddNumText]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, id, msg, state, index, issueScript</code>;无返回值。追加编号选项。
| <code>sceneId, id, msg, state, index, issueScript</code>;无返回值。追加编号选项。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/TEndEvent|TEndEvent]]
| [[Lua接口/服务端/TEndEvent|TEndEvent]]
| 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接口/服务端/TDispatchEventList|TDispatchEventList]]
| [[Lua接口/服务端/TDispatchEventList|TDispatchEventList]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">()</code>;无返回值。当前为空实现。
| <code>()</code>;无返回值。当前为空实现。
|}
|}
T 前缀接口用于扩展任务事件缓冲,与普通对话(BeginEvent 等)分开。[[Lua接口/服务端/TDispatchEventList|TDispatchEventList]] 当前为空实现,调用不会派发对话。
T 前缀接口用于扩展任务事件缓冲,与普通对话(BeginEvent 等)分开。[[Lua接口/服务端/TDispatchEventList|TDispatchEventList]] 当前为空实现,调用不会派发对话。


== 任务配置查询 ==
== 任务配置查询 ==
{| 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接口/服务端/TGetMissionIdByIndex|TGetMissionIdByIndex]]
| [[Lua接口/服务端/TGetMissionIdByIndex|TGetMissionIdByIndex]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 任务编号;失败 -1。
| <code>missionIndex</code> → 任务编号;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/TGetMissionName|TGetMissionName]]
| [[Lua接口/服务端/TGetMissionName|TGetMissionName]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 任务名称字符串;未找到空串。
| <code>missionIndex</code> → 任务名称字符串;未找到空串。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/TGetMissionDesc|TGetMissionDesc]]
| [[Lua接口/服务端/TGetMissionDesc|TGetMissionDesc]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 4 段正文描述;未找到 4 个空串。
| <code>missionIndex</code> → 4 段正文描述;未找到 4 个空串。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/TIsMissionRoundable|TIsMissionRoundable]]
| [[Lua接口/服务端/TIsMissionRoundable|TIsMissionRoundable]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 是否允许循环;失败 -1。
| <code>missionIndex</code> → 是否允许循环;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetNextMissionIndex|GetNextMissionIndex]]
| [[Lua接口/服务端/GetNextMissionIndex|GetNextMissionIndex]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 下一任务索引;失败 -1。
| <code>missionIndex</code> → 下一任务索引;失败 -1。
|}
|}
这组接口只传任务索引(missionIndex),从任务配置表读取静态数据。[[Lua接口/服务端/TGetMissionDesc|TGetMissionDesc]] 返回 4 个字符串,需要用 4 个变量接收。
这组接口只传任务索引(missionIndex),从任务配置表读取静态数据。[[Lua接口/服务端/TGetMissionDesc|TGetMissionDesc]] 返回 4 个字符串,需要用 4 个变量接收。


== NPC 信息查询 ==
== 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接口/服务端/TGetAcceptNpcInfo|TGetAcceptNpcInfo]]
| [[Lua接口/服务端/TGetAcceptNpcInfo|TGetAcceptNpcInfo]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 场景编号、NPC 名称;未找到 -1、空串。
| <code>missionIndex</code> → 场景编号、NPC 名称;未找到 -1、空串。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/TGetCompleteNpcInfo|TGetCompleteNpcInfo]]
| [[Lua接口/服务端/TGetCompleteNpcInfo|TGetCompleteNpcInfo]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 场景编号、NPC 名称;未找到 -1、空串。
| <code>missionIndex</code> → 场景编号、NPC 名称;未找到 -1、空串。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/TGetTargetNpcInfo|TGetTargetNpcInfo]]
| [[Lua接口/服务端/TGetTargetNpcInfo|TGetTargetNpcInfo]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">missionIndex</code> → 送信/护送任务的目标 NPC 信息。
| <code>missionIndex</code> → 送信/护送任务的目标 NPC 信息。
|}
|}
这组接口返回可变数量的值,[[Lua接口/服务端/TGetAcceptNpcInfo|TGetAcceptNpcInfo]] 和 [[Lua接口/服务端/TGetCompleteNpcInfo|TGetCompleteNpcInfo]] 返回 2 个值(场景编号和名称),[[Lua接口/服务端/TGetTargetNpcInfo|TGetTargetNpcInfo]] 返回值数量因任务类型而异。
这组接口返回可变数量的值,[[Lua接口/服务端/TGetAcceptNpcInfo|TGetAcceptNpcInfo]] 和 [[Lua接口/服务端/TGetCompleteNpcInfo|TGetCompleteNpcInfo]] 返回 2 个值(场景编号和名称),[[Lua接口/服务端/TGetTargetNpcInfo|TGetTargetNpcInfo]] 返回值数量因任务类型而异。


== 添加对话选项 ==
== 添加对话选项 ==
<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, "请选择:")
AddText(sceneId, "请选择:")
AddNumText(sceneId, 1, "接取任务", 1, 0, 0)
AddNumText(sceneId, 1, "接取任务", 1, 0, 0)
第91行: 第91行:


== 读取选项回调 ==
== 读取选项回调 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">local selection = GetNumText(number)
<pre>local selection = GetNumText(number)
if type(selection) == "number" and selection ~= -1 then
if type(selection) == "number" and selection ~= -1 then
     -- 取得玩家选择的选项编号
     -- 取得玩家选择的选项编号
第98行: 第98行:


== 扩展任务配置查询 ==
== 扩展任务配置查询 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">local name = TGetMissionName(missionIndex)
<pre>local name = TGetMissionName(missionIndex)
if type(name) == "string" and name ~= "" then
if type(name) == "string" and name ~= "" then
     local desc1, desc2, desc3, desc4 = TGetMissionDesc(missionIndex)
     local desc1, desc2, desc3, desc4 = TGetMissionDesc(missionIndex)
第138行: 第138行:


[[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的最新版本

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

在对话中添加带编号的选项、读取选项回调、以及扩展任务事件构造与任务配置查询。对话选项通过 AddNumText 添加,玩家选择后由 GetNumText 读取编号。

选项与回调

接口 参数与返回
AddNumText sceneId, id, msg, state, index, issueScript → 部分分支无返回值。参数数量可变。
LuaFnSetNumText value;无返回值。设置脚本间交换值。
GetNumText number → 交换值;失败 -1。

AddNumText 参数数量可变(verify 不校验实参数),但建议传满 6 个参数(id、msg、state、index、issueScript)。玩家选择选项后,GetNumText 用传入的 id 读取选中的编号。LuaFnSetNumText 设置跨脚本交换值,无返回值。

扩展任务事件

接口 参数与返回
TBeginEvent sceneId;无返回值。开始构造扩展任务事件。
TAddText sceneId, msg;无返回值。追加纯文本。
TAddNumText sceneId, id, msg, state, index, issueScript;无返回值。追加编号选项。
TEndEvent ();无返回值。结束构造。
TDispatchEventList ();无返回值。当前为空实现。

T 前缀接口用于扩展任务事件缓冲,与普通对话(BeginEvent 等)分开。TDispatchEventList 当前为空实现,调用不会派发对话。

任务配置查询

接口 参数与返回
TGetMissionIdByIndex missionIndex → 任务编号;失败 -1。
TGetMissionName missionIndex → 任务名称字符串;未找到空串。
TGetMissionDesc missionIndex → 4 段正文描述;未找到 4 个空串。
TIsMissionRoundable missionIndex → 是否允许循环;失败 -1。
GetNextMissionIndex missionIndex → 下一任务索引;失败 -1。

这组接口只传任务索引(missionIndex),从任务配置表读取静态数据。TGetMissionDesc 返回 4 个字符串,需要用 4 个变量接收。

NPC 信息查询

接口 参数与返回
TGetAcceptNpcInfo missionIndex → 场景编号、NPC 名称;未找到 -1、空串。
TGetCompleteNpcInfo missionIndex → 场景编号、NPC 名称;未找到 -1、空串。
TGetTargetNpcInfo missionIndex → 送信/护送任务的目标 NPC 信息。

这组接口返回可变数量的值,TGetAcceptNpcInfo 和 TGetCompleteNpcInfo 返回 2 个值(场景编号和名称),TGetTargetNpcInfo 返回值数量因任务类型而异。

添加对话选项

BeginEvent(sceneId)
AddText(sceneId, "请选择:")
AddNumText(sceneId, 1, "接取任务", 1, 0, 0)
AddNumText(sceneId, 2, "放弃任务", 1, 0, 0)
EndEvent()
DispatchEventList(sceneId, selfId, targetId)

AddNumText 的参数数量可变,但建议传满 6 个。第一个参数是选项编号,玩家选择后由 GetNumText 读取。

读取选项回调

local selection = GetNumText(number)
if type(selection) == "number" and selection ~= -1 then
    -- 取得玩家选择的选项编号
end

GetNumText 失败返回 -1,先判类型再判数值。

扩展任务配置查询

local name = TGetMissionName(missionIndex)
if type(name) == "string" and name ~= "" then
    local desc1, desc2, desc3, desc4 = TGetMissionDesc(missionIndex)
    -- 取得任务名称和四段描述
end

TGetMissionName 返回字符串,未找到返回空串。TGetMissionDesc 返回 4 个字符串,需要用 4 个变量接收,否则丢掉后面的值。

相关主题

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

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