传奇脚本分两类。一类是服务端脚本,运行在 MirServer 服务端里,控制 NPC、任务、装备、爆率、触发、攻城、泡点、地图传送等功能;另一类是客户端脚本,运行在玩家本地设备或辅助工具里,模拟点击、识别界面、自动打怪、自动拾取。
服务端脚本常见于 GOM、GEE、HERO、BLUE、翎风、V8、996 等引擎。 客户端脚本常见于 Lua、Python、按键精灵、模拟器录制工具等。
一、服务端脚本是什么
服务端脚本是传奇版本的核心逻辑文件,通常以 TXT 文本形式存放在 MirServer 目录中。它不是游戏客户端里的插件,而是服务端用来判断条件、执行命令、控制游戏流程的文本程序。
常见用途包括:
NPC 对话、传送、回收、合成、升级武器;
双击物品触发、穿戴装备触发、攻击触发、死亡触发;
登录发放奖励、离线挂机、泡点;
怪物爆率、刷怪、地图限制;
沙巴克攻城、活动开启、全服公告;
变量记录任务进度、次数、冷却、状态。
二、服务端脚本基础结构
服务端脚本通常由标签、条件、执行、对话四部分组成。
常见写法:
[@main]
if
checklevelex > 35
checkitem 金币 1000
act
take 金币 1000
mapmove 3 330 330
sendmsg 6 传送成功
elsesay
你的等级不足36级,或者金币不够。
含义是:玩家等级大于 35 级,并且背包有 1000 金币时,扣除金币并传送到地图 3 的 330,330 坐标;否则提示条件不足。
核心关键字:
@main、@段名:脚本段落入口;
#IF:条件检测,只能放检测命令;
#ACT:条件成立后执行命令;
#ELSEACT:条件不成立时执行命令;
#SAY / #ELSESAY:显示对话文本;
GOTO:跳转到另一个标签;
BREAK:结束当前脚本执行;
CLOSE:关闭对话框。
三、常用检测命令
检测命令必须写在 #IF 下面,用来判断玩家是否满足条件。
CHECKLEVELEX:检测等级;
CHECKJOB:检测职业;
CHECKITEM:检测背包物品数量;
CHECKITEMW:检测穿戴物品;
CHECKGOLD:检测金币;
CHECKGAMEGOLD:检测元宝;
CHECKHUM:检测地图人数;
CHECKNAMELIST:检测角色是否在名单中;
CHECKCASTLEDOOR:检测沙巴克城门状态;
ISADMIN:检测是否为管理员。
四、常用执行命令
执行命令必须写在 #ACT 或 #ELSEACT 下面。
GIVE:发放物品或金币;
TAKE:收回物品;
MAP / MAPMOVE:传送到地图或指定坐标;
CHANGELEVEL:调整等级;
ADDSKILL / DELSKILL:添加或删除技能;
GAMEGOLD:调整元宝;
SENDMSG:发送提示消息;
MONCLEAR:清除地图怪物;
MONGEN:刷怪;
KICK:踢玩家下线。
五、变量系统
变量用来记录状态、次数、进度和临时数据。不同引擎变量范围略有差异,以当前引擎文档为准。
常见变量:
P0-P999:私人数字变量,关闭对话框后通常重置;
N0-N999:私人数字变量,小退归零;
D0-D999:私人数字变量,下线不保存;
S0-S999:私人字符变量,小退归零;
U0-U254:私人数字变量,可保存到人物数据库;
T0-T254:私人字符变量,可保存到人物数据库;
G0-G999:全局数字变量,全服共用,可保存;
A0-A999:全局字符变量,全服共用,可保存。
常用变量命令:
MOV:赋值;
INC:自增;
DEC:自减;
MUL:乘法;
DIV:整除;
MOVR:随机赋值;
EQUAL:等于;
SMALL:小于;
LARGE:大于。
六、服务端脚本文件路径
以常见 GOM/GEE 引擎为例,脚本主要放在 MirServerMir200Envir 目录下。
Market_Def:NPC 脚本;
QFunction-0.txt:功能触发脚本,如双击、穿戴、攻击、死亡;
MapQuest_defQManage.txt:登录触发脚本;
Robot_def:机器人定时脚本;
QuestDiary:扩展脚本调用目录;
MonItems:怪物爆率;
Mongen.txt:怪物刷新;
Merchant.txt:NPC 坐标与形象;
MapInfo.txt:地图参数;
AdminList.txt:管理员名单。
修改脚本后通常需要在 M2 控制台重载对应文件,例如重载 NPC、重载 QF、重载机器人脚本,否则游戏内不会立即生效。
七、写一个简单 NPC 脚本
[@main]
IF
checklevelex > 35
ACT
goto @领取奖励
ELSEACT
goto @条件不足
[@领取奖励]
IF
checkitem 新手勋章 1
ACT
give 裁决之杖 1
take 新手勋章 1
sendmsg 6 你已领取裁决之杖
ELSEACT
sendmsg 7 你没有新手勋章
[@条件不足]
SAY
等级不足36级,无法领取奖励。
这段脚本表示:玩家等级大于 35 级时进入领取判断;背包有新手勋章则发放裁决之杖并扣除勋章;否则提示缺少勋章;等级不足则直接提示条件不够。
八、写一个双击触发脚本
双击触发通常写在 QFunction-0.txt 中。例如物品 AniCount 设置为 888,则对应标签为 @StdModeFunc888。
[@StdModeFunc888]
IF
checkitem 回城石 1
ACT
take 回城石 1
map 0
sendmsg 6 已使用回城石
ELSEACT
sendmsg 7 背包中没有回城石
意思是:双击回城石时,如果背包有该物品,则扣除并传送到安全区;否则提示物品不足。
九、客户端脚本是什么
客户端脚本不属于服务端,而是运行在玩家本地。常见形式有 Lua 脚本、按键精灵脚本、模拟器宏、云手机任务、Python 脚本等。
常见功能包括:
自动打怪;
自动拾取;
自动喝药;
自动回城;
自动卖货;
自动寻路;
界面识别;
定时操作。
客户端脚本通常依赖图像识别、坐标点击、颜色检测、内存读取或游戏 API。编写时需要固定分辨率、固定 UI 布局,并设置随机延迟,否则容易识别失败或被判定为异常操作。
十、服务端脚本使用流程
确定功能目标,例如传送、回收、爆率、触发、活动。
找到对应脚本文件,例如 NPC 脚本放在 Market_Def,触发脚本放在 QFunction-0.txt。
使用记事本、Notepad++、VS Code 等文本编辑器打开脚本。
按照 #IF 检测、#ACT 执行的顺序编写逻辑。
保存文件后在 M2 控制台重载对应脚本。
进入游戏测试,观察提示、物品、传送、触发是否正常。
使用 SENDMSG 输出变量值,排查条件是否成立。
测试无误后再应用到正式区。
十一、常见错误
把执行命令写在 #IF 下面;
把检测命令写在 #ACT 下面;
标签名重复导致脚本乱跳;
修改脚本后没有重载;
变量名与引擎保留变量冲突;
物品名称与数据库不一致;
地图编号或坐标写错;
使用 GOTO 形成死循环;
全服变量被多个玩家同时修改导致状态异常。
十二、安全与合规
服务端脚本只能用于自己拥有管理权限的版本或本地测试环境。未经授权修改他人服务端、倒卖版本、植入恶意代码、窃取账号数据都属于违规行为。客户端自动化脚本在多数传奇类游戏中属于违规辅助,可能被限制登录或封号。
服务端脚本开发建议先在本地测试服完成,确认逻辑稳定后再上线。涉及元宝、装备、等级、全服变量、攻城、刷怪等功能时,应限制触发条件,避免误发奖励或造成服务器压力。
传奇服务端与客户端脚本入门:语法结构常用命令文件路径与实战编写流程
来源:
作者:
点击:

