查看“︁工程参考/配置文件/Public/ItemAptRate.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/ItemAptRate.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/ItemAptRate.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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] ItemAptRate.txt 是装备资质的换算表:先用一项属性保存的资质点找第一列,再取该属性对应列的百分比。例如资质点 189、物理攻击列 16,表示该装备基础外功攻击额外增加 16%。它不设置洗资质的概率,也不把装备资质点直接改成 189。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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/ItemAptRate.txt</code>,相对于 Server 工作目录;客户端提示使用同名资源。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 游戏进程和 Game.exe 客户端资源 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 正常保存并停服,更新各 Server 实际使用的文件后重启 Server;客户端同步同名资源后重启 Game.exe。当前检索范围未发现本表可用的单独重新加载入口。无需启动或修改数据库来验证文件格式。 |- | 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。 |} 共 7 列 INT;服务端检查列数必须为 7、数据行数不超过 255。样本保留资质点 1..255 共 255 行。查询按第一列二分查找,加载器不会排序,必须保持第一列数值递增且唯一。 === 两端各改哪里 === Server 从工作目录的 ../Public/Config 读取。玩家电脑按 Client/Bin/FairyResources.cfg 的 [General] 更新资源:FileSystem=*../Data/Config 对应 Client/Data/Config 中的同名文件;AxpFileSystem=../Data/Config.axp 对应包内同名成员。使用已有资源打包流程,随后重启 Game.exe。只修改源码 resources 样本或只改一端不会完成部署。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT INT INT INT 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:资质点 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 查询键,对应物品保存的某一项资质点。六项属性可以各有不同资质点,因此同一件装备可能查六行。不是角色等级、装备需求等级、资质文字档位、物品编号或洗练次数。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 物品以 BYTE 保存,正常点数 1..255;0 在已核对的属性计算和 Lua 查询中被跳过。保留全部 255 个既有键;缺行查询返回 0 加成,重复触发 DBC 错误,乱序可能查不到已有行。 |- | 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;" | 该行资质点对应的基础外功攻击加成百分比;16 表示 +16%,不是 16 点攻击或 16 倍。服务端按基础值*本列*0.01 计算额外值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空值为 0,即本项没有资质额外加成。建议保留非负且经过平衡验证的整数;没有通用的自动夹到 100 的保护。Lua GetItemApt 类型 1 取本列。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 3 列</code><br>INT:物理防御,外功防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 该行资质点对应的基础外功防御加成百分比,计算方式同第 2 列。只增加对应装备基础属性的这一部分。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或空值不增加;负数可能减少最终值,不能当作“自动”。Lua GetItemApt 类型 3 取本列。 |- | 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;" | 该行资质点对应的基础内功攻击加成百分比。与第 3 列顺序不能互换。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或空值不增加;保留非负、经过验证的整数。Lua GetItemApt 类型 2 取本列。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>INT:魔法防御,内功防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 该行资质点对应的基础内功防御加成百分比;不是元素抗性、伤害减免或受击概率。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或空值不增加;保留非负、经过验证的整数。Lua GetItemApt 类型 4 取本列。 |- | 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;" | 该行资质点对装备基础闪避属性值的加成百分比。不是最终躲避一次攻击的概率。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或空值不增加;不要据数值 20 承诺 20% 的实战闪避概率。Lua GetItemApt 类型 5 取本列。 |- | 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;" | 该行资质点对装备基础命中属性值的加成百分比。不是最终命中率。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或空值不增加;保留末列及行尾,不能因临时不改命中而删去。Lua GetItemApt 类型 6 取本列。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 把资质点 189 的基础外功攻击加成从 16% 改为 17% === 修改前: <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 INT INT INT INT 资质点 物理攻击 物理防御 魔法攻击 魔法防御 闪避 命中 189 16 16 16 16 16 16</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 INT INT INT INT 资质点 物理攻击 物理防御 魔法攻击 魔法防御 闪避 命中 189 17 16 16 16 16 16</pre> 在原表第一列找到 189,只改第 2 列 16 为 17,第 3..7 列仍为 16,并保留其他 254 行。同步客户端同一行。教学计算:假定这件装备基础外功攻击为 1000、外功资质点确为 189、资质已启用,则资质额外值从 160 变为 170;这不是角色总攻击提高 1%。本例不会让资质点 188 或 190 自动跟着变化,也不自动生成一件点数为 189 的装备。必须使用已确认条件的测试物品,不能只凭提示档位认定点数。 == 验证与排查 == 没有专门的 InitAptRateTable() Ok! 日志可作为保证。先检查 Server 启动没有本表读取/断言错误,再检查 7 列、第一列递增且唯一、1..255 的覆盖和示例只改一个值。用已启用资质、点数明确且对应基础属性为正的装备,核对 Lua 返回、客户端百分比和装备重新计算后的角色属性;同时用点数不等于 189 的装备作对照。正常停服恢复两端表备份后重启;本表修改不改库存保存的资质点,别为回滚而重洗物品。 === 加成算在哪里 === 资质额外值 = 该装备这一项基础值 * 查表百分比 / 100。服务端把它与基础值、同项额外/宝石值及强化相关值相加,再转换整数,正值上限限制为 32767。不是把角色总属性乘以百分比,也不会把全部宝石和强化数值再乘一次。资质必须已启用且该项点数大于 0;改表不会替代启用流程。极端数值和负数会造成不合理结果,不建议用于玩法配置。 === 百分比与提示档位分开 === 客户端按原资质点的 64、126、189 等门槛选择文字档位,另按 250 以上等条件选择颜色;显示百分比则查本表。把 16 改为 17 不会将保存的点数或全部提示档位同步提高。 === 服务端 Lua 查询 === {| 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;" | 第 4 个参数 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 本表对应列 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 1 外功攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 列 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 2 内功攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 4 列 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 3 外功防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 列 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 4 内功防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 列 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 5 闪避 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 6 列 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 6 命中 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 7 列 |} <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 percent = GetItemApt(sceneId, selfId, equipBagPos, 1) if percent < 0 then return end -- 配置已核对为非负;percent 是查表百分比 -- 0 也可能表示没有匹配的配置行</pre> sceneId 是当前场景 ID,selfId 是其中玩家对象 ID,equipBagPos 是测试装备所在背包格,不是物品模板号、GUID 或已穿装备栏位置。正常样本对应资质点 189 返回 16,本例修改后返回 17。表内负数也会原样返回,配置应保持非负。参见 [[Lua接口/服务端/GetItemApt|GetItemApt]];该查询不检查资质启用标志,读到百分比不代表角色已获得加成。 [[Lua接口/服务端/LuaFnReSetItemApt|LuaFnReSetItemApt]] 成功后的结果分类也查本表:只考察基础值为正、点数不为 0 的项,百分比大于 17 可使返回值为 2;点数大于 250 优先返回 3。改表可能改变脚本据返回值发出的提示或奖励判断;不能把 2、3 当作本表行号。本例只改到 17,没有跨过“大于 17”的门槛。 == 关联与依据 == [[工程参考/配置文件/Public/EquipExtraAttr.txt|Public/EquipExtraAttr.txt]] · [[工程参考/配置文件/Public/SlotCost.txt|Public/SlotCost.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;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Item/ItemTable.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Item/ItemTable.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/GameStruct_Item.h</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_Tooltip.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/Bin/FairyResources正式服.cfg</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Obj/Obj_Human_Calc.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Script/LuaFnTbl_Ability.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Script/LuaFnRegister.cpp</code>:实际加载、解析、字段使用或示例关联依据 原始 DBC、表加载、二分查询与 Lua GetItemApt 在独立夹具核对;百分比计算与客户端映射经源码核对。测试不启动服务、不生成真实库存,角色实际属性及提示仍需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/ItemAptRate.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息