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

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


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

EquipSetAttr.txt 控制穿上同套装备后增加哪些属性。它与 EquipBase.txt 一起使用:基础表决定装备属于哪套、算哪个部件,本表决定凑几件和如何加属性。改套装数值时要保留属性对的顺序,不能把空位置删掉。

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

文件位置与生效

项目 说明
运行文件 ../Public/Config/EquipSetAttr.txt,相对于 Server 工作目录;客户端另有同名资源。
读取程序 Server 游戏进程与 Game.exe 客户端提示
生效方法 正常保存并停服,修改各 Server 实际副本后重启 Server;同步客户端同名资源并重启 Game.exe。当前检索范围未发现本表单独重载入口。Server 会在装备属性重算时读取已加载的套装表,已有装备也可能受到影响。
样本格式 GB18030-compatibleCRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

固定 37 列:前 5 列基本信息,后 32 列为 16 对“类型/值”,位置从 0 到 15。样本 155 行,服务端按套装编号二分查找,必须保持递增唯一;加载器不替你排序。

两端各改哪里

Server 更新工作目录上一级 Public/Config/EquipSetAttr.txt。客户端按 Client/Bin/FairyResources.cfg 的 [General]:FileSystem=*../Data/Config 使用 Client/Data/Config 散文件,AxpFileSystem=../Data/Config.axp 使用资源包内成员。保留实际部署方式和原编码,源码 resources 样本不自动部署。

关联编号 区别
EquipBase 第 9 列“套装编号” Server 保存为 m_EquipSetNum,客户端叫 nSetID;对应本表第一列,不是物品模板号。
EquipBase 第 10 列“套装效果值” Server 叫 m_EquipSetEffect,客户端叫 nSetPosition;是同一列的两种变量名。它用来区别套装部件,不是效果值或本表属性位置。
EquipBase 第 6 列 EquipPoint 实际穿戴栏位,例如 2 是盔甲、14 是护腕、15 是护肩。部件号和穿戴栏位即使样本恰好相同,也不能当成同一概念。

文件格式

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

字段详解

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

字段与类型 含义与修改要点 缺项或特殊值
第 1 列
INT:套装编号
对应 EquipBase 第 9 列。服务端按编号查表,编号 0 合法,负数查询直接无结果;不是文件行号或部件号。 保持递增唯一。没找到套装时不计算这套属性。当前主要客户端套装提示拒绝编号 <=0,所以样本套装 0 可能有服务端效果但缺少该提示。
第 2 列
STRING:套装名字$1$
客户端套装提示中的名称;Server 业务加载器不保存本列。 保留原编码,空字符串只影响名称显示,不停止属性计算。$1$ 是样本表头的一部分,不是要填写的名称。
第 3 列
INT:组件数
有效部件数恰好等于本列时,Server 才把普通属性处理名额扩大到 16,并检查特殊 Impact。不足或超过时均按实际部件数给予普通属性名额;不是 >= 判断。 保留与原套装部件布局一致的正整数。0/空值或负数不能禁用套装;普通属性仍可能计算。特殊 Impact 的位置检查要求本列在 0..15,超过此范围不会按该位置发送。
第 4 列
INT:特效
Server 不保存,客户端保存为 nReserve[0]。当前检索范围未发现本列实际特效消费。 保留样本值。不要据名称把它当作类型 100 的 Impact 编号。
第 5 列
INT:绑定点
Server 不保存,客户端保存为 nReserve[1]。当前检索范围未发现套装绑定或挂接点业务读取本列。 保留原值;改成本地模型挂点或绑定状态没有已确认效果。
第 6 列
INT:效果类型0,位置 0
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 7 列
INT:效果值,位置 0
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 8 列
INT:效果类型1,位置 1
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 9 列
INT:效果值,位置 1
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 10 列
INT:效果类型2,位置 2
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 11 列
INT:效果值,位置 2
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 12 列
INT:效果类型3,位置 3
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 13 列
INT:效果值,位置 3
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 14 列
INT:效果类型4,位置 4
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 15 列
INT:效果值,位置 4
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 16 列
INT:效果类型5,位置 5
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 17 列
INT:效果值,位置 5
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 18 列
INT:效果类型6,位置 6
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 19 列
INT:效果值,位置 6
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 20 列
INT:效果类型7,位置 7
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 21 列
INT:效果值,位置 7
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 22 列
INT:效果类型8,位置 8
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 23 列
INT:效果值,位置 8
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 24 列
INT:效果类型9,位置 9
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 25 列
INT:效果值,位置 9
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 26 列
INT:效果类型10,位置 10
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 27 列
INT:效果值,位置 10
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 28 列
INT:效果类型11,位置 11
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 29 列
INT:效果值,位置 11
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 30 列
INT:效果类型12,位置 12
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 31 列
INT:效果值,位置 12
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 32 列
INT:效果类型13,位置 13
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 33 列
INT:效果值,位置 13
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 34 列
INT:效果类型14,位置 14
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 35 列
INT:效果值,位置 14
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。
第 36 列
INT:效果类型15,位置 15
配对效果值大于 0 时,Server 将本列转为 BYTE 保存。普通属性用 0..63,已核对的样本类型见下方;100 为有指定位置条件的 Impact。 配对值 <=0/空时不保存此类型,整对保持初始化的类型 0、值 0;所以样本 -1/-1 仍占普通属性处理名额。类型 -1 配正值会成为 255 并被普通计算跳过,不能和 -1/-1 混用。
第 37 列
INT:效果值,位置 15
本位置类型的数值,见下方单位表;类型 100 时是 Impact 数据索引。Server 只接纳正值,并将超过 32767 的值截为 32767。 0、负数、空值都使这一对保留类型 0/值 0,不删除位置。不要写负数企图扣属性。客户端有直接转 SHORT 和使用原 INT 的不同提示路径,超过 32767 可能出现两端差异。

