传奇脚本命令由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是四类最常见报错源。
一、脚本骨架:标签+段落指令
•[@段名]:定义入口,如[@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是四类最常见报错源。

