传奇中,如何用手动运行的怪物攻城脚本实现怪物移动性攻城?

来源: 作者: 点击:
在传奇私人服务器里,手动运行的怪物攻城脚本如果想实现 “移动性攻城”—— 让怪物从城外沿着固定路线向城内推进,而不是固定在某个点刷新,需要在脚本里加入路径规划和分阶段移动命令。这种设计能让攻城过程更有层次感,玩家需要在不同位置设防,增加战斗的策略性。下面就具体说说怎么编写这样的脚本。
先明确移动性攻城的核心逻辑
移动性攻城的关键是让怪物 “有秩序地移动”:从攻城起点(比如盟重城外的坐标 300,300)出发,沿着预设路线(比如经过城门、主干道)向攻城终点(比如皇宫门口)推进,途中分批次刷新不同类型的怪物(普通怪、精英怪、BOSS)。
脚本需要解决三个问题:一是设定清晰的移动路径点(比如 5-8 个关键坐标);二是控制怪物在每个路径点的停留时间(让玩家有时间拦截);三是按阶段释放不同强度的怪物,避免一次性刷新导致卡顿。
具体脚本怎么写?分阶段实现移动攻城
以 “盟重城攻城” 为例,脚本分为手动触发入口、路径点设置、怪物分波刷新三个部分,具体写法如下:
手动触发入口(方便 GM 随时启动攻城)
在全局脚本(比如 “Envir\QuestDiary\Global\Admin.txt”)中添加 GM 命令触发标签:
[@ManualSiege] ;GM 输入 “@ManualSiege” 启动攻城
#ACT
SendBroad 6 【系统公告】怪物攻城即将开始!请所有玩家做好准备!
Delay 5000 ;延迟 5 秒(让玩家收到提示)
Goto @SiegeStage1 ;进入第一阶段
第一阶段:城外集结(路径点 1)
在城外刷新第一批怪物,停留 1 分钟后向城门移动:
[@SiegeStage1]
#ACT
;在城外坐标(300,300)刷新 10 只祖玛卫士、5 只祖玛雕像
MonGen 3 300 300 祖玛卫士 10 10 1 ;3 是盟重地图编号,10 是刷新范围,1 是活动状态
MonGen 3 300 300 祖玛雕像 5 10 1
SendBroad 6 【攻城第一阶段】城外出现大量祖玛怪物,正向城门逼近!
SetTimer 60 @SiegeStage2 ;1 分钟后进入第二阶段
第二阶段:攻击城门(路径点 2)
怪物移动到城门坐标(330,260),刷新第二批怪物,停留 90 秒:
[@SiegeStage2]
#ACT
;让第一阶段的怪物向城门移动(MoveMonster 地图 原坐标 X 原坐标 Y 目标 X 目标 Y 范围)
MoveMonster 3 300 300 330 260 20 ;范围 20 格内的怪物都会移动
;在城门附近刷新 3 只祖玛教主(精英怪)
MonGen 3 330 260 祖玛教主 3 5 1
SendBroad 6 【攻城第二阶段】怪物开始攻击城门!请守住城门!
SetTimer 90 @SiegeStage3 ;90 秒后进入第三阶段
第三阶段:城内推进(路径点 3)
怪物突破城门后,向主干道坐标(340,250)移动,刷新第三批怪物:
[@SiegeStage3]
#ACT
MoveMonster 3 330 260 340 250 20 ;从城门向主干道移动
MonGen 3 340 250 沃玛教主 2 5 1 ;刷新更强的沃玛教主
SendBroad 6 【攻城第三阶段】怪物已突破城门,向城内推进!
SetTimer 120 @SiegeStage4 ;2 分钟后进入最终阶段
最终阶段:攻击皇宫(终点)
怪物移动到皇宫门口(350,240),刷新 BOSS 级怪物:
[@SiegeStage4]
#ACT
MoveMonster 3 340 250 350 240 20 ;向皇宫移动
MonGen 3 350 240 虹魔教主 1 3 1 ;刷新终极 BOSS 虹魔教主
SendBroad 6 【攻城最终阶段】虹魔教主带领怪物攻击皇宫!守住最后防线!
SetTimer 180 @SiegeEnd ;3 分钟后攻城结束
攻城结束:清理剩余怪物
[@SiegeEnd]
#ACT
ClearMonster 3 0 ;清除盟重地图内所有活动怪物(0 代表所有类型)
SendBroad 6 【攻城结束】怪物被击退,感谢各位玩家的坚守!
这个脚本的核心是 “MoveMonster” 命令,它能让指定范围内的怪物向目标坐标移动,配合 “SetTimer” 实现阶段过渡,让怪物按路径有序推进。
脚本中的关键命令解析
怪物生成与移动命令:
MonGen 地图编号 X Y 怪物名 数量 范围 状态:在指定区域生成怪物,“状态 1” 代表怪物可移动、主动攻击。
MoveMonster 地图 原 X 原 Y 目标 X 目标 Y 范围:让 “原坐标周围范围格内” 的怪物向 “目标坐标” 移动,路径由引擎自动计算(会绕开障碍物)。
ClearMonster 地图编号 类型:攻城结束后清除怪物,“类型 0” 清除所有怪物。
阶段控制命令:
SetTimer 秒数 标签:设置定时,到时间后自动进入下一阶段(如 60 秒后执行 @SiegeStage2)。
Delay 毫秒数:在执行下一步前延迟(如 Delay 5000 代表延迟 5 秒),给玩家反应时间。
SendBroad 6 内容:全服广播攻城进度,让所有玩家了解当前阶段。
为什么怪物可能不移动?避开这些细节问题
路径被障碍物阻挡:如果两个路径点之间有城墙、建筑等障碍物,怪物可能卡在原地。解决方法:在游戏中实测路径,确保从起点到终点是可通行的(比如沿着城门→主干道→皇宫的直线),必要时增加中间路径点(比如在 335,255 加一个过渡点)。
怪物状态设置错误:MonGen 命令的 “状态” 参数如果设为 0,怪物会固定在刷新点不动。必须设为 1(活动状态),怪物才会响应 MoveMonster 命令。
移动范围太小:MoveMonster 的 “范围” 参数如果小于怪物分布范围,部分怪物会因不在范围内而不移动。建议范围设为 20-30 格(覆盖整个刷新区域)。
阶段间隔太短:如果前一阶段的怪物还没移动到目标点,就进入下一阶段,会导致怪物混乱。建议根据路径长度调整间隔(比如城外到城门距离短,设 60 秒;城门到皇宫距离长,设 120 秒)。
如何手动干预?增加 GM 控制功能
手动运行的脚本需要允许 GM 随时调整进度,可添加暂停、加速、终止功能:
[@SiegeControl]
#SAY
╔══════════════════╗
┆ 攻城控制面板 ┆
┆ 当前阶段:% STAGE% ┆
╚══════════════════╝
<暂停攻城 /@SiegePause>
<加速进入下一阶段 /@SiegeSpeed>
<终止攻城 /@SiegeEnd>
[@SiegePause]
#ACT
PauseTimer @SiegeStage2 ;暂停当前阶段的定时(替换为实际阶段标签)
SendBroad 6 【GM 通知】攻城已暂停!
#SAY
攻城已暂停,点击 < 继续 /@SiegeResume > 恢复。
[@SiegeResume]
#ACT
ResumeTimer @SiegeStage2 ;恢复定时
SendBroad 6 【GM 通知】攻城继续进行!
这样 GM 可以根据现场情况调整节奏,避免攻城过快或过慢。
脚本放在哪里?确保手动触发生效
脚本文件:将上述脚本写入 “Envir\QuestDiary\Admin\SiegeScript.txt”,并在主脚本中包含(#INCLUDE SiegeScript.txt)。
GM 命令权限:在 “Mir200\Envir\AdminList.txt” 中,确保 GM 账号的权限等级足够(通常需要权限 10),能执行自定义命令 “@ManualSiege”。
测试触发:GM 在游戏中输入 “@ManualSiege”,看是否按阶段刷新怪物并移动,若没反应,检查脚本是否有错别字,或命令是否被引擎支持。
如何扩展玩法?增加攻城变数
随机路径:让怪物有 2-3 条可选路径(比如正门、侧门、密道),增加玩家防守难度:
[@SiegeStage2]
#IF
Random 2 ;50% 概率
#ACT
MoveMonster 3 300 300 330 260 20 ;走正门
#ELSE
MoveMonster 3 300 300 320 270 20 ;走侧门
#ENDIF
玩家防守奖励:在每个阶段设置 “守住路径点” 的奖励,鼓励玩家参与:
[@SiegeStage2End]
#IF
CheckMonsterCount 3 330 260 10 < 1 ;检查城门附近 10 格内怪物数量 < 1(已守住)
#ACT
MapAllPlayerAddExp 100000 ;给所有在盟重的玩家加 10 万经验
BOSS 掉落加成:让移动到皇宫的虹魔教主掉落稀有装备,提升玩家击杀动力:
[@SiegeStage4]
#ACT
MonGen 3 350 240 虹魔教主 1 3 1
SetMonsterDrop 虹魔教主 屠龙刀 1 ;设置虹魔教主 100% 掉落屠龙刀
其实实现怪物移动性攻城的核心是 “路径点 + 阶段控制”,通过 MoveMonster 命令让怪物按预设路线推进,再用定时命令分阶段释放怪物,模拟真实的攻城节奏。手动运行的优势在于 GM 可以灵活调整,避免脚本机械执行导致的单调。只要确保路径通畅、命令正确,就能让攻城过程既有序又充满挑战。如果你的服务器有现成的固定攻城脚本,也可以参考其怪物刷新逻辑,加入移动命令改造即可。