加载中...

「RO 笔记」添加自定义地图


0x00 前言

本教程介绍的是 rAthena 系的方法。

以 RWC(Ragnarok World Championship,仙境传说全球精英邀请赛)的活动地图为例,我们一般拿到的地图资源文件都包含这 3 个文件:

  • 2012rwc_01.gat
  • 2012rwc_01.gnd
  • 2012rwc_01.rsw

某些地图可能还有额外的 2 个文件:

  • 2012rwc_01.extra
  • 2012rwc_01.bmp (游戏右上角的小地图)

因为本文不涉及怎么创建/编辑地图,所以这些文件具体的作用是什么,我们暂时不需要知道。

只需要关心的是: 要怎么把这些文件添加到自己的 RO 服务器中呢 ?

—— 添加地图其实是涉及到 服务端 和 客户端 操作的,这里先说客户端:

0x10 添加地图到客户端

0x11 放置地图资源文件

把以下 4 个文件复制到客户端的 data 目录下:

  • 2012rwc_01.gat
  • 2012rwc_01.gnd
  • 2012rwc_01.rsw
  • 2012rwc_01.extra(若有)

把这个小地图文件复制到客户端的 data/texture/蜡历牢磐其捞胶/map 目录下:

  • 2012rwc_01.bmp(若有)

小地图文件不是必须的,缺失的情况下只会在进入地图时提示异常,不影响游戏:

这里建议把所有地图资源文件打包到 GRF 文件中(需要确保相对路径一致),这样有个好处:如果你没有 *.bmp 小地图文件,就可以利用 GRF Editor 生成:

  1. data 下找到 2012rwc_01.gat 文件
  2. 点击 GRF Editor 右侧的 小地图预览 -> 保存进 Grf
  3. data/texture/蜡历牢磐其捞胶/map 下可找到生成的小地图文件

若需要为多个地图文件添加小地图,可以这么操作:

  1. data 下找到输入 .gat 筛选条件
  2. 左手有节奏不断按下键盘
  3. 右手配合节奏不断按下鼠标左键保存小地图

0x12 设置地图资源文件

使用 GBK 编码,打开并编辑 data/resnametable.txt,在其中新增以下内容:

2012rwc_01.gnd#2012rwc_01.gnd#
2012rwc_01.gat#2012rwc_01.gat#
2012rwc_01.rsw#2012rwc_01.rsw#
蜡历牢磐其捞胶/map/2012rwc_01.bmp#蜡历牢磐其捞胶/map/2012rwc_01.bmp#

它们的格式为:

自定义地图名.gat#地图文件名.gat#
自定义地图名.gnd#地图文件名.gnd#
自定义地图名.rsw#地图文件名.rsw#
蜡历牢磐其捞胶/map/自定义地图名.bmp#蜡历牢磐其捞胶/map/地图文件名.bmp#

一般情况下,自定义地图名地图文件名 应该是一样的,除非你要做地图映射(地图映射在文章的最后会介绍)。

这里注意几点:

  • 自定义地图名 不能出现中文和空格,在后续所有配置中(包括客户端和服务端),都是用这个名字关联这张地图
  • 不需要配置 *.extra,即使你有 2012rwc_01.extra
  • 需要配置 *.bmp,即使你没有 2012rwc_01.bmp

0x13 设置地图名称

使用 GBK 编码,打开并编辑 data/mapnametable.txt,在其中新增一行: 2012rwc_01.rsw#2012 RWC 01# (顺序不重要)

这行的格式为:自定义地图名.rsw#地图昵称#

其中:

  • 自定义地图名 需要和前面保持一致
  • 地图昵称 可以是中英文和空格,它唯一的用途是在游戏中通过输入 /where 显示出来:

0x14 设置地图 BGM

使用 GBK 编码,打开并编辑 data/mp3nametable.txt,在其中新增一行: 2012rwc_01.rsw#bgm//100.mp3# (顺序不重要)

这行的格式为:自定义地图名.rsw#地图背景音乐文件路径#

其中:

  • 自定义地图名 需要和前面保持一致
  • 地图背景音乐路径 在 RO 客户端根目录下的 BGM 目录中, // 为 windows 的文件路径分隔符,随便选一个已存在的音乐文件即可:

这里也可以制作一个喜欢的背景音乐放进去

0x20 添加地图到服务端

0x21 添加到地图列表

编辑 conf/maps_athena.conf,在其中新增一行: map: 2012rwc_01 (顺序不重要)

这行的格式为:map: 自定义地图名

其中 自定义地图名 需要和前面保持一致。

0x22 添加到地图索引列表

编辑 db/import/map_index.txt,在其中新增一行: 2012rwc_01 (顺序不重要)

这行的格式只有:自定义地图名

其中 自定义地图名 需要和前面保持一致。

0x23 添加到地图缓存

