查看“︁工程参考/配置文件/Public/SpecialObjData.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/SpecialObjData.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/SpecialObjData.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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] SpecialObjData.txt 描述陷阱、机关这类特殊对象。第 1 列是编号,接着是名称、类别、逻辑编号、隐形级别、陷阱标记与可激活次数;第 9 到 18 列是客户端显示区(服务端整段跳过),第 19 到 23 列是持续时间、间隔、触发半径、影响半径与影响数目,第 24 到 28 列是预留,第 29 到 60 列是 16 对「参数说明 + 参数值」,第 61 列是内部说明。样本 289 行、61 列。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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;">../Public/Config/SpecialObjData.txt</code>(宏 FILE_SPECIAL_OBJ_DATA),相对于 GameServer 工作目录。当前核对范围内客户端不读本表。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | GameServer:TableInit::InitSpecialObjDataMgr 用 g_SpecialObjDataMgr.InitFromDB(FILE_SPECIAL_OBJ_DATA);读取实现在 Common/Combat/DataRecords.cpp;消费方有 Obj_Special.cpp 与逍遥派技能 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 停服后备份并修改实际副本,重启 Server。当前检索未发现单独重载入口。 |- | 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;">GB18030-compatible</code>,<code style="white-space:normal;overflow-wrap:anywhere;">CRLF</code>。保留原编码;源码读取器不会自动把中文转为 UTF-8。 |} 读取由 <code style="white-space:normal;overflow-wrap:anywhere;">SpecialObjData_T::InitFromDB</code> 用一个游标 <code style="white-space:normal;overflow-wrap:anywhere;">column</code> 顺序推进:读第 1、2 列后 <code style="white-space:normal;overflow-wrap:anywhere;">++column</code> 跳过第 3 列,读第 4 到 8 列后 <code style="white-space:normal;overflow-wrap:anywhere;">column += 10</code> 跳过第 9 到 18 列,读第 19 到 23 列后 <code style="white-space:normal;overflow-wrap:anywhere;">column += 5</code> 跳过第 24 到 28 列,然后 16 次调用 <code style="white-space:normal;overflow-wrap:anywhere;">Descriptor_T::InitFromDB</code> 每次吃掉两列,最后读第 61 列。 {| 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;" | 1 到 8 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 编号、名称、(跳过提示)、类别、逻辑编号、隐形级别、陷阱标记、可激活次数 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 9 到 18 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区,最后一列是子弹编号 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 整段跳过 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 19 到 23 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 持续时间、间隔、触发半径、影响半径、影响个体数 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 24 到 28 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 整段跳过 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 29 到 60 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 16 对参数说明与参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 61 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 内部详细说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取 |} {| 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;" | 不能。必须落在 0 到 1022 之间(SpecialObjData_T::MAX_ID = 1023)。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 参数有几对 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 16 对(DESCRIPTOR_NUMBER),固定占用 32 列。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 子弹编号归谁用 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 18 列,服务端跳过;只有客户端把它和 Public/Bullet.txt 关联。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 哪些列是 FLOAT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 21、22 列(触发半径、影响半径)。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空格子怎么处理 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 整数经 atoi 为 0,字符串仍为空串。 |} == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT STRING STRING INT INT INT INT INT STRING INT STRING INT STRING INT INT INT INT STRING INT INT FLOAT FLOAT INT INT INT INT INT INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING</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:ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 数据编号,同时是 DBC 索引列。TemplateManager_T 把它当作数组下标写入 m_vTemplateList[nID],必须落在 0 到 1022 之间;Obj_Special 与逍遥派技能按它取模板。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必填且不能重复。超出范围会触发 AssertEx 并丢弃该行。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>STRING:名称$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 名称。保存为字符串指针。 | 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;">第 3 列</code><br>STRING:ToolTips$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 悬浮提示。服务端读取时用 ++column 整列跳过,不保存。 | 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;">第 4 列</code><br>INT:类别 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 类别。保存为 m_nClass,供按类别分支的代码使用。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>INT:逻辑ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 逻辑编号。保存为 m_nLogicID,是这个类对象的行为编号。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 6 列</code><br>INT:隐形级别 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 隐形级别。保存为 m_nStealthLevel,决定是否以及如何对敌方隐藏。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,等于不隐藏。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 7 列</code><br>INT:陷阱专用标记 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 陷阱专用标记。保存为 m_nTrapUsedFlags,是一组位标记的合集。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 8 列</code><br>INT:可激活次数 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可激活次数。保存为 m_nActiveTimes,触发多少次后失效。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,等于不能触发。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 9 列</code><br>STRING:生存期持续特效 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「生存期持续特效」(STRING 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 10 列</code><br>INT:生存期持续音效 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「生存期持续音效」(INT 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 11 列</code><br>STRING:激发特效 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「激发特效」(STRING 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 12 列</code><br>INT:激发音效 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「激发音效」(INT 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 13 列</code><br>STRING:死亡特效 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「死亡特效」(STRING 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 14 列</code><br>INT:死亡音效 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「死亡音效」(INT 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 15 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「预留」(INT 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 16 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「预留」(INT 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 17 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「预留」(INT 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | 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;">第 18 列</code><br>STRING: 子弹ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端显示区的「子弹ID」(STRING 列)。服务端在读完第 8 列后执行 column += 10,把第 9 到 18 列整段跳过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。子弹编号只在客户端把本对象和 Public/Bullet.txt 关联起来时用。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 19 列</code><br>INT:持续时间 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 持续时间。保存为 m_nContinuance,单位与计时器一致。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,等于不持续。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 20 列</code><br>INT:激活或触发时间间隔 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 激活或触发的时间间隔。保存为 m_nInterval。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 21 列</code><br>FLOAT:触发半径 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 触发半径,按 FLOAT 读取。保存为 m_fTriggerRadius。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,等于只有正中心才触发。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 22 列</code><br>FLOAT:影响半径 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 影响半径,按 FLOAT 读取。保存为 m_fEffectRadius。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,等于只影响触发点。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 23 列</code><br>INT:影响个体数目 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 影响个体的最大数目。保存为 m_nEffectedObjNumber。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,等于不影响任何对象。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 24 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 预留列。服务端在读完第 23 列后执行 column += 5,把第 24 到 28 列整段跳过。 | 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;">第 25 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 预留列。服务端在读完第 23 列后执行 column += 5,把第 24 到 28 列整段跳过。 | 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;">第 26 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 预留列。服务端在读完第 23 列后执行 column += 5,把第 24 到 28 列整段跳过。 | 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;">第 27 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 预留列。服务端在读完第 23 列后执行 column += 5,把第 24 到 28 列整段跳过。 | 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;">第 28 列</code><br>INT:预留 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 预留列。服务端在读完第 23 列后执行 column += 5,把第 24 到 28 列整段跳过。 | 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;">第 29 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 30 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 31 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 32 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 33 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 34 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 35 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 4 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 36 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 4 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 37 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 38 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 39 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 6 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 40 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 6 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 41 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 7 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 42 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 7 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 43 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 8 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 44 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 8 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 45 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 9 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 46 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 9 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 47 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 10 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 48 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 10 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 49 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 11 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 50 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 11 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 51 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 12 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 52 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 12 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 53 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 13 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 54 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 13 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 55 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 14 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 56 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 14 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 57 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 15 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 58 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 15 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 59 列</code><br>STRING:参数说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 16 个参数的说明文字。与下一列成对读入 Descriptor_T。 | 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;">第 60 列</code><br>INT:参数值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 16 个参数的值。与上一列成对读入 Descriptor_T 的 m_nValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 61 列</code><br>STRING:详细说明(内部使用) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 内部详细说明。保存为 m_szDescription,在描述符之后读入。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 不生效,仅供阅读。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 把 10 号特殊对象的持续时间从 30000 改为 60000 === 修改前: <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 STRING STRING INT INT INT INT INT STRING INT STRING INT STRING INT INT INT INT STRING INT INT FLOAT FLOAT INT INT INT INT INT INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING ID 名称$1$ ToolTips$1$ 类别 逻辑ID 隐形级别 陷阱专用标记 可激活次数 生存期持续特效 生存期持续音效 激发特效 激发音效 死亡特效 死亡音效 预留 预留 预留 子弹ID 持续时间 激活或触发时间间隔 触发半径 影响半径 影响个体数目 预留 预留 预留 预留 预留 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 详细说明(内部使用) 10 萤火虫 萤火虫 0 1 0 0 0 萤火虫烟花 -1 30000 500 0 0 0 效果1 -1 效果2 -1 效果3几率 -1 效果3 -1 </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 STRING STRING INT INT INT INT INT STRING INT STRING INT STRING INT INT INT INT STRING INT INT FLOAT FLOAT INT INT INT INT INT INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING INT STRING ID 名称$1$ ToolTips$1$ 类别 逻辑ID 隐形级别 陷阱专用标记 可激活次数 生存期持续特效 生存期持续音效 激发特效 激发音效 死亡特效 死亡音效 预留 预留 预留 子弹ID 持续时间 激活或触发时间间隔 触发半径 影响半径 影响个体数目 预留 预留 预留 预留 预留 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 参数说明 参数值 详细说明(内部使用) 10 萤火虫 萤火虫 0 1 0 0 0 萤火虫烟花 -1 60000 500 0 0 0 效果1 -1 效果2 -1 效果3几率 -1 效果3 -1 </pre> 按第 1 列定位 10 号对象(萤火虫)。第 19 列是持续时间,样本值 30000,这里改成 60000,其余 60 列与另 288 行全部保留。 注意列号容易数错:第 9 到 18 列是服务端跳过的客户端显示区,第 18 列名叫「子弹ID」,持续时间在它之后一格。改之前先按列号数一遍。 示例块含类型行、列名行与该行原文,不能覆盖整张表。改完需要重启 Server。 == 验证与排查 == Server 启动日志出现 “Load SpecialObjData.txt ... OK!”。改完重启后,让对应陷阱或机关触发一次,确认持续时间、触发半径与影响个体数符合新值;若改的是参数值,确认效果确实读到了新的 Descriptor。若整行没生效,先检查第 1 列是否落在 0 到 1022 之间。失败时恢复备份并重启。 === 有两段整列跳过 === 读完第 8 列后跳过 10 列(9 到 18),读完第 23 列后跳过 5 列(24 到 28)。在这两个区间里填任何值服务端都看不到,也不要指望靠它们调整行为。 === 子弹 ID 在跳过区里 === 第 18 列叫「子弹ID」,但服务端读第 9 到 18 列时是整段跳过的。它只在客户端把本对象和 Public/Bullet.txt 关联起来时起作用。 === 16 对参数是固定的 === <code style="white-space:normal;overflow-wrap:anywhere;">DESCRIPTOR_NUMBER</code> 是 16,固定吃掉第 29 到 60 列。想加一对参数必须同时改类型行、列名行、所有数据行并改这个常量。 === 半径是 FLOAT === 第 21、22 列按 FLOAT 读取,其余整数列按 INT 读取。类型行写错会让解析出来的值完全不对。 == 关联与依据 == [[工程参考/配置文件/Public/Bullet.txt|Public/Bullet.txt]] · [[工程参考/配置文件/Public/IDCollections.txt|Public/IDCollections.txt]] [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <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;">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;">Common/Combat/DataRecords.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/Combat/DataRecords.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Obj/Obj_Special.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Skills/SkillLogic/Human/XiaoYaoSkill001.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/SpecialObjData.txt</code>:实际加载、解析、字段使用或示例关联依据 本页核对 SpecialObjData_T::InitFromDB 的游标推进(两次整段跳过与 16 次 Descriptor_T)、MAX_ID=1023 与 DESCRIPTOR_NUMBER=16 两个上限、第 21/22 列的 FLOAT 读取;样本 289 行的编号范围与列宽经脚本核算。未启动服务端,陷阱的实际触发效果需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/SpecialObjData.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息