UID381
阅读权限70
威望 点
积分1688
注册时间2009-3-14
最后登录1970-1-1
听众
收听
升级
34.4%
|
楼主 |
发表于 2009-3-26 09:53:40
|
显示全部楼层
本帖最后由 kokokoko 于 2010-11-23 20:45 编辑
- >----取得物品,删除物品,计算物品,检查重量,随机数目
- prontera.gat,153,189,6 script 路人小梦 706,{
- mes "现在我给你2支红色药水";
- if (checkweight(501,2)<1) goto overweight;
- getitem 501,2;
- next;
- mes "现在我随机拿掉你1至3支红色药水";
- delitem 501,rand[1,3];
- next;
- set @numofrp,countitem(501);
- mes "你现在有"+@numofrp+"支红色药水。";
- close;
- overweight:
- mes "你拿不起呢,你超重了";
- }
- 解释:
- getitem 501,2; 取得物品,编号501(红水)x2,物品编号可参考item_db
- if (checkweight(501,2)<1) goto overweight; 检查取得(物品编号,数量)后会不会超重
- (delitem 501),rand(1,3); 删除物品,建议先检查物品数量
- delitem 501,(rand(1,3)); 随机从1~3的数目内取得一个数值,如果是rand(2)就是从0~2中取得一个数值
- countitem(501) 检查物品编号501的数量,可以用 if (countitem(501)==0) goto getitem的方式
- >----最后是不写例子的,有以上的例子已经可以做到很多事情了
- >--killmonster "prontera.gat","event_LD";
- 清除地图"prontera.gat"编号为"event_LD"的怪物,请看下去
- >--prontera.gat,153,189,6 script 路人小梦 706,{
- 改为
- prontera.gat,153,189,6 script 路人小梦 706,3,3{
- 就是在[153+-3,189+-3]的范围内有玩家出现就会自动读取
- >--prontera.gat,153,189,6 script event_LD -1,{
- 就是代表这是不显示出来的npc,可以用来做事件发生(这是事件event_LD,请看下去)
- >--monster "prontera.gat",153,189,"路人小梦的分身",1203,23,"event_LD";
- 就是在"prontera.gat",153,189的位置召唤23只编号1203的怪物(请看mod_db),["event_LD"]就是怪物的编码,当怪物死掉就会执行事件event_LD,也可以作为怪物的变量
- 例子:(始于要例子= =a)
- prontera.gat,153,189,6 script event_LD -1,{
- monster "prontera.gat",153,189,"路人小梦的分身",1203,2,"event_LD";
- end;
- }
- 这是杀掉1只[路人小梦的分身]的怪物会出现2只(未实测过,理论上会,实测完再更改),[end]就是强制结束脚本
- >--areamonster "prontera.gat",153,189,154,190,"路人小梦的分身",1203,23,"event_LD";
- 就是在"prontera.gat"的(153,189)到(154,190)召唤名为[路人小梦的分身]的怪物(如果改为--ja--就会变成mob_db内的名字)
- >--announce "这是测试",3;
- 会在所有地图上显示[这是测试]的公告
- >--mapannounce "prontera.gat","这是测试",3;
- 这只会在指定的地图上显示(这里是prontera.gat)
- >--areaannounce "prontera.gat",153,189,10,10,"这是测试",3;
- 这只会在指定的地图,区域上显示(这是(143,179~163,199)内显示
- >--addtimer 30000,"测试时间::fail";
- 增加一个定时器(这里计算30000微秒,以秒计是除一千,30秒),名为[测试时间],定时器完后就会发生事件[fail]
- >--deltimer "测试时间";
- 删除名为[测试时间]的定时器,像这里应放在不发生事件[fail]内的脚本
- >--heal 100,100;
- 回复100hp及100sp
- >--percentheal 100,100;
- 回复100%的hp及100%的sp(以hp及sp上限计算)
- >--getequipname(X)
- 输出装备位置X的物品的名字
- 1是头部,2身体,3左手,4右手,5披挂,6靴子,7装饰品1,8装饰品2,9头部2,10头部3
- 从script_athena中看到
- >--getequipisequiped(X)
- 检查位置X是否已装备武防
- >--getequipisenableref(X)
- 检查位置X能否精炼
- >--getequipisidentify(X)
- 检查位置X是否已鉴定(是防止外挂装备用的?)
- >--getequiprefinerycnt(X)
- 检查位置X的装备精炼数值(如果是要小于10就用if (getequiprefinerycnt(X)<10) goto no_refine
- >--getequipweaponlv(X)
- 检查位置X的武器等级,0即是防具
- >--getequippercentrefinery(X)
- 从refine_db中取得精炼机率,可以设定为不等于100,就用(if (getequippercentrefinery(X)<=rand(100)) goto fail
- >--successrefitem (X);
- 成功精炼位置X的装备
- >--failedrefitem (X);
- 精炼失败位置X的装备
- >--getskilllv(X);
- 取得技能等级,可以用于检查技能,可从skill_db中取得技能编号
- >--setoption (X);
- 设定状态为编号X(骑鸟,手推车etc),只建议设定为0来取消所有状态,可从GM指令中取得状态编号
- >--setcart,setriding,setfalcon
- 顺次序为设定手推车,骑鸟,猎鹰状态,不建议非特定职业外的职业使用
- >--openstorage
- 打开仓库
- >--savepoint "prontera.gat",153,189;
- 将人物记录在[prontera]的153,189
- >--killmonsterall "prontera.gat";
- 清除[prontera]内的所有怪物
- >--doevent "event_LD";
- 执行事件[event_LD]
- >--getusers、getmapusers、getareausers
- getusers用法不知,应该是像(if (getusers<30) goto ABCD)这样使用
- getmapusers取得地图上的人数,像(if (getmapusers ("prontera.gat" goto ABCD)这样用
- getareausers取得地图上某位置的人数,像(if (getmapusers ("prontera.gat",153,189,10,10)<30) goto ABCD)这样用,应该较少人用吧
- >--enablenpc "路人小梦#1";
- 开放NPC路人小梦#1,#后的数不会显示在NPC上,如
- prontera.gat,153,189,6 script 路人小梦#1 706,{
- 只会显示路人小梦
- >--disablenpc "路人小梦#1";
- 收回NPC路人小梦#1
- >--resetstatus;
- 重置所有属性点,应该不支持进阶二转(要自己加吧?)
- >--resetskill;
- 重置所有技能点
- >--statusup2 bStr,X;
- 增加素质[力量]X点,详情请看const.txt;
- >--waitingroom "测试中",X;
- 开一个名为[测试中]的聊天室,人数是X(0~20);
- 从EREMES THE CANIVALIZER的脚本中的猎人转职任务(npc_hunter.txt)内看到这样的用法
- job_hunte.gat,176,38,4 script 猎人等待处 66,{
- //如果职业不是弓箭手就跳往LGoBack
- if(Class != 3) goto LGoBack;
- //如果[job_hunte]依置[50+-129,64+-143(怎么怪怪的?是我错吗?)]内有人就跳往LWait
- if(getareausers("job_hunte.gat",50,64,129,143) > 0) goto LWait;
- //如果职业是弓箭手就会开放名为[转职等待处]的聊天室,人数上限一人,NPC名称是[猎人等待处],发生事件[OnStartTest](他是跳往子窗体的)
- if(Class == 3) waitingroom "转职等待处",1,"猎人等待处::OnStartTest";
- close;
- OnStartTest:
- if(Class != 3) goto LGoBack;
- if(getareausers("job_hunte.gat",50,64,129,143) > 0) goto LWait;
- //传送等待中的玩家往[job_hunte.gat]的[90,67]
- warpwaitingpc "job_hunte.gat",90,67;
- set @MobCountOne,6;
- set @Fail,0;
- enablenpc "监考官";
- //发生事件,NPC名[监考官],子窗体[OnActive]
- doevent "监考官::OnActive";
- enablenpc "预告事件";
- addtimer 0,"预告事件";
- disablenpc "开关";
- disablenpc "出口";
- disablenpc "猎人等待处";
- close;
- LGoBack:
- warp "payon.gat",104,99;
- close;
- LWait:
- areaannounce "job_hunte.gat",164,18,187,41,"已经有人在参加考试, 请在此稍待。",0;
- close;
- }
- >--warpwaitingpc "prontera.gat",153,189;
- 上面有解释
- >--setmapflagnosave "prontera.gat","prontera.gat",156,191;
- 设置prontera.gat地图为不可储存,并把储存点设为prontera.gat,156,191
- >--setmapflag "prontera.gat",X;
- 设置地图限制(无nosave) ,X从1开始依次为
- NOMEMO,NOTELEPORT,NOSAVE,NOBRANCH,NOPENALTY,
- PVP,PVP_NOPARTY,PVP_NOGUILD,GVG,GVG_NOPARTY
- PVP和GVG无效果
- >--removemapflag "prontera.gat" ,X;
- 取消地图属性(无nosave) ,X同上
- >--pvpon "prontera.gat"、pvpoff "prontera.gat"
- 开启及关闭普隆德拉的实时PVP
- >--gvgon "prontera.gat"、gvgoff "prontera.gat";
- 同上,不过是GVG
- >--emotion X;
- NPC做出表情符号,代码自己尝试(0~47)
- >--OnInIt
- 开机时的指令,用法就如OnMinute,不过是开机时才会做
- >----有关其它
- >--这是出名字的
- strcharinfo(0)
- >--GM出来的参数是>=1
- getgmlevel(getcharid(0))
- >检查有没有组队,0是没有
- getcharid(1)
- >组队名字
- getpartyname(getcharid(1))
- >检查有没有工会
- getcharid(2)
- >工会名字
- getguildname(getcharid(2))
- //event的运\行是每个地图计算的,如果怪物不在那个地图就运\行不到,例子:
- guild_room.gat,193,193,0,0 monster 测试用 1002,3,0,0,event_test
- 只能运\行
- guild_room.gat,100,100,0 script event_test -1,{
- announce "测试用被打倒了!!";
- }
- 不能运\行
- guild_vs1.gat,100,100,0 script event_test -1,{
- announce "测试用被打倒了!!";
- }
- //所以如果要在数个地图上加上一样的事件,就要多写数个了。
- //我只记得这个是99nets.com的索克给的地图设定数据,改了一点
- SavePoint 进入地图后存储点改变
- nomemo 限制记录
- noreturn
- monster_noteleport 限制MOB瞬移
- nobranch 限制枯树枝
- nopenalty 死后不掉经验
- pvp 开?pvp
- pvp_noparty pvp不能组队
- pvp_noguild
- gvg 开gvg,不是工会战
- gvg_noparty
- nozenypenalty 死后不掉钱
复制代码 |
评分
-
1
查看全部评分
-
|