一、脚本文件存储位置与创建
传奇脚本文件位于服务端MirServer\Mir200\Envir目录下,具体分为三类:
•NPC对话脚本:放在MirServer\Mir200\Envir\Market_Def目录下,每个NPC对应一个.txt文件,文件名为你在Merchant.txt中配置的脚本名。
•地图触发脚本:地图入口、踩点触发等事件写在MirServer\Mir200\Envir\MapQuest.txt中。
•机器人脚本:定时执行的功能(如发全服公告)写在MirServer\Mir200\Envir\Robot.txt中。
二、脚本基本结构与命令语法
一个NPC脚本必须包含[@主标签]和对话文字。命令通常以#if、#act、#say开头,参数用空格分隔。
[@Main]//主入口标签
#SAY//表示后面是对话文本
你好,我是NPC。\\//“\\”是换行符
<点击领取/@领取>元宝\\//“<”和“>”中间是超链接,@后面是跳转的标签名
[@领取]//上一个超链接指向的标签
#if//条件判断开始
CHECKGOLD1000000//检查人物金币是否大于等于100万
#ACT//条件满足,执行以下动作
GAMEGOLD+100//增加100元宝
TAKE金币1000000//扣除100万金币
#SAY//条件满足后的对话
领取成功!\\
#ELSEACT//条件不满足,执行以下动作
#SAY//条件不满足后的对话
金币不足,无法领取。\\
三、核心命令分类与使用示例
•变量操作:脚本逻辑基于变量。MOV命令用于赋值,INC用于增加,DEC用于减少,SMALL、LARGE用于比较。
[@计算]
#ACT
MOVP110//将变量P1赋值为10
INCP15//将变量P1的值增加5,变为15
SMALLP120//判断P1是否小于20,是则执行下一步
#SAY
变量P1的值是<$STR(P1)>。//显示变量值
•人物属性检测与修改:检查等级、金币、元宝、性别,并给予物品、经验、权限。
[@检测]
#if
CHECKLEVELEX>50//检查等级大于50
CHECKGAMEGOLD>1000//检查元宝大于1000
#ACT
GAMEGOLD-1000//扣除1000元宝
GIVE屠龙1//给予一把屠龙
KILLMONEXPRATE15060//增加1.5倍经验,持续60分钟
#SAY
奖励已发放。\\
•地图传送与计时:将玩家移动到指定坐标,并设置延迟或定时任务。
[@传送]
#ACT
MAPMOVE3330330//将玩家传送到土城(地图3)的坐标330330
MAP0150//将玩家地图编号改为150
TimeRecall30//设置30秒后自动召回
#SAY
你已被传送,30秒后返回。\\
•界面调用:打开仓库、装备升级、行会创建等游戏内置窗口。
[@功能]
#ACT
OpenStorage//打开仓库
OpenUpgradeDialog//打开装备升级对话框
OpenWebSitehttp://xxx.com//打开外部网站
#SAY
功能已打开。\\
四、条件分支与循环逻辑
复杂的脚本需要#if、#act、#elseact、#elsesay进行分支判断,用GOTO实现循环或跳转。
[@判断性别]
#if
CHECKJOBWarrior//检查职业是否为战士
#ACT
MOVP2战士
#ELSEACT
MOVP2其他职业
#SAY
你的职业是:<$STR(P2)>。\\
[@循环]
#ACT
MOVP31//初始化计数器P3=1
[@循环开始]//跳转标签
#if
LARGEP35//判断P3是否大于5
#ACT
BREAK//大于5则跳出循环
#SAY
循环结束。\\
#ELSEACT
#SAY
当前计数:<$STR(P3)>\\//显示当前计数
INCP31//计数加1
DELAYGOTO1000@循环开始//延迟1000毫秒后跳转到“@循环开始”标签
五、配置文件关联与生效
写完的脚本需要在MirServer\Mir200\Envir\Merchant.txt中注册NPC才能生效。
NPC名地图名X坐标Y坐标NPC外观代码(0-65535)是否移动(0/1)是否可攻击(0/1)脚本文件(无需后缀)
盟重老兵3330330500盟重老兵
修改脚本后无需重启服务端,在M2Server的“管理”菜单点击“重新加载→重读QF/QM脚本”或“重读商人脚本”即可生效。
传奇脚本文件位于服务端MirServer\Mir200\Envir目录下,具体分为三类:
•NPC对话脚本:放在MirServer\Mir200\Envir\Market_Def目录下,每个NPC对应一个.txt文件,文件名为你在Merchant.txt中配置的脚本名。
•地图触发脚本:地图入口、踩点触发等事件写在MirServer\Mir200\Envir\MapQuest.txt中。
•机器人脚本:定时执行的功能(如发全服公告)写在MirServer\Mir200\Envir\Robot.txt中。
二、脚本基本结构与命令语法
一个NPC脚本必须包含[@主标签]和对话文字。命令通常以#if、#act、#say开头,参数用空格分隔。
[@Main]//主入口标签
#SAY//表示后面是对话文本
你好,我是NPC。\\//“\\”是换行符
<点击领取/@领取>元宝\\//“<”和“>”中间是超链接,@后面是跳转的标签名
[@领取]//上一个超链接指向的标签
#if//条件判断开始
CHECKGOLD1000000//检查人物金币是否大于等于100万
#ACT//条件满足,执行以下动作
GAMEGOLD+100//增加100元宝
TAKE金币1000000//扣除100万金币
#SAY//条件满足后的对话
领取成功!\\
#ELSEACT//条件不满足,执行以下动作
#SAY//条件不满足后的对话
金币不足,无法领取。\\
三、核心命令分类与使用示例
•变量操作:脚本逻辑基于变量。MOV命令用于赋值,INC用于增加,DEC用于减少,SMALL、LARGE用于比较。
[@计算]
#ACT
MOVP110//将变量P1赋值为10
INCP15//将变量P1的值增加5,变为15
SMALLP120//判断P1是否小于20,是则执行下一步
#SAY
变量P1的值是<$STR(P1)>。//显示变量值
•人物属性检测与修改:检查等级、金币、元宝、性别,并给予物品、经验、权限。
[@检测]
#if
CHECKLEVELEX>50//检查等级大于50
CHECKGAMEGOLD>1000//检查元宝大于1000
#ACT
GAMEGOLD-1000//扣除1000元宝
GIVE屠龙1//给予一把屠龙
KILLMONEXPRATE15060//增加1.5倍经验,持续60分钟
#SAY
奖励已发放。\\
•地图传送与计时:将玩家移动到指定坐标,并设置延迟或定时任务。
[@传送]
#ACT
MAPMOVE3330330//将玩家传送到土城(地图3)的坐标330330
MAP0150//将玩家地图编号改为150
TimeRecall30//设置30秒后自动召回
#SAY
你已被传送,30秒后返回。\\
•界面调用:打开仓库、装备升级、行会创建等游戏内置窗口。
[@功能]
#ACT
OpenStorage//打开仓库
OpenUpgradeDialog//打开装备升级对话框
OpenWebSitehttp://xxx.com//打开外部网站
#SAY
功能已打开。\\
四、条件分支与循环逻辑
复杂的脚本需要#if、#act、#elseact、#elsesay进行分支判断,用GOTO实现循环或跳转。
[@判断性别]
#if
CHECKJOBWarrior//检查职业是否为战士
#ACT
MOVP2战士
#ELSEACT
MOVP2其他职业
#SAY
你的职业是:<$STR(P2)>。\\
[@循环]
#ACT
MOVP31//初始化计数器P3=1
[@循环开始]//跳转标签
#if
LARGEP35//判断P3是否大于5
#ACT
BREAK//大于5则跳出循环
#SAY
循环结束。\\
#ELSEACT
#SAY
当前计数:<$STR(P3)>\\//显示当前计数
INCP31//计数加1
DELAYGOTO1000@循环开始//延迟1000毫秒后跳转到“@循环开始”标签
五、配置文件关联与生效
写完的脚本需要在MirServer\Mir200\Envir\Merchant.txt中注册NPC才能生效。
NPC名地图名X坐标Y坐标NPC外观代码(0-65535)是否移动(0/1)是否可攻击(0/1)脚本文件(无需后缀)
盟重老兵3330330500盟重老兵
修改脚本后无需重启服务端,在M2Server的“管理”菜单点击“重新加载→重读QF/QM脚本”或“重读商人脚本”即可生效。