如果你看过本系列的《SDE 基础使用指引》,你会知道在 SDE 的工具中,有一个 MapCache 编辑器,使用它打开地图缓存文件 db/import/map_cache.dat :

若你没有 db/import/map_cache.dat,可先点击 New 新建。

然后点击 Edit 编辑按钮,可以看到两个选项:

  • Merge...: 可以添加地图文件所在的 GRF,批量添加到地图缓存(工具会自动找到 *.gat 格式的地图文件)
  • Add maps...: 一次只能选择单个 *.gat 格式的地图文件添加到地图缓存

按需选择就好,你可以选择添加单个 2012rwc_01.gat 地图缓存。

这里我是直接添加整个 GRF 的,一劳永逸。不必担心添加所有地图缓存会不会导致 map_cache.dat 太大,我加了所有地图缓存才不到 3M 。

最后点击 File -> Save 保存即可。

其实用 WeeMapCache 也可以编辑地图缓存,操作方式都是差不多的。但是不推荐用这款工具,它之前有个版本会导致地图上的水区域会出 BUG,例如无法收集圣水、无法使用水球术等。

0x30 验证效果

现在所有配置已完成,进入游戏输入命令 @warp 2012rwc_01 即可移动到新添加的地图:

  • 右上角有小地图
  • /where 得到的地图昵称是 2012 RWC 01

0x40 映射地图

可能你之前听到过「映射地图」,但是不知道是什么、也不知道应该怎么操作。

我以前面的场景作为例子,当你添加名为 2012rwc_01 的地图后,GM 要进入该地图,每次都要敲一遍命令 @warp 2012rwc_01,又长不容易记。

是不是可以给 2012rwc_01 加个别名,例如 rwc2012 就好记多了。

这时你可能会说:“在添加地图前,先把文件名改成 rwc2012 不就可以了吗” ?

其实是不行的,地图几个资源文件其实是通过文件名关联起来的,即使修改了文件名,客户端还是会用原本的文件名去找地图,结果就是找不到资源直接报错:

正确的做法应该是「映射地图」,操作方法非常简单,只需要把上文中预留的 自定义地图名 统一做修改即可,需要注意:

  • 不能有中文
  • 不能有空格
  • 必须全局唯一

例如修改为 rwc2012

另外需要注意的是,服务端在添加地图缓存 map_cache.dat 时,不要添加名为 2012rwc_01.gat 的缓存;而是需要把地图原文件复制到任意位置、重命名为 rwc2012

  • 2012rwc_01.gat -> rwc2012.gat
  • 2012rwc_01.gnd -> rwc2012.gnd
  • 2012rwc_01.rsw -> rwc2012.rsw
  • 2012rwc_01.extra -> rwc2012.extra(若有)

然后使用 MapCache 编辑器添加 rwc2012.gat 到地图缓存 map_cache.dat 中:

最后删除这几个文件即可(客户端不需要加载重命名后的文件):

  • rwc2012.gat
  • rwc2012.gnd
  • rwc2012.rsw
  • rwc2012.extra(若有)

这样做的目的是让服务端有一个地图索引名为 rwc2012,但实际上客户端找的地图资源是 2012rwc_01

此后 GM 只需要敲命令 @warp rwc2012,就能进入地图 2012rwc_01

0xE0 附:地图缓存

关于地图缓存 map_cache.dat,在 rAthena 的 doc/map_cache.txt、和 PandasWS 的 conf/grf-files.txt 都有其说明:

自 SVN 版本约 10000 起,rAthena 的 map-server 不再直接读取 GRF 文件中的地图数据,而是从这个缓存文件中读取。

这意味着所有地图的必要信息都被存储在 map_cache.dat 中,以便服务器更高效地加载和管理地图。

因此若新增的地图没有缓存在 map_cache.dat,游戏中会无法进入该地图,同时提示 找不到地图

反之若地图只在 map_cache.dat 中,客户端却缺失该地图资源文件,当你强制用用 @warp 指令移动到该地图时,游戏就会崩溃:

0xF0 参考文档


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
「RO 笔记」防具外观 ID 解读 - 头饰篇 「RO 笔记」防具外观 ID 解读 - 头饰篇
你是否一直对道具库中的 view id 一知半解?这是干嘛的?它的取值范围是什么?它是如何控制外观的?为什么修改不起作用?为什么它关联那么多个文件?它们之间是什么关系?怎么那么混乱?别急,本文将一一帮你理清它背后的脉络。
2024-01-05
下一篇 
「RO 笔记」Thor 登陆器配置指南 「RO 笔记」Thor 登陆器配置指南
你是不是厌烦了每次发布新版补丁时都要一次次去通知所有玩家?你是不是在寻求启动游戏前自动更新补丁的方法?一文教你学会登陆器配置方法!
2023-12-30
  目录