工程参考/配置文件/Server/ItemSegValue.txt
ItemSegValue.txt 是装备“属性段”的数值表:第 1 列是段号,第 2 到 65 列是这一段 64 项属性的取值(对应 ITEM_TABLE_ATTRIBUTE_COUNT=64)。服务端按段号查出整段数值,再参与装备属性计算。本页对应的是 Server/Config 下的副本,样本 468 条数据记录、65 个有效列。本副本当前不是运行时读取的文件(见下)。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 运行文件 | ../Public/Config/ItemSegValue.txt 是服务端实际读取的路径(FileDef.h 的 FILE_ITEM_SEG_VALUE)。本页对应的 ./Config/ItemSegValue.txt 不是运行时路径。
|
| 读取程序 | Server 游戏进程读取的是 ../Public/Config/ItemSegValue.txt(FILE_ITEM_SEG_VALUE),不是本副本;结构由 ItemTable::InitItemSegValueTable 定义,取值由 ItemTable::GetItemSegValue 提供给 ItemRuler.cpp |
| 生效方法 | 本副本不被任何加载入口读取:修改它并停服重启也不会产生运行效果。要改属性段数值,应改服务端工作目录下的 ../Public/Config/ItemSegValue.txt;该 Public 副本已有独立页面,本页不重复其修改与验证方法。 |
| 样本格式 | GB18030-compatible,CRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。
|
第 1 列是属性段编号,服务端 ItemTable::InitItemSegValueTable 先读它(Search_Posistion(i,0)),再循环读第 2 到 65 列(Search_Posistion(i,attribute+1),attribute 从 0 到 63)存入 m_Values。列数必须等于 ITEM_TABLE_ATTRIBUTE_COUNT+1=65,否则加载函数里的断言不通过。
第 2 到 43 列是战斗相关属性(生命/内力、四系攻防与抵抗、物理与魔法攻防、命中闪避会心等);第 44 到 48 列是五项一级属性;第 49 到 55 列是会心防御、全属性、偷取与技能等级类;第 56 到 59 列是降低目标四系抵抗;第 60 到 65 列是预留列,样本为空。整表 65 列全部是整数。
注意区分“按百分比增加 X”与“对装备基础 X 百分比加成”两列:作用基数不同,不要当成重复列。
文件格式
首行是类型行: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 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:Index |
属性段编号(主键)。服务端按段号取该段的各项属性数值,不是物品模板 ID,也不是等级。 | 空首列使数据行被跳过;须唯一。 |
第 2 列INT:增加HP的上限 |
本段固定增加的生命值上限(绝对值)。 | 空为 0。 |
第 3 列INT:百分比增加HP的上限 |
按百分比增加生命值上限。 | 空为 0。 |
第 4 列INT:加快HP的回复速度 |
生命回复速度修正,正数为加快。 | 空为 0。 |
第 5 列INT:增加MP的上限 |
本段固定增加的内力值上限(绝对值)。 | 空为 0。 |
第 6 列INT:百分比增加MP的上限 |
按百分比增加内力值上限。 | 空为 0。 |
第 7 列INT:加快MP的回复速度 |
内力回复速度修正,正数为加快。 | 空为 0。 |
第 8 列INT:冰攻击 |
本段提供的冰属性攻击力加成。 | 空为 0。 |
第 9 列INT:冰抵抗 |
本段提供的冰属性抵抗。 | 空为 0。 |
第 10 列INT:减少冰冻迟缓时间 |
减少被冰冻后迟缓状态持续的时间。 | 空为 0。 |
第 11 列INT:火攻击 |
本段提供的火属性攻击力加成。 | 空为 0。 |
第 12 列INT:火抵抗 |
本段提供的火属性抵抗。 | 空为 0。 |
第 13 列INT:减少火烧持续时间 |
减少被火烧持续伤害的时间。 | 空为 0。 |
第 14 列INT:玄攻击 |
本段提供的玄属性攻击力加成。 | 空为 0。 |
第 15 列INT:玄抵抗 |
本段提供的玄属性抵抗。 | 空为 0。 |
第 16 列INT:减少电击眩晕时间 |
减少被电击眩晕的时间。 | 空为 0。 |
第 17 列INT:毒攻击 |
本段提供的毒属性攻击力加成。 | 空为 0。 |
第 18 列INT:毒抵抗 |
本段提供的毒属性抵抗。 | 空为 0。 |
第 19 列INT:减少中毒时间 |
减少中毒持续时间。 | 空为 0。 |
第 20 列INT:按百分比抵消所有属性攻击 |
按百分比抵消全部四种属性攻击(冰、火、玄、毒)。 | 空为 0。 |
第 21 列INT:物理攻击 |
本段提供的物理攻击力加成。 | 空为 0。 |
第 22 列INT:按百分比增加物理攻击 |
按百分比增加物理攻击力。 | 空为 0。 |
第 23 列INT:对装备基础物理攻击百分比加成 |
在装备基础物理攻击之上的百分比加成,与第 22 列的作用基数不同。 | 空为 0。 |
第 24 列INT:物理防御 |
本段提供的物理防御力加成。 | 空为 0。 |
第 25 列INT:按百分比增加物理防御 |
按百分比增加物理防御力。 | 空为 0。 |
第 26 列INT:对装备基础物理防御百分比加成 |
在装备基础物理防御之上的百分比加成,与第 25 列的作用基数不同。 | 空为 0。 |
第 27 列INT:按百分比抵消物理伤害 |
按百分比抵消受到的物理伤害。 | 空为 0。 |
第 28 列INT:魔法攻击 |
本段提供的魔法攻击力加成。 | 空为 0。 |
第 29 列INT:按百分比增加魔法攻击 |
按百分比增加魔法攻击力。 | 空为 0。 |
第 30 列INT:对装备基础魔法攻击百分比加成 |
在装备基础魔法攻击之上的百分比加成,与第 29 列的作用基数不同。 | 空为 0。 |
第 31 列INT:魔法防御 |
本段提供的魔法防御力加成。 | 空为 0。 |
第 32 列INT:按百分比增加魔法防御 |
按百分比增加魔法防御力。 | 空为 0。 |
第 33 列INT:对装备基础魔法防御百分比加成 |
在装备基础魔法防御之上的百分比加成,与第 32 列的作用基数不同。 | 空为 0。 |
第 34 列INT:按百分比抵消魔法伤害 |
按百分比抵消受到的魔法伤害。 | 空为 0。 |
第 35 列INT:攻击速度(两次攻击间隔时间) |
攻击速度相关值,表示两次攻击的间隔时间;数值越小出手越快,不是每秒攻击次数。 | 空为 0。 |
第 36 列INT:魔法冷却速度 |
魔法(技能)冷却速度修正。 | 空为 0。 |
第 37 列INT:命中 |
本段提供的命中加成。 | 空为 0。 |
第 38 列INT:闪避 |
本段提供的闪避加成。 | 空为 0。 |
第 39 列INT:会心一击(双倍攻击)的百分比 |
会心一击(双倍攻击)触发的百分比。 | 空为 0。 |
第 40 列INT:无视对方防御比率 |
无视目标防御的比例(百分比)。 | 空为 0。 |
第 41 列INT:移动速度百分比 |
移动速度的百分比修正。 | 空为 0。 |
第 42 列INT:伤害反射 |
受到伤害时反射给攻击方的比例。 | 空为 0。 |
第 43 列INT:伤害由内力抵消 |
由内力抵消伤害的比例。 | 空为 0。 |
第 44 列INT:力量 |
一级属性:力量的加成。 | 空为 0。 |
第 45 列INT:灵气 |
一级属性:灵气的加成。 | 空为 0。 |
第 46 列INT:体质 |
一级属性:体质的加成。 | 空为 0。 |
第 47 列INT:定力 |
一级属性:定力的加成。 | 空为 0。 |
第 48 列INT:身法 |
一级属性:身法的加成。 | 空为 0。 |
第 49 列INT:会心防御 |
会心防御,降低被会心一击命中的概率。 | 空为 0。 |
第 50 列INT:增加所有的人物一级属性 |
同时增加全部一级属性(力量、灵气、体质、定力、身法),与第 44 到 48 列分别计算。 | 空为 0。 |
第 51 列INT:生命偷取 |
攻击时按伤害比例偷取生命。 | 空为 0。 |
第 52 列INT:内力偷取 |
攻击时按伤害比例偷取内力。 | 空为 0。 |
第 53 列INT:增加某个技能等级 |
提升指定技能的等级增量;具体是哪个技能由装备或关联配置决定,本表只给增量。 | 空为 0。 |
第 54 列INT:增加所有技能等级 |
提升全部技能的等级增量。 | 空为 0。 |
第 55 列INT:特殊技能发动概率 |
特殊技能(如连击、破防一类)的发动概率。 | 空为 0。 |
第 56 列INT:降低目标冰抵抗 |
降低目标的冰属性抵抗。 | 空为 0。 |
第 57 列INT:降低目标火抵抗 |
降低目标的火属性抵抗。 | 空为 0。 |
第 58 列INT:降低目标玄抵抗 |
降低目标的玄属性抵抗。 | 空为 0。 |
第 59 列INT:降低目标毒抵抗 |
降低目标的毒属性抵抗。 | 空为 0。 |
第 60 列INT:保留1 |
预留列,样本为空。 | 未使用,样本为空。 |
第 61 列INT:保留2 |
预留列,样本为空。 | 未使用,样本为空。 |
第 62 列INT:保留3 |
预留列,样本为空。 | 未使用,样本为空。 |
第 63 列INT:保留4 |
预留列,样本为空。 | 未使用,样本为空。 |
第 64 列INT:保留5 |
预留列,样本为空。 | 未使用,样本为空。 |
第 65 列INT:保留6 |
预留列,样本为空。 | 未使用,样本为空。 |
常用修改实例
示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。
把 1 号属性段的“增加HP的上限”从 591 改成 700(教学用,本副本实际不生效)
修改前:
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 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 Index 增加HP的上限 百分比增加HP的上限 加快HP的回复速度 增加MP的上限 百分比增加MP的上限 加快MP的回复速度 冰攻击 冰抵抗 减少冰冻迟缓时间 火攻击 火抵抗 减少火烧持续时间 玄攻击 玄抵抗 减少电击眩晕时间 毒攻击 毒抵抗 减少中毒时间 按百分比抵消所有属性攻击 物理攻击 按百分比增加物理攻击 对装备基础物理攻击百分比加成 物理防御 按百分比增加物理防御 对装备基础物理防御百分比加成 按百分比抵消物理伤害 魔法攻击 按百分比增加魔法攻击 对装备基础魔法攻击百分比加成 魔法防御 按百分比增加魔法防御 对装备基础魔法防御百分比加成 按百分比抵消魔法伤害 攻击速度(两次攻击间隔时间) 魔法冷却速度 命中 闪避 会心一击(双倍攻击)的百分比 无视对方防御比率 移动速度百分比 伤害反射 伤害由内力抵消 力量 灵气 体质 定力 身法 会心防御 增加所有的人物一级属性 生命偷取 内力偷取 增加某个技能等级 增加所有技能等级 特殊技能发动概率 降低目标冰抵抗 降低目标火抵抗 降低目标玄抵抗 降低目标毒抵抗 保留1 保留2 保留3 保留4 保留5 保留6 1 591 50 -1 313 50 -1 3 1 -1 3 1 -1 3 1 -1 3 1 -1 1 52 50 50 47 50 50 1 52 50 50 47 50 50 1 -1 -1 42 14 2 -1 -1 -1 -1 7 7 6 6 3 2 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1
修改后:
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 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 Index 增加HP的上限 百分比增加HP的上限 加快HP的回复速度 增加MP的上限 百分比增加MP的上限 加快MP的回复速度 冰攻击 冰抵抗 减少冰冻迟缓时间 火攻击 火抵抗 减少火烧持续时间 玄攻击 玄抵抗 减少电击眩晕时间 毒攻击 毒抵抗 减少中毒时间 按百分比抵消所有属性攻击 物理攻击 按百分比增加物理攻击 对装备基础物理攻击百分比加成 物理防御 按百分比增加物理防御 对装备基础物理防御百分比加成 按百分比抵消物理伤害 魔法攻击 按百分比增加魔法攻击 对装备基础魔法攻击百分比加成 魔法防御 按百分比增加魔法防御 对装备基础魔法防御百分比加成 按百分比抵消魔法伤害 攻击速度(两次攻击间隔时间) 魔法冷却速度 命中 闪避 会心一击(双倍攻击)的百分比 无视对方防御比率 移动速度百分比 伤害反射 伤害由内力抵消 力量 灵气 体质 定力 身法 会心防御 增加所有的人物一级属性 生命偷取 内力偷取 增加某个技能等级 增加所有技能等级 特殊技能发动概率 降低目标冰抵抗 降低目标火抵抗 降低目标玄抵抗 降低目标毒抵抗 保留1 保留2 保留3 保留4 保留5 保留6 1 700 50 -1 313 50 -1 3 1 -1 3 1 -1 3 1 -1 3 1 -1 1 52 50 50 47 50 50 1 52 50 50 47 50 50 1 -1 -1 42 14 2 -1 -1 -1 -1 7 7 6 6 3 2 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1
按第一列定位 1 号属性段。样本第 2 列“增加HP的上限”为 591,改为 700。只改第 2 列,保留 65 个有效列。本片段含类型行、列名行与该行,不能覆盖整表。
由于服务端读取的是 ../Public/Config/ItemSegValue.txt,改本副本不会产生运行效果;需要生效请改 Public 副本(见关联页面)。
验证与排查
服务端启动日志里出现的是 FILE_ITEM_SEG_VALUE 指向的 ../Public/Config/ItemSegValue.txt,不会出现 ./Config/ItemSegValue.txt,因此本副本不会影响运行。判断依据是 FileDef.h 的宏定义与 ItemTable::InitItemSegValueTable 的 OpenFromTXT 调用,不是日志是否报错。
本副本不是运行时文件
FileDef.h 把 FILE_ITEM_SEG_VALUE 定义为 "../Public/Config/ItemSegValue.txt",服务端 ItemTable::InitItemSegValueTable 用它打开的是 Public 副本。全树检索 ItemSegValue 只有这一个路径,Server/Config 下的这份副本没有加载入口。
两份副本内容也不同
样本里 Server/Config 副本有 468 条数据记录、行宽 129 段(65 个有效列 + 64 个空列);Public/Config 副本有 450 条、行宽 65 段。改错文件不会报错,只会没有效果。
取值怎么被用到
服务端 ItemTable::GetItemSegValue(属性, 段号) 按属性与段号取单个数值,ItemRuler.cpp 在生成装备属性时调用它。
关联与依据
Public/ItemSegValue.txt · Server/ItemSegAffect.txt · Server/ItemSegQuality.txt · Server/ItemSegRate.txt
其他配置及整理状态 · 服务端外网设置 · Lua 接口索引
Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Item/ItemTable.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Item/ItemTable.h:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Item/ItemRuler.cpp:实际加载、解析、字段使用或示例关联依据resources/Server/Config/ItemSegValue.txt:实际加载、解析、字段使用或示例关联依据
本页核对 FileDef.h 的 FILE_ITEM_SEG_VALUE 定义(指向 ../Public/Config/ItemSegValue.txt)、ItemTable::InitItemSegValueTable 的加载与列数断言、GetItemSegValue 的取值方式,以及 ItemTable.h 的 ITEM_TABLE_ATTRIBUTE_COUNT=64;确认 Server/Config 副本无加载入口;未启动服务端,也未做游戏实测。