当前位置 : 145z游戏站 | 热血传奇 | 传奇游戏 | 

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

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