一、手动运行脚本核心前提与工具准备
手动运行怪物攻城脚本需依托服务端控制台与脚本文件配合,核心是通过手动触发指令,启动怪物移动、进攻逻辑,需提前做好环境与文件准备。
1. 核心文件定位
怪物攻城脚本存放于服务端根目录→Mirserver→Mir200→Envir→MapQuest_def文件夹,手动运行需提前编写好脚本(命名为MonsterSiege.txt),同时确保QManage.txt全局脚本支持手动调用。另外,怪物配置文件MonGen.txt需提前录入攻城怪物属性、血量、攻击模式,确保移动与战斗逻辑适配。
2. 手动触发工具与权限
需拥有GM权限,通过服务端控制台、游戏内GM命令或远程管理工具触发脚本。核心触发方式:游戏内输入GM命令@RunQuest MonsterSiege.txt @StartSiege;控制台输入对应脚本调用指令,部分引擎支持通过NPC对话手动触发(需提前绑定脚本段落)。
运行前关闭服务端自动攻城机制,避免与手动脚本冲突,同时备份原始脚本与配置文件,便于异常时回滚。
二、移动性攻城核心命令与逻辑设定
怪物移动性攻城的核心是通过脚本命令控制怪物刷新位置、移动路径、目标锁定,实现分波次、有方向的攻城推进,关键命令与逻辑如下。
1. 核心移动与刷新命令
- 怪物刷新命令:MONSTER 地图名 怪物名称 数量 X坐标 Y坐标 范围,用于在指定地图、坐标及范围刷新攻城怪物,范围参数控制刷新分散度(建议5-10,实现分散移动进攻)。
- 强制移动命令:MOVEMONSTER 地图名 怪物名称 目标X 目标Y 速度,控制指定怪物向目标坐标移动,速度参数取值1-10(数值越大移动越快,适配攻城节奏)。
- 路径点移动命令:WALKMONSTER 地图名 怪物名称 路径点编号,需提前在脚本中定义路径点坐标,实现怪物沿预设路线逐步推进,适配多城门、多据点攻城。
- 目标锁定命令:ATTACKTARGET 怪物名称 目标类型,锁定进攻目标(如城门、皇宫、玩家),确保怪物移动后主动发起攻击,而非无目的游荡。
2. 移动性攻城逻辑设计
结合攻城场景,设计三层移动逻辑,实现立体式移动进攻:
- 分波次刷新移动:按时间间隔分波次刷新怪物,每波怪物对应不同移动目标(第一波攻城门、第二波攻皇宫、第三波分散清剿玩家),通过#WAIT 时间(毫秒)控制波次间隔。
- 路径联动移动:在攻城地图(如土城)预设多个路径点,从城外到城内逐步推进,怪物抵达前一路径点后,自动触发下一路径点移动指令,实现持续推进。
- 动态调整移动:检测到怪物被大量击杀时,自动在后方刷新补充怪物,同时加快剩余怪物移动速度;检测到城门被攻破后,立即调整移动目标为皇宫,切换进攻方向。
三、手动移动性攻城脚本完整实例
以土城攻城为例,编写手动触发脚本,实现分波次移动进攻、城门突破、皇宫围攻全流程,可直接复制修改后使用。
// 怪物攻城脚本(手动触发版)
(@StartSiege)
#SAY
怪物攻城已手动启动!分15波向土城发起进攻,准备迎敌!
SENDMSG 0 【攻城警报】大批怪物正向土城袭来,全体玩家做好防御准备!
#ACT
#WAIT 1000
goto @Wave1 // 跳转至第一波进攻
// 第一波:城外刷新,进攻东门
(@Wave1)
#SAY
第一波怪物已刷新,正向土城东门推进!
#ACT
MONSTER 土城 攻城小怪 50 30 20 8 // 土城外围刷新50只小怪,分散范围8
MOVEMONSTER 土城 攻城小怪 120 80 5 // 向东门坐标移动,速度5
ATTACKTARGET 攻城小怪 城门 // 锁定东门为进攻目标
#WAIT 30000 // 间隔30秒触发下一波
goto @Wave2
// 第二波:精英怪配合,强化东门进攻
(@Wave2)
#SAY
第二波精英怪来袭,东门防御压力剧增!
#ACT
MONSTER 土城 攻城精英 20 40 30 6 // 补充20只精英怪
MOVEMONSTER 土城 攻城精英 120 80 6 // 加速推进
WALKMONSTER 土城 攻城精英 1 // 沿路径点1推进(预设路径点1为东门内侧)
#WAIT 25000
goto @CheckEastGate // 检测东门是否被攻破
// 检测东门状态,切换进攻目标
(@CheckEastGate)
#IF
CheckDoor 土城 东门 0 // 检测东门是否破损(0为破损,1为完好)
#ACT
SENDMSG 0 【城门告破】土城东门已被怪物攻破,怪物向皇宫推进!
goto @Wave3
#ELSE
SENDMSG 0 东门防御稳固,怪物持续进攻中!
#WAIT 15000
goto @Wave2 // 未攻破则补充怪物进攻
// 第三波:攻破东门后,分两路进攻皇宫
(@Wave3)
#SAY
怪物分两路向皇宫推进,守住最后防线!
#ACT
MONSTER 土城 攻城BOSS 5 130 90 5 // 刷新5只BOSS
// 第一路沿主街推进
MOVEMONSTER 土城 攻城小怪 180 120 7
// 第二路沿侧路包抄
WALKMONSTER 土城 攻城精英 2 // 路径点2为侧路中点
ATTACKTARGET 攻城BOSS 皇宫 // BOSS锁定皇宫目标
#WAIT 35000
goto @Wave4
// 后续波次按上述逻辑补充,逐步增加怪物强度与数量,此处省略
// 攻城结束触发
(@EndSiege)
#ACT
MONCLEAR 土城 // 清除土城剩余攻城怪物
SENDMSG 0 【攻城结束】本次怪物攻城已结束,感谢各位玩家参与防御!
#SAY
怪物攻城圆满结束,可前往NPC处领取防御奖励。
@goto @Exit
手动运行说明:脚本编写完成后保存至对应目录,GM在游戏内输入@RunQuest MonsterSiege.txt @StartSiege即可启动;需终止攻城时,输入@RunQuest MonsterSiege.txt @EndSiege,触发怪物清除逻辑。
四、移动性效果优化与适配调整
1. 移动节奏优化
- 波次间隔调整:根据玩家数量与实力设定间隔,玩家较多时缩短至20-25秒/波,玩家较少时延长至35-40秒/波,避免节奏过快或过慢。
- 移动速度分级:小怪速度设为4-6,精英怪设为6-8,BOSS设为3-5,模拟真实攻城节奏,BOSS虽移动慢但血量攻击更高,形成压迫感。
2. 不同引擎适配调整
- Hero/GEE/GOM引擎:直接使用上述脚本,命令语法通用,仅需核对地图名、城门名称与服务端配置一致,路径点需在脚本中提前定义坐标(如#DEFINE 路径点1 125 85)。
- Lua引擎:命令格式调整为函数式,核心逻辑不变,示例:Monster("土城","攻城小怪",50,30,20,8)、MoveMonster("土城","攻城小怪",120,80,5),需放入对应Lua脚本文件手动调用。
- 旧版引擎:部分旧版引擎不支持WALKMONSTER命令,可通过多次MOVEMONSTER命令拼接路径,实现逐步移动,如先移动至中间坐标,再跳转至目标坐标。
五、常见问题及排查方法
- 怪物不移动:检查MOVEMONSTER/WALKMONSTER命令参数,确保地图名、怪物名称与配置一致;核对目标坐标是否在地图有效范围内,超出范围则怪物无响应。
- 手动触发无效:确认GM权限是否足够,部分引擎需最高GM权限(权限等级10);检查脚本文件名与调用命令一致,避免拼写错误。
- 怪物攻击无目标:补充ATTACKTARGET命令,明确进攻目标;检查城门、皇宫等目标是否在服务端配置中注册,未注册则无法锁定。
- 波次衔接异常:调整#WAIT命令时间参数,确保前一波怪物推进至指定位置后再触发下一波;避免同时刷新大量怪物,导致移动指令冲突。
六、实操注意要点
1. 手动触发前先在测试服验证脚本,重点测试怪物移动路径、波次衔接、目标锁定,无异常后再在正式服运行。
2. 攻城过程中可手动干预脚本,如输入GM命令补充怪物、调整移动速度,应对突发情况(如玩家防御过强或过弱)。
3. 脚本中加入怪物数量检测,当某一波怪物剩余数量不足30%时,自动补充刷新,维持攻城压力。
4. 攻城结束后务必执行清除命令(MONCLEAR),避免残留怪物干扰日常游戏,同时备份攻城数据(如击杀统计),用于发放奖励。

