查看“︁工程参考/配置文件/Server/NPCPaoPaoIndexTable.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Server/NPCPaoPaoIndexTable.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Server/NPCPaoPaoIndexTable.txt</span>}} __NOTOC__ <div class="config-file-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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] NPCPaoPaoIndexTable.txt 规定一种 NPC 可以说哪些头顶气泡对白。服务端只挑选对白编号,再由玩家客户端到 MonsterPaoPao.txt 查找文字。本文件只有三个整数列,修改对白内容需要定位客户端文字表。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 项目 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 说明 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 运行文件 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">./Config/NPCPaoPaoIndexTable.txt</code>,相对于读取程序的工作目录。源码 resources/Server/Config 是样本位置,实际部署可能另有副本。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 游戏进程;玩家客户端另读 MonsterPaoPao.txt 获取文字 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 正常保存并停服后修改 Server 工作目录中的 Config 副本,再重启 Server。当前检索范围未发现本表的单独重载入口。不要只修改源码 resources 里的样本。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 样本格式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">ASCII</code>,<code style="white-space:normal;overflow-wrap:anywhere;">CRLF</code>。保留原编码;源码读取器不会自动把中文转为 UTF-8。 |} 样本有 65 条记录。以 NPC 模板编号作为数组位置写入,因此不要求按 NPCID 排序;编号必须唯一,保持原顺序更容易核对改动。 === 三种编号怎样对应 === {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 编号 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 示例与用途 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | NPC 模板编号 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 1860,在 MonsterAttrExTable.txt 第一列对应“宝藏小怪”;本表第一列填写此编号。所有使用同一模板的实例共用该范围。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | NPC 场景对象 ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 游戏运行时某一只 NPC 的对象编号,用于 Lua 和消息定位。不要把模板 1860 直接当作当前对象 ID,也不要填 GUID。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 气泡对白编号 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 本例 Base=28、Step=2,可选 28 或 29;客户端在 MonsterPaoPao.txt 第一列查编号,第二列才是文字。 |} == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT INT INT</code>;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。 == 字段详解 == 列号从 1 开始,源码列下标从 0 开始。 {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:34%;text-align:left;background:#edf3f2;padding:8px;" | 字段与类型 ! scope="col" style="width:42%;text-align:left;background:#edf3f2;padding:8px;" | 含义与修改要点 ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 缺项或特殊值 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 1 列</code><br>INT:NPCID,NPC/怪物模板编号 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 按运行对象 GetDataID() 查询,关联 MonsterAttrExTable.txt 第一列。修改已有行会影响采用该模板且经过本表触发路径的 NPC;不会创建或刷新 NPC。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 有效数组范围 0..65534,还必须是实际存在的模板。负数或 >=65535 触发断言;重复键由 DBC 报错。整行不存在时,范围初始为 -1、-1,本表触发路径不发送气泡。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>INT:PAOPAPBaseID,起始对白编号 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 保留样本表头拼写。它是客户端 MonsterPaoPao.txt 第一列的起点,不是 NPCChat.txt 行号。Base=28、Step=2 对应 28..29,范围内每个编号都要存在。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 负值使本表触发路径直接跳过。0 会参与选择,并不表示关闭;若客户端无对应编号,就没有文字可显示。空值/非数字会转为 0,不作为合法配置。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 3 列</code><br>INT:IDStep,候选编号数量 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 使用 rand() % IDStep + Base 选择整数,所以末尾编号是 Base + IDStep - 1。2 表示两个连续编号,不是每隔两个编号,也不是两秒。1 表示固定起始编号。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 不发送气泡,负数也跳过。缺少数据行末列或空值成为 0。使用与现有文字数量相符的小正整数,保证编号和 Base+Step-1 不溢出;不要通过扩大范围猜测不存在的文字。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 让模板 1860 在本表触发时只选择对白 28 === 修改前: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT INT INT NPCID PAOPAPBaseID IDStep 1860 28 2</pre> 修改后: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT INT INT NPCID PAOPAPBaseID IDStep 1860 28 1</pre> 在原表第一列找到 1860,确认该行原为 1860、28、2,只将第 3 列 2 改为 1。第 1、2 列以及其余 64 行均保留。客户端现有编号 28 的文字是“宝藏是我们主人的,你休想拿走!”,29 是“嘿!又来了一个送死的!”。修改后,本表的触发路径只发送 28;它不会改变同范围的模板 1861,也不会改 NPC 名称。此例使用已有文字,无须改客户端表。其他脚本若直接指定对白编号,仍可能让该 NPC 说其他话。 == 验证与排查 == 检查 Load NPCPaoPaoIndexTable.txt ... OK!、三列和 NPC 模板引用,再确认客户端实际加载的 MonsterPaoPao.txt 有候选编号。用已有模板 1860 的测试 NPC,等待冷却后观察进入视野、锁定目标或正常脚本触发;比较 1861 作为未改行的对照。没有显示时逐项检查场景对象 ID、NPC 是否有 AI、冷却、客户端对象/名称板可见状态和文字资源。PaoPao 返回 -1 不代表屏幕上已显示。实际触发时机、区域广播范围、资源包更新和画面需要实测。恢复时停服还原本表并重启 Server;修改过客户端文字时同时恢复其资源并重启 Game.exe。 === 从哪里修改文字 === 客户端以 General 资源组加载 MonsterPaoPao.txt。查看正在使用的 Client/Bin/FairyResources.cfg 的 [General]:FileSystem=*../Data/Config 对应 Client/Data/Config/MonsterPaoPao.txt;AxpFileSystem=../Data/Config.axp 则应更新资源包内同名成员。使用其他映射时以实际配置为准。不要把本页的三列表复制成客户端的两列文字表。新增编号或修改文字时须更新所有参与测试的客户端,并重新启动 Game.exe;仅使用既有编号时无需同步本表到客户端。NPCChat.txt 不参与这里已核对的文字查询链。 === 冷却与其他触发入口 === 本表触发经过 AI 的拒绝气泡计时:已有正计时就返回,允许尝试时先设为 20000,之后由逻辑时间递减。即使没有有效范围,也已经设置了该计时。IDStep 不控制间隔,频繁点击不保证立刻再说一句;计时及自动触发的真实表现需要实测。直接指定编号的 PaoPaoEx、巡逻和 AI 动作入口可绕过本表范围,不能用本表承诺关闭所有对白。 === 服务端 Lua 关联 === 在已有服务端脚本事件中,使用该事件提供的有效 sceneId、selfId、npcId: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">PaoPao(sceneId, selfId, npcId)</pre> 参数依次为场景 ID、玩家场景对象 ID、NPC 场景对象 ID。注册名称是 <code style="white-space:normal;overflow-wrap:anywhere;">PaoPao</code>;<code style="white-space:normal;overflow-wrap:anywhere;">PaoPaoEx(sceneId, selfId, npcId, paoPaoId)</code> 的第四项是直接指定的对白编号,适合排查客户端是否有该文字,但不能用它证明本表范围修改生效。两接口的正常结束分支返回一个 -1,异常路径可能无返回值,不提供“实际显示成功”的返回标志。详见 [[Lua接口/服务端/PaoPao|PaoPao]]、[[Lua接口/服务端/PaoPaoEx|PaoPaoEx]]。这些调用属于服务端 Lua。 == 关联与依据 == [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/GameDefine.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/AI/AI_Monster.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/AI/AI_Monster_Def.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/AI/AIScriptFunction.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Obj/Obj_Monster.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Scene/Scene.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGLockTargetHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Script/LuaFnTbl_Monster.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Script/LuaFnRegister.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DBC/GMDataBase.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Common/TDDBC_Struct.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/Interface/GMInterface_Script_Talk.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Render/ResourceProvider.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Render/RenderSystem.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Core/Core/FairySystem.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Bin/FairyResources.cfg</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Config/MonsterPaoPao.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/MonsterAttrExTable.txt</code>:实际加载、解析、字段使用或示例关联依据 已隔离验证原始 DBC、服务端加载、AI 触发与随机范围发送函数;样本全部 65 行的模板及候选文字编号均核对存在。网络与场景对象使用测试替身,客户端只核对资源映射、查表和显示条件;未启动游戏或服务进程。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Server/NPCPaoPaoIndexTable.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息