查看“︁工程参考/配置文件/Server/GuildWarPoint.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Server/GuildWarPoint.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Server/GuildWarPoint.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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] GuildWarPoint.txt 登记帮战里各类行为值多少积分:第 1 列是索引,第 2 列是积分,第 3 列是给人看的规则说明。样本 7 行的含义分别是击杀、交矿、拆塔、拆战车等。 Lua 脚本用 <code style="white-space:normal;overflow-wrap:anywhere;">GetGuildWarPoint(索引)</code> 取值,查询走二分查找,所以第 1 列必须严格递增。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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/GuildWarPoint.txt</code>,路径写死在加载函数里,相对于 Server 工作目录;FileDef.h 没有对应宏。当前检索没有发现客户端读取这份文件。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 进程:TableInit::InitGuildWarPointTBL 打开 "./Config/GuildWarPoint.txt";LuaFnGetGuildWarPoint 用 bsearch 按索引取值 |- | 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。 |} 加载时要求列数至少 3,然后逐行读第 1、2 列到 <code style="white-space:normal;overflow-wrap:anywhere;">m_GuildWarIndex</code> 与 <code style="white-space:normal;overflow-wrap:anywhere;">m_GuildWarPoint</code>,同时检查索引是否严格大于上一行。 {| 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;" | 日志打印 “is not strictly ascending” 并 Assert(FALSE),整张表 CleanUp 丢弃。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 列数小于 3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 直接返回,不读数据。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 列 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 不读取——只有第 1、2 列进入内存。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 查询方式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | bsearch + CompareGuildWarPointTB,查不到返回 NULL,Lua 侧得到 0。 |} 索引从 0 开始是样本约定,不是代码要求:只要严格递增,起点与间隔都可以变。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT 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;" | 积分索引,二分查找的键。样本 0 到 6 连续。 | 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;">第 2 列</code><br>INT:积分 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 该行为对应的积分值。<code style="white-space:normal;overflow-wrap:anywhere;">GetGuildWarPoint</code> 返回的就是这个数。样本取值 1、3、20、50。 | 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:积分规则说明 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 人读的规则描述(样本「每拆毁对方一座塔获得的积分」)。加载函数只读前两列,这一列不进内存。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 不读取。改成错了不会报错,只会误导维护的人。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 把击杀对方成员的积分从 3 提高到 5 === 修改前: <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 STRING ID 积分 积分规则说明 0 3 每杀死一个对方成员获得的积分 </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 STRING ID 积分 积分规则说明 0 5 每杀死一个对方成员获得的积分 </pre> 按第 1 列定位索引 0(每杀死一个对方成员获得的积分)。只改第 2 列:3 → 5,其余两列保留,行的顺序不动。 改完重启 Server,Lua 侧 <code style="white-space:normal;overflow-wrap:anywhere;">GetGuildWarPoint(0)</code> 得到 5。实际帮战的积分结算逻辑在脚本里,改表之后需要打一场才能确认累计结果与显示是否正常。示例块含类型行、列名行与该行原文,不能覆盖整表。 == 验证与排查 == 启动日志出现 “Load GuildWarPoint.txt ... OK!”。故意把某一行的索引改成不大于上一行,日志会出现 “Load GuildWarPoint.txt ... Failed! row=… index=… is not strictly ascending” 并清掉整张表,之后 <code style="white-space:normal;overflow-wrap:anywhere;">GetGuildWarPoint</code> 一律返回 0。改完恢复备份并重启。 验证取值:在 Lua 侧或脚本里打印 <code style="white-space:normal;overflow-wrap:anywhere;">GetGuildWarPoint(索引)</code>,确认与目标行的第 2 列一致。 === 索引必须严格递增,不能重复也不能并列 === 查询是 bsearch,底层依赖有序。重复索引会让查询命中不确定的那一行。 === 第三列是给人看的 === 「积分规则说明」不读进内存。它最容易与实际配置脱节——改第 2 列时记得同步这里的文字。 === 查不到时返回 0 而不是报错 === <code style="white-space:normal;overflow-wrap:anywhere;">LuaFnGetGuildWarPoint</code> 在 pPoint 为 NULL 时压入 0。脚本如果拿 0 当「已扣除 0 分」,不会有任何提示。 === 表为空也不崩 === 行数可以是 0,此时所有查询返回 0,但日志里看不出异常。 == 关联与依据 == [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <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/Script/LuaFnTbl_Guild.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;">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;">resources/Server/Config/GuildWarPoint.txt</code>:实际加载、解析、字段使用或示例关联依据 本页核对 InitGuildWarPointTBL 的列数要求、索引递增断言、只读前两列的事实,以及 LuaFnGetGuildWarPoint 经 bsearch 取值并在未命中时返回 0;未启动服务端与游戏,帮战结算需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Server/GuildWarPoint.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息