工程参考/武器坐骑外观配置:修订间差异
新增武器坐骑外观配置(幻饰武器 6 表、坐骑 2 表、染色、飞行坐骑) |
新增武器坐骑外观配置(幻饰武器 6 表、坐骑 2 表、染色、飞行坐骑) |
||
| 第106行: | 第106行: | ||
== 飞行坐骑:MountFlightMounts.txt(5 列,49 行)=== | == 飞行坐骑:MountFlightMounts.txt(5 列,49 行)=== | ||
全 INT 五列,最多 512 行。列为 坐骑编号(0..511)、采集点(>0)、借用坐骑、借用加成(>0)、来源(≥0)。坐骑编号重复即失败;<code>CanFly(坐骑号)</code> 为真才允许飞行(实现位于 <code>Common/MountFlightMounts.h</code>)。 | 全 INT 五列,最多 512 行。列为 坐骑编号(0..511)、采集点(>0)、借用坐骑、借用加成(>0)、来源(≥0)。坐骑编号重复即失败;<code>CanFly(坐骑号)</code> 为真才允许飞行(实现位于 <code>Common/MountFlightMounts.h</code>)。 | ||
== 饰品与背景装饰:Exterior_BG / Exterior_TS / Exterior_BGTSitem / ItemOrnamentsVisual == | |||
背景装饰与头饰共用加载器 <code>TLBBOrnaments</code>(实现位于 <code>Common/OrnamentsTables.h</code>)。'''列数只要求不低于下限''',样本背景 26 列、头饰 28 列都通过。 | |||
{| class="wikitable" | |||
! scope="col" | 表 | |||
! scope="col" style="width:12%" | 最少列数 | |||
! scope="col" style="width:14%" | 样本规模 | |||
! scope="col" | 内容 | |||
|- | |||
| <code>Exterior_BG.txt</code> || 26 || 32 行 || 背景装饰定义:名称、图标、描述、视觉号、动作号、三轴位置范围(最小值≥0、最大值≤255、最小≤最大)、男女各一组位置与缩放、可调标记。 | |||
|- | |||
| <code>Exterior_TS.txt</code> || 27 || 74 行 || 头饰定义,比背景多两列:大头标记与关联物品(均限 0/1 或正数)。 | |||
|- | |||
| <code>Exterior_BGTSitem.txt</code> || 4 || 151 行 || 物品→装饰激活:第 2 列装饰类型必须有效、第 3 列装饰 ID 必须已存在、小时数 >0 或 -1。 | |||
|- | |||
| <code>ItemOrnamentsVisual.txt</code> || 9 || — || 装饰模型:男女各一组 模型/材质(第 1–4 列),第 5–8 列四个文本值。 | |||
|} | |||
装饰定义表的主键 ID 上限 65535;每行的默认位置必须落在自身 min/max 范围内,否则启动失败;缩放值必须是有限数(拒绝 NaN/Inf)。客户端另有一份校验路径(<code>Valid(client=true)</code> 会检查每条定义的视觉号都有对应模型)。 | |||
== 飞行地图:MountFlightMaps.txt(纯文本,54 行)== | |||
这不是 DBC 表,是'''带首行标头的纯文本''',由 <code>Map.cpp</code> 的 <code>ReadMountFlightFile</code> 与 <code>Common/MountFlight.h</code> 的 <code>MapList::Load</code> 解析: | |||
* 首行必须恰好是 <code>MountFlightMaps 1</code>(制表符分隔)。 | |||
* 之后每行五列,用空格分隔:运行时地图号、资源号、地图名(stem)、宽、高。 | |||
* 地图名只允许小写字母、数字与下划线,1–63 字符——'''不能带路径'''(<code>../</code> 会被拒)。 | |||
* 宽高 1..MAX_GRID;运行时地图号不允许重复;同资源号+地图名的条目宽高必须一致。 | |||
* 文件不超过 64KB、不能含 NUL,条目不超过 1024 条且不能为空。 | |||
== 修改清单 == | == 修改清单 == | ||
| 第111行: | 第140行: | ||
* 加坐骑:Exterior_Ride 加行(速度必须 >0),兑换入口在 Exterior_ExchangeItem 加行且第 3 列必须是 3。 | * 加坐骑:Exterior_Ride 加行(速度必须 >0),兑换入口在 Exterior_ExchangeItem 加行且第 3 列必须是 3。 | ||
* 加染色款式:DressColorRate 对应行补一组(视觉,权重),保持视觉不重复、总权重 ≤100000。 | * 加染色款式:DressColorRate 对应行补一组(视觉,权重),保持视觉不重复、总权重 ≤100000。 | ||
* 加背景装饰或头饰:Exterior_BG / Exterior_TS 加行,激活物品登记在 Exterior_BGTSitem,模型资源写进 ItemOrnamentsVisual。 | |||
* 这三组表的行数列数都是启动硬校验,动结构前先备份。 | * 这三组表的行数列数都是启动硬校验,动结构前先备份。 | ||
[[Category:工程参考]] | [[Category:工程参考]] | ||
</div> | </div> | ||
2026年10月26日 (一) 21:39的最新版本
这一组是装备与坐骑的外观体系:幻饰武器换皮肤、坐骑换模型与速度、染色抽款式、飞行坐骑登记。服务端三个加载器分别位于 Common/ExteriorWeaponTables.h、Common/ExteriorRideTables.h、Common/DressColor.h 与 Common/MountFlightMounts.h,全部在 GameServer 启动时加载校验。
幻饰武器:Exterior_Weapon.txt(13 列,70 行)=
| 列 | 内容 | 说明 |
|---|---|---|
| 1 | 武器外观 ID | 主键,正数不重复。 |
| 2 | 名称 | 字符串。 |
| 3 | 图标 | 字符串。 |
| 4 | 描述 | 字符串。 |
| 5 | 排序权重 | 越大越前。 |
| 6 | 品质 | |
| 7 | 阶段数 | 1..4,超出直接加载失败。 |
| 8 | 类型 | 0..7。 |
| 9 | 关联装备 | 正数;指向使用此外观的装备。 |
| 10–13 | 四阶视觉 | 阶段数内的每一阶都必须是正数;阶段数之外的列仍要有值但按阶段取。 |
激活与升级
Exterior_WeaponItem.txt(5 列,87 行)
物品→外观的激活映射。列为 物品编号、外观 ID、小时数、剩余标记。约束:物品与外观都必须为正;小时数要么 -1(永久)要么 >0;剩余标记只能 0 或 1。
ExteriorWeaponLevelUp.txt(10 列,67 行)
三组升级费用,列为 外观 ID,随后每组三列(金钱、物品、数量)共 9 列。主键只查重,不校验数值范围——填错不会在启动时报,只会在升级时扣不到或扣错。
EquipMoodAction.txt(10 列,409 行)
装备动作表只消费被武器外观实际引用的行:加载器逐行检查该行是否为某个 equipment 匹配、且 visual[level] 命中当前外观的阶段视觉,未引用的行直接跳过。第 4 列必须为 0;第 5–10 列是六个动作 ID。不要按动作列判断归属,否则编号时装会被误判成幻饰武器动作。
ChatMood.txt(14 列,59 行)
聊天表情。14 列有三种历史布局,加载器按类型行判别(实现位于 Common/ChatMoodRecord.h 的 GetLayout):官服旧版 11 列、项目扩展 14 列、经典 14 列——两种 14 列的差别在第 7 列是整数还是字符串,看错布局会把整数当指针。列为 编号、指令、三条消息文本、状态标记,随后是 开始/循环/结束/图标/提示 与排序。
WeaponVisualLocator.txt(5 列,6 行)
背部视觉定位表,样本仅 6 行。
坐骑:Exterior_Ride.txt(26 列,113 行)=
| 列 | 内容 | 说明 |
|---|---|---|
| 1 | 坐骑外观 ID | 主键。 |
| 2 | 类型 | |
| 3 | 等级 | ≥0。 |
| 4 | 品质 | |
| 5 | 是否上架 | 1 才允许选用。 |
| 6 | 排序权重 | |
| 7 | 门派限制 | 负数为全门派。 |
| 8 | 名称 | 字符串。 |
| 9 | 图标 | 字符串。 |
| 10 | 描述 | 字符串。 |
| 11 | 坐骑编号 | ≥0,对应坐骑数据。 |
| 12 | 速度 | 必须 >0。 |
| 13 | 豪华标记 | |
| 14 | 反向兑换物品 | |
| 15 | 坐骑卡专属 | 注意:这一列是坐骑卡专属标记,不是 10% 加成。 |
| 16–25 | 十档速度加成 | 按速度档位取,见下。 |
速度档位写死在 ExteriorRideTables.h:{10, 20, 40, 60, 70, 75, 80, 85, 90, 95}。当前速度命中某一档才取该档的加成列,命中不到返回 -1。改速度档位要改代码。
Exterior_ExchangeItem.txt(4 列,1085 行)
兑换物品→坐骑外观映射。只收第 3 列等于 3 的行,其余整行跳过;有效行按 物品编号(第 2 列)→ 外观 ID(第 4 列)建索引,物品必须为正、外观必须已存在、不允许重复物品。
染色:DressColorRate.txt(33 列,31 行)=
武道二配表的十组款式,加载器 TableInit::InitDressColorRate(实现位于 Server/GameServer/Server/Main/GameTable.cpp),必须正好 33 列。列为 材料物品编号,随后十组(视觉、权重):
- 第 1 组(默认款式):视觉必须 0..65535,权重必须为 -1;默认款不参与累计权重抽取。
- 第 2–10 组:视觉 -1..65535、权重 0..100000;视觉填 -1 时权重必须为 0;十组内视觉不能重复;累计权重不得超过 100000,且总权重必须 >0。
- 抽取:输入
roll ∈ [1, 总权重],按权重逐项扣减,包含最后一种颜色。
相关常量写死在 Common/DressColor.h:款式数 10、金钱 50000、材料 30503140、NPC 脚本 157。
飞行坐骑:MountFlightMounts.txt(5 列,49 行)=
全 INT 五列,最多 512 行。列为 坐骑编号(0..511)、采集点(>0)、借用坐骑、借用加成(>0)、来源(≥0)。坐骑编号重复即失败;CanFly(坐骑号) 为真才允许飞行(实现位于 Common/MountFlightMounts.h)。
饰品与背景装饰:Exterior_BG / Exterior_TS / Exterior_BGTSitem / ItemOrnamentsVisual
背景装饰与头饰共用加载器 TLBBOrnaments(实现位于 Common/OrnamentsTables.h)。列数只要求不低于下限,样本背景 26 列、头饰 28 列都通过。
| 表 | 最少列数 | 样本规模 | 内容 |
|---|---|---|---|
Exterior_BG.txt |
26 | 32 行 | 背景装饰定义:名称、图标、描述、视觉号、动作号、三轴位置范围(最小值≥0、最大值≤255、最小≤最大)、男女各一组位置与缩放、可调标记。 |
Exterior_TS.txt |
27 | 74 行 | 头饰定义,比背景多两列:大头标记与关联物品(均限 0/1 或正数)。 |
Exterior_BGTSitem.txt |
4 | 151 行 | 物品→装饰激活:第 2 列装饰类型必须有效、第 3 列装饰 ID 必须已存在、小时数 >0 或 -1。 |
ItemOrnamentsVisual.txt |
9 | — | 装饰模型:男女各一组 模型/材质(第 1–4 列),第 5–8 列四个文本值。 |
装饰定义表的主键 ID 上限 65535;每行的默认位置必须落在自身 min/max 范围内,否则启动失败;缩放值必须是有限数(拒绝 NaN/Inf)。客户端另有一份校验路径(Valid(client=true) 会检查每条定义的视觉号都有对应模型)。
飞行地图:MountFlightMaps.txt(纯文本,54 行)
这不是 DBC 表,是带首行标头的纯文本,由 Map.cpp 的 ReadMountFlightFile 与 Common/MountFlight.h 的 MapList::Load 解析:
- 首行必须恰好是
MountFlightMaps 1(制表符分隔)。 - 之后每行五列,用空格分隔:运行时地图号、资源号、地图名(stem)、宽、高。
- 地图名只允许小写字母、数字与下划线,1–63 字符——不能带路径(
../会被拒)。 - 宽高 1..MAX_GRID;运行时地图号不允许重复;同资源号+地图名的条目宽高必须一致。
- 文件不超过 64KB、不能含 NUL,条目不超过 1024 条且不能为空。
修改清单
- 加幻饰武器:Exterior_Weapon 加行(阶段数 1..4、类型 0..7、每阶视觉为正),再用 Exterior_WeaponItem 登记激活物品,需要升级就在 ExteriorWeaponLevelUp 加费用行。
- 加坐骑:Exterior_Ride 加行(速度必须 >0),兑换入口在 Exterior_ExchangeItem 加行且第 3 列必须是 3。
- 加染色款式:DressColorRate 对应行补一组(视觉,权重),保持视觉不重复、总权重 ≤100000。
- 加背景装饰或头饰:Exterior_BG / Exterior_TS 加行,激活物品登记在 Exterior_BGTSitem,模型资源写进 ItemOrnamentsVisual。
- 这三组表的行数列数都是启动硬校验,动结构前先备份。