0x00 前言
如果你之前已经看过《防具外观 ID 解读 - 头饰篇》和《武器外观 ID 解读》、并且已经学会了怎么去配置它们,那么本篇的内容对你而言会非常容易。
0x10 定义翅膀道具
这次找来了「剑圣羽翼」作为演示:
0x11 服务端代码
首先定义其在服务端装备库 item_db_equip.yml
代码:
- Id: 1400000
AegisName: BladeMaster_SwordWing
Name: 剑圣羽翼
Type: Armor
Buy: 20
Defense: 18
Locations:
Garment: true
ArmorLevel: 1
Refineable: true
View: 1400
- 装备类型设为「防具」:
Type: Armor
- 装备位置设为「披肩」:
Garment: true
- 「外观 ID」设为:
View: 1400
0x12 客户端代码
然后定义其在客户端道具池中 itemInfo.lub
的代码:
[1400000] = {
unidentifiedDisplayName = "披肩",
unidentifiedResourceName = "饶靛",
unidentifiedDescriptionName = {
"尚未鉴定, 可使用^990099[放大镜]^000000进行鉴定"
},
identifiedDisplayName = "剑圣羽翼",
identifiedResourceName = "BladeMaster_SwordWing",
identifiedDescriptionName = {
"将弯曲的剑堆砌而成的羽翼装饰。",
"隐隐散发着一丝危险的气息。",
"系列 : ^777777服饰^000000",
"位置 : ^777777披肩^000000",
"重量 : ^7777770^000000",
"要求等级 : ^7777771^000000",
"装备 : ^777777全职业^000000"
},
slotCount = 0,
ClassNum = 1400
}
- 声明披肩的「道具图档名称」:
identifiedResourceName = "BladeMaster_SwordWing"
- 声明披肩的「外观 ID」:
ClassNum = 1400
0x20 披肩外观池
接着定义在披肩的外观池中定义这个外观 ID。
和头饰/武器的外观池不一样,披肩外观池有三个文件:
- 定义「披肩唯一代码」和「披肩外观 ID」的关系:
data/luafiles514/lua files/datainfo/spriterobeid.lub
- 定义「披肩唯一代码」和「披肩图档名称」的关系:
data/luafiles514/lua files/datainfo/spriterobename.lub
- 通过「披肩外观 ID」定义披肩的「透明度」:
data/luafiles514/lua files/transparentitem/transparentitem.lub
第 3 个文件先卖一个关子,先解释前两个文件。
前两个文件共同构成了披肩的外观池,它们之间的关系和头饰外观池的两个文件完全一样:
在 spriterobeid.lub
文件中只有一个表 SPRITE_ROBE_IDs
,在其中任意命名一个唯一字符串,分配外观 ID 为 1400:
SPRITE_ROBE_IDs = {
... ...
ROBE_BladeMaster_SwordWing = 1400,
}
而在 spriterobename.lub
文件中有三个表,只需要修改 RobeNameTable
和 RobeNameTable_Eng
即可:
RobeNameTable = {
... ...
[SPRITE_ROBE_IDs.ROBE_BladeMaster_SwordWing] = 'BladeMaster_SwordWing',
}
RobeNameTable_Eng = {
... ...
[SPRITE_ROBE_IDs.ROBE_BladeMaster_SwordWing] = 'BladeMaster_SwordWing',
}
RobeTopLayer = {
... ...
-- 不需要动这个表
}
这两个表添加的内容是一样的,BladeMaster_SwordWing
指向的就是「披肩外观图档名称」。
这里建议图档名称都使用英文,就不用区别对待这两个表了。
至于
RobeTopLayer
配置的是:当存在多个披肩交错渲染时、哪个披肩应该渲染在最前面(前面的会遮挡后面的),但实际上一个角色只能装备一个披肩,实在想不出这个表有什么用 …
0x30 披肩图档位置
前面我们在 道具池 和 披肩外观池 分别定义了两个图档名称:
- 道具图档名称:
BladeMaster_SwordWing
- 外观图档名称:
BladeMaster_SwordWing
这两个名称对应的图档位置如下:
0x31 道具图档位置
参考《防具外观 ID 解读》,和其他道具图档一样,“披肩” 也是 “道具” 的一种,故道具图档位置是一样的:
- 道具在地上/拖拽时的图档:
data/sprite/酒捞袍/BladeMaster_SwordWing.act
data/sprite/酒捞袍/BladeMaster_SwordWing.spr
- 道具栏的小图图档:
data/texture/蜡历牢磐其捞胶/item/BladeMaster_SwordWing.bmp
- 道具详情的大图图档:
data/texture/蜡历牢磐其捞胶/collection/BladeMaster_SwordWing.bmp
0x32 披肩外观图档位置
参考《客户端目录结构及功能说明(2024 修订)》,可知披肩的外观图档目录为: data/sprite/肺宏
。
在 data/sprite/肺宏
目录下定义了所有以「披肩外观图档名称」的目录:
每一个披肩图档目录下,又定义了 男(巢)
和 女(咯)
两种性别的子目录,每个性别的子目录下,才真正定义了 “每种职业的每个形态下穿上该披肩的图档”,其命名格式为:
{职业名称}_{性别}.[act|spr]
{职业形态名称}_{性别}.[act|spr]
例如 TROUVERE
就是 “天籁颂者” 的职业名称(通常形态);而 TROUVERE_RIDING
就是 “天籁颂者” 在 “骑乘形态” 时的名称。
不难发现,翅膀比武器的图档更复杂、也是需要把不同体型的图档都做一遍、避免错位。所以如今已经很少人去做「披肩位置」的翅膀了,现在更多的是做在「头中位置」的翅膀,可以不考虑职业和形态,做一份图档即可。
0x40 翅膀外观不显示的原因
当按照上述配置好进入游戏后,你可能会发现装备翅膀后,它在装备栏渲染出来了、但是游戏场景中却不见了:
还记得前面卖的关子吗 ?这里需要通过「披肩外观 ID」定义披肩的「透明度」: data/luafiles514/lua files/transparentitem/transparentitem.lub
该文件每一行的格式为 { viewID/ClassNum, R, G, BA }
默认情况下,新外观 ID 如果没有定义,它的 RGBA 值就是 0
。
例如我们刚刚新加的 1400,默认值就是 { 1400, 0, 0, 0 }
,即全透明。
为了可以在游戏中看到它,我们需要显式配置 1400 为不透明:
transparentItemlist = {
{ 1, 255, 255, 25500 },
{ 2, 255, 255, 25500 },
... ...
{ 1400, 255, 255, 25500 },
{ 0, 0, 0, 0 }
}
重新进入游戏即可看到翅膀了:
开始动手添加更多翅膀吧!