传奇服务端NPC任务触发机器人脚本制作教程与合规边界

来源: 作者: 点击:
传奇脚本分服务端功能脚本和电脑端操作辅助两类。自己做版本、改活动、写NPC、做任务、配刷怪,全部在服务端文本里完成;电脑端自动打怪、自动捡物、脱机外挂不在正常制作范围,涉及篡改通信、注入内存、绕过反作弊会有封号和法律责任。下面只按服务端通用写法讲,附带合规红线。

一、先确认引擎和目录

不同引擎命令名会有差别,GOM、GEE、HERO、BLUE大体结构一致。服务端根目录通常是 MirServer\Mir200\Envir,常用子目录如下:

1. Market_Def:普通NPC脚本,按“NPC名-地图号.txt”或直接在文件里写对话。部分版本触发脚本放在 Market_Def\QFunction-0.txt。
2. Merchant.txt 或 Npc.txt:注册NPC出现位置、名称、脚本文件、外观、刷新时间。不同版本文件名可能不同,以本服Envir目录实际列表为准。
3. QuestDiary:任务脚本、变量、杀怪计数、复杂分支。
4. MapQuest_Def\QManage.txt:登录触发、上线送礼包、初始化变量。
5. Robot_def\AutoRunRobot.txt、RobotManage.txt:定时活动、整点刷怪、自动发公告。
6. MonItems:怪物爆率,文件名和怪物库名字一致。
7. MapQuest.txt:部分引擎做杀怪触发映射,把某地图某怪物关联到QuestDiary标签。

编辑用记事本或Notepad++,全部存UTF-8或ANSI以引擎要求为准,扩展名.txt。改完优先在M2控制台重载,不建议每次重启整个服务端。

二、NPC脚本基础结构

标准分段用标签、条件、动作、否则、结束。最小结构:

[@main]
欢迎使用新手福利。\
领取10级礼包
领取元宝说明

[@lingqu]
IF

CheckLevelEx > 10
CHECKITEM 新手券 1
ACT

TAKE 新手券 1
GIVE 乌木剑 1
GIVE 金创药 5
SENDMSG 6 领取成功,已发放武器和药水。
BREAK

ELSESAY

等级不足或未持新手券,无法领取。

说明:@main是进入NPC默认页面;是可选按钮,点后跳@lingqu;#IF写条件,#ACT写发东西/扣东西/传送/发消息,#ELSESAY写不满足条件提示,BREAK结束本段。不同引擎条件名可能写成CHECKLEVELEX、CheckLevel、CHECKGOLD、CHECKITEM,按本引擎命令表对齐。

常用条件:

1. 等级:CHECKLEVELEX > 35、CheckLevel 35,不同引擎大小写和符号不同。
2. 金币:CHECKGOLD 10000,满足再TAKE金币10000。
3. 物品:CHECKITEM 裁决之杖 1,检测背包是否有。
4. 职业:CHECKJOB WARRIOR/WIZARD/TAOIST,部分引擎用战士/法师/道士中文。
5. 变量:CHECK [任务标记] 1、CHECKVAR HUMAN 标记、EQUAL 变量 值。
6. 日限:CHECKDAYREWARD 11之类按引擎日次数功能做防重领。

常用动作:

1. GIVE 物品名 数量:发装备、药水、材料。
2. TAKE 物品名 数量:回收、兑换、接任务扣凭证。
3. MAPMOVE 地图号 X Y:传送到指定坐标,如MAPMOVE 0 330 330。
4. SENDMSG 颜色 内容:私聊式提示,颜色号按引擎,6多为系统黄。
5. SET [标记] 1 或 SET HUMAN 标记 1:记录已领、已接任务。
6. CHANGEEXP + 50000:加经验;GAMEGOLD + 1000或GIVEGOLD按引擎发元宝/游戏币。
7. CLOSE:关闭对话;BREAK:结束当前脚本段。

三、注册NPC到地图

在Merchant.txt按本服格式加一行,通用思路:

地图号 X Y NPC显示名 脚本文件名 外观编号 刷新参数

示例:
0 330 330 福利使者 福利使者 5 10000 0

含义:在比奇地图0的330,330放“福利使者”,读Market_Def里的福利使者.txt,外观取5号,刷新间隔按引擎字段填。保存后M2点重新加载NPC;若NPC不显示,检查地图号坐标是否可行走、文件名是否和脚本一致、是否重名。

四、做每日礼包NPC

需求:每天首次上线或找NPC领一次,按职业给武器,35级额外给技能书。

[@main]
每日福利中心。\
领取每日礼包
查看领取规则

[@day]
IF

CHECKDAYREWARD 1
ACT

SENDMSG 6 今日已领取,明天再来。
CLOSE
BREAK

IF

CHECKLEVELEX < 35
ACT

GIVE 金创药 10
SETDAYREWARD 1
SENDMSG 6 领取初级礼包成功。
CLOSE
BREAK

IF

CHECKJOB WARRIOR
ACT

GIVE 炼狱 1
SETDAYREWARD 1
SENDMSG 6 战士礼包已发。
BREAK

IF

CHECKJOB WIZARD
ACT

GIVE 海魂 1
SETDAYREWARD 1
SENDMSG 6 法师礼包已发。
BREAK

IF

CHECKJOB TAOIST
ACT

GIVE 银蛇 1
SETDAYREWARD 1
SENDMSG 6 道士礼包已发。
BREAK

CHECKDAYREWARD和SETDAYREWARD按引擎是否支持日限变量来用;不支持就用HUMAN变量加日期字符串比对,或放在QManage登录脚本里判断当天日期。

五、杀怪任务脚本

目标:找NPC接“杀10只野猪”,杀完回NPC领经验、金币、物品。

1. NPC接任务,QuestDiary建文件杀野猪.txt:

[@main]
野猪剿灭任务。\
接取任务
提交任务
取消

[@accept]
IF

CHECKLEVELEX > 20
ACT

SET [杀猪任务] 1
SET KillPig 0
SENDMSG 6 已接任务,击杀0/10只野猪。
CLOSE
BREAK

[@submit]
IF

CHECK [杀猪任务] 1
CHECKVAR KillPig >= 10
ACT

TAKE [杀猪任务] 1
CALCVAR HUMAN 经验奖励 + 50000
CHANGEEXP + 50000
GIVE 金条 1
SENDMSG 6 任务完成,获得5万经验与金条。
CLOSE
BREAK

ELSEACT

SENDMSG 6 未完成10只野猪,继续击杀后提交。
CLOSE
BREAK

2. MapQuest.txt加杀怪映射,格式按引擎示例:

0 野猪 * QuestDiary\杀野猪.txt @KillPig

3. 触发脚本杀野猪.txt:

[@KillPig]
IF

CHECK [杀猪任务] 1
ACT

INC KillPig 1
SENDMSG 6 杀野猪进度:<$STR(KillPig)>/10
IF

EQUAL KillPig 10
ACT

SENDMSG 6 已杀满10只,回NPC提交。
BREAK

HERO常用[数字]全局/人物标记,GOM/GEE可用U变量、HUMAN变量,持久化规则看引擎说明;玩家下线不丢要用SAVEVAR或引擎持久变量。

六、物品双击触发

双击回城卷、经验丹、礼包盒,在QFunction-0.txt写。先在物品数据库给该物品设StdMode/AniCount触发号,再在QF写:

[@StdModeFunc100]
ACT

SENDMSG 6 使用回城特效卷。
MAPMOVE 0 330 330
BREAK

[@UseItemFunc200]
IF

CHECKLEVELEX < 50
ACT

CHANGEEXP + 100000
SENDMSG 6 使用经验丹,获得10万经验。
BREAK

ELSEACT

SENDMSG 6 50级后不再使用此丹。
BREAK

StdModeFunc后面的数字要和物品库AniCount或引擎触发号一致;不同引擎标签名可能不同,以QF示例文件为准。

七、登录脚本

玩家进游戏自动执行,放MapQuest_Def\QManage.txt或引擎登录脚本:

[@Login]
IF

ACT

GIVE 在线礼包 1
SENDMSG 6 欢迎上线,已发在线礼包。
SENDMSG 6 当前活动:每天找福利使者领每日礼包。
BREAK

可按首次建号、回归、VIP、等级区间加#IF分支。别在登录脚本里直接给顶级装备,容易刷数据;要发重要奖励就结合领奖NPC和日限标记。

八、机器人定时活动

Robot_def\AutoRunRobot.txt控制时间,RobotManage.txt写具体执行。

AutoRunRobot.txt示例:

AutoRun NPC RUNONDAY 15:00:00 @BossActivity

AutoRun NPC RUNONWEEK 5:20:00 @FridayNotice

AutoRun NPC HOUR 1 @HourTip

RobotManage.txt示例:

[@BossActivity]
IF

ACT

Param1 0
Param2 330
Param3 330
MonGen 祖玛教主 1 0
SENDMSG 1 活动:祖玛教主出现在比奇330,330,击杀有概率掉装。
BREAK

[@FridayNotice]
IF

ACT

SENDMSG 1 周五攻沙预告:今晚20点开启沙巴克。
BREAK

[@HourTip]
IF

ACT

SENDMSG 1 整点提示:违规外挂会被封号,请使用官方客户端。
BREAK

MonGen参数按引擎:地图号、X、Y、怪物名、数量、范围。时间关键字不同引擎可能是SEC/MIN/HOUR/DAY/RUNONDAY/RUNONWEEK,写错不执行。

九、爆率脚本

MonItems\祖玛教主.txt示例:

1/500 裁决之杖 1
1/200 骨玉权杖 1
1/200 龙纹剑 1
1/100 力量戒指 1
1/50 强效太阳水 3
100% 金币 1000-5000

1/500表示平均500只击杀左右掉一次,不是必掉;100%表示必掉。改爆率后M2重载怪物爆率,或用GM命令重读爆率。

十、调试与常见不生效

1. NPC不显示:Merchant路径、坐标、文件名、脚本名不一致;地图号错;NPC被其他文件重复注册。
2. 点按钮没反应:标签名拼错,和跳转不一致;段尾没BREAK;#IF条件永远不满足。
3. 发物品失败:物品名和ItemDB不一致,空格、繁简体、补丁名不对都会发空。
4. 变量不保存:用了临时变量但下线清空,改HUMAN/持久变量并SAVEVAR,或换引擎内置日限。
5. 机器人不跑:AutoRun时间格式错、RobotManage标签名错、M2没重载机器人。
6. 触发脚本不进:MapQuest映射路径错、怪物名和Monster.DB不一致、任务标记没置1。
7. 报脚本错误:M2日志看行号,重点查#IF/#ACT顺序、变量类型、GIVE/TAKE数量、中文逗号。

十一、电脑端“自动玩”的边界

如果目的是电脑上自动打怪、自动吃药、自动捡物,先分两类:

1. 官方客户端允许、游戏内自带挂机、自动喝药、自动技能,按设置开,不碰第三方程序。
2. 第三方按键模拟、窗口识别、内存读取、封包拦截、脱机登录,属于外挂风险区。

仅模拟鼠标键盘的简单宏,有些游戏按用户协议仍可能禁止;若读取游戏进程、修改内存、截改通信包,风险明显更高。相关司法和执法材料把外挂分为辅助操作、脱机多开、修改协议/系统数据等类型,后两类可能触及非法获取或控制计算机信息系统、提供相关程序工具、侵犯著作权、非法经营等责任。 制售外挂牟利、替他人代练使用非法外挂程序,已有刑事案件按非法经营等罪名处理; 使用破坏型外挂也可能带来封号、木马窃号、处罚风险。

自己做版本只写服务端NPC、任务、活动、爆率、机器人,不写客户端注入器、不截包、不改通信、不提供脱机登录器,是稳妥边界。需要电脑端减负,优先用游戏内合法挂机、官方宏、系统鼠标键盘辅助,并先读对应游戏用户协议;发现第三方辅助要求关杀软、给root/管理员、改host、抓包,直接停用。

十二、新手最小实操路线

1. 本地架一套GOM或HERO纯净端,确认Envir目录。
2. 在Market_Def建测试NPC.txt,写@main和领礼包标签。
3. Merchant加地图坐标注册NPC,M2重载NPC看是否出现。
4. 用CheckLevel、CheckGold、CheckItem做三级条件礼包。
5. 建QuestDiary杀怪任务,MapQuest关联野猪,跑通接任务、计数、提交。
6. QFunction做双击回城和经验丹,QManage做上线欢迎。
7. Robot_def做15点刷BOSS、整点公告。
8. MonItems调小爆率做测试,确认重载后生效。
9. 所有命令以本引擎命令手册为准,不混用GOM和HERO指令名;正式服加日限、防重领、防刷经验。

按这个顺序写,普通NPC福利、每日任务、杀怪链、定时世界BOSS、物品触发、登录福利都能覆盖。外挂类自动打金、脱机多开、内存改包不在脚本制作范围,服务端再强的功能也不应通过篡改客户端实现。