传奇脚本指控制游戏内怪物刷新、物品掉落、NPC对话、任务触发等逻辑的文本指令集,不同引擎(GOM、GEE、LEG、HERO等)语法有差异,本文以最通用的GOM引擎为例展开讲解。
一、必备工具与环境搭建
1. 服务端源码文件夹
你需要一个完整的传奇服务端,里面包含Mir200\Envir目录,所有脚本文件都存放在此路径下。没有现成服务端的去各大传奇技术论坛下载"GOM引擎基础服务端"作为学习底板。
2. 文本编辑器
推荐Notepad++或Sublime Text,不要用Windows自带记事本,容易因编码格式导致脚本乱码报错。将编辑器默认编码设为ANSI(GOM引擎强制要求)。
3. 引擎测试器
下载对应引擎的控制器程序(如GameCenter.exe),每次修改脚本后点击"重新加载"即可在游戏中看到效果,无需重启服务器。
二、核心脚本文件结构
Envir目录下关键文件及作用:
• QManage.txt(登陆脚本):角色上线瞬间执行的命令集合,用于绑定称号、检测等级送装备等。
• QFunction-0.txt(功能脚本):通过物品触发、计时器触发、杀怪触发等事件调用具体功能段。
• Market_Def\ 文件夹:存放所有NPC脚本,每个NPC对应一个.txt文件,文件名必须与NPC名称一致。
• MapQuest_def\ 文件夹:地图事件脚本,比如进入某张地图自动扣元宝、定时刷怪等。
• MonGen.txt(刷怪配置文件):决定每张地图刷哪些怪物、坐标范围、刷新间隔、数量上限。
• MerChant.txt(商人配置文件):定义商店NPC出售的物品列表及价格。
三、编写第一个NPC脚本
步骤1:在Market_Def文件夹新建一个名为"测试使者.txt"的文件。
步骤2:写入以下基础框架:
[@main]
#IF
#ACT
#SAY
欢迎来到我的测试脚本,请选择功能:\
<领取新手装备/@新手装备>\
<查看怪物坐标/@怪物坐标>\
解释:[@main]是NPC对话默认入口,#IF下方留空表示无条件执行,#ACT下方可写执行动作(此处为空),#SAY后面跟显示给玩家的文本内容,\<按钮文字/@跳转标签\>实现点击跳转。
步骤3:在同一个文件里追加功能段:
[@新手装备]
#IF
CHECKLEVELEX > 0
#ACT
GIVE 木剑 1
GIVE 布衣 1
MESSAGEBOX 已发放新手套装
break
CHECKLEVELEX > 0 意思是检测玩家等级大于0,满足条件则执行GIVE命令给予物品,最后用break结束当前段防止继续向下执行。
步骤4:保存文件,在游戏里找到该NPC(需先在MerChant.txt或NPC配置表里注册坐标),点击对话即可看到效果。
四、常用脚本命令速查
• GIVE 物品名 数量:给玩家指定道具
• TAKE 物品名 数量:扣除玩家道具
• CHANGELEVEL +/- N:调整等级
• MAPMOVE 地图编号 X Y:传送玩家到指定坐标
• SENDMSG 消息类型 文字内容:屏幕中央或聊天框发提示
• MONSTERGEN 地图编号 怪物名 数量 坐标范围:即时刷怪
• RANDOM 数字:产生1到该数字之间的随机数,配合条件判断做抽奖
• ADDGAMEGOLD +/- N:增加或减少元宝
• ADDBONUSPOINT + N:增加属性点
五、刷怪脚本实战
打开MonGen.txt,每行格式如下:
地图编号 怪物名 刷新间隔(秒) 坐标X 坐标Y 范围半径 最大数量 归属模式
举例:
3 白野猪 60 150 330 5 10 0
意思是在比奇省(地图3)的(150,330)为中心半径5格范围内,每60秒刷最多10只白野猪,归属模式0表示谁打归谁。
如果想做成定点定时刷BOSS,在MapQuest_def里写地图事件脚本:
[@进入地图]
#IF
ISONMAP 3
#ACT
PARAM1 3
PARAM2 120
PARAM3 300
MONSTERGEN 祖玛教主 1 200 300
这段脚本让玩家进入地图3时触发,在(200,300)处立即刷一只祖玛教主。
六、变量与逻辑控制
传奇脚本用P0-P99(个人临时变量)、D0-D99(全局动态变量)、A0-A99(字符串变量)存储数据。
示例——写一个每日签到脚本:
[@每日签到]
#IF
EQUAL A0 已签到
#ACT
MESSAGEBOX 你今天已经签到了
break
#IF
#ACT
MOV A0 已签到
GIVE 金币袋 1
ADDBONUSPOINT + 1
SENDMSG 0 玩家<%s>完成了每日签到!
break
用A0变量记录签到状态,当天第一次点击执行发奖并赋值"已签到",再次点击被第一个条件拦截。
七、调试技巧
1. 脚本报错看M2Server程序窗口的红字提示,会精确指出哪个文件第几行出错。
2. 无法触发的功能段检查跳转标签名称是否完全一致(包括大小写)。
3. 物品名、地图名、怪物名必须与数据库(Database里的StdItems.DB、Monster.DB)完全匹配,多一个空格都不行。
4. 修改完脚本一定要点M2Server上的"重新加载"按钮,否则游戏里还是旧脚本。
八、进阶方向
掌握上述基础后可以研究:自定义技能触发脚本(写在QFunction-0.txt的[@MagSelfFunc]段)、摆摊交易脚本、行会战积分系统、跨服副本传送阵逻辑。每个引擎都有自己独家的扩展命令,去对应引擎官网下载说明书对照查阅即可。

