一、脚本核心需求拆解(先明确关键参数)
先统一咱们脚本里要用的“固定标识”,你后续替换成自己的实际信息即可:
闯关地图编号:第一层D1、第二层D2……第十层D10(对应你地图文件的MapID)
每层传送NPC:第一层NPC001、第二层NPC002……第十层NPC010(你设置的闯关传送NPC编号)
每层BOSS编号:第一层BOSS001、第二层BOSS002……第十层BOSS010(你要刷的BOSS怪物编号)
安全区地图编号:土城01(你服务器的土城MapID)
二、分模块脚本代码(直接复制修改可用)
模块1:每层1人限制脚本(控制进层人数)
#IF//玩家点击第一层NPC001申请进层时触发
CHECKMAPHUMAND1//检查D1地图(第一层)当前人数
<=0//如果人数≤0(没人)
#ACT
SET[1000]1//设置变量1000=1(标记D1当前有1人)
MAPMOVED1300300//传送玩家到D1地图的300300坐标(你第一层的出生点)
SENDMSG7【系统】你已进入闯关第一层,30分钟内未通关将被传送回土城!//发送提示
GOTO@StartTime1//触发30分钟计时脚本(后面模块2会写)
#ELSE
SENDMSG7【系统】当前第一层已有玩家闯关,请等待对方通关或超时后再进入!//人数满时提示
#ENDIF
#IF//玩家从第一层D1进第二层D2(点击NPC002)时触发
CHECKMAPHUMAND2
<=0
CHECKMAPHUMAND1//先检查玩家当前是否在D1
=1
#ACT
SET[1000]0//重置D1的人数变量(玩家离开D1,其他人可进)
SET[1001]1//设置D2的人数变量=1
MAPMOVED2400400//传送到D2的400400坐标
SENDMSG7【系统】你已进入闯关第二层,剩余时间重置为30分钟!
GOTO@StartTime2
#ELSE
SENDMSG7【系统】当前第二层已有玩家闯关,请稍后再试!
#ENDIF
//后面3-10层脚本照上面改:变量1000对应D1、1001对应D2……1009对应D10;地图D1改D3-D10,坐标改你自己的
模块2:每层30分钟限时脚本(超时返回土城)
//第一层D1的计时脚本(@StartTime1)
[@StartTime1]
SET[2000]%TIME//记录玩家进入D1的当前时间(变量2000存时间)
#LOOP//循环检查时间
WAIT1000//每1秒检查一次(1000毫秒=1秒)
#IF
CALC%TIME-[2000]//计算当前时间-进入时间
>=1800//30分钟=1800秒,超过1800秒
CHECKMAPHUMAND1
=1
#ACT
SET[1000]0//重置D1人数变量(让其他人能进)
MAPMOVE01500500//传送回土城01的500500安全区
SENDMSG7【系统】闯关时间已到,已为你传送回土城!
BREAK//结束计时循环
#ELSE
//每5分钟给玩家发一次剩余时间提示(可选)
CALC1800-(%TIME-[2000])
SENDMSG7【系统】闯关第一层剩余时间:%CALC%秒
#ENDIF
GOTO@StartTime1//继续循环检查
//第二层D2的计时脚本(@StartTime2)
[@StartTime2]
SET[2001]%TIME
#LOOP
WAIT1000
#IF
CALC%TIME-[2001]
>=1800
CHECKMAPHUMAND2
=1
#ACT
SET[1001]0
MAPMOVE01500500
SENDMSG7【系统】闯关时间已到,已为你传送回土城!
BREAK
#ELSE
CALC1800-(%TIME-[2001])
SENDMSG7【系统】闯关第二层剩余时间:%CALC%秒
#ENDIF
GOTO@StartTime2
//3-10层计时脚本照上面改:变量2000对应D1、2001对应D2……2009对应D10
模块3:玩家进层自动刷怪脚本(没人时不刷,有人进就刷)
#IF//玩家进入D1(第一层)时触发(和进层脚本绑定)
CHECKMAPHUMAND1
=1
CHECKMONCOUNTD1BOSS001//检查D1地图里BOSS001的数量
<=0//如果没BOSS
#ACT
MOVEMONSTERD1350350BOSS0011//在D1的350350坐标刷1只BOSS001
SET[3000]1//设置变量3000=1(标记D1已刷BOSS)
SENDMSG7【系统】闯关第一层BOSS已刷新,请准备战斗!
#ENDIF
#IF//D1的BOSS001被打死时触发(绑定BOSS死亡事件)
CHECKMONDEADBOSS001//检测BOSS001是否死亡
=1
CHECKMAPHUMAND1
=1
#ACT
SET[3000]0//重置D1的BOSS变量(下次有人进层会重新刷)
SENDMSG7【系统】恭喜你击败第一层BOSS,可找NPC002进入第二层!
#ENDIF
#IF//新玩家进入D1时(前面玩家已通关离开)
CHECKMAPHUMAND1
=1
CHECKMONCOUNTD1BOSS001
<=0
#ACT
MOVEMONSTERD1350350BOSS0011//自动刷新BOSS
SET[3000]1
SENDMSG7【系统】闯关第一层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”文件夹,服务器重启后自动识别
四、调试与修改技巧(避免踩坑)
先测一层,再扩十层:别直接上十层脚本,先把第一层的“人数限制+计时+刷怪”调好,用两个账号测试(一个进层、一个申请进层,看是否提示“有人”),没问题再复制修改到其他九层
坐标一定要对:脚本里的“300300”“350350”这些是地图坐标,你要在自己的地图编辑器里,找到每层的“出生点”“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”里开启时间变量,添加一行EnableTimeVar1
多人能进同一层?
确认“SET[1000]1”这行代码是否在进层脚本里生效,可在服务器后台输入“@var1000”查看变量值,玩家进层后应该显示1,离开后显示0
先统一咱们脚本里要用的“固定标识”,你后续替换成自己的实际信息即可:
闯关地图编号:第一层D1、第二层D2……第十层D10(对应你地图文件的MapID)
每层传送NPC:第一层NPC001、第二层NPC002……第十层NPC010(你设置的闯关传送NPC编号)
每层BOSS编号:第一层BOSS001、第二层BOSS002……第十层BOSS010(你要刷的BOSS怪物编号)
安全区地图编号:土城01(你服务器的土城MapID)
二、分模块脚本代码(直接复制修改可用)
模块1:每层1人限制脚本(控制进层人数)
#IF//玩家点击第一层NPC001申请进层时触发
CHECKMAPHUMAND1//检查D1地图(第一层)当前人数
<=0//如果人数≤0(没人)
#ACT
SET[1000]1//设置变量1000=1(标记D1当前有1人)
MAPMOVED1300300//传送玩家到D1地图的300300坐标(你第一层的出生点)
SENDMSG7【系统】你已进入闯关第一层,30分钟内未通关将被传送回土城!//发送提示
GOTO@StartTime1//触发30分钟计时脚本(后面模块2会写)
#ELSE
SENDMSG7【系统】当前第一层已有玩家闯关,请等待对方通关或超时后再进入!//人数满时提示
#ENDIF
#IF//玩家从第一层D1进第二层D2(点击NPC002)时触发
CHECKMAPHUMAND2
<=0
CHECKMAPHUMAND1//先检查玩家当前是否在D1
=1
#ACT
SET[1000]0//重置D1的人数变量(玩家离开D1,其他人可进)
SET[1001]1//设置D2的人数变量=1
MAPMOVED2400400//传送到D2的400400坐标
SENDMSG7【系统】你已进入闯关第二层,剩余时间重置为30分钟!
GOTO@StartTime2
#ELSE
SENDMSG7【系统】当前第二层已有玩家闯关,请稍后再试!
#ENDIF
//后面3-10层脚本照上面改:变量1000对应D1、1001对应D2……1009对应D10;地图D1改D3-D10,坐标改你自己的
模块2:每层30分钟限时脚本(超时返回土城)
//第一层D1的计时脚本(@StartTime1)
[@StartTime1]
SET[2000]%TIME//记录玩家进入D1的当前时间(变量2000存时间)
#LOOP//循环检查时间
WAIT1000//每1秒检查一次(1000毫秒=1秒)
#IF
CALC%TIME-[2000]//计算当前时间-进入时间
>=1800//30分钟=1800秒,超过1800秒
CHECKMAPHUMAND1
=1
#ACT
SET[1000]0//重置D1人数变量(让其他人能进)
MAPMOVE01500500//传送回土城01的500500安全区
SENDMSG7【系统】闯关时间已到,已为你传送回土城!
BREAK//结束计时循环
#ELSE
//每5分钟给玩家发一次剩余时间提示(可选)
CALC1800-(%TIME-[2000])
SENDMSG7【系统】闯关第一层剩余时间:%CALC%秒
#ENDIF
GOTO@StartTime1//继续循环检查
//第二层D2的计时脚本(@StartTime2)
[@StartTime2]
SET[2001]%TIME
#LOOP
WAIT1000
#IF
CALC%TIME-[2001]
>=1800
CHECKMAPHUMAND2
=1
#ACT
SET[1001]0
MAPMOVE01500500
SENDMSG7【系统】闯关时间已到,已为你传送回土城!
BREAK
#ELSE
CALC1800-(%TIME-[2001])
SENDMSG7【系统】闯关第二层剩余时间:%CALC%秒
#ENDIF
GOTO@StartTime2
//3-10层计时脚本照上面改:变量2000对应D1、2001对应D2……2009对应D10
模块3:玩家进层自动刷怪脚本(没人时不刷,有人进就刷)
#IF//玩家进入D1(第一层)时触发(和进层脚本绑定)
CHECKMAPHUMAND1
=1
CHECKMONCOUNTD1BOSS001//检查D1地图里BOSS001的数量
<=0//如果没BOSS
#ACT
MOVEMONSTERD1350350BOSS0011//在D1的350350坐标刷1只BOSS001
SET[3000]1//设置变量3000=1(标记D1已刷BOSS)
SENDMSG7【系统】闯关第一层BOSS已刷新,请准备战斗!
#ENDIF
#IF//D1的BOSS001被打死时触发(绑定BOSS死亡事件)
CHECKMONDEADBOSS001//检测BOSS001是否死亡
=1
CHECKMAPHUMAND1
=1
#ACT
SET[3000]0//重置D1的BOSS变量(下次有人进层会重新刷)
SENDMSG7【系统】恭喜你击败第一层BOSS,可找NPC002进入第二层!
#ENDIF
#IF//新玩家进入D1时(前面玩家已通关离开)
CHECKMAPHUMAND1
=1
CHECKMONCOUNTD1BOSS001
<=0
#ACT
MOVEMONSTERD1350350BOSS0011//自动刷新BOSS
SET[3000]1
SENDMSG7【系统】闯关第一层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”文件夹,服务器重启后自动识别
四、调试与修改技巧(避免踩坑)
先测一层,再扩十层:别直接上十层脚本,先把第一层的“人数限制+计时+刷怪”调好,用两个账号测试(一个进层、一个申请进层,看是否提示“有人”),没问题再复制修改到其他九层
坐标一定要对:脚本里的“300300”“350350”这些是地图坐标,你要在自己的地图编辑器里,找到每层的“出生点”“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”里开启时间变量,添加一行EnableTimeVar1
多人能进同一层?
确认“SET[1000]1”这行代码是否在进层脚本里生效,可在服务器后台输入“@var1000”查看变量值,玩家进层后应该显示1,离开后显示0

