单机传奇怪物攻城制作:沙巴克配置与脚本刷怪实操

来源: 作者: 点击:
先分清两种攻城。一种是行会打沙巴克,靠引擎自带城堡系统,改 SabukW.txt 和时间控制就能跑。另一种是怪物攻城,让祖玛教主、沃玛教主、半兽勇士成批冲土城/比奇,靠 Robot 机器人脚本定时触发,用 MISSION+MOBPLACE 让怪往集结点移动。单机自测推荐先做第二种,逻辑简单、见效快,跑通了再接沙巴克。

一、先备文件与地图编号

进 D:\MirServer\Mir200\Envir,确认这几个地方:

MapInfo.txt:查攻城地图编号。比奇省常见0或1,土城/盟重常见3,沙巴克皇宫一般是0150,具体以你端里实际定义为准
Monster.DB:确认怪物名和Appr。祖玛教主、沃玛教主、半兽勇士这些名字必须和库里一字不差,多一个空格刷不出来
Robot_def\AutoRunRobot.txt:定时触发器
Robot_def\RobotManage.txt:触发后执行的逻辑
QuestDiary:自定义NPC和活动脚本目录
Castle\SabukW.txt:沙巴克配置(做行会攻城才动)

改之前把 Envir 整个目录先打一个zip备份,脚本写崩了能直接回滚。

二、怪物攻城最小可用脚本

目标:每天19:30,土城刷三波怪,怪自动往安全区移动,玩家清完给公告。

1. 定时触发

打开 Envir\Robot_def\AutoRunRobot.txt,末尾加:

AutoRun NPC RUNONDAY 19:30 @怪物攻城开始

RUNONDAY 是每天触发。想每周六就写 RUNONWEEK 6:19:30。测试时把时间设成当前电脑时间延后2分钟,不用干等。

2. 执行逻辑

打开 Envir\Robot_def\RobotManage.txt,末尾加:

[@怪物攻城开始]
if

act

SENDMSG 0 【怪物攻城】大批怪物正涌向盟重,勇士速回城防守!
MISSION 3 330 330
PARAM1 360
PARAM2 340
PARAM3 10
PARAM4 5
MOBPLACE 半兽勇士
PARAM1 350
PARAM2 330
PARAM3 8
PARAM4 5
MOBPLACE 沃玛卫士
PARAM1 340
PARAM2 320
PARAM3 2
PARAM4 3
MOBPLACE 沃玛教主
PARAM1 335
PARAM2 315
PARAM3 1
PARAM4 2
MOBPLACE 祖玛教主

字段含义:

MISSION 3 330 330:地图3,集结点坐标(330,330),怪刷出来后往这走
PARAM1/PARAM2:刷怪中心X/Y
PARAM3:数量
PARAM4:随机范围(格),0就是精准落点
MOBPLACE 怪物名:实际刷哪种怪

MISSION 必须先于 MOBPLACE 出现,且每次换刷怪点要重新写 PARAM1~PARAM4,否则沿用上一次坐标 。

3. 多波次(进阶)

回到 AutoRunRobot.txt:

AutoRun NPC RUNONDAY 19:30 @攻城第一波

AutoRun NPC RUNONDAY 19:38 @攻城第二波

AutoRun NPC RUNONDAY 19:46 @攻城BOSS波

RobotManage.txt 里分三段:

[@攻城第一波]
if

act

SENDMSG 0 第一波:半兽军团来袭!
MISSION 3 330 330
PARAM1 360
PARAM2 340
PARAM3 15
PARAM4 6
MOBPLACE 半兽勇士
MOBPLACE 僵尸

[@攻城第二波]
if

act

SENDMSG 0 第二波:沃玛精锐突破防线!
MISSION 3 330 330
PARAM1 350
PARAM2 330
PARAM3 10
PARAM4 5
MOBPLACE 沃玛卫士
MOBPLACE 黑野猪

[@攻城BOSS波]
if

act

SENDMSG 6 警告:祖玛教主现身盟重!
MISSION 3 330 330
PARAM1 335
PARAM2 315
PARAM3 1
PARAM4 2
MOBPLACE 沃玛教主
MOBPLACE 祖玛教主

