工程参考/配置文件/Server/MenPaiAttackRefix.txt:修订间差异

来自天龙知识库
跳到导航跳到搜索
雪舞​(留言 | 贡献)
维护配置文件知识库:完整字段、读取范围、手工修改实例与核对状态
 
Waylee​(留言 | 贡献)
维护配置文件知识库:完整字段、读取范围、手工修改实例与核对状态
 
第4行: 第4行:
[[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]]
[[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]]


MenPaiAttackRefix.txt 是一张门派克制表。行是施法者门派,第 3 到第 12 列是打向十个目标门派时的修正率。StdImpact072 只对少数几个标准效果逻辑生效,并且当修正率为 0 时不动原值。
MenPaiAttackRefix.txt 是一张门派克制表。行是施法者门派,第 3 到第 13 列是打向十一个目标门派时的修正率。StdImpact072 只对少数几个标准效果逻辑生效,并且当修正率为 0 时不动原值。


[[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]]
[[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]]
第26行: 第26行:
|}
|}


样本 9 行、13 列,门派ID 0..8。第 1 列既是门派ID 也是 TemplateManager 索引键,而 AttackRefix_T::MAX_ID 是 9,所以取值只能是 0..9。样本没有门派ID 9(无门派)这一行,于是「技能没有门派归属」时 StdImpact072 先把施法者门派当成 9,再用 GetMenPaiAttackRefixByID(9) 查表,取不到对象就直接返回,不加成——这是样本行为,不是表格错误。
样本 10 行、14 列,门派ID 0..9。第 1 列既是门派ID 也是 TemplateManager 索引键,而 AttackRefix_T::MAX_ID 是 9,所以取值只能是 0..9。样本没有门派ID 9(无门派)这一行,于是「技能没有门派归属」时 StdImpact072 先把施法者门派当成 9,再用 GetMenPaiAttackRefixByID(9) 查表,取不到对象就直接返回,不加成——这是样本行为,不是表格错误。


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


== 字段详解 ==
== 字段详解 ==
第87行: 第87行:
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 13 列</code><br>STRING:描述信息
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 13 列</code><br>INT:曼陀山庄(10)
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 目标为曼陀山庄时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 14 列</code><br>STRING:描述信息
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 说明文字,样本 少林要诀 一类。加载器会保存为 GetDescription 的返回值,当前检索范围未见服务端用它做判断。
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 说明文字,样本 少林要诀 一类。加载器会保存为 GetDescription 的返回值,当前检索范围未见服务端用它做判断。
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空串合法。改它不影响修正率。
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空串合法。改它不影响修正率。
第97行: 第101行:
=== 把少林打少林的修正率从 10 改为 20 ===
=== 把少林打少林的修正率从 10 改为 20 ===
修改前:
修改前:
<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 STRING INT INT INT INT INT INT INT INT INT INT STRING
<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 STRING INT INT INT INT INT INT INT INT INT INT INT STRING
门派ID 门派名称 少林(0) 明教(1) 丐帮(2) 武当(3) 峨嵋(4) 星宿(5) 大理(6) 天山(7) 逍遥(8) 无门派(9) 描述信息
门派ID 门派名称 少林(0) 明教(1) 丐帮(2) 武当(3) 峨嵋(4) 星宿(5) 大理(6) 天山(7) 逍遥(8) 无门派(9) 曼陀山庄(10) 描述信息
0 少林 10 12 14 4 6 8 16 18 20 10 少林要诀</pre>
0 少林 10 12 14 4 6 8 16 18 20 10 12 少林要诀</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 STRING INT INT INT INT INT INT INT INT INT INT STRING
<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 STRING INT INT INT INT INT INT INT INT INT INT INT STRING
门派ID 门派名称 少林(0) 明教(1) 丐帮(2) 武当(3) 峨嵋(4) 星宿(5) 大理(6) 天山(7) 逍遥(8) 无门派(9) 描述信息
门派ID 门派名称 少林(0) 明教(1) 丐帮(2) 武当(3) 峨嵋(4) 星宿(5) 大理(6) 天山(7) 逍遥(8) 无门派(9) 曼陀山庄(10) 描述信息
0 少林 20 12 14 4 6 8 16 18 20 10 少林要诀</pre>
0 少林 20 12 14 4 6 8 16 18 20 10 12 少林要诀</pre>


按第一列定位门派ID 0(少林)。样本第 3 列(少林(0))为 10。只改第 3 列,保留 13 列和其余 8 行。本片段含表头与该行,不能覆盖整表。
按第一列定位门派ID 0(少林)。样本第 3 列(少林(0))为 10。只改第 3 列,保留 13 列和其余 8 行。本片段含表头与该行,不能覆盖整表。


只影响 StdImpact072 这类按门派重算威力的效果,普通伤害不走本表。实际伤害需要实测。
只影响 StdImpact072 这类按门派重算威力的效果,普通伤害不走本表。


== 验证与排查 ==
== 验证与排查 ==
启动日志出现 Load ./Config/MenPaiAttackRefix.txt ... OK!。9 行、13 列,少林打少林为 20。新增门派ID 9 会让无门派技能也开始吃加成,属于另外的玩法改动,须实测。恢复备份后重启。
启动日志出现 Load ./Config/MenPaiAttackRefix.txt ... OK!。10 行、14 列,少林打少林为 20。新增门派ID 9 会让无门派技能也开始吃加成,属于另外的玩法改动。恢复备份后重启。


=== 生效范围 ===
=== 生效范围 ===
第133行: 第137行:
* <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.cpp</code>:实际加载、解析、字段使用或示例关联依据
* <code style="white-space:normal;overflow-wrap:anywhere;">resources/Server/Config/MenPaiAttackRefix.txt</code>:实际加载、解析、字段使用或示例关联依据
* <code style="white-space:normal;overflow-wrap:anywhere;">resources/Server/Config/MenPaiAttackRefix.txt</code>:实际加载、解析、字段使用或示例关联依据
原始 AttackRefix_T 隔离加载测试。门派克制伤害未在游戏中执行。
</div>
</div>
[[Category:工程参考]]
[[Category:工程参考]]

2026年10月26日 (一) 17:24的最新版本


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

MenPaiAttackRefix.txt 是一张门派克制表。行是施法者门派,第 3 到第 13 列是打向十一个目标门派时的修正率。StdImpact072 只对少数几个标准效果逻辑生效,并且当修正率为 0 时不动原值。

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

文件位置与生效

项目 说明
运行文件 ./Config/MenPaiAttackRefix.txt,相对于 Server 工作目录。源码宏 FILE_MENPAI_ATTACKREFIX。
读取程序 Server 在 TableInit::InitMenPaiAttackRefixTable 加载;StdImpact072 用 AttackRefix_T::GetRefixByID 取率
生效方法 停服后备份并修改实际 Server/Config 副本,再重启 Server。当前检索范围未发现单独重载入口,也不在 ReloadCombatTables 的清单里。客户端不加载本表。
样本格式 GB18030-compatible,CRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

样本 10 行、14 列,门派ID 0..9。第 1 列既是门派ID 也是 TemplateManager 索引键,而 AttackRefix_T::MAX_ID 是 9,所以取值只能是 0..9。样本没有门派ID 9(无门派)这一行,于是「技能没有门派归属」时 StdImpact072 先把施法者门派当成 9,再用 GetMenPaiAttackRefixByID(9) 查表,取不到对象就直接返回,不加成——这是样本行为,不是表格错误。

文件格式

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

字段详解

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

字段与类型 含义与修改要点 缺项或特殊值
第 1 列
INT:门派ID
施法者门派,同时是数组下标。样本 0=少林 .. 8=逍遥,缺 9=无门派。 空为 0(会被当成少林行)。≥10 触发越界断言并跳过该行。
第 2 列
STRING:门派名称
门派名,加载器会保存但只用于显示。样本 少林、明教 等。 改名称不改变修正率。
第 3 列
INT:少林(0)
目标为少林时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 4 列
INT:明教(1)
目标为明教时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 5 列
INT:丐帮(2)
目标为丐帮时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 6 列
INT:武当(3)
目标为武当时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 7 列
INT:峨嵋(4)
目标为峨嵋时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 8 列
INT:星宿(5)
目标为星宿时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 9 列
INT:大理(6)
目标为大理时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 10 列
INT:天山(7)
目标为天山时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 11 列
INT:逍遥(8)
目标为逍遥时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 12 列
INT:无门派(9)
目标为无门派时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 13 列
INT:曼陀山庄(10)
目标为曼陀山庄时的修正率,Source 是第 1 列门派。样本对角附近为 10,克制关系处为 4/6/8/16/18/20。 空为 0,表示不修正。0 与 10 是不同含义:0 完全跳过。
第 14 列
STRING:描述信息
说明文字,样本 少林要诀 一类。加载器会保存为 GetDescription 的返回值,当前检索范围未见服务端用它做判断。 空串合法。改它不影响修正率。

常用修改实例

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

把少林打少林的修正率从 10 改为 20

修改前:

INT	STRING	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	STRING
门派ID	门派名称	少林(0)	明教(1)	丐帮(2)	武当(3)	峨嵋(4)	星宿(5)	大理(6)	天山(7)	逍遥(8)	无门派(9)	曼陀山庄(10)	描述信息
0	少林	10	12	14	4	6	8	16	18	20	10	12	少林要诀

修改后:

INT	STRING	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	STRING
门派ID	门派名称	少林(0)	明教(1)	丐帮(2)	武当(3)	峨嵋(4)	星宿(5)	大理(6)	天山(7)	逍遥(8)	无门派(9)	曼陀山庄(10)	描述信息
0	少林	20	12	14	4	6	8	16	18	20	10	12	少林要诀

按第一列定位门派ID 0(少林)。样本第 3 列(少林(0))为 10。只改第 3 列,保留 13 列和其余 8 行。本片段含表头与该行,不能覆盖整表。

只影响 StdImpact072 这类按门派重算威力的效果,普通伤害不走本表。

验证与排查

启动日志出现 Load ./Config/MenPaiAttackRefix.txt ... OK!。10 行、14 列,少林打少林为 20。新增门派ID 9 会让无门派技能也开始吃加成,属于另外的玩法改动。恢复备份后重启。

生效范围

StdImpact072.cpp 只处理 STD_IMPACT_001/002/003/063/070 一类「需要重算威力」的标准效果,其他效果逻辑的 RefixPowerByRate 不会被调用。改本表不等于改所有门派伤害。

与 PvpRuler 的区别

PvpRuler.txt 管的是 PK 开关与惩罚规则,不是门派间的数值克制,两者不要混用。

关联与依据

Server/AttrRefixTable.txt · Public/XinFa_V1.txt

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

  • Common/Combat/AttackRefix_MP.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/Combat/AttackRefix_MP.h:实际加载、解析、字段使用或示例关联依据
  • Common/Combat/TemplateManager.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/GameTable.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Skills/ImpactLogic/StdImpact072.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据
  • Common/DataBase/TLBB_DBC.cpp:实际加载、解析、字段使用或示例关联依据
  • resources/Server/Config/MenPaiAttackRefix.txt:实际加载、解析、字段使用或示例关联依据