我们直接进入主题:我们需要达到想要效果其实就是去定义一个怪物生成器
地图,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 (加载一下脚本)
今天的分享就到这里啦,我是艾西希望对有需要的小伙伴有帮助我们下期见
拥有一台服务器可以做很多有趣的事情