剖析rAthena加载npc脚本的机制和顺序

游戏里面的各种NPC,都是由NPC脚本来描述出他们的位置、面向方向、名称、外观,以及点击NPC后对话的内容的。这种NPC脚本在rAthena里面都被放在了npc文件夹里面。

本文主要讲解rAthena加载npc脚本的机制和顺序,以及如何添加一个自己的NPC脚本文件,使其能够被rAthena加载到游戏中去。

我们知道,rAthena在编译的时候,是有“复兴前”和“复兴后”的区别的,区别在于编译时rAthena的源代码文件src\config\renewal.h里面的第7行(行数会随着rAthena更新而改变,至少目前是第7行)#define PRERE的最开头有没有注释符“//”,如果有“//”那就是复兴后的版本,如果没有“//”那就是复兴前的版本。

由于复兴前后魔物出现的地图、部分NPC的位置,甚至是对话的内容都会有所不同,所以rAthena为了兼容这复兴前后两种模式,也将npc脚本分为了3个部分,一部分是复兴前后通用的,一部分是复兴前专用的,一部分是复兴后专用的。

rAthena服务端的map-server.exe启动到末尾的时候,就会根据你编译时候的设置,如果是复兴前,那么就读取npc\pre-re\scripts_main.conf文件,如果是复兴后,那么就读取npc\re\scripts_main.conf文件,scripts_main.conf文件是map服务器加载NPC时第一个读取的文件,然后会再根据这个scripts_main.conf文件的内容去加载其他NPC文件。

由于rAthena默认是复兴后的设置,所以我们这里以npc\re\scripts_main.conf文件作为例子来讨论rAthena加载NPC文件时候的顺序,我们先看看npc\re\scripts_main.conf文件里面是什么样的:

从上图中可以看到,除了一些注释信息(绿色文字)之外,最醒目的也就是npc:import:这两个英文单词(我的Notepad++设置过,所以会高亮显示不同的颜色,大家可能看的都是黑色)。

这两个英文单词的意思分别如下,如果是npc:开头的,那么表示让map加载后面跟随的txt文件,比如“npc/other/Global_Functions.txt”,如果是import:开头的,那么表示让map去看看后面跟随的conf文件里有什么东西,比如“npc/scripts_athena.conf”。

没了,整个加载npc的过程就是简单!碰到npc:开头的就加载,碰到import:开头的就去看看这个.conf文件里面有什么东西(如果里面还有npc:开头的东西那么也加载)!

————————————————————-

如果想要让rAthena可以加载你自己写的脚本文件的话,只要找任何一个rAthena会读取的.conf文件,把你的txt脚本加进去即可。比如我现在有一个脚本,文件名是”abc.txt“,放在“npc\我的脚本”目录里面:

然后找到一个rAthena会读取的.conf文件,比如“npc/scripts_custom.conf”文件,打开后在里面加入一行自己的脚本路径即可,如下图所示(记住请用正斜杠“/”而不是反斜杠“\”作为分隔符):

添加完毕后,确保.conf文件的编码是ANSI即可,否则的话加载路径中包含中文的脚本会加载失败,导致整个脚本文件和没加载一样… 如果右下角的编码指示器显示的不是ANSI的话,那么可以通过菜单的“格式→转为 ANSI 编码格式”菜单来改成ANSI编码。

感谢“”指正本文的一处错误。