每波间隔几分钟,玩家有喘息和清场节奏。单机自测可以先把间隔压到10秒,快速看效果。

4. 结束清理

[@攻城结束]
if

act

CLEARMAPMON 3
SENDMSG 0 怪物攻城已结束,感谢各位勇士守城!

CLEARMAPMON 地图号 会清空该图所有动态怪,防止测试时怪越刷越多卡服 。

三、GM手动触发(测试用)

不想等定时器,进游戏用GM号直接打:

@ReloadRobot
或在M2里点控制,重新加载机器人脚本

也可以做个NPC手动开。在 Envir\Market_Def 新建 攻城使者.txt:

[攻城使者 3 320 320]
脚本功能:手动开启怪物攻城

[@main]
欢迎来到盟重,是否开启怪物攻城测试?
<开启攻城/@open_siege> <关闭攻城/@close_siege>

[@open_siege]
IF

ACT

CALLRUN @怪物攻城开始
SENDMSG 0 GM开启了怪物攻城测试!

[@close_siege]
IF

ACT

CLEARMAPMON 3
SENDMSG 0 攻城测试已强制结束。

NPC坐标 3 320 320 必须在土城可站立点,别写墙里。

四、沙巴克行会攻城(可选)

想做真正行会抢皇宫,走引擎城堡系统。

1. 改 SabukW.txt

进 Mir200\Envir\Castle\SabukW.txt:

[Setup]
Enable=1
WarDay1=6
StartTime=20:00
EndTime=22:00
ReadyDay=0
ReadyTime=19:00

WarDay1=6 是周六攻城,ReadyDay=0 取消提前申请等待,单机测试方便。

2. M2里重载

M2菜单,控制,重新加载,城堡数据。或者重启M2。

3. 攻城触发脚本

AutoRunRobot.txt:

AutoRun NPC RUNONDAY 20:00 @沙巴克攻城开启

RobotManage.txt:

[@沙巴克攻城开启]
if

act

GMEXECUTE 开始攻城
SENDMSG 0 沙巴克攻城战正式开始!

部分引擎用 AddAttackSabukAll 0 代替 开始攻城,具体看M2命令帮助。

4. 皇宫占领判定

QuestDiary\沙巴克\占领触发.txt:

[@进入皇宫]
if

ISCASTLEMASTER
act

SENDMSG 0 该行会正在占领沙巴克皇宫!
elsesay

行会正在试图占领皇宫,击杀守方即可抢占!

地图链接在 MapInfo.txt 配:

3 333,333 -> 0150 10,10

表示土城(333,333)进沙巴克皇宫(10,10)。

五、刷怪命令差异(很重要)

不同引擎命令不一样,混抄必崩:

GOM/GEE/Hero:MISSION + PARAM1~4 + MOBPLACE,适合攻城类怪追玩家
通用定点刷怪:MonGen 地图 X Y 怪物名 数量 范围,怪原地不动
翎风等另类引擎:标签和参数顺序可能不同,先查引擎自带命令文档

测试建议先用 MonGen 验证坐标能出怪,再换 MOBPLACE 做追击效果。

六、奖励机制

攻城BOSS击杀奖励,在 QFunction-0.txt 加:

[@MobMissionKill]
if

CHECKKILLMONNAME 祖玛教主
act

SENDMSG 6 恭喜击杀攻城BOSS祖玛教主!
GIVE 屠龙 1
GIVE 元宝 500
BROADCAST 全服恭喜守城成功,神器现世!

CHECKKILLMONNAME 是击杀判定,不同引擎可能是 KILLMON 或其他,按M2命令列表调。

七、单机测试顺序

1. 先手动刷一只怪验证坐标
MonGen 3 330 330 半兽勇士 1 0
能看见怪,说明地图号和怪物名对。

2. 手动跑一次 MOBPLACE 逻辑
把 RobotManage.txt 里的 [@怪物攻城开始] 用GM命令或NPC CALLRUN 触发,看怪是否往集结点走。

3. 怪原地不动
MISSION 没写或写在 MOBPLACE 后面了。MISSION 必须在前,且集结点坐标要是可行走区域。

