一、脚本基础结构:IF-ACT逻辑骨架
服务端脚本(NPC对话、任务、触发)均基于“条件判断→执行动作”的流程。核心语法如下:
[@Main];段落标签,NPC对话入口
#IF;条件判断开始
CHECKLEVEL35;检测等级是否≥35
CHECKITEM金条1;检测是否拥有1个金条
#ACT;条件满足时执行
TAKE金条1;扣除物品
GIVE裁决之杖1;给予物品
SENDMSG0兑换成功!;发送公告
#ELSEACT;条件不满足时执行
SENDMSG0等级不足或缺少金条!
关键规则:
•#IF下只能放置检测类命令(CHECK系列),#ACT下只能放置执行类命令(GIVE/TAKE等)。
•命令与参数之间必须用空格分隔,严禁使用中文标点。
二、高频命令分类速查表
1.人物属性与检测命令
命令参数示例功能说明
CHECKLEVELCHECKLEVEL50检测等级是否≥50
CHECKJOBCHECKJOBWarrior检测职业(Warrior/Wizard/Taoist)
CHECKGOLDCHECKGOLD1000000检测金币是否≥100万
CHECKITEMCHECKITEM回城卷1检测背包物品数量
CHECKBAGGAGECHECKBAGGAGE检测背包是否已满
2.物品与货币操作命令
命令参数示例功能说明
GIVEGIVE金币1000给予物品/金币
TAKETAKE屠龙1扣除物品
GAMEGOLDGAMEGOLD+100增加元宝(GOM/GEE引擎)
3.地图传送与坐标移动
命令参数示例功能说明
MAPMAP0传送到0号地图随机坐标
MAPMOVEMAPMOVE3330330传送到指定地图坐标
TIMERECALLTIMERECALL60设置地图倒计时(60分钟)
4.怪物刷怪与管理
命令参数示例功能说明
MONGENMONGEN白野猪110刷怪(名称数量刷新时间)
MONCLEARMONCLEAR0清空指定地图所有怪物
5.消息提示与界面
命令参数示例功能说明
SENDMSGSENDMSG6私人提示发送个人提示(类型6)
SENDMSGSENDMSG0全服公告全服滚动公告(类型0)
SENDCENTERMSGSENDCENTERMSG0居中大字屏幕居中大字体公告
三、变量操作:脚本逻辑的灵魂
变量用于记录玩家状态(如是否领取奖励),是编写复杂功能的基础。
1.变量类型与赋值
•个人数字变量:P0-P9(临时,仅当前脚本有效)
•个人字符变量:S0-S99(永久保存),如SETS10已领取
•全局数字变量:G0-G999(全服通用),如SETG1001
•变量运算:INCP01(P0增加1),DECP11(P1减少1)
2.变量检测与显示
•检测变量:CHECKVARS10=已领取或SMALLG10010(检测G100是否小于10)
•显示变量:在NPC对话中使用<$STR(S10)>显示变量值
四、实战案例:编写“每日签到”脚本
在Market_Def目录下创建SignIn.txt,写入以下逻辑:
[@Main]
欢迎使用每日签到系统!\\
<签到/@Sign><离开/@Exit>
[@Sign]
#IF
CHECK[100]0;检测标志变量[100]是否为0(未签到)
#ACT
SET[100]1;设置已签到标志
GIVE金币500000
GAMEGOLD+50
SENDMSG0玩家【<$USERNAME>】完成了每日签到!
#ELSEACT
SENDMSG0你今天已经签到过了!
此脚本利用[100]逻辑变量实现了防重复签到功能。
五、脚本存放路径与重载
•NPC脚本:Mir200\Envir\Market_Def\(每个NPC一个.txt文件)
•全局触发:Mir200\Envir\QFunction-0.txt(攻击、死亡、拾取事件)
•重载方法:修改后需在M2Server点击“控制”→“重新加载”→“重读NPC脚本”,无需重启服务端。
六、常见报错与排查
1.NPC对话空白:检查文件编码(需ANSI),确认[@Main]标签存在。
2.条件不生效:确认#IF下的检测命令拼写正确(如CHECKLEVEL非CHECKLEV)。
3.变量混乱:不同NPC间尽量使用不同的变量编号(如S10、S11),避免冲突。
总结:掌握#IF-#ACT结构是脚本编写的基础,结合变量操作可实现复杂的游戏逻辑。建议先从修改现成脚本的参数开始练习,逐步过渡到独立编写功能。
服务端脚本(NPC对话、任务、触发)均基于“条件判断→执行动作”的流程。核心语法如下:
[@Main];段落标签,NPC对话入口
#IF;条件判断开始
CHECKLEVEL35;检测等级是否≥35
CHECKITEM金条1;检测是否拥有1个金条
#ACT;条件满足时执行
TAKE金条1;扣除物品
GIVE裁决之杖1;给予物品
SENDMSG0兑换成功!;发送公告
#ELSEACT;条件不满足时执行
SENDMSG0等级不足或缺少金条!
关键规则:
•#IF下只能放置检测类命令(CHECK系列),#ACT下只能放置执行类命令(GIVE/TAKE等)。
•命令与参数之间必须用空格分隔,严禁使用中文标点。
二、高频命令分类速查表
1.人物属性与检测命令
命令参数示例功能说明
CHECKLEVELCHECKLEVEL50检测等级是否≥50
CHECKJOBCHECKJOBWarrior检测职业(Warrior/Wizard/Taoist)
CHECKGOLDCHECKGOLD1000000检测金币是否≥100万
CHECKITEMCHECKITEM回城卷1检测背包物品数量
CHECKBAGGAGECHECKBAGGAGE检测背包是否已满
2.物品与货币操作命令
命令参数示例功能说明
GIVEGIVE金币1000给予物品/金币
TAKETAKE屠龙1扣除物品
GAMEGOLDGAMEGOLD+100增加元宝(GOM/GEE引擎)
3.地图传送与坐标移动
命令参数示例功能说明
MAPMAP0传送到0号地图随机坐标
MAPMOVEMAPMOVE3330330传送到指定地图坐标
TIMERECALLTIMERECALL60设置地图倒计时(60分钟)
4.怪物刷怪与管理
命令参数示例功能说明
MONGENMONGEN白野猪110刷怪(名称数量刷新时间)
MONCLEARMONCLEAR0清空指定地图所有怪物
5.消息提示与界面
命令参数示例功能说明
SENDMSGSENDMSG6私人提示发送个人提示(类型6)
SENDMSGSENDMSG0全服公告全服滚动公告(类型0)
SENDCENTERMSGSENDCENTERMSG0居中大字屏幕居中大字体公告
三、变量操作:脚本逻辑的灵魂
变量用于记录玩家状态(如是否领取奖励),是编写复杂功能的基础。
1.变量类型与赋值
•个人数字变量:P0-P9(临时,仅当前脚本有效)
•个人字符变量:S0-S99(永久保存),如SETS10已领取
•全局数字变量:G0-G999(全服通用),如SETG1001
•变量运算:INCP01(P0增加1),DECP11(P1减少1)
2.变量检测与显示
•检测变量:CHECKVARS10=已领取或SMALLG10010(检测G100是否小于10)
•显示变量:在NPC对话中使用<$STR(S10)>显示变量值
四、实战案例:编写“每日签到”脚本
在Market_Def目录下创建SignIn.txt,写入以下逻辑:
[@Main]
欢迎使用每日签到系统!\\
<签到/@Sign><离开/@Exit>
[@Sign]
#IF
CHECK[100]0;检测标志变量[100]是否为0(未签到)
#ACT
SET[100]1;设置已签到标志
GIVE金币500000
GAMEGOLD+50
SENDMSG0玩家【<$USERNAME>】完成了每日签到!
#ELSEACT
SENDMSG0你今天已经签到过了!
此脚本利用[100]逻辑变量实现了防重复签到功能。
五、脚本存放路径与重载
•NPC脚本:Mir200\Envir\Market_Def\(每个NPC一个.txt文件)
•全局触发:Mir200\Envir\QFunction-0.txt(攻击、死亡、拾取事件)
•重载方法:修改后需在M2Server点击“控制”→“重新加载”→“重读NPC脚本”,无需重启服务端。
六、常见报错与排查
1.NPC对话空白:检查文件编码(需ANSI),确认[@Main]标签存在。
2.条件不生效:确认#IF下的检测命令拼写正确(如CHECKLEVEL非CHECKLEV)。
3.变量混乱:不同NPC间尽量使用不同的变量编号(如S10、S11),避免冲突。
总结:掌握#IF-#ACT结构是脚本编写的基础,结合变量操作可实现复杂的游戏逻辑。建议先从修改现成脚本的参数开始练习,逐步过渡到独立编写功能。