常用修改实例

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

把“无相”套装的力量加成从 10 点改为 12 点

修改前:

INT	STRING	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
套装编号	套装名字$1$	组件数	特效	绑定点	效果类型0	效果值	效果类型1	效果值	效果类型2	效果值	效果类型3	效果值	效果类型4	效果值	效果类型5	效果值	效果类型6	效果值	效果类型7	效果值	效果类型8	效果值	效果类型9	效果值	效果类型10	效果值	效果类型11	效果值	效果类型12	效果值	效果类型13	效果值	效果类型14	效果值	效果类型15	效果值
1	无相	3	-1	-1	-1	-1	42	10	0	966	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1

修改后:

INT	STRING	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
套装编号	套装名字$1$	组件数	特效	绑定点	效果类型0	效果值	效果类型1	效果值	效果类型2	效果值	效果类型3	效果值	效果类型4	效果值	效果类型5	效果值	效果类型6	效果值	效果类型7	效果值	效果类型8	效果值	效果类型9	效果值	效果类型10	效果值	效果类型11	效果值	效果类型12	效果值	效果类型13	效果值	效果类型14	效果值	效果类型15	效果值
1	无相	3	-1	-1	-1	-1	42	12	0	966	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1

第一列找到套装 1“无相”,核对第 8 列类型为 42(力量),只把第 9 列值 10 改为 12。第 6、7 列 -1/-1、第 10 列类型 0(血上限)、第 11 列值 966、组件数 3 以及所有其他字段和行保持原样。

现有三件分别为 10513001“无相精铁甲”(装备点/部件 2)、10514001“无相精铁腕”(14)、10515001“无相精铁肩”(15),三者套装号均为 1。一件时处理首个空位置,不增加这项力量;两种部件时力量由 10 变为 12;三种部件时仍只加 12 点力量,并保留原 966 点血上限项。最终人物属性还可能受其他装备和技能影响,测试时比较同一角色、同样装备的修改前后状态,不能把整套装备自带的力量也算进本表的 12 点。三行片段不能替代整表。

验证与排查

检查 37 列、编号递增唯一、16 对位置保留,确认示例只改第 9 列。加载函数没有独立成功日志,不编造 InitEquipSetAttrTable Ok 提示。用“无相”三件依次穿上、卸下,核对 1/2/3 件的 Server 力量增量、血上限项、客户端提示和重登结果;检查已有套装同样重新计算。恢复时正常停服还原两端表并重启。涉及类型 100 时另测穿脱到 0 件、重复部件、超过需求数量和已存在同 ID 的效果;不能保证只恢复配置就撤销已保存的 Impact。

有效部件怎样计数

Server 遍历 19 个装备栏,同套装且第 10 列部件号相同的装备只算一次,再按套装号合并数量。相同部件的不同物品模板也不能靠重复穿戴凑件数。

属性位置为何不能删

以“无相”为例,位置 0 是 -1/-1,Server 初始化后等于类型 0/值 0,仍消耗一个名额。位置 1 才是力量,位置 2 才是血上限。用空对预留第一件奖励位置是有实际含义的;把后两对移到前面会改变一件、两件时的奖励。类型 >=64 不进入普通属性计算,也不消耗普通名额,因此 100 的位置不能随便与空对互换。

组件数恰好相等时,所有 16 个位置中普通属性可参与;数量超过组件数不会进入这个“凑齐”分支。这是已确认的代码规则,应保留原套装布局。

样本属性类型与单位

