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
查看全部评分 
 
- 
 
 
 
 
 |