当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇服务端脚本命令完整讲解:NPC触发变量检测GOTO结构实战用法

热度:
传奇脚本命令由M2引擎解析,文件主要放在Mir200\Envir\Market_Def\(NPC脚本)、QuestDiary\(任务脚本)、MapQuest_def\(QFunction.txt、QManage.txt地图与全局触发)里,文本ANSI编码,改完在M2点“重载NPC/重载登录脚本”生效,不用重启。

一、脚本骨架:标签+段落指令
•[@段名]:定义入口,如[@main]、[@buy]、[@Login],英文或数字,@开头。

•#SAY:输出对话,换行用或\,如#SAY欢迎来到盟重
请选择服务

-#ACT:条件成立后执行的命令块起点
•#IF:条件判断起点,后跟检测命令

•#ELSEACT/#ELSESAY:条件不成立走这里

•GOTO@段名:无条件跳转

•BREAK:终止脚本继续执行,防穿透到下一段

•CLOSE:关闭NPC对话框

-;或//开头:注释,引擎不执行

标准判断结构:
[@main]
IF

CHECKLEVEL35
CHECKITEM金矿5
ACT

TAKE金矿5
GIVE金条1
SAY兑换成功

ELSESAY

等级或材料不够

二、触发标识(引擎自动调用,名字不能乱改)
•[@Login]:角色进游戏,写在QManage.txt顶部

•[@KillMonster]/[@KillMon]:杀怪触发,写QFunction-0.txt

-[@KillPlay]:杀人触发
•[@PlayDie]:角色死亡

•[@GetItem]:捡物品触发

•[@UseItem_物品名]:使用指定物品触发,如[@UseItem_随机卷轴]

-[@SpeedClose]:加速掉线触发
•[@PlayReconnection]:小退触发

•NPC名触发:[@老兵]、[@服装店老板],点NPC进对应段

三、条件检测命令(写在#IF后)
-CHECKLEVEL数值/CHECKLEVEL>35/=35:等级判断
•CHECKGOLD数值:金币是否够

•CHECKGAMEGOLD数值/CHECKGOLD元宝命令按引擎定:元宝判定

-CHECKITEM物品名数量:背包有无
•CHECKITEMW装备名:是否穿在身上

•CHECKJOBWarrior/Wizard/Taoist:职业判定

•CHECKPKPOINT数值:PK值

-CHECKEXP数值:经验判定
•CHECKBAGSIZE数量:背包空位

•CHECKDURA物品名数值:持久是否大于指定值

•ISONMAP地图编号:是否在某图

•RANDOM数值:1/N概率,如RANDOM5即20%

-EQUAL变量数值/LARGE/SMALL:变量比较
•CHECKDAYOFWEEK1-7、CHECKTIME时分:时间类

•CHECKHUM地图名数量:地图在线人数

四、执行动作命令(写在#ACT后)
物品金钱:
•GIVE物品名数量:发物品,GIVE金币100000、GIVE屠龙1

•TAKE物品名数量:扣背包物品,TAKE金条5,第三参数1代表检测改名

-TAKEW序列号:按序列号删物品
•TAKEB装备位置/ALL:脱装备回包,TAKEBALL全身脱

•GAMEGOLD+500/-500:元宝增减

•GOLD+1000000/-数值:金币增减

-MAKE物品名数量:脚下生成物品

属性经验:
•CHANGEEXP+10000/-数值:经验

•CHANGELEVEL+1/-1:等级

•CHANGEPKPOINT-100:PK值

-SETONOFF1011:人物标志位,做任务进度锁
•CHANGEJOB0/1/2、CHANGEGENDER0/1:转职变性

•SETHEALTH、SETPOW、SETMAGIC:六维属性

传送地图:
•MAPMOVE地图编号XY:定点传,MAPMOVE0330330比奇安全区

•MAP地图名:传地图随机安全点

•RANDOMMOVE:随机传送

•MONCLEAR地图编号:清图怪

-MONGEN怪物名数量刷新时间XY:刷怪

消息:
•SENDMSG频道内容:0全服1行会2地图5个人6绿字提示7特殊色

•MESSAGEBOX内容:弹窗

•#BROADCAST内容:全服广播

五、变量与运算
变量类型:P0-P9临时(本次对话)、D0-D9个人持久、N$开头个人字符串、G0-G9全局、S0-S9临时字符串、U0-U9通用,按引擎略有差异。
•MOV变量数值:赋值,MOVD0100

•INC变量数值:自增,INCD01

•DEC变量数值:自减

•SUM变量A变量B:A=A+B

•CALCG10=G10+1:四则运算+取模

•MOVRD05:给D0赋0-4随机数

•SAVEVAR/LOADVAR:存读变量到文件

•CHECKVAR变量值:检测变量

六、流程与控制细节
•自上而下执行,遇GOTO改流,遇BREAK/CLOSE终止

•#IF可叠多个检测,全真才进#ACT

•#ELSEIF多分支判断

•#CALL[\QuestDiary\功能\测试.txt]@段:调外部子程序

•物品名带空格用引号包裹,如GIVE"沃玛号角"1

•命令参数空格分隔,大小写多数引擎不敏感但建议统一大写

七、常用GM控制台命令(游戏内@开头,Command.ini可改)
•@reloadnpc重载NPC脚本、@reloadmanage重载登录脚本

•@make物品名、@mob怪物名、@kick角色名、@level数值、@gamegold数值

•@recall、@regoto、@superman、@observer、@realive

八、一段实战:杀怪计数领奖(QFunction-0.txt)
[@KillMonster]
IF

EQUALN$杀怪计数100
ACT

SENDMSG5已杀满100只,发放屠龙!
GIVE屠龙1
MOVN$杀怪计数0
ELSEACT

INCN$杀怪计数1

九、一段实战:NPC兑换(Market_Def\杂货商.txt)
[@main]
SAY1.用5个金矿换金条|2.离开

[@exchange]
IF

CHECKITEM金矿5
CHECKBAGSIZE1
ACT

TAKE金矿5
GIVE金条1
SENDMSG5兑换成功
BREAK
ELSESAY

金矿不够或背包满了
[@close]
ACT

CLOSE

写脚本先定触发点([@Login]/[@段名]/事件标签),再列#IF检测,最后#ACT动作,结尾BREAK防穿透;变量用错作用域、物品名和数据库不一致、MAPMOVE坐标越界、ANSI存成UTF8是四类最常见报错源。
[顶部]