类型与名称 效果值含义
0:血上限 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
3:气上限 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
6:冰攻击 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
7:冰抗 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
9:火攻击 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
10:火抗 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
12:玄攻击 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
13:玄抗 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
15:毒攻击 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
16:毒抗 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
19:外功攻击 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
22:外功防御 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
26:内功攻击 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
29:内功防御 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
35:命中 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
36:闪避 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
37:会心攻击 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
42:力量 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
43:灵气 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
44:体质 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
45:定力 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
46:身法 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
47:会心防御 增加该项属性点数;命中、闪避、会心攻防不是直接填写战斗概率。
1:血上限比例 整数百分比,以相应基础属性为基数除以 100 并四舍五入,不是按已显示总属性再乘一次。10 表示这一项基础值的 10%。
4:气上限比例 整数百分比,以相应基础属性为基数除以 100 并四舍五入,不是按已显示总属性再乘一次。10 表示这一项基础值的 10%。
20:外功攻击比例 整数百分比,以相应基础属性为基数除以 100 并四舍五入,不是按已显示总属性再乘一次。10 表示这一项基础值的 10%。
23:外功防御比例 整数百分比,以相应基础属性为基数除以 100 并四舍五入,不是按已显示总属性再乘一次。10 表示这一项基础值的 10%。
27:内功攻击比例 整数百分比,以相应基础属性为基数除以 100 并四舍五入,不是按已显示总属性再乘一次。10 表示这一项基础值的 10%。
30:内功防御比例 整数百分比,以相应基础属性为基数除以 100 并四舍五入,不是按已显示总属性再乘一次。10 表示这一项基础值的 10%。
18:全抗性 当前计算将同一数值分别加到冰、火、玄、毒四项抗性,单位是抗性点。旧枚举注释“按百分比抵消所有属性攻击”不符合此处实现。
48:全一级属性 同一数值分别增加力量、灵气、体质、定力、身法五项,不分摊。
25、32:伤害抵消相关 样本有这两种类型。当前 Combat_Core 的 PhysicalDamage 与 MagicalDamage 都取类型 25,限制在 0..100,再乘 (100-值)/100。类型 32 虽被保存累计,当前检索范围未发现这些伤害入口读取它。保留现值,不能把 32 当作已确认独立内功减伤开关;其他技能路径需要实测。
100:附加效果 效果值是 Impact 数据索引。只有放在“组件数 N”对应的零基属性位置 N,且有效部件数恰为 N 时才走特殊发送分支;例如 N=3 时为效果类型3及其值,即第 12、13 列。不是技能 ID 或物品号。
其他 0..63 类型 属于公共物品属性枚举,样本没有在本表采用。它们在套装中是否有可靠的终端效果、单位和提示尚未全部核对,需要实测;本页不提供添加这些类型的操作实例。64、65 不是当前 Server 的普通属性。

类型 100 的特殊条件

组件数为 N 时,特殊检查只看位置 N,而非位置 N-1,也不扫描所有 100。有效部件恰为 N 且玩家没有同数据索引效果时尝试发送;有效部件仍大于 0 但小于 N 时会尝试移除该索引效果。穿脱至 0 件后,这一套可能不再被循环访问,因此本函数不能保证自行清理最后的效果;超过 N 也不走发送或移除分支。保留既有配置并实测完整穿脱流程,不在普通数值示例里新增 Impact。

提示与实际属性可能不同

主要客户端提示按原位置与已穿数量决定显示,未实现 Server 恰好凑齐时扩展为全部普通属性的同一逻辑;位置 N 的 Impact 还可能显示为未激活。部件号 0 的重复名称选择与其他号也有差别,影响名称列表选择,不应误说所有部件计数都不去重。套装 0、超大数值和特殊效果更不能只看提示判定 Server 生效。

关联与依据

Public/ItemEnhance.txt

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

  • Server/Server/GameServer/Server/Item/ItemTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/ItemTable.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Obj/Obj_Human_Calc.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Obj/Obj_Human.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/Item.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/GameDefine.h:实际加载、解析、字段使用或示例关联依据
  • Common/GameDefine_Item.h:实际加载、解析、字段使用或示例关联依据
  • Common/GameStruct_Item.h:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据
  • Common/DataBase/TLBB_DBC.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/DataBase/TLBB_DBC.h:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Common/TDDBC_Struct.h:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/DBC/GMDataBase.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/Object/Item/Obj_Item_Equip.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/Interface/GMInterface_Script_Tooltip.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Obj/Obj_Human_Attributes.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Skills/Combat_Core.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:实际加载、解析、字段使用或示例关联依据
  • resources/Public/Config/EquipBase.txt:实际加载、解析、字段使用或示例关联依据

原始 DBC、套装加载/查询、服务端套装计算和普通属性累计在隔离夹具验证;Impact 调用使用记录参数的测试壳。未运行游戏、真实技能或真实库存;客户端提示与真实穿脱恢复需实测。