我们直接进入主题:我们需要达到想要效果其实就是去定义一个怪物生成器

地图,X坐标,Y坐标,X半径, Y半径

monste r

怪物名字,怪物等级

怪物ID,数量,延迟1,延迟2,事件,怪物大小,怪物AI (此为怪物生成器格式)

<mapname>{,<x>{,<y>{,<xs>{,<ys>}}}}%TAB%monster%TAB%<monster name>{,<monster level>}%tab%<mob id>, <amount>{, <delay1>{, <delay2>{, <event>{, <mob size>{, <mob ai>}}}}}

<地图:名>{, <X坐标>{,<Y坐标>{, <X半径>{, <Y半径>}}} }%TAB%monster%TAB%<怪物名字>{, <怪物等级>}%TAB%<怪物ID>, <数量>{,<延迟1>{, <延迟2>{,<事件>{,<怪物大小>{,<怪物AI>}}}}


编写脚本在PANDAS>npc > custom > tutorial > test.ras 文档中

Prontera(地图), 152,280(坐标),10,10(触发范围) monster(固定用法) 波利(怪物名称),10 (怪物等级)1002(怪物ID), 200(数量),2000(重生间隔), 0(第二个重生间隔随机), "TestMonsterDeath : :OnMonsterDeath"(触发事件)

注释说明:

生成位置,map name是怪物生成的地图名称

x和y是怪物生成的坐标,如果x和y都是0,怪物将在全地图随机生成

XS和ys是刷怪区域的X和Y方向的半径,如果xs和ys都是0,怪物将固定在x和y的位置生成

以上参数限定的区域只是刷怪时的初始区域,怪物- -旦生成,就会在全地图随机移动

名字和等级

monster name是怪物在屏幕上的名字,与它们在其他地方的名字没有任何关系

monster level 是怪物的等级,如果不指定,怪物将使用mob_ _db.txt里配置的等级。例如:波利,50 会生成-一个名为波利且等级为50的怪物

如果monster name为--ja-- ,则使用mob_ db. txt的” 日文名称”字段,(在rAthena中,它实际上包含一一个英文名称)如果它是"--en-它是怪物数据库中的”英文名称”(其中包含用于使用GM命令召唤怪物的大写名称)

怪物ID和数量

Mob id标识了要生成的怪物在" mob_ db.txt"怪物数据库中的记录

数量是执行此命令时将产生的怪物数量, 它受’'battle_ athena.conf"中的

产生率影响如果生成的怪不打死,是不会再生成的。

重生延迟

delay1表示固定时间和delay2表示随机时间 控制怪物重生延迟-第一一个是固定的基础重生时间,第二个是基础时间之上的随机变化。两个值都以毫秒为单位给出(1000= 1秒)。请注意,服务器还强制执行5秒的最小重生延迟

事件

事件是当怪物被杀死时要执行的脚本事件。

事件必须以NPCName ::OnEventName的形式执行,事件名称标签应以"On"开头。对于所有事件,如果NPC是触摸NPC,触发脚本的玩家必须在"触发'范围内才能使事件生效。

示例:

monster "prontera" , 123, 42, "Poringzθrd" , 2341,23, "Master: : 0nThi sMobDeat

amatsu,13,152,4 script Master 767,{

mes "Hi there";

close;

OnThi sMobDeath:

announce "Hey," + strcharinfo(0) + " just killed a Poringzθr

end;

}

怪物生成器代码示例:


怪物大小和AI

mob size 是怪物的尺寸

mob ai是怪物的Al(人工智能)类型

<mob size>可以是:

Size_ Small (0) //尺码_小号

Size_ Medium (1) //尺寸 _中号

Size_ Large (2) //尺码_大号

<mob ai>可以是:

AI_ _NONE (0) (默认)

AI_ _ATTACK (1) (攻击/友好)

AI_ SPHERE (2) (炼金技能)

AI_ FLORA (3) (炼金技能)

AI_ ZANZOU (4) (阳炎/奥博罗技能)

AI_ LEGION (5) (世拉技能)

AI_ FAW (6) (机械技能)

可以在地图上以sc_ BOSSMAPINFO 状态检测到使用"boss_ monster' 而不是‘monster"生成的怪物。

怪物ID可在Pandas>db>re>mob_db_.yml 文档直接查看


演示:prontera ,152,280 monster波利 1002,2 (因没有指定范围会在固定地点刷新)


prontera ,152,280,10,10 monster波利 1002,2 (在10*10的范围刷新怪物没有设定等级默认刷出来的怪物都是1级)

prontera ,152,280,10,10 monster波利 10 tab 1002,2,1000

(即怪物刷出等级为10级,刷新的速度为1秒,后面在次定义一下随机时间5秒没有用估计是因为固定刷新时间太短了)

prontera,161, 287,4 script TestMonsterDeath > 767,{

mes"每当你杀一只波利, 我都会为你欢呼" ;

close ;

OnMonsterDeath :

npctalk "哇, 神勇无比的" +strcharinfo(0) + "消灭了一只波利! ";

end;

} 注释:杀死一只波利后NPC说一句话

这个就是比较简单的死亡脚本


也可以在这个基础上去做狩猎任务等,杀死多少只怪给一个奖励等

示例:

prontera ,161,287,4 script TestMonsterDeath 767,{

mes "每当你杀一只波利,我都会为你欢呼" ;

mes”当你杀满10只波利时,我会奖励你个< ITEM> 苹果<INF0>512</INFO></ITEM>";

mes"当前已击杀^FF0000" + killnum +”^000000 只波利";

close;

OnMonsterDeath:

killfum += 1; (注释:此为计数定义是会一直累计的)

npctalk "哇,神勇无比的" + strcharinfo(0) + "消灭了”+ kil1num + "只波利! ";

if (kil1num == 10) {

announce "哇,神勇无比的" + strcharinfo(e) + "消灭了10只波利,]已经超神了,奖励小苹果个]" , bc_ blue |bc_ a11;getitem 512,1;

}

end;

}

注:大家也可以根据自己的想法以及对于游戏的设定去创建行的奖励等



怪物大小的定义:

prontera ,152, 280,10,10 monster 波利,10 1002, 1, 1000,

0,"TestMonsterDeath: :OnMonsterDeath",0

prontera ,152, 280,10,10 monster波利,10 1002 ,1, 1000, 0,

"TestMonsterDeath: :OnMonsterDeath",1

prontera, 152,280,10,10+ monster 波利,101002, 1, 1000, 0, "TestMonsterDeath: : OnMonsterDeath" ,2


每写完新的脚本时记得回到游戏输入命令:@reloadsoript (加载一下脚本)

今天的分享就到这里啦,我是艾西希望对有需要的小伙伴有帮助我们下期见

拥有一台服务器可以做很多有趣的事情