传奇服务端脚本制作教程:NPC触发与挂机脚本写法

来源: 作者: 点击:
传奇脚本分服务端脚本和客户端外挂脚本两条线,前者改版本功能(NPC对话、爆率、任务、机器人定时器),后者做自动打怪挂机(按键精灵+大漠插件模拟键鼠)。两条线语法完全不通,先确定你要做哪头。

服务端脚本(Hero/GOM/GEE引擎通用底子)
所有脚本都是.txt文本,推荐Notepad++写,保存选ANSI编码,放错目录引擎不读。核心逻辑就一句:触发标识+条件判断+执行动作。

基础结构:
[@MAIN]
IF

CHECKLEVELEX > 35
CHECKGOLD 10000
ACT

TAKE 金币 10000
GIVE 裁决之杖 1
SENDMSG 6 兑换成功!
BREAK
ELSESAY

等级或金币不够。

[@标签]是入口,点击NPC时引擎找对应标签执行。#IF底下跟条件(CHECKLEVEL检测等级、CHECKITEM检测背包物品、CHECKGOLD检测金币、CHECKJOBWARRIOR检测职业、RANDOM 100表示1%几率),#ACT底下跟动作(GIVE发物品、TAKE扣物品、MAPMOVE 地图号 X Y传送、CHANGEEXP加经验、SET [任务号] 1打标记),#SAY输出对话,\换行,BREAK中断不再往下走,#ELSEACT/#ELSESAY是不满足条件时的分支。

NPC注册:脚本写完放Mir200\Envir\Market_Def\,文件名“NPC名-地图号.txt”。然后打开Mir200\Envir\Merchant.txt末尾加一行:
0 330 330 装备使者 装备使者 51 0 0 1 0
字段依次是地图号、X、Y、显示名、脚本名(不带.txt)、外观编号、范围、刷新间隔。M2控制台点“重新加载NPC”生效,不用关服。

爆率脚本:Mir200\Envir\MonItems\下建“祖玛教主.txt”,内容:
1/500 裁决之杖 1
1/100 力量戒指 1
1/50 强效太阳水 3 5
100% 金币 500 2000
1/N是平均N只掉一次,100%必掉。

全局触发:登录、进图、定时泡点写Mir200\Envir\MapQuest_def\QManage.txt,用[@Login]、[@EnterMap]等引擎预留标签。定时器走Robot_def\AutoRunRobot.txt配“#AutoRunNPC SEC 30 @泡点”,RobotManage.txt里写[@泡点]段用SetScTimer开启、KillScTimer关闭。

假人/机器人自动上线:DummyNameList.txt塞名字,AutoRunRobot.txt每30秒触发@假人上线,RobotManage.txt里CHECKDUMMYCOUNT < 50配合DUMMYLOGON 3 330 330 5在盟重登5个,合击版另配DummyHeroNameList.txt给英雄名。

变量系统:P0-P9人物临时数字,D0-D9持久数字,G0-G9全服全局,S0-S9字符,A0-A9字符。MOV P1 100赋值,INC P1 1自增,DEC P1 1自减,MOVS S1 <$USERNAME>存名字。防重复领奖用SETS1 已领再CHECKSTRING S1 已领。

客户端挂机脚本(按键精灵+大漠)
面向合击版自动打怪、双开练英雄。装按键精灵官网版,加载大漠插件dm.dmsoft,绑定窗口用dm.BindWindow(hwnd,"dx2","windows","windows",0)。主循环Do…Loop里干四件事:抓血条颜色判断喝药、FindColor找怪物血条红点、KeyPress 49按1键放烈火、Delay 800-1200随机延时模拟人手。

最小可用框架:
Do
hp = dm.GetColor(100,100)
If hp <> "00FF00" Then
dm.KeyPress(83) '开背包
dm.KeyPress(49) '喝红
End If
dm.FindColor(0,0,800,600,"FF0000",x,y)
If x>0 Then
dm.MoveTo x,y
dm.LeftClick
dm.KeyPress(49) '烈火
Delay 1000
Else
dm.MoveTo Rnd(200)+400, Rnd(150)+300
dm.LeftClick
Delay 2000
End If
Loop

合击版要多一段:先dm.KeyPress(17) Ctrl+E确认英雄出战,找怪后dm.KeyPress(87) 配合Ctrl+W锁敌,怒满dm.KeyPress(83) Ctrl+S放合击。血条坐标、怪物颜色用大漠综合工具“抓抓”对着你自己客户端截屏取,别人脚本直接抄坐标多半偏。

调试顺序
服务端脚本写错最常见是中文标点、参数少填、标签重名、编码非ANSI。改完别重启整个服,M2点“重新加载脚本”或“重新加载NPC”先看M2日志报哪行错。客户端脚本先单步跑一个找怪+攻击,确认坐标对准再叠喝药和拾取,拾取用FindPic找物品落地图的bmp截图,比纯颜色稳。

GOM和Hero命令九成通用,少数如CHECKGAMEGOLD(GOM元宝)和CHECKGOLD(Hero元宝)名字不同,换引擎时对照命令手册改一遍就行,别整套重写。