工程参考/配置文件/Public/ItemEnhance.txt

来自天龙知识库
雪舞留言 | 贡献2026年9月10日 (四) 00:41的版本 (维护配置文件知识库:完整字段、读取范围、手工修改实例与核对状态)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索


首页 · 配置文件索引 · 修改约定

ItemEnhance.txt 控制从当前强化等级升到下一等级时的费用和成功判断,也用于读取已经达到该等级的属性倍率。修改费用不等于修改材料,增加一行也不等于完整开放更高强化等级。

位置与生效 · 文件格式 · 字段详解 · 修改实例

文件位置与生效

项目 说明
运行文件 ../Public/Config/ItemEnhance.txt,相对于 Server 工作目录;客户端提示使用同名资源。
读取程序 Server 游戏进程与 Game.exe 客户端资源
生效方法 正常保存并停服后更新各 Server 的表,重启 Server;同步客户端同名资源后重启 Game.exe。当前检索范围未发现本表可用的单独重载入口。
样本格式 GB18030-compatibleCRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

共 12 列 INT,至少一行。当前样本为 19 个装备点各 1..9 级,共 171 行,其中有数据但不允许强化的装备点仍存在。服务端按“装备点 + 目标等级”线性查第一条匹配记录;第一列仅作为 DBC 索引,不能替代这两个条件。

两端各改哪里

Server 读取 ../Public/Config 中的文件,路径相对于它的工作目录。玩家电脑按 Client/Bin/FairyResources.cfg 的 [General] 更新同名资源:FileSystem=*../Data/Config 对应 Client/Data/Config 中的散文件,AxpFileSystem=../Data/Config.axp 对应资源包内成员。保留现有打包与编码方式。源码 resources 里的文件是样本,修改样本不会自动部署到两端。

文件格式

首行是类型行:INT INT INT INT INT INT INT INT INT INT INT INT;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。

字段详解

列号从 1 开始,源码列下标从 0 开始。

字段与类型 含义与修改要点 缺项或特殊值
第 1 列
INT:索引
DBC 行的唯一索引。Server 业务加载器未保存本列,查强化费用和倍率按第 2、3 列;不按“索引+1”计算强化等级。 非空且唯一,原样本从 0 开始,0 合法。保持原有顺序;即便索引不同,相同装备点与目标等级重复时仍只取先出现的记录。
第 2 列
INT:装备点
实际穿戴部位编号,见下方对照。正常强化允许 0..7、11..15、17;8、9、10、16、18 不因表里有行就获得强化能力。 内部 BYTE,保持已核对的部位值。不是背包格、装备模板编号或大类 class;-1 和 256 等会截断。
第 3 列
INT:强化等级,目标等级
从 N 级强化时查 N+1 行;计算已是 N 级装备的属性时查 N 行。因此本列 1 控制 0→1 的操作,也提供 +1 装备的倍率。 内部 BYTE;保留样本连续 1..9,0 不是初始状态设置。全局上限取全表本列最大值,不按部位分别取,单独新增高等级行会影响其他部位的上限判断。
第 4 列
INT:收取金钱
单位为铜,100 铜=1 银,10000 铜=1 金。强化 C++ 入口先查金币+交子总额,再请求优先消耗交子、余款用金币;成功与正常随机失败都会进入扣款后的结果处理。 推荐非负且业务支持的适度整数;保存为 UINT,负数不能表示免费。0/空值表示所请求费用为零,底层允许零费用,不会据此禁止强化。本入口没有检查底层扣款返回值,异常不能保证整体回滚。
第 5 列
INT:成功率,万分制随机阈值
随机结果范围 0..9999,代码在“随机值大于本列”时失败,等于本列时成功。7500 接受 0..7500 共 7501 个结果,不能严格写成 75% 的独立抽签。 0/空值仍接受随机值 0,不能用来彻底关闭强化。9999 接受全部正常结果;>=10000 同样全接受。存 UINT,负数会成为大数。客户端提示对大于 100 的值取整除以 100,其余显示 1,低值提示不等于实际门槛。
第 6 列
INT:退化等级
一次失败后直接设置成此强化等级,不是扣掉的级数。例:从 3→4 失败且本列为 1,则变为 +1,不是从 +3 减 1。 内部 BYTE;一般为 0..当前等级。不要填 -1 表示不变,-1 会成为 255。检查入口在当前强化等级大于 2 时返回 -6 与本列供脚本提示,它不代表已执行失败。
第 7 列
INT:外攻
客户端对应基础外功攻击的百分比。Server 在武器/暗器部位把本列取作第一项待消费倍率,按基础属性遍历顺序应用一次;详细规则见下方。 存 UINT,0/空值不提供正倍率;负数会变为极大值。样本同一行六列倍率相等,不宜在未验证属性顺序时只改这一列。
第 8 列
INT:内攻
客户端对应基础内功攻击;Server 在武器/暗器部位取作第二项待消费倍率,不把它作为所有装备的内功加成统一使用。 百分比整数,10 表示按基础值增加 10%。0 不消耗一个正倍率名额,非对称数值需核对两端。
第 9 列
INT:外防
客户端对应基础外功防御;Server 在防具组部位取作第一项待消费倍率。 非负百分比整数,内部 UINT;只改表头对应列不保证所有非常规基础属性装备都按相同方式计算。
第 10 列
INT:内防
客户端对应基础内功防御;Server 在防具组部位取作第二项待消费倍率。 非负百分比整数。与第 9 列作为该部位的两项倍率共同核对。
第 11 列
INT:命中
客户端对应基础命中属性;Server 在饰品组部位取作第一项待消费倍率。不是实际战斗命中率。 非负百分比整数。服务端遍历顺序先闪避再命中,因此存在两端错配的可能;样本相等数值掩盖此差异,不建议单独提高这一列。
第 12 列
INT:闪避
客户端对应基础闪避属性;Server 在饰品组部位取作第二项待消费倍率。不是实际战斗闪避率。 非负百分比整数,保留末列。非对称倍率的显示和实际属性需要实测,不能只以客户端提示确认服务端效果。

