传奇服务端与客户端脚本入门:语法结构常用命令文件路径与实战编写流程

来源: 作者: 点击:
传奇脚本分两类。一类是服务端脚本,运行在 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 形成死循环;
全服变量被多个玩家同时修改导致状态异常。

十二、安全与合规

服务端脚本只能用于自己拥有管理权限的版本或本地测试环境。未经授权修改他人服务端、倒卖版本、植入恶意代码、窃取账号数据都属于违规行为。客户端自动化脚本在多数传奇类游戏中属于违规辅助,可能被限制登录或封号。

服务端脚本开发建议先在本地测试服完成,确认逻辑稳定后再上线。涉及元宝、装备、等级、全服变量、攻城、刷怪等功能时,应限制触发条件,避免误发奖励或造成服务器压力。