当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇服务端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
SENDMSG6领取成功,已发放武器和药水。
BREAK

ELSESAY

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

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

常用条件:

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

常用动作:

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

三、注册NPC到地图

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

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

示例:
0330330福利使者福利使者5100000

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

四、做每日礼包NPC

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

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

[@day]
IF

CHECKDAYREWARD1
ACT

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

IF

CHECKLEVELEX<35
ACT

GIVE金创药10
SETDAYREWARD1
SENDMSG6领取初级礼包成功。
CLOSE
BREAK

IF

CHECKJOBWARRIOR
ACT

GIVE炼狱1
SETDAYREWARD1
SENDMSG6战士礼包已发。
BREAK

IF

CHECKJOBWIZARD
ACT

GIVE海魂1
SETDAYREWARD1
SENDMSG6法师礼包已发。
BREAK

IF

CHECKJOBTAOIST
ACT

GIVE银蛇1
SETDAYREWARD1
SENDMSG6道士礼包已发。
BREAK

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

五、杀怪任务脚本

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

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

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

[@accept]
IF

CHECKLEVELEX>20
ACT

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

[@submit]
IF

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

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

ELSEACT

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

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

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

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

[@KillPig]
IF

CHECK[杀猪任务]1
ACT

INCKillPig1
SENDMSG6杀野猪进度:<$STR(KillPig)>/10
IF

EQUALKillPig10
ACT

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

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

六、物品双击触发

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

[@StdModeFunc100]
ACT

SENDMSG6使用回城特效卷。
MAPMOVE0330330
BREAK

[@UseItemFunc200]
IF

CHECKLEVELEX<50
ACT

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

ELSEACT

SENDMSG650级后不再使用此丹。
BREAK

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

七、登录脚本

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

[@Login]
IF

ACT

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

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

八、机器人定时活动

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

AutoRunRobot.txt示例:

AutoRunNPCRUNONDAY15:00:00@BossActivity

AutoRunNPCRUNONWEEK5:20:00@FridayNotice

AutoRunNPCHOUR1@HourTip

RobotManage.txt示例:

[@BossActivity]
IF

ACT

Param10
Param2330
Param3330
MonGen祖玛教主10
SENDMSG1活动:祖玛教主出现在比奇330330,击杀有概率掉装。
BREAK

[@FridayNotice]
IF

ACT

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

[@HourTip]
IF

ACT

SENDMSG1整点提示:违规外挂会被封号,请使用官方客户端。
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、物品触发、登录福利都能覆盖。外挂类自动打金、脱机多开、内存改包不在脚本制作范围,服务端再强的功能也不应通过篡改客户端实现。
[顶部]