常用修改实例

示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。

把武器从 +0 升到 +1 的费用从 100 铜改为 200 铜

修改前:

INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
索引	装备点	强化等级	收取金钱	成功率	退化等级	外攻	内攻	外防	内防	命中	闪避
0	0	1	100	7500	0	10	10	10	10	10	10

修改后:

INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
索引	装备点	强化等级	收取金钱	成功率	退化等级	外攻	内攻	外防	内防	命中	闪避
0	0	1	200	7500	0	10	10	10	10	10	10

在原表第一列找到索引 0,再核对第 2 列装备点为 0、第 3 列目标等级为 1。只把第 4 列 100 改为 200,保留成功阈值 7500、退化等级 0、六列倍率 10,以及整表其他记录。同步客户端。用合法材料和 +0 武器在隔离环境验证费用提示 200 铜,余额 199 时拒绝,足额时按交子优先的顺序扣费。随机失败仍可能发生;本例不修改成功率、材料或已 +1 武器的属性。三行示例不能替代整表。

验证与排查

先确认 InitItemEnhanceTable() Ok!、12 列和示例只改第 4 列;查同一装备点与目标等级没有重复,保留其他部位的等级链。分别测试不足额、交子足额、混合余额、成功和失败后的钱款/材料/等级,重登检查保存结果。恢复时正常停服还原两端表并重启;恢复费用不能退回已消耗的钱和材料,也不能还原失败降级的装备。

装备点对照

装备点 含义与服务端倍率组
0、17 武器、暗器,读取第 7、8 列。
1、2、3、4、5、14、15 帽子、盔甲、护腕、鞋、腰带、护腕位、护肩,读取第 9、10 列;编号 3 与 14 的源码注释同称护腕,按实际槽位核对,不能只凭中文名称互换。
6、7、11、12、13 戒指、项链、第二戒指、护符、第二护符,读取第 11、12 列。
8、9、10、16、18 骑乘、行囊、格箱、时装、保留位,当前强化入口拒绝。

强化倍率怎样使用

服务端按外功攻击、外功防御、内功攻击、内功防御、闪避、命中的顺序遍历基础属性;只在基础值为正时调用加成。该部位读出的两项正倍率依次使用,用过置零,最多各用一次。它不是按六个表头对所有六项基础属性分别加成。客户端提示则按六列直接取对应属性的倍率。当前样本每行六列相同;如只改其中一列,尤其交换饰品的命中/闪避强弱,必须检查服务端属性与客户端提示的差异。雕纹/锁相关的 10% 部分另行计算,不是本表成功率。

材料由业务脚本处理

Script.dat 的脚本 809262 对应 event/equip/equip_enchance.lua(真实文件名如此)。脚本按装备有效需求等级检查 30900005、30900006 或 30900045 等材料。LuaFnEquipEnhance 在正常成功或随机失败前已请求扣钱,但不删除材料;脚本随后按结果删除材料格或减少强化露次数,普通删除会删整个选中格。不能通过本表更换材料或把选中格整组数量当成只耗一个。

Lua 检查与执行分别看返回值

LuaFnEquipEnhanceCheck 的 0 表示检查通过;-6 加第二返回值表示后续失败可能落到的等级,未做随机抽取。LuaFnEquipEnhance 正常返回 0、新等级,或 -6、失败后等级。两入口的 -3 含义与返回数量存在差异,不能统一按一个错误码表处理。执行入口没有把扣款、变更和脚本扣材料组成可回滚事务,异常时不要自动重试;具体返回以函数页为准。

关联与依据

Public/ItemAptRate.txt · Public/EquipVisual.txt · Public/SlotCost.txt

其他配置及整理状态 · 服务端外网设置 · Lua 接口索引

  • Common/DataBase/TLBB_DBC.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/DataBase/TLBB_DBC.h:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据
  • Common/GameStruct_Item.h:实际加载、解析、字段使用或示例关联依据
  • Common/GameStruct.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/GameDefine_Item.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/ItemTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/ItemTable.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/ItemOperator.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/ItemContainer.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Script/LuaFnTbl_Ability.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Script/LuaFnRegister.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/DBC/GMDataBase.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Common/TDDBC_Struct.h:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/Interface/GMGameInterface_Script_LifeAbility.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Render/ResourceProvider.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Render/RenderSystem.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Core/Core/FairySystem.cpp:实际加载、解析、字段使用或示例关联依据
  • resources/Client/Bin/FairyResources.cfg:实际加载、解析、字段使用或示例关联依据
  • resources/Client/Bin/FairyResources正式服.cfg:实际加载、解析、字段使用或示例关联依据
  • Common/Rand.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/Rand.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/ItemOperator.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Obj/Obj_Human.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Obj/Obj_Human_Calc.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/Interface/GMInterface_Script_Tooltip.cpp:实际加载、解析、字段使用或示例关联依据
  • resources/Public/Data/Script.dat:实际加载、解析、字段使用或示例关联依据
  • resources/Public/Data/Script/event/equip/equip_enchance.lua:实际加载、解析、字段使用或示例关联依据

原始 DBC、强化加载查询、随机阈值比较与属性倍率函数在独立夹具验证;既有材料脚本、扣款调用和客户端显示经源码核对。没有执行真实强化、扣费、数据库或服务,长期随机分布与游戏效果需要实测。