当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇闯关地图脚本设置:人数时间限制+自动刷怪新手易懂

热度:
一、核心需求与准备工具

需求明确:10层闯关地图,每层仅限1人,共支持10人同时闯关;每层停留≤30分钟,超时返土城;玩家进入任意层自动刷对应BOSS。准备工具:DBC数据库(查地图/怪物ID)、脚本编辑器(HeroM2/GOM通用)、服务端目录下“MapInfo.txt”(确认10层地图ID,如101-110)。

二、全局控制脚本(核心触发)

先在全局脚本中设置触发规则,所有闯关相关逻辑均通过此入口关联,文件路径:Mir200\Envir\QManage.txt(全局NPC管理脚本)。添加以下代码,作用是检测玩家进入闯关地图的动作并触发后续规则:

#if
CheckMapID101-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
MoveMap3333333//人数超限,返回土城(3为土城地图ID,333333为坐标,可改)
#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//绑定超时事件
#SAVEVARIntegerMapUser_<$CURRENTMAPID><$USERNAME>//记录当前层玩家,便于释放

[@TimeOut]
#ACT
MoveMap3333333//超时返回土城
ClearVarMapUser_<$CURRENTMAPID>//清除该层玩家记录,允许新玩家进入
#SAY
30分钟时间已到,自动为您返回安全区!

模块3:玩家进入自动刷怪脚本(@AutoSpawn触发)

根据玩家进入的地图层,自动刷对应BOSS,确保每个玩家进入时都有怪可打。需提前用DBC数据库查好10层BOSS的怪物ID(如1001-1010对应1-10层BOSS)。

[@AutoSpawn]
#IF
CheckMapID101//第一层地图ID
#ACT
MonGen10011100120//刷1只ID1001的BOSS,坐标100120(可改)
#SAY
第一层BOSS已刷新,击败后找NPC进入下一层!

#IF
CheckMapID102//第二层地图ID
#ACT
MonGen10021110130
#SAY
第二层BOSS已刷新,加油!

//以此类推,复制上述结构,将MapID改为103-110,怪物ID改为1003-1010,坐标按需调整
//第十层示例:
#IF
CheckMapID110//第十层地图ID
#ACT
MonGen10101150180
#SAY
最终BOSS已刷新,击败即可通关!

模块4:NPC进入下一层脚本(每层NPC通用)

每层NPC脚本控制玩家进入下一层,需判断玩家是否击败当前层BOSS。NPC脚本文件路径:Mir200\Envir\NPCGen.txt,找到对应层NPC(如“闯关指引官”),添加代码:

[@main]
#IF
CheckMonsterDie1001//检测当前层BOSS是否被击败(对应怪物ID)
CheckMapUserCount<$NEXTMAPID><=1//检测下一层人数($NEXTMAPID替换为下一层ID,如102)
#ACT
MoveMap<$NEXTMAPID>100120//传送至下一层
ClearVarMapUser_<$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.坐标参数(如100120)需参考对应地图的安全区域,避免玩家传送后卡在障碍物中。

3.测试时先在单独的测试服操作,提前备份原始脚本文件,防止修改失误影响现有游戏数据。
[顶部]