传奇 闯关地图脚本制作:人数限制 + 限时 + 自动刷怪实现指南

来源: 作者: 点击:
一、脚本核心需求拆解(先明确关键参数)
先统一咱们脚本里要用的 “固定标识”,你后续替换成自己的实际信息即可:
闯关地图编号:第一层 D1、第二层 D2…… 第十层 D10(对应你地图文件的 MapID)
每层传送 NPC:第一层 NPC001、第二层 NPC002…… 第十层 NPC010(你设置的闯关传送 NPC 编号)
每层 BOSS 编号:第一层 BOSS001、第二层 BOSS002…… 第十层 BOSS010(你要刷的 BOSS 怪物编号)
安全区地图编号:土城 01(你服务器的土城 MapID)
二、分模块脚本代码(直接复制修改可用)
模块 1:每层 1 人限制脚本(控制进层人数)
#IF //玩家点击第一层NPC001申请进层时触发
CHECKMAPHUMAN D1 //检查D1地图(第一层)当前人数
<= 0 //如果人数≤0(没人)
#ACT
SET [1000] 1 //设置变量1000=1(标记D1当前有1人)
MAPMOVE D1 300 300 //传送玩家到D1地图的300,300坐标(你第一层的出生点)
SENDMSG 7 【系统】你已进入闯关第一层,30分钟内未通关将被传送回土城! //发送提示
GOTO @StartTime1 //触发30分钟计时脚本(后面模块2会写)
#ELSE
SENDMSG 7 【系统】当前第一层已有玩家闯关,请等待对方通关或超时后再进入! //人数满时提示
#ENDIF

#IF //玩家从第一层D1进第二层D2(点击NPC002)时触发
CHECKMAPHUMAN D2
<= 0
CHECKMAPHUMAN D1 //先检查玩家当前是否在D1
= 1
#ACT
SET [1000] 0 //重置D1的人数变量(玩家离开D1,其他人可进)
SET [1001] 1 //设置D2的人数变量=1
MAPMOVE D2 400 400 //传送到D2的400,400坐标
SENDMSG 7 【系统】你已进入闯关第二层,剩余时间重置为30分钟!
GOTO @StartTime2
#ELSE
SENDMSG 7 【系统】当前第二层已有玩家闯关,请稍后再试!
#ENDIF

// 后面3-10层脚本照上面改:变量1000对应D1、1001对应D2……1009对应D10;地图D1改D3-D10,坐标改你自己的

模块 2:每层 30 分钟限时脚本(超时返回土城)
// 第一层D1的计时脚本(@StartTime1)
[@StartTime1]
SET [2000] %TIME //记录玩家进入D1的当前时间(变量2000存时间)
#LOOP //循环检查时间
WAIT 1000 //每1秒检查一次(1000毫秒=1秒)
#IF
CALC %TIME - [2000] //计算当前时间-进入时间
>= 1800 //30分钟=1800秒,超过1800秒
CHECKMAPHUMAN D1
= 1
#ACT
SET [1000] 0 //重置D1人数变量(让其他人能进)
MAPMOVE 01 500 500 //传送回土城01的500,500安全区
SENDMSG 7 【系统】闯关时间已到,已为你传送回土城!
BREAK //结束计时循环
#ELSE
// 每5分钟给玩家发一次剩余时间提示(可选)
CALC 1800 - (%TIME - [2000])
SENDMSG 7 【系统】闯关第一层剩余时间:%CALC% 秒
#ENDIF
GOTO @StartTime1 //继续循环检查

// 第二层D2的计时脚本(@StartTime2)
[@StartTime2]
SET [2001] %TIME
#LOOP
WAIT 1000
#IF
CALC %TIME - [2001]
>= 1800
CHECKMAPHUMAN D2
= 1
#ACT
SET [1001] 0
MAPMOVE 01 500 500
SENDMSG 7 【系统】闯关时间已到,已为你传送回土城!
BREAK
#ELSE
CALC 1800 - (%TIME - [2001])
SENDMSG 7 【系统】闯关第二层剩余时间:%CALC% 秒
#ENDIF
GOTO @StartTime2

// 3-10层计时脚本照上面改:变量2000对应D1、2001对应D2……2009对应D10

模块 3:玩家进层自动刷怪脚本(没人时不刷,有人进就刷)
#IF //玩家进入D1(第一层)时触发(和进层脚本绑定)
CHECKMAPHUMAN D1
= 1
CHECKMONCOUNT D1 BOSS001 //检查D1地图里BOSS001的数量
<= 0 //如果没BOSS
#ACT
MOVEMONSTER D1 350 350 BOSS001 1 //在D1的350,350坐标刷1只BOSS001
SET [3000] 1 //设置变量3000=1(标记D1已刷BOSS)
SENDMSG 7 【系统】闯关第一层BOSS已刷新,请准备战斗!
#ENDIF

#IF //D1的BOSS001被打死时触发(绑定BOSS死亡事件)
CHECKMONDEAD BOSS001 //检测BOSS001是否死亡
= 1
CHECKMAPHUMAN D1
= 1
#ACT
SET [3000] 0 //重置D1的BOSS变量(下次有人进层会重新刷)
SENDMSG 7 【系统】恭喜你击败第一层BOSS,可找NPC002进入第二层!
#ENDIF

#IF //新玩家进入D1时(前面玩家已通关离开)
CHECKMAPHUMAN D1
= 1
CHECKMONCOUNT D1 BOSS001
<= 0
#ACT
MOVEMONSTER D1 350 350 BOSS001 1 //自动刷新BOSS
SET [3000] 1
SENDMSG 7 【系统】闯关第一层BOSS已刷新,请准备战斗!
#ENDIF

// 2-10层刷怪脚本照上面改:地图D1改D2-D10,BOSS001改BOSS002-BOSS010,变量3000改3001-3009

三、脚本文件存放路径(分引擎说明,别放错!)
1. HERO 引擎(大部分新手用的引擎)
所有脚本代码统一放在:你的服务器文件夹\Mir200\Envir\QuestDiary\ 里
新建一个 TXT 文件,命名为 “闯关地图脚本.txt”,把上面的代码复制进去,保存后关闭
注意:HERO 引擎需要在 “QuestDiary” 文件夹里的 “!Setup.txt” 文件中,添加一行 LoadQuest 闯关地图脚本.txt,这样服务器启动时才会加载你的脚本
2. GEE 引擎(部分进阶玩家用)
脚本放在:你的服务器文件夹\Mir200\Envir\MapQuest\ 里
新建 TXT 文件,命名为 “LevelScript.txt”,复制代码后保存
GEE 引擎不需要额外加载,只要放在 “MapQuest” 文件夹,服务器重启后自动识别
四、调试与修改技巧(避免踩坑)
先测一层,再扩十层:别直接上十层脚本,先把第一层的 “人数限制 + 计时 + 刷怪” 调好,用两个账号测试(一个进层、一个申请进层,看是否提示 “有人”),没问题再复制修改到其他九层
坐标一定要对:脚本里的 “300 300”“350 350” 这些是地图坐标,你要在自己的地图编辑器里,找到每层的 “出生点”“BOSS 刷新点”,把坐标替换成实际数值(地图编辑器里鼠标点位置会显示坐标)
变量别重复:咱们用的 1000-1009(人数)、2000-2009(时间)、3000-3009(刷怪)变量,别和你其他脚本的变量重复,建议在变量名前加你地图的专属前缀(比如加 “LEVEL_”,变成 LEVEL_1000)
测试超时功能:不用等 30 分钟,可临时把脚本里的 “1800 秒” 改成 “60 秒”(1 分钟),测试超时是否能自动传回土城,没问题再改回 1800 秒
五、常见问题解决(新手常遇到的坑)
玩家进层没刷怪?
检查 “CHECKMONCOUNT” 后面的 BOSS 编号是否和你服务器的怪物编号一致(在Mir200\Envir\Monster.txt里查 BOSS 的正确编号)
超时没传回土城?
看 “% TIME” 变量是否生效,HERO 引擎需要在 “Mir200\Envir\GlobalQuest.scp” 里开启时间变量,添加一行 EnableTimeVar 1
多人能进同一层?
确认 “SET [1000] 1” 这行代码是否在进层脚本里生效,可在服务器后台输入 “@var 1000” 查看变量值,玩家进层后应该显示 1,离开后显示 0