4. 定时器不触发
AutoRunRobot.txt 里 #AutoRun NPC 前缀不能少,RobotManage.txt 里标签名要完全对应,大小写敏感看引擎。

5. 刷怪坐标在墙里
怪刷出来但看不见或卡住,换开阔坐标,比如土城安全区附近 320~360 范围。

6. 脚本报错
QFunction、RobotManage 用ANSI编码保存,别存UTF-8带BOM,否则参数解析乱码 。

7. 清缓存重载
M2点重新加载脚本文件,不行就重启M2。别只改文件不重载。

八、常见故障对照

怪刷出来但不动:MISSION 集结点缺失或坐标不可达
满屏怪清不掉:没写 CLEARMAPMON,或定时器重复触发没加状态锁
公告发了没怪:怪物名和 Monster.DB 不一致,或地图号错
只在服务器日志触发、游戏里没反应:Robot 系统没启用,检查 Envir\Robot.txt 里 系统控制 autorunrobot 是否开启
攻城期间卡顿:一波刷太多,单机先压到10~20只,BOSS单只
沙巴克没法占领:皇宫地图没配 FIGHT 参数,MapInfo.txt 里加 [0150 沙巴克皇宫] FIGHT
变量重复报错:QManage 里 VAR 定义重复,删掉多余声明

九、参数调优建议

单机怀旧节奏:

小怪每波10~15只,范围5~8格
精英每波5~8只
BOSS每次1~2只
波次间隔5~10分钟
集结点放土城安全区外侧,别放安全区正中间,怪会挤成一团
攻城总时长控制在30~60分钟

想做成“守城活动”而不是“清怪副本”,可以把集结点设在药店门口或仓库门口,逼玩家接战。

十、把活动做成可复用模板

端跑稳后,建一个 QuestDiary\活动\怪物攻城.txt 统一管理:

[@Init]
; 初始化状态变量
SETVAR GLOBAL 攻城状态 0

[@StartSiege]
if

CHECKLEQUAL GLOBAL 攻城状态 0
act

SETVAR GLOBAL 攻城状态 1
CALLRUN @怪物攻城开始

[@StopSiege]
if

act

SETVAR GLOBAL 攻城状态 0
CLEARMAPMON 3
SENDMSG 0 攻城活动已结束

用全局变量锁状态,避免定时器重复触发把怪叠满。变量存到 QuestDiary\活动\变量.ini,重启M2也不丢。

十一、和沙巴克系统并存

两套可以一起开:

周三、周五:怪物攻城(守城打怪)
周六:行会沙巴克(抢皇宫)

AutoRunRobot.txt:

AutoRun NPC RUNONWEEK 3:20:00 @怪物攻城开始

AutoRun NPC RUNONWEEK 5:20:00 @怪物攻城开始

AutoRun NPC RUNONWEEK 6:20:00 @沙巴克攻城开启

互不冲突,怪物攻城走 RobotManage 刷怪,沙巴克走城堡系统。注意沙巴克期间别在皇宫地图叠怪物攻城,不然判定乱。

十二、防坑习惯

RobotManage.txt 每次只加一段,测完再加下一段
MISSION 坐标先用人站过去看可行走,再写脚本
怪物名从 Monster.DB 直接复制,别手打
所有活动脚本另存 .bak
CLEARMAPMON 必须配对每个攻城地图,防止测试残留
单机调试把刷怪间隔设短,稳定后再恢复正式时间
M2日志里看 Robot 执行记录,不生效先查日志不是先改数值

怪物攻城本质就三件事:定时器把脚本唤起、MOBPLACE 把怪刷出来并追上集结点、CLEARMAPMON 把场子收干净。沙巴克则是城堡配置加皇宫占领判定。两套机制拆开做,先跑通怪物攻城,再叠行会攻沙,比一上来抄完整攻沙大脚本稳妥得多。

端起来之后,怪物攻城可以当日常活动,每天固定时段开,配合爆率、排行榜、守城积分,单机也能玩出节奏。脚本别贪多,一波小怪、一波精英、一只BOSS,先把链路跑通,再往里加花活。