一、核心需求与准备工具
需求明确:10层闯关地图,每层仅限1人,共支持10人同时闯关;每层停留≤30分钟,超时返土城;玩家进入任意层自动刷对应BOSS。准备工具:DBC数据库(查地图/怪物ID)、脚本编辑器(HeroM2/GOM通用)、服务端目录下“MapInfo.txt”(确认10层地图ID,如101-110)。
二、全局控制脚本(核心触发)
先在全局脚本中设置触发规则,所有闯关相关逻辑均通过此入口关联,文件路径:Mir200\Envir\QManage.txt(全局NPC管理脚本)。添加以下代码,作用是检测玩家进入闯关地图的动作并触发后续规则:
#if
CheckMapID 101-110 // 替换为你的10层闯关地图ID,用减号连接
#act
CallFunction ..\Envir\MapQuest\LevelMap\LevelControl.txt @EnterCheck // 调用专属控制脚本
#say
正在检测进入条件,请稍候...
三、分层脚本设置(按功能拆分)
在服务端新建专属脚本目录:Mir200\Envir\MapQuest\LevelMap,新建“LevelControl.txt”文件,写入以下三大模块脚本。
模块1:每层1人限制脚本(@EnterCheck触发)
核心逻辑:判断玩家当前进入的地图层,检测该层实时人数,超1人则拒绝进入,符合条件则放行并记录状态。
[@EnterCheck]
#IF
CheckMapUserCount <$CURRENTMAPID> > 1 // 检测当前地图(玩家进入的层)人数
#ACT
MoveMap 3 333 333 // 人数超限,返回土城(3为土城地图ID,333,333为坐标,可改)
#SAY
当前层已有玩家闯关,请稍候再试!
#ELSEACT
CallFunction ..\Envir\MapQuest\LevelMap\LevelControl.txt @TimeLimit // 人数合规,触发时间限制
CallFunction ..\Envir\MapQuest\LevelMap\LevelControl.txt @AutoSpawn // 触发自动刷怪
#SAY
进入成功!每层限时30分钟,击败BOSS后找NPC进入下一层。
模块2:30分钟时间限制脚本(@TimeLimit触发)
作用:玩家进入地图后立即启动计时,30分钟到自动传回土城,同时清除该层占用状态。
[@TimeLimit]
#ACT
MapTimeLimit <$CURRENTMAPID> 30 // 设置当前地图停留时限30分钟
BindMapEvent <$CURRENTMAPID> @TimeOut // 绑定超时事件
#SAVEVAR Integer MapUser_<$CURRENTMAPID> <$USERNAME> // 记录当前层玩家,便于释放
[@TimeOut]
#ACT
MoveMap 3 333 333 // 超时返回土城
ClearVar MapUser_<$CURRENTMAPID> // 清除该层玩家记录,允许新玩家进入
#SAY
30分钟时间已到,自动为您返回安全区!
模块3:玩家进入自动刷怪脚本(@AutoSpawn触发)
根据玩家进入的地图层,自动刷对应BOSS,确保每个玩家进入时都有怪可打。需提前用DBC数据库查好10层BOSS的怪物ID(如1001-1010对应1-10层BOSS)。
[@AutoSpawn]
#IF
CheckMapID 101 // 第一层地图ID
#ACT
MonGen 1001 1 100 120 // 刷1只ID1001的BOSS,坐标100,120(可改)
#SAY
第一层BOSS已刷新,击败后找NPC进入下一层!
#IF
CheckMapID 102 // 第二层地图ID
#ACT
MonGen 1002 1 110 130
#SAY
第二层BOSS已刷新,加油!
// 以此类推,复制上述结构,将MapID改为103-110,怪物ID改为1003-1010,坐标按需调整
// 第十层示例:
#IF
CheckMapID 110 // 第十层地图ID
#ACT
MonGen 1010 1 150 180
#SAY
最终BOSS已刷新,击败即可通关!
模块4:NPC进入下一层脚本(每层NPC通用)
每层NPC脚本控制玩家进入下一层,需判断玩家是否击败当前层BOSS。NPC脚本文件路径:Mir200\Envir\NPCGen.txt,找到对应层NPC(如“闯关指引官”),添加代码:
[@main]
#IF
CheckMonsterDie 1001 // 检测当前层BOSS是否被击败(对应怪物ID)
CheckMapUserCount <$NEXTMAPID> <=1 // 检测下一层人数($NEXTMAPID替换为下一层ID,如102)
#ACT
MoveMap <$NEXTMAPID> 100 120 // 传送至下一层
ClearVar MapUser_<$CURRENTMAPID> // 释放当前层名额
#SAY
恭喜!即将进入下一层闯关。
#ELSEACT
#SAY
当前层BOSS未击败,或下一层已有玩家,请稍候!
四、脚本存放与生效步骤
1. 全局触发脚本:直接写入Mir200\Envir\QManage.txt末尾,无需新建文件。
2. 专属控制脚本:在Mir200\Envir\MapQuest下新建“LevelMap”文件夹,将“LevelControl.txt”放入其中。
3. NPC脚本:修改Mir200\Envir\NPCGen.txt中对应NPC的脚本内容,确保NPC已放置在各层地图中。
4. 生效方式:保存所有脚本文件,关闭服务端后重新启动,进入游戏即可测试。
五、关键提醒
1. 地图ID和怪物ID需从“MapInfo.txt”和DBC数据库的“Monster.DB”中查询,确保与脚本内ID一致,否则脚本失效。
2. 坐标参数(如100,120)需参考对应地图的安全区域,避免玩家传送后卡在障碍物中。
3. 测试时先在单独的测试服操作,提前备份原始脚本文件,防止修改失误影响现有游戏数据。
传奇闯关地图脚本设置:人数时间限制+自动刷怪 新手易懂
来源:
作者:
点击:

