传奇脚本命令由 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
CHECKLEVEL 35
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 装备名:是否穿在身上
• CHECKJOB Warrior/Wizard/Taoist:职业判定
• CHECKPKPOINT 数值:PK值
- CHECKEXP 数值:经验判定
• CHECKBAGSIZE 数量:背包空位
• CHECKDURA 物品名 数值:持久是否大于指定值
• ISONMAP 地图编号:是否在某图
• RANDOM 数值:1/N概率,如 RANDOM 5 即20%
- EQUAL 变量 数值 / LARGE / SMALL:变量比较
• CHECKDAYOFWEEK 1-7、CHECKTIME 时 分:时间类
• CHECKHUM 地图名 数量:地图在线人数
四、执行动作命令(写在 #ACT 后)
物品金钱:
• GIVE 物品名 数量:发物品,GIVE 金币 100000、GIVE 屠龙 1
• TAKE 物品名 数量:扣背包物品,TAKE 金条 5,第三参数1代表检测改名
- TAKEW 序列号:按序列号删物品
• TAKEB 装备位置/ALL:脱装备回包,TAKEB ALL 全身脱
• GAMEGOLD +500 / -500:元宝增减
• GOLD +1000000 / -数值:金币增减
- MAKE 物品名 数量:脚下生成物品
属性经验:
• CHANGEEXP +10000 / -数值:经验
• CHANGELEVEL +1 / -1:等级
• CHANGEPKPOINT -100:PK值
- SETONOFF 101 1:人物标志位,做任务进度锁
• CHANGEJOB 0/1/2、CHANGEGENDER 0/1:转职变性
• SETHEALTH、SETPOW、SETMAGIC:六维属性
传送地图:
• MAPMOVE 地图编号 X Y:定点传,MAPMOVE 0 330 330 比奇安全区
• MAP 地图名:传地图随机安全点
• RANDOMMOVE:随机传送
• MONCLEAR 地图编号:清图怪
- MONGEN 怪物名 数量 刷新时间 X Y:刷怪
消息:
• SENDMSG 频道 内容:0全服 1行会 2地图 5个人 6绿字提示 7特殊色
• MESSAGEBOX 内容:弹窗
• #BROADCAST 内容:全服广播
五、变量与运算
变量类型:P0-P9 临时(本次对话)、D0-D9 个人持久、N$开头 个人字符串、G0-G9 全局、S0-S9 临时字符串、U0-U9 通用,按引擎略有差异。
• MOV 变量 数值:赋值,MOV D0 100
• INC 变量 数值:自增,INC D0 1
• DEC 变量 数值:自减
• SUM 变量A 变量B:A=A+B
• CALC G10 = G10 + 1:四则运算+取模
• MOVR D0 5:给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
EQUAL N$杀怪计数 100
ACT
SENDMSG 5 已杀满100只,发放屠龙!
GIVE 屠龙 1
MOV N$杀怪计数 0
ELSEACT
INC N$杀怪计数 1
九、一段实战:NPC兑换(Market_Def\杂货商.txt)
[@main]
SAY 1.用5个金矿换金条|2.离开
[@exchange]
IF
CHECKITEM 金矿 5
CHECKBAGSIZE 1
ACT
TAKE 金矿 5
GIVE 金条 1
SENDMSG 5 兑换成功
BREAK
ELSESAY
金矿不够或背包满了
[@close]
ACT
CLOSE
写脚本先定触发点([@Login]/[@段名]/事件标签),再列 #IF 检测,最后 #ACT 动作,结尾 BREAK 防穿透;变量用错作用域、物品名和数据库不一致、MAPMOVE 坐标越界、ANSI 存成UTF8 是四类最常见报错源。
传奇服务端脚本命令完整讲解:NPC触发变量检测GOTO结构实战用法
来源:
作者:
点击:

