1.Athena服务端的RO征途单机版服务端怎么添加一个能够卖炼金做瓶子的那些材料的NPC。 2.怎么让账号拥有GM权限。

Athena脚本讲座(一)~(十)Athena脚本制作讲座(一)----基础知识 Hack 编写第一讲 基础知识一、如何添加自己制作的NPC做一个脚本放到npc目录里面如:商人.text然后在map_athena里面添加就是了运行NPC脚本设置(不需要运行的脚本在npc前输入表示关闭)npc npc商人.txtnpc npc商人1.txtnpc npc商人2.txt二、如何设定NPC的位置与造型例1:prontera.gat,167,204,6 shop hack专场特卖会 96,,, 此处省略若干物品prontera.gat 为所在地图167为X坐标204为Y坐标6为NPC面朝的方向2 1 83 X 74 5 6shop为NPC类型hack专场特卖会为NPC的显示名称96为NPC的造型, ..... 为 物品代码价格三、高级技巧基本的NPC格式如下:map,X,Y,angle script name skin,{具有一定作用域的NPC如下,当玩家进入这个区域后NPC自动生效map,X,Y,angle script name skin,X size,Y size,{其他类型的NPC请参看 dispbbs.aspboardID=3&ID=2351&page=1[第一讲完]第二讲预告,输入输出与流程控制第一讲作业1.挑几个你感兴趣的已有NPC,改变其位置与造型2.仿造例一制作一个贩卖铁匠物品的NPC,放于首都喷泉旁(物品代码可于dbitem_db.txt中查到)Athena脚本制作讲座(二)----流程控制与输入输出 Hack 编写第二讲 流程控制与输入输出(参考索克的脚本可用命令)一、流程控制2、next &&
产生按钮&下一步& 3、close &&
产生按钮&关闭& 4、menu &*&,&l& menu &好的&,L_YES,&不好&,L_NO; 产生选择列表,有2个选项&好的&、&不好&,选择后即发生跳转 选择&好的&跳转至L_YES,选择&不好&跳转至L_NO 5、goto &l& goto L_YES;直接跳转至L_YES 平时使用时,常跟在if等条件判断语句后 12、if &igi& if(@value==1) goto L_YES;如果@value=1,跳转到L_YES,不然就顺序执行 常用的判断符:&、&、==、!=、&=、&= 38、end &&
强制结束脚本二、输入输出1、mes &s& mes &你好&; 在NPC对话框中显示&你好& 7、input && input @产生一个输入框,输入的内容赋值在@value变量中 变量可以是数字,也可以是字符(好像不能为字符,请索克兄帮忙,偶不搞不定了)54、announce &si& announce &你好& 3;在服务器内用黄色字体广播&你好& 广播命令,可以控制广播内容和广播颜色 3:黄色 19:蓝色 55、mapannounce &ssi& mapannounce &prontera.gat& &你好& 3;在普隆德拉地图内内用黄色字体广播&你好& 地图广播命令,可以指定地图 56、areaannounce &siiiisi& areaannounce &prontera.gat& 100 100 10 10 &你好& 3; 在普隆德拉X100Y100,X+-10,Y+-10的区域内内用黄色字体广播&你好& 区域广播,可以使得特定区域的玩家看到系统消息 三、注意事项1、goto语句的标号是区分大小写的,若出错则会使map-server死掉,且不会自动重启2、一行显示一般为37个字符,超出的话偶也不知道会发生什么事请阅读以下范例,以加强对基本流程及mes语句使用方法的了解。例1,发钱的hack// 里面有几个命令是偶们还没有学过的,不过没有关系,很容易理解,// delitem 2278,1; 表示删除2278号物品1个// set Zeny,Zeny+200000; 表示增加200000块钱// 特别需要注意的是你的Goto语句,如果出现错误可能会使服务器当机,特别要注意大小写prontera.gat,155,174,4 script 发钱的hack 706,{mes &[发钱的hack]&;mes &嘿嘿!哇呀呀!&;mes &我是^5577FF发钱的hack^000000。&;mes &我愿意拿钱和你换一些东西。&;menu &询问 ^3355FF笑脸面具^000000 换钱的一些信息&,Case1,&拿 ^3355FF笑脸面具^000000 换钱&,Case2,&拿 ^3355FF兔耳发圈^000000 换钱&,Case4,&取消&,Case3;Case1:mes &[发钱的hack]&;mes &你有笑脸面具吗? &;mes &我朋友^5577FF乖宝宝^000000想要几个面具来玩。&;mes &可是我没有材料去制作啊。&;mes &你有已经制成的面具吗?&;mes &我可以拿很多钱跟你换哦!&;mes &[发钱的hack]&;mes &制作^3355FF笑脸面具^000000&;mes &需要搜集一些物品.&;mes &你如果能搜集到这些材料&;mes &就可以去找微笑小姐做成笑脸面具&;mes &下面是制作^3355FF笑脸面具^000000所需要的一些道具.&;mes &[发钱的hack]&;mes &10个^3355FF杰比勒结晶^000000&;mes &10个^3355FF毛^000000&;mes &10个^3355FF三叶幸运草^000000&;mes &[发钱的hack]&;mes &做好了拿来给我,我就给你大把大把的钱! &;Case2:if(countitem(2278)&1) goto Case2NOT;mes &[发钱的hack]&;mes &哈哈,^5577FF乖宝宝^000000一定会很高兴的~:)&;mes &那么^3355FF笑脸面具^000000。我拿走了!.&;delitem 2278,1;set Zeny,Zeny+200000;mes &[发钱的hack]&;mes &拿好咯!&;mes &这里是答应你的^Z^000000&;mes &如果你还有笑脸面具,还可以拿过来和我换。&;mes &好东西我不嫌多!&;Case2NOT:mes &[发钱的hack]&;mes &我&;mes &[发钱的hack]&;mes &要&;mes &[发钱的hack]&;mes &笑&;mes &[发钱的hack]&;mes &脸&;mes &[发钱的hack]&;mes &面&;mes &[发钱的hack]&;mes &具&;//狸猫的猫耳发圈掉落率是2Case4:if(countitem(2214)&1) goto Case4NOT;mes &[hack]&;mes &哈哈,高兴~:)&;mes &那么^3355FF兔耳发圈^000000。我拿走了!.&;delitem 2214,1;set Zeny,Zeny+;mes &[发钱的hack]&;mes &拿好咯!&;mes &这里是答应你的^00Z^000000&;mes &如果你还有兔耳发圈,还可以拿过来和我换。&;mes &好东西我不嫌多!&;Case4NOT:mes &[发钱的hack]&;mes &我&;mes &[发钱的hack]&;mes &要&;mes &[发钱的hack]&;mes &的&;mes &[发钱的hack]&;mes &是&;mes &[发钱的hack]&;mes &兔&;mes &[发钱的hack]&;mes &耳&;mes &[发钱的hack]&;mes &发&;mes &[发钱的hack]&;mes &圈&;Case3:mes &[发钱的hack]&;mes &再见,再见&;mes &[发钱的hack]&;mes &白白,白白&;}第三讲预告,属性控制指令第二讲作业1.制作一个&Hello, world!& NPC2.制作一个广播员置于首都中央,交200000块钱就可以发一条自己的广播。(目前偶只会输入数字,建议设定好几条固定消息选择,等索克兄来了,偶问问他input怎么用)3.密码看门人:输入正确的密码后才可以进入此房间Athena脚本制作讲座(三)----属性相关指令 Hack 编写第三讲 属性相关指令(参考索克的脚本可用命令)6、jobchange &i& jobchange 0;转职成初心者 0:初学者 7:骑士 14:十字军1:剑士 8:牧师 15:武僧2:法師 9:魔法师 16:贤者3:弓箭手 10:铁匠 17:流氓4:服士 11:猎人 18:炼金术士5:商人 12:刺客 19:诗人6:盗賊 13:骑士《骑鸟状态》 20:舞者21:十字军《骑鸟状态》22.结婚造型 23.超级初心者10、setlook &ii& 设置发型发色命令具体可以看一下现有脚本 11、set,&ii& set @value,1;将1赋值到@value 可以给自定义变量或系统变量赋值系统变量如下: StatusPointBaseLevel SkillPoint Class Zeny Sex Weight MaxWeightJobLevel BaseExp JobExp NextBaseExp NextJobExp Hp MaxHp Sp MaxSp 例: set Zeny,Zeny+200000; 表示增加200000块钱 除去系统变量外,l或@开头的为每个玩家的变量,$开头的为每个地图的变量,无上述前缀且非系统变量的为全局变量15、cutin &si& 显示NPC的大图片,比如卡普拉那些漂亮MM 具体参数可以参考自带脚本17、heal &ii& heal 100,100;回复100HP、100SP 按数值回复 19、percentheal &ii& heal 100,100;回复HP100%、SP100% 按比例回复 22、checkweight &ii& 两个参数分别为:物品代码和数量,命令作用是检查拿了这些物品后是否超重,若超重则返回0,否则返回1 22、readparam&,&i& 读取参数支持的变量在const.txt中说明 23、strcharinfo,&i& 人物信息读取,目前仅支持strcharinfo(0),返回值为人物名称33、bonus &ii& 得到一个附加bonus 34、bonus2 &iii& 补充、bonus3 &iiii&以上三个命令用法见另一帖 dispbbs.asp?boardID=3&ID=3129&page=135、skill &ii*& 参数为:技能代码,等级,(标识1)例如: skill 140,1,0; 学习第140号技能,等级为1,技能代码参看skill_db36、getskilllv &i& 获取技能等级37、basicskillcheck &*& 读取battle_athena.conf中basic_skill_check项的值,并返回 39、setoption &i& setoption 0;回复普通,无任何特殊状态无手推车无鹰无骑鸟 设置状态,参数请参考GM命令@option的Z项 在实际使用中,需要注意的是,状态可以叠加 例如:setoption 3;3=1+2,于是结果就是火狩+隐匿z = 01 火狩z = 02 隱暱z = 04 隱身z = 08 手推車z = 16 带老鹰z = 32 骑鸟z = 64 隱身62、sc_start &iii& 特殊状态开启三个参数分别为:类型,参数1(技能等级),参数2(暂时未用)例如sc_start SC_FREEZE,1,0; //变成冰冻状态支持的状态表另外再发,可以先参看skill_db,状态都是把_前面改成SC63、sc_end &i&特殊状态关闭 67、resetstatus &&
重置所有属性点 68、resetskill &&
重置所有技能点 69、changebase &i& 改变人物显示的职业,但实际职业不变,可用于结婚系统 如:changebase 22; //变成结婚人物形象补充statusup istatusup2 ii参数提升指令(str,vit,agi,dex,agi,luk)statusup bS 参数提升1点statusup bStr,10;参数提升10点bStr,bAgi,bVit,bInt,bDex,bLuk其他可查看const.txt例1:重置辅助人员(已包括在npc目录中)//By GeisHaprontera.gat,146,192,4 script 重置辅助人员 763,{mes &[重置辅助人员]&;mes &我专门负责重置点数&;mes &你想重置什么呢?&;menu &^FF3355技能点(费用50w)^000000&,L1,&^FF3355属性点(费用50w)^000000&,L2,&^FF3355技能点和属性点(费用80w)^000000&,L3,&取消&,LEL1:if (Zeny&500000) goto NeedZmes &[重置辅助人员]&;mes &已经重置好了&;mes &^FF3355请好好分配^000000&;set Zeny,Zeny-500000;L2:if (Zeny&500000) goto NeedZmes &[重置辅助人员]&;mes &已经重置好了&;mes &^FF3355请好好分配^000000&;set Zeny,Zeny-500000;L3:if (Zeny&800000) goto NeedZmes &[重置辅助人员]&;mes &已经重置好了&;mes &^FF3355请好好分配^000000&;set Zeny,Zeny-800000;NeedZenys:mes &[重置辅助人员]&;mes &穷人不要来凑热闹!影响我做生意&;LEnd: }第四讲预告,物品相关指令第三讲作业1.转生脚本: 即lv99级可以转生为超级初心者,所有参数设为初心者状态附参考资料 dispbbs.asp?BoardID=3&ID=1986Athena脚本制作讲座(四)----物品相关指令 & Hack 编写第四讲 物品相关指令(参考索克的脚本可用指令)13、getitem &ii& getitem 501,1;取得红色药水1个 道具代码请查看item_db.txt 14、delitem &ii& delitem 501,1;删除红色药水1个 请在执行这条语句前确定是否有该项物品 不然可能发生未知错误 18、itemheal &ii& 可能与道具损坏有关 具体用法不明,武器损坏还没开放 21、countitem &i& if(countitem(501)==1) goto L_YES;如果红色药水数量为1,跳转到L_YES 否则顺序执行 物品语句统计命令,在()内填入想检查的物品代码 24、getequipname&,&i& getequipname(1);按照精练时列出的装备顺序取第1个(头1),以次类推 取得装备名,一般用于判断 25、getequipisequiped &i& getequipisequiped(1);判断头1是否有装备 序号同上 26、getequipisenableref &i& getequipisenableref(1);判断头1上的装备是否可精练 序号同上 27、getequipisidentify &i& getequipisidentify(1);判断头1的装备是否鉴定过 有些奇怪的命令,没鉴定的装备怎么装备呢 28、getequiprefinerycnt &i& if(getequiprefinerycnt(1)&10) goto L_YES;如果头1的精练&10,跳转到L_YES 判断装备是否达到预定精练值 29、getequipweaponlv &i& if(getequipweaponlv(1)&0) goto L_YES;判断头1是否是武器 判断武器等级,小于1为防具,1为1级武器,2为2级武器,依此类推 30、getequippercentrefinery &i& if(getequippercentrefinery(1)==100) goto L_YES;判断头1的装备是否到达安定值 这里需要读取refine_db.txt中的数据以判断是否到达安定值 在实际使用中,可以用rand(100)得到1个随机数与已知安定值比较以判定是否精练成功 31、successrefitem &i& successrefitem 1;将头1装备升1级 装备升级语句 32、failedrefitem &i& failedrefitem 1;将头1装备做精练失败处理 40、setcart &&
得到手推车,限定商人铁匠 41、setfalcon &&
得到猎鹰,限定猎人 42、setriding &&
得到骑乘的大嘴鸟或嘟嘟鸟,限定骑士十字军 44、openstorage &&
原地打开仓库 45、itemskill &iis& 三个参数分别为技能代码,技能等级,和名称 46、produce &i& 制造物品,参数为物品等级,具体等级可以查看produce_db.txt 例1,精炼+20的脚本cmd_in01.gat,127,81,8 script 神秘人 731,{mes&[神秘人]&;mes&很久没看到猫妹妹了,你有她的照片吗?&;mes&[神秘人]&;mes&有的话我可以帮你把物品安全+20&;mes&[神秘人]&;mes&说吧!你想要锻治装置项目&;mes&中的哪一项物品呢?&;menu getequipname(1),L_MENU_1,getequipname(2),L_MENU_2,getequipname(3),L_MENU_3,getequipname(4),L_MENU_4,getequipname(5),L_MENU_5,getequipname(6),L_MENU_6,getequipname(7),L_MENU_7,getequipname(8),L_MENU_8,getequipname(9),L_MENU_9,getequipname(10),L_MENU_10;L_MENU_1:set @part,1;if (getequipisequiped(1)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_2:set @part,2;if (getequipisequiped(2)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_3:set @part,3;if (getequipisequiped(3)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_4:set @part,4;if (getequipisequiped(4)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_5:set @part,5;if (getequipisequiped(5)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_6:set @part,6;if (getequipisequiped(6)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_7:set @part,7;if (getequipisequiped(7)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_8:set @part,8;if (getequipisequiped(8)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_9:set @part,9;if (getequipisequiped(9)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_MENU_10:set @part,10;if (getequipisequiped(10)) goto L_START_1;mes&[神秘人]&;mes&有毛病啊!&;goto L_CLOSE;L_START_1:if (getequipisenableref(@part)) goto L_START_2;mes&[神秘人]&;mes&这个项目是无法锻治的。&;mes&我想我师傅应该可以&;goto L_CLOSE;L_START_2:if (getequipisidentify(@part)) goto L_START_3;mes&[神秘人]&;mes&这个还没通过鉴定,无法锻治。&;goto L_CLOSE;L_START_3:if (getequiprefinerycnt(@part) & 20) goto L_REFINE_0;mes&[ 神秘人]&;mes&还想炼?你有毛病啊!&;goto L_CLOSE;L_REFINE_0:L_0_SUB:L_REFINE_1:if (countitem(4131) & 1) goto L_CANCEL_2;delitem 4131,1;L_1_SUB:L_REFINE_2:L_2_SUB:L_REFINE_3:L_3_SUB:L_REFINE_4:L_4_SUB:L_REFINE_5:mes&[神秘人]&;mes& 锵!锵!锵!&;mes& 锵!锵!锵!锵!&;successrefitem @mes& 宝刀未老啊!&;goto L_CLOSE;L_REFINE_6:L_CANCEL_1:L_CANCEL_2:mes&[神秘人]&;mes& 拿到照片再来吧!&;goto L_CLOSE;L_CANCEL_3:mes&[神秘人]&;mes& ......&;L_CLOSE:}第五讲预告,地图相关指令第四讲作业1.物品打孔NPC.提示:物品上加孔是不可能的,但是可以通过删除无孔物品,增加有孔物品的方式来实现,因为某些物品是没有孔的,所以本作业可以仅实现几样物品就可以了Athena脚本制作讲座(五)----地图相关指令 Hack 编写第五讲 地图相关指令16、viewpoint &iiiii& viewpoint 1,134,221,1,0x00 以颜色0x00ffff标记小地图上的坐标X134Y221 43、savepoint &sii& savepoint &prontera.gat& 100 100; 在普隆德拉X100Y100的地点做记录 存储记录点 8、warp &sii& warp &prontera.gat&,100,100;传送至普隆德拉X100Y100的地方 地图名必须加&& 9、areawarp &siiiisii& areawarp &&,X0,Y0,X1,Y1,&&,X,Y 将X0,Y0-X1,Y1区域的所有玩家都传送到目标地图的X,Y 72、setmapflagnosave &ssii& 参数:原地图名,存储地图名,存储X位置,存储Y位置 例:setmapflagnosave &force_1-1.gat&,&prontera.gat&,156,191 设置force_1-1.gat地图为不可储存,并把储存点设为prontera.gat,156,191 73、setmapflag &si& 功能:设置地图属性(无nosave) 参数:地图名,属性代码 属性代码从1开始依次为 NOMEMO,NOTELEPORT,NOSAVE,NOBRANCH,NOPENALTY, PVP,PVP_NOPARTY,PVP_NOGUILD,GVG,GVG_NOPARTY PVP和GVG无效果 74、removemapflag &si& 功能:取消地图属性(无nosave) 参数:地图名,属性代码 用法参考73 75、pvpon &s& pvpon &prontera.gat&; 开启普隆德拉的即时PK 开启PVP 76、pvpoff &s& pvpoff &prontera.gat&; 关闭普隆德拉的即时PK 关闭PVP 77、gvgon &s& gvgon &prontera.gat&; 开启地图工会PK 78、gvgoff &s& gvgoff &prontera.gat&; 关闭地图工会pk Athena脚本制作讲座(六)----怪物及宠物相关指令 & Hack 编写第六讲 怪物相关指令47、monster &siisii*& monster &prontera.gat& 100 100 &天使波利& 1096 1; 在普隆德拉X100Y100的地方放出1只天使波利,命名为&天使波利& 召唤怪物命令,在指定地图指定地点放出指定怪物,可控制召唤数量 在这里有一个特殊名字&--ja--&,定义为mob_db中默认的JName 48、areamonster &siiiisii*& areamonster &prontera.gat& 100 100 10 10 &天使波利& 1096 1; 在普隆德拉X100Y100,X+-10,Y+-10区域内召唤1只天使波利,命名为&天使波利& 区域招怪命令 49、killmonster &ss& killmonster &prontera.gat& &s&; 将普隆德拉地图内所有MOB_DATA为&s&的魔物都杀死 65、pet &i& pet 1002; 抓取1只宠物波利 抓取宠物,即获取一个宠物蛋 66、bpet && 孵化一个宠物蛋 例1,测试怪物专用NPC(取自RO另类) //by GeisHa prontera.gat,163,176,4 script 测试怪物专用NPC 734,{ mes &[测试怪物专用NPC]&; mes &我是测试怪物专用NPC&; mes &专为大家测试怪物而设立的&;
mes &[测试怪物专用NPC]&; mes &你想在哪里测试怪物?&;
menu &首都西门&,L_MENU_1,&首都东门&,L_MENU_2,&首都南门&,L_MENU_3,&首都北门&,L_MENU_4; L_MENU_1: mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物ID&; mes &有效怪物ID为^FF92^000000&; mes &其中^FF63^000000为宝箱&;
mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物数量&; mes &建议输入500,哈哈哈!!!&;
if (a & 1001) goto L_TSET; if (a & 1392) goto L_TSET; monster &prt_fild05.gat&,338,216,&Monster_Test&,a,b,&Monster_Test&;
mes &[测试怪物专用NPC]&; mes &现在是否要移动过去?&; menu &是&,-,&不是&,L_CLOSE; mes &[测试怪物专用NPC]&; mes &冲啊!!!&;
warp &prt_fild05&,367,206;
L_MENU_2: mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物ID&; mes &有效怪物ID为^FF92^000000&; mes &其中^FF63^000000为宝箱&;
mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物数量&; mes &建议输入500,哈哈哈!!!&;
if (a & 1001) goto L_TSET; if (a & 1392) goto L_TSET; monster &prt_fild06.gat&,55,195,&Monster_Test&,a,b,&Monster_Test&;
mes &[测试怪物专用NPC]&; mes &现在是否要移动过去?&; menu &是&,-,&不是&,L_CLOSE; mes &[测试怪物专用NPC]&; mes &冲啊!!!&;
warp &prt_fild06&,31,193;
L_MENU_3: mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物ID&; mes &有效怪物ID为^FF92^000000&; mes &其中^FF63^000000为宝箱&;
mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物数量&; mes &建议输入500,哈哈哈!!!&;
if (a & 1001) goto L_TSET; if (a & 1392) goto L_TSET; monster &prt_fild08.gat&,170,350,&Monster_Test&,a,b,&Monster_Test&;
mes &[测试怪物专用NPC]&; mes &现在是否要移动过去?&; menu &是&,-,&不是&,L_CLOSE; mes &[测试怪物专用NPC]&; mes &冲啊!!!&;
warp &prt_fild08&,170,370;
L_MENU_4: mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物ID&; mes &有效怪物ID为^FF92^000000&; mes &其中^FF63^000000为宝箱&;
mes &[测试怪物专用NPC]&; mes &请输入你想测试的怪物数量&; mes &建议输入500,哈哈哈!!!&;
if (a & 1001) goto L_TSET; if (a & 1392) goto L_TSET; monster &prt_fild01.gat&,201,73,&Monster_Test&,a,b,&Monster_Test&;
mes &[测试怪物专用NPC]&; mes &现在是否要移动过去?&; menu &是&,-,&不是&,L_CLOSE; mes &[测试怪物专用NPC]&; mes &冲啊!!!&;
warp &prt_fild01&,200,47;
L_TSET: mes &[测试怪物专用NPC]&; mes &^FF3355你输入的怪物ID出错^000000&; mes &有效怪物ID为^FF92^000000&; mes &其中^FF63^000000为宝箱&;
L_CLOSE: mes &[测试怪物专用NPC]&; mes &好吧&;
} Athena脚本制作讲座(七)----其他高级指令 & Hack 编写第七讲 其他高级指令(参考索克的脚本可用指令)艾力克斯催的急啊,先写脚本啦,好多命令都没详细说明,慢慢改吧!20、rand &i*& 产生一个随机数 具体用法不明 50、doevent &s& 具体用法不明 51、addtimer &is& 添加一个定时器 第一参数为时间,单位毫秒第二参数为事件名,可自定义52、deltimer &s& 删除一个定时器 当定时器被定义后如果判定不要使用,用此命令删除如果不执行删除动作,后果不明 53、addtimer &si& 统计定时器 具体用法不明 57、getusers &i& 取得服务器在线玩家人数 具体用法不明 58、getmapusers &s& getmapusers(&prontera.gat&);取得普隆德拉地图玩家人数 可以得到指定地图上的玩家人数 59、getareausers &siiii& getareausers(&prontera.gat& 100 100 10 10); 取得在普隆德拉X100Y100,X+-10,Y+-10的区域内的玩家人数 待测试 60、enablenpc &s& 控制NPC是否出现 具体用法不明 61、disablenpc &s& 控制NPC是否出现 具体用法不明 64、debugmes &s& debugmes &测试成功&;在Map-Server的DOS窗口中输出信息&测试成功& Debug输出命令,可以输出字符串或直接使用变量 例如debugmes @将变量@value中的值输出 70、waitingroom &si*& waitingroom &等待比尔& 0;开启一个名叫&等待比尔&的聊天室,可容纳人数0 开启聊天室命令,可当作招牌 71、warpwaitingpc &sii& 具体用法不明例1,艾力克斯的创意&我想寫一個NPC,跟那人物對話過後他會要玩家去打敗他所召喚出來的怪物,如果不幸敗陣了,那麼被NPC召喚出來的怪物就會自動消失,如果戰勝,那剛才召喚怪物的NPC就會自動向你對話並且送給當初和他對話的人一樣禮物,而且這個任務不論失敗與否每個人物都只能進行一次。&---- 艾力克斯//禁止 memo teleport saveprt_are_in.gat mapflag nomemo dummyprt_are_in.gat mapflag noteleport dummyprt_are_in.gat mapflag nosave prontera.gat,156,191force_1-1.gat mapflag nomemo dummyforce_1-1.gat mapflag noteleport dummyforce_1-1.gat mapflag nosave prontera.gat,156,191//主NPC,放在普隆XX中间prontera.gat,160,180,6 script 艾力克斯 116,{mes &你想要进入艾力克斯的怪物魔境吗?&; //此处可以添加判断,以确定每人只能进一次menu &偶还是宝宝耶,不要打太疼哦!&,L_GOARENA1,&偶是猛将兄,警告你哦,不惹我哦!!!&,L_GOARENA2,&不要啦,偶怕怕!&,L_YAME1;L_GOARENA1:if( getmapusers(&force_1-1.gat&)&0 ) goto L_WAIT1;disablenpc &ThatsIt&;addtimer 5000,&might-test1&;disablenpc &艾力克斯&;warp &force_1-1.gat&,25,26;L_GOARENA2:if( getmapusers(&force_1-1.gat&)&0 ) goto L_WAIT1;disablenpc &ThatsIt&;addtimer 5000,&might-test3&;disablenpc &艾力克斯&;warp &force_1-1.gat&,25,26;L_WAIT1:mes &艾力克斯的怪物魔境有MM在换衣服耶,&;mes &不许偷看!!!&;L_YAME1:}//宝宝级force_1-1.gat,25,26,0 script might-test1 -1,{killmonster &force_1-1.gat&,&might-test2&;killmonster &force_1-1.gat&,&might-test4&;monster &force_1-1.gat&,25,25,&--ja--&,1002,1,&might-test2&;monster &force_1-1.gat&,20,25,&--ja--&,1002,1,&might-test2&;monster &force_1-1.gat&,25,20,&--ja--&,1002,1,&might-test2&;monster &force_1-1.gat&,30,25,&--ja--&,1002,1,&might-test2&;monster &force_1-1.gat&,25,30,&--ja--&,1002,1,&might-test2&;set $might00,5;}//检查怪物是否死光光force_1-1.gat,25,26,0 script might-test2 -1,{set $might00, $might00 - 1;if( $might00 & 0 ) goto L_CONT1;announce &你成功了耶!&,3;enablenpc &ThatsIt&;L_CONT1:}//猛将级force_1-1.gat,26,27,0 script might-test3 -1,{killmonster &force_1-1.gat&,&might-test2&;killmonster &force_1-1.gat&,&might-test4&;monster &force_1-1.gat&,26,27,&--ja--&,1147,1,&might-test4&;set $might01,1;}//检查怪物是否死光光force_1-1.gat,25,26,0 script might-test4 -1,{set $might01, $might00 - 1;if( $might01 & 0 ) goto L_CONT1;announce &你成功了耶!&,3;enablenpc &ThatsIt&;L_CONT1:}//end of fightforce_1-1.gat,25,26,6 script ThatsIt 116,{mes &太好了!!!&;mes &你成功闯过了Alex的怪物魔境&;mes &希望你有一个美好的回忆哦^^&;mes &偶来送你回首都吧.&; //此处可以添加奖励物品enablenpc &艾力克斯&;warp &prontera.gat&,156,191;}补充:Athena脚本制作讲座(八)----事件触发及计时指令 & Hack 编写第八讲 事件触发及计时指令一、事件触发及计时指令1.doevent 执行某事件例1:prontera.gat,155,180,0 script ev_doevent 116,{doevent &event_test&;}prontera.gat,150,185,0 script event_test -1,{ announce & 工会战开启!!!&,15;}event_test的类型定义为了-1,表示是一个事件而不是NPC,访问ev_doevent这个NPC之后,将会执行event_test这个事件。2.执行召唤monster事件例2:prontera.gat,150,185,0 script ev_mobevent 116,{monster &this&,0,0,&Event_Mob2&,1002,1,&event_test&;}访问这个NPC之后将会召唤出可爱的小波利3.将怪杀死后执行某事件例3:prontera.gat,150,180,0 monster Event_Mob ,0,event_test3prontera.gat,150,185,0 script event_test3 -1,{ announce & 华丽金属被破坏!&,15;}4.addtimer 定时器用法:addtimer 时间,&事件名::标号&注:时间以毫秒为单位,标号必须以On开头例4:prontera.gat,155,185,0 script ev_timerevent 116,{addtimer 5000,&ev_timerevent::OnTimer&;OnTimer:announce &还有5秒钟将关闭工会战&,15;}5.OnInit NPC初始化事件例5:prontera.gat,145,180,0 script ev_initevent 116,{OnInit:waitingroom &OnInit测试&,1,&ev_initevent::OnMax&;OnMax:warpwaitingpc &prontera.gat&,155,190;}初始化时开启一个聊天室,此处用到了waitingroom的第三个参数,仍然是一个事件参数,有兴趣的可以实际测试一下效果。6.指定时间执行例7:prontera.gat,145,185,0 script ev_clockevent 116,{// 每个小时的第5分钟执行OnMinute05:announce &每个小时的第5分钟到了!&,15;// 每天12点执行OnHour12:announce &中午到了!!&,15;// 23点59分执行OnClock2359:announce &还有一分钟就要到明天了!!&,15;// 2月14日零时执行OnDate0214:announce &又是一个情人节了,请Kiss旁边最近的MM!!&,8;}二、事件的写法例8:// 最简单的事件prontera.gat,150,185,0 script event_test -1,{announce strcharinfo(0) + & 召唤怪兽成功!&,16;}// 仅对范围5格内的有效(待测试)prontera.gat,155,180,0 script event_test2 -1,5,5 {announce &仅对范围5格内的有效&,16;}// 效果不明prontera.gat,150,180,0 script event_test3 -1,-1,-1 {mes &偶不知道什么效果耶!&;}三、禁止某些功能prontera.gat mapflag nosave prontera.gat,156,190禁止存储,把存储点设为prontera.gat,156,190prontera.gat mapflag nomemo dummy禁止记录(服事系列传送技能)prontera.gat mapflag noteleport dummy禁止使用苍蝇、蝴蝶,也禁止飞。其他设置参看mapflag.txtAthena脚本讲座(九)----近期新增的脚本功能介绍 & Hack 编写第九讲 新增的脚本功能介绍(Athena-C137后)一.数组1.[]和C语言用法相同,在变量后面加上[],表示数组下标,若不加[],表示数组的第一个元素[0]2.setarray 起始变量,数值1,数值2,...赋值操作,把列出的值依次赋给起始变量开始的N个元素3.getarraysize()取元素个数4.copyarray 把一个数组复制到另一个上5.deletearray 起始变量,N删除从起始变量起N个元素,之后元素前移数组使用示例:prontera.gat,164,190,1 script 数组使用示例 112,{set @hoge[0],1;set @hoge[1],5;mes &请输入hoge[2]&;input @hoge[2];mes &hoge =& & + @mes &hoge[0]=& & + @hoge[0];mes &hoge[1]=& & + @hoge[1];mes &hoge[2]=& & + @hoge[2];setarray @hoge[1],2,3,4,5;mes &true: 5,1,2,3,4,5&;mes &hoge size = &+ getarraysize(@hoge);mes &hoge[0]=& & + @hoge[0];mes &hoge[1]=& & + @hoge[1];mes &hoge[2]=& & + @hoge[2];mes &hoge[3]=& & + @hoge[3];mes &hoge[4]=& & + @hoge[4];copyarray @fuga[0],@hoge[2],2;mes &true: 3,4,0&;mes &fuga[0]=& & + @fuga[0];mes &fuga[1]=& & + @fuga[1];mes &fuga[2]=& & + @fuga[2];deletearray @hoge[1],2;mes &true: 1,4,5,0&;mes &hoge[0]=& & + @hoge[0];mes &hoge[1]=& & + @hoge[1];mes &hoge[2]=& & + @hoge[2];mes &hoge[3]=& & + @hoge[3];}二.函数与过程1.callfunc调用函数,可有返回值2.callsub调用过程,无返回值函数与过程示例:// 无返回值的函数function script func001 {mes &无返回值的函数&; // 无返回值的函数}// 有返回值的函数function script func002 {return &有返回值的函数&;}// 函数与过程示例prontera.gat,168,189,1 script 函数与过程示例 112,{callfunc &func001&; // 调用无返回值的函数mes callfunc(&func002&); // 调用有返回值的函数callsub L_SUB001; // 调用过程L_SUB001:mes &过程示例&; // 无返回值}三.时间日期事件1.OnSecond%02d2.OnMinute%02d3.OnClock%02d%02d4.OnDateTime%02d%02d%02d%02d5.OnDayTime%02d%02d%02d6.OnWeekTime%02d%02d%02d例: OnDateTime 表示6月1日12:00执行以下脚本OnDayTime161235 表示每个月16号12:35分执行以下脚本OnWeekTime001200 表示星期天12:00执行以下脚本OnWeekTime061200 表示星期六12:00执行以下脚本增加以上命令,便于安排工会战时间四.item_db新增脚本执行功能item_db每行最后可以有四个{},{},{},{}, 最后的空{}可以省略分别表示使用物品,装备物品后人物属性变化,装备上物品时和卸下物品时执行的脚本命令1.使用物品例:把item_db.txt中苹果行改为512,Apple,苹果,0,15,,20,,,,,,,,,,{ doevent &Apple_Event&; },{}并增加一个脚本prontera.gat,116,74,0 script Apple_Event -1,{Announce strcharinfo(0)+&吃了个大苹果!&,8;E}则每次吃苹果就会启动Apple_Event (调用事件中某段也可以,只要加上标号,如Apple_Event::OnEatApple)2.装备物品后人物属性变化此处仅能用简单修改属性的脚本, 因为每次人物属性变化时都会调用3.装备上物品时和卸下物品时执行的脚本命令例如把item_db.txt中短剑行改为:1201,Knife,短剑,4,50,,400,17,,1,3,,2,1,1,1,{},{},{ doevent &Knife_Event&; },{ doevent &Knife_Event2&; }再加上以下脚本prontera.gat,116,73,0 script Knife_Event -1,{Announce &偶是&+strcharinfo(0)+&!&,8;Announce &今天阿爸阿妈给偶买了第一把剑,偶好开心啊,&,8;Announce &偶一定要好好练习,或许偶还有机会成为天下第一用剑高手捏!&,8;E}prontera.gat,116,74,0 script Knife_Event2 -1,{Announce &俺是&+strcharinfo(0)+&!&,8;Announce &别人给俺起了个名字叫做剑魔独孤求败,&,8;Announce &俺第一次拿剑便立志要成为天下第一高手&,8;Announce &但自从再无敌手之后,俺发誓今生不再用剑...&,8;E}Athena脚本讲座(十)----结婚相关及人物移动指令介绍第十讲,结婚相关脚本指令及人物移动指令介绍(C143后) 结婚后,配偶char_id存储在char表中partner_id字段中 1.marriage 用法:marriage &人物名& 返回值为0表示失败,1表示成功 使用此命令时,双方必须同时在线,否则会失败 注:marriage仅需使用一次,使用效果为双方都结婚,但并不发结婚戒指, 而且此命令不检测性别. 例: set Result, marriage(&Hack&); if (Result&0) goto L_MarryOK; if (Result==0) goto L_MarryF 2.divorce 用法:divorce 返回值为0表示失败,1表示成功 使用此命令时,双方必须同时在线,否则会失败 注:divorce仅需使用一次,使用效果为双方都离婚,并且删除结婚戒指 例: set Result, divorce(); if (Result&0) goto L_DivorceOK; if (Result==0) goto L_DivorceF 3.结婚戒指 2634,Unknown_Item,结婚戒指,5,,,0,,0,,0,,136,,0,,{},{ skill 334,1; skill 336,1; } 2635,Unknown_Item,结婚戒指,5,,,0,,0,,0,,136,,0,,{},{ skill 335,1; skill 336,1; } 配带戒指会增加相应技能,男的戒指为2634,女的戒指为2635 想见你为共同技能,使用效果为召唤配偶 保护你为GG技能,使用效果为增加MM的HP 为你牺牲为MM技能,使用效果为增加GG的SP,会有一个大大的心形效果哦 使用技能时,双方必须同时在线,否则会失败 4.人物移动指令 类似GM指令,无返回值 jumpto jumptoid recall recallid 使用方法: jumpto &GM01&; jumptoid 150001; recall &GM01&; recallid 150001; 注:以上id全为char_id,非account_id
请注意使用文明用语
文章总数:0
画报总数:0
画报点击数:0
文章点击数:0

我要回帖

更多关于 征途单机版服务端 的文章

 

随机推荐