加载中...

「RO 笔记」防具外观 ID 解读 - 披风/翅膀篇


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。

和头饰/武器的外观池不一样,披肩外观池有三个文件:

  1. 定义「披肩唯一代码」和「披肩外观 ID」的关系: data/luafiles514/lua files/datainfo/spriterobeid.lub
  2. 定义「披肩唯一代码」和「披肩图档名称」的关系: data/luafiles514/lua files/datainfo/spriterobename.lub
  3. 通过「披肩外观 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 文件中有三个表,只需要修改 RobeNameTableRobeNameTable_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 }
}

重新进入游戏即可看到​翅膀了:

开始动手添加更多翅膀吧!

0xF0 参考文档


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
「RO 笔记」防具外观 ID 解读 - 盾牌篇 「RO 笔记」防具外观 ID 解读 - 盾牌篇
你是否已经发现,翻遍全网也找不到盾牌设置外观的 lua/lub 文件,但是为什么有些同学却能修改盾牌外观?这是如何做到的?
2024-01-24
下一篇 
「RO 笔记」武器外观 ID 解读 「RO 笔记」武器外观 ID 解读
此前已经详细介绍过头饰和披风的外观修改方法了,本节进一步学习怎么修改武器外观。但是武器的外观不同于头饰和披肩,它与职业绑定、且需要进入战斗状态才能看到...
2024-01-18
  目录