大家好我是艾西,在仙境传说这个游戏中我们知道了怎么创建NPC添加商品售卖后,那么对于游戏的怪肯定也得有自己的想法以及对游戏的设定以及理解,今天我跟大家分享的是怎么在地图中刷怪教程。
我们直接进入主题:我们需要达到想要效果其实就是去定义一个怪物生成器
地图,X坐标,Y坐标,X半径, Y半径
monste r
怪物名字,怪物等级
怪物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(人工智能)类型
Size_ Small (0) //尺码_小号
Size_ Medium (1) //尺寸 _中号
Size_ Large (2) //尺码_大号
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> 苹果
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 (加载一下脚本)
今天的分享就到这里啦,我是艾西希望对有需要的小伙伴有帮助我们下期见
拥有一台服务器可以做很多有趣的事情