传奇服务端脚本命令详解与实战速查手册

来源: 作者: 点击:
一、脚本基础结构: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结构是脚本编写的基础,结合变量操作可实现复杂的游戏逻辑。建议先从修改现成脚本的参数开始练习,逐步过渡到独立编写功能。
[顶部]