加载中...

「RO 笔记」人物外观修改 - 发型/发色篇


0x00 前言

在 rAthena 论坛公开了三组免费的发型补丁:

差不多有 100 个发型,但是这些发型要怎么安装到游戏中呢 ?

0x10 安装发型图档

参考《客户端目录结构及功能说明(2024 修订)》,发型图档目录为:

  • 人类男生: data/sprite/牢埃练/赣府烹/巢
  • 人类女生: data/sprite/牢埃练/赣府烹/咯
  • 猫族男生: data/sprite/档恩练/赣府烹/巢
  • 猫族女生: data/sprite/档恩练/赣府烹/咯

故把下载的图档放置到对应目录即可:

发型图档的名称格式为: {发型编号}_{性别}.[act|spr]

这里需要注意自己安装了几个发型,即记住最后的 {发型编号} 是多少,以我这里为例:

  • 人类男生发型最后的编号: 102
  • 人类女生发型最后的编号: 109
  • 猫族男生发型最后的编号: 20
  • 猫族女生发型最后的编号: 20

不难发现,不同种族的不同性别的发型数量是可以不一致的。

0x20 调整服务端发型上限

rAthena 服务端的 NPC 脚本有一个更改发型/发色的示例脚本 npc/custom/stylist.txt

在其中有一段代码是获取发型数量上限的:

prontera,170,180,1    script    Stylist#custom_stylist    122,{
    setarray .@Styles[1],
        getbattleflag("max_cloth_color"),
        getbattleflag("max_hair_style"),    // 发型编号上限
        getbattleflag("max_hair_color");    // 发色编号上限
    ... ...
}

getbattleflag("max_hair_style") 就是获取配置文件 conf/battle/client.conf 对应的配置值:

max_hair_style 的默认值为 42(官方只有 42 种发型),这里通过一个【软上限】控制发型的上限,目的是避免我们在没有更多发型图档时、给玩家设置了不存在的发型图档。

之所以说是【软上限】,是因为这个上限只是在 npc/custom/stylist.txt 脚本种起作用而已。

实际上我们在自己写 NPC 脚本时,可以完全不使用 getbattleflag("max_hair_style") 获取上限,直接通过 setlook LOOK_HAIR, 999; 就能简单跨越这个上限,但是会如果对应的发型编号图档缺失的话,就会报错、造成人物出现无头的情况:

因此 max_hair_style 软上限起到的作用是很有限的,没必要太过纠结它的具体值是什么。

为了便于以后扩充,我这里建议把 max_hair_style 设置为一个稍微大一些的值,例如 200。

然后再根据不同的种族和性别的发型图档,分别设置其上限,例如可以修改 NPC 脚本为:

prontera,170,180,1    script    Stylist#custom_stylist    122,{

    // 默认统一设置了发型上限值 200,但实际上 男生/女生/猫族 各有上限
    .@hair_limit = getbattleflag("max_hair_style");
    .@HUMAN_BOY_HAIRSTYLE_LIMIT = 102        // 人类男生当前上限
    .@HUMAN_GIRL_HAIRSTYLE_LIMIT = 109        // 人类女生当前上限
    .@CAT_BOY_HAIRSTYLE_LIMIT = 20            // 猫族男生当前上限
    .@CAT_GIRL_HAIRSTYLE_LIMIT = 20            // 猫族女生当前上限

    // 猫族发型上限
    if (BaseClass == 4218) {    
        .@hair_limit = (Sex == 0) ? .@CAT_GIRL_HAIRSTYLE_LIMIT : .@CAT_BOY_HAIRSTYLE_LIMIT;

    // 人类发型上限
    } else {                    
        .@hair_limit = (Sex == 0) ? .@HUMAN_GIRL_HAIRSTYLE_LIMIT : .@HUMAN_BOY_HAIRSTYLE_LIMIT;
    }
    setarray .@styles[1],
        getbattleflag("max_cloth_color"),
        .@hair_limit,                      // 发型编号上限
        getbattleflag("max_hair_color")    // 发色编号上限
    ;
    ... ...
}

0x30 调整客户端发型上限

但是部分同学可能会存在这种情况:在修改服务端的发型上限后、执行 setlook LOOK_HAIR, {发型编号}; 时,如果 {发型编号} > 42,发型不会发生任何变化,似乎无论如何也突破不了发型的默认上限。

其实不然,之所以出现这种情况,是因为客户端还存在【硬上限】,需要 DIFF 更改:

修改人族发型上限 Increase human hair style limit in game:

修改喵族发型上限 Increase doram hair style limit in game:

因为我现在的发型图档数量都是参差不齐,而每次 DIFF 都比较麻烦,因此我这里都修改为一个较大的值,主要还是通过服务端的【软上限】进行控制。

DIFF 的方法可以参考《从零开始 DIFF Ragnarok 登入器教程》,但是如果你在 DIFF 看不到这两个选项,更新 Nemo 的版本到最新即可

0x40 安装发色图档

其实到这里为止,如无意外在游戏中已经可以更换发型了:

但是当你为新发型更换发色时,可能会出现全黑的情况:

这是因为缺失了发色图档。

参考《客户端目录结构及功能说明(2024 修订)》,发色图档目录为:

  • 人类: data/palette/赣府
  • 猫族: data/palette/档恩练/赣府

而发色图档的格式为: 赣府{发型编号}_{性别}_{发色编号}.pal

一般情况下,在别人提供的发型补丁中、都会带有配套的发色图档的,但如果没有,我们也可以自己做。

与发型一样,我们可以在 conf/battle/client.conf 中找到发色的上限值 max_hair_color: 33,意思就是说 “每个发型都有 33 种发色” (当然如果你没有扩充过,官方默认只有 8 种)

制作发色图档的方法很简单,我们只需要把已经有的发色图档成组复制出来,改为新发型的发色即可。

例如我已经有 3_巢.spr 发型的所有颜色的发色图档:

  • 赣府3_巢_0.pal
  • 赣府3_巢_1.pal
  • 赣府3_巢_2.pal
  • … …
  • 赣府3_巢_32.pal
  • 赣府3_巢_33.pal

现在需要为 109_巢.spr 的发型添加发色,只需要成组复制为:

  • 赣府109_巢_0.pal
  • 赣府109_巢_1.pal
  • 赣府109_巢_2.pal
  • … …
  • 赣府109_巢_32.pal
  • 赣府109_巢_33.pal

然后放置在对应发色的图档目录即可。

当你缺失了多个发型的发色时,需要复制的文件就会极多,所以这一步建议自己写一个简单的复制脚本、或使用一些辅助工具,例如批量文件重命名工具等。


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
「RO 笔记」人物外观修改 - 身体/职装篇 「RO 笔记」人物外观修改 - 身体/职装篇
为什么别人的 RO 里可以出现火影死神海贼王的角色 ?在 RO 中玩 cosplay、复现各种热门动漫的主角真的有可能吗 ?
2024-01-28
下一篇 
「RO 笔记」特殊外观 ID 解读 - 时装/影子篇 「RO 笔记」特殊外观 ID 解读 - 时装/影子篇
从 EP.14 开始加入了时装系统和影子系统,但是这两套系统要如何定制外观?本文将为你讲解它们的制作原理...
2024-01-25
  目录