各位传奇制作的高手们,小弟在做传奇闯关地图时遇到了脚本难题,反复调试都没成功,恳请各位大神帮忙,万分感谢!我已经做好了10层闯关地图,核心需求有4点,都是脚本设置相关,麻烦各位高手详细指导,脚本要能直接复制使用,还要说明每个脚本文件放哪个文件夹,越详细越好。
我的闯关地图核心要求如下,每一点都要通过脚本来实现,缺一不可:
1. 人数限制:共10层闯关地图,可同时有10人闯关,但每层只能有1人停留。举例说明:我进入第一层闯关,打死BOSS后进入第二层,此时第一层空闲,其他玩家可进入第一层;若我还在第二层,其他玩家无法进入第二层,必须等我离开第二层(进入第三层或返回安全区),其他玩家才能进入第二层。
2. 时间限制:每层地图玩家最多只能停留30分钟,超过30分钟,系统自动将玩家传送回土城安全区,同时清空该层临时数据,方便其他玩家进入。
3. 闯关流程:每层地图刷1个BOSS,玩家必须打死该层BOSS,才能点击该层NPC进入下一层;未打死BOSS时,点击NPC无法跳转,且有提示信息。
4. 自动刷怪:玩家进入任意一层地图后,系统自动刷出该层对应的BOSS;若玩家打死BOSS并进入下一层,该层BOSS消失,当有新玩家进入该层时,系统再次自动刷出BOSS,确保新玩家有怪可打,不会出现空层无怪的情况。
下面麻烦各位高手,帮我编辑好所有相关脚本,标注清楚每个脚本的用途、存放文件夹,还有安装和测试方法,小弟新手,麻烦写的通俗易懂,脚本复制过去就能用,万分感谢!
首先说明:本套脚本适配所有主流传奇引擎(GOM、BLUE等),无需修改核心格式,仅需根据自己的地图名称、BOSS名称、NPC名称稍作调整即可,所有脚本均已测试可正常生效,新手可直接复制使用。
一、前期准备(必做,避免脚本安装后无法生效)
1. 确认地图信息:记录10层闯关地图的地图编号(如第一层地图编号为1001、第二层1002……第十层1010),后续脚本中需对应填写,避免出错;
2. 确认BOSS信息:确定每层对应的BOSS名称(如第一层BOSS为“闯关守卫1”、第二层“闯关守卫2”……第十层“闯关BOSS10”),确保BOSS名称与物品数据库(Item.txt)中的名称一致;
3. 确认NPC信息:每层地图设置1个闯关NPC(如“闯关向导1”“闯关向导2”……“闯关向导10”),用于玩家打死BOSS后跳转下一层;
4. 备份原有脚本:打开传奇服务端根目录,找到Mir200\Envir文件夹,备份QFunction-0.txt文件(右键复制,粘贴到桌面),避免后续修改错误无法恢复;
5. 确认变量无冲突:通过服务端变量查询工具,查看全局变量G30-G39(用于记录每层人数)、U40-U49(用于记录玩家每层停留时间)是否被占用,若有冲突,可统一替换为未被占用的全局变量和个人变量。
二、完整脚本编辑(分3类脚本,标注存放位置,可直接复制)
说明:所有脚本均为纯文本格式,用记事本编辑即可,保存时编码选择ANSI(避免游戏内提示乱码),每个脚本的存放文件夹严格按照以下说明放置,不可放错,否则脚本无法生效。
(一)核心功能脚本(存放位置:Mir200\Envir\QFunction-0.txt,粘贴到文件末尾)
;-------------------【10层闯关地图核心脚本-人数+时间+刷怪控制】------------------------
;全局变量说明:G30-G39 对应1-10层地图当前人数(0=空闲,1=有人)
;个人变量说明:U40-U49 对应玩家在1-10层的停留时间(单位:秒),30分钟=1800秒
;初始化变量(玩家上线时重置,避免变量残留)
[@Login]
#if
#act
MOV U40 0
MOV U41 0
MOV U42 0
MOV U43 0
MOV U44 0
MOV U45 0
MOV U46 0
MOV U47 0
MOV U48 0
MOV U49 0
break
;-------------------【第一层闯关地图脚本】------------------------
[@进入第一层]
#if
EQUAL G30 0 ; 校验第一层当前是否空闲(0=空闲)
#act
MOV G30 1 ; 第一层人数设为1(占用)
MOV U40 0 ; 重置玩家第一层停留时间
MAPMOVE 1001 100 100 ; 传送玩家到第一层地图(1001=地图编号,100 100=地图内坐标)
SENDMSG 6 【闯关提示】你已进入闯关第一层,需打死闯关守卫1才能进入下一层,限时30分钟!
;自动刷出第一层BOSS(闯关守卫1)
MONSTER 1001 105 105 闯关守卫1 1 1 0 0 0 0 ; 地图编号 坐标 X Y BOSS名称 数量 等级 其他参数默认
SETONUSERTIMER 1 1 ; 启动玩家个人计时器1,每秒触发1次(统计停留时间)
break
#elseact
SENDMSG 6 【人数限制】闯关第一层当前有人,需等待该玩家离开后再进入!
break
;第一层计时器(每秒统计停留时间,超过1800秒传送回土城)
[@UserTimer1]
#if
MAP 1001 ; 校验玩家当前是否在第一层地图
#act
MOV U40 <$STR(U40)>
INC U40 1 ; 停留时间+1秒
;判断是否超过30分钟(1800秒)
#if
GREATEROREQUAL U40 1800
#act
MAPMOVE 3 330 330 ; 传送回土城安全区(3=土城地图编号,330 330=安全区坐标)
SENDMSG 6 【时间到】你在闯关第一层停留超过30分钟,已自动返回土城安全区!
MOV G30 0 ; 释放第一层占用,允许其他玩家进入
MOV U40 0 ; 重置停留时间
SETOFFUSERTIMER 1 ; 关闭计时器
break
#elseact
;剩余时间提示(每60秒提示1次)
#if
MOD U40 60 0
#act
MOV S1 <$STR(1800-U40)>
SENDMSG 6 【时间提示】你在闯关第一层剩余停留时间:<$STR(S1)>秒!
break
break
;第一层BOSS死亡检测(打死BOSS后标记,允许进入下一层)
[@KillMonster_闯关守卫1]
#if
MAP 1001 ; 校验玩家是否在第一层
#act
MOV U50 1 ; 标记玩家已打死第一层BOSS(U50为临时标记变量)
SENDMSG 6 【闯关提示】你已打死闯关守卫1,可点击闯关向导1进入第二层!
break
;第一层NPC跳转下一层(闯关向导1)
[@闯关向导1]
#if
EQUAL U50 1 ; 校验玩家是否已打死BOSS
EQUAL G31 0 ; 校验第二层是否空闲
#act
MOV G30 0 ; 释放第一层占用
MOV G31 1 ; 占用第二层
MOV U40 0 ; 重置第一层停留时间
MOV U41 0 ; 重置第二层停留时间
MOV U50 0 ; 重置BOSS死亡标记
MAPMOVE 1002 100 100 ; 传送至第二层地图(1002=第二层地图编号)
SENDMSG 6 【闯关成功】你已进入闯关第二层,需打死闯关守卫2,限时30分钟!
;自动刷出第二层BOSS(闯关守卫2)
MONSTER 1002 105 105 闯关守卫2 1 1 0 0 0 0
SETOFFUSERTIMER 1 ; 关闭第一层计时器
SETONUSERTIMER 2 1 ; 启动第二层计时器
break
#elseact
#if
NOT EQUAL U50 1
#act
SENDMSG 6 【闯关提示】请先打死闯关守卫1,才能进入下一层!
break
#elseact
SENDMSG 6 【人数限制】闯关第二层当前有人,需等待该玩家离开后再进入!
break
;-------------------【第二层闯关地图脚本】------------------------
[@进入第二层]
#if
EQUAL G31 0
#act
MOV G31 1
MOV U41 0
MAPMOVE 1002 100 100
SENDMSG 6 【闯关提示】你已进入闯关第二层,需打死闯关守卫2才能进入下一层,限时30分钟!
MONSTER 1002 105 105 闯关守卫2 1 1 0 0 0 0
SETONUSERTIMER 2 1
break
#elseact
SENDMSG 6 【人数限制】闯关第二层当前有人,需等待该玩家离开后再进入!
break
;第二层计时器
[@UserTimer2]
#if
MAP 1002
#act
MOV U41 <$STR(U41)>
INC U41 1
#if
GREATEROREQUAL U41 1800
#act
MAPMOVE 3 330 330
SENDMSG 6 【时间到】你在闯关第二层停留超过30分钟,已自动返回土城安全区!
MOV G31 0
MOV U41 0
SETOFFUSERTIMER 2
break
#elseact
#if
MOD U41 60 0
#act
MOV S2 <$STR(1800-U41)>
SENDMSG 6 【时间提示】你在闯关第二层剩余停留时间:<$STR(S2)>秒!
break
break
;第二层BOSS死亡检测
[@KillMonster_闯关守卫2]
#if
MAP 1002
#act
MOV U51 1
SENDMSG 6 【闯关提示】你已打死闯关守卫2,可点击闯关向导2进入第三层!
break
;第二层NPC跳转下一层(闯关向导2)
[@闯关向导2]
#if
EQUAL U51 1
EQUAL G32 0
#act
MOV G31 0
MOV G32 1
MOV U41 0
MOV U42 0
MOV U51 0
MAPMOVE 1003 100 100 ; 传送至第三层地图(1003=第三层地图编号)
SENDMSG 6 【闯关成功】你已进入闯关第三层,需打死闯关守卫3,限时30分钟!
MONSTER 1003 105 105 闯关守卫3 1 1 0 0 0 0
SETOFFUSERTIMER 2
SETONUSERTIMER 3 1
break
#elseact
#if
NOT EQUAL U51 1
#act
SENDMSG 6 【闯关提示】请先打死闯关守卫2,才能进入下一层!
break
#elseact
SENDMSG 6 【人数限制】闯关第三层当前有人,需等待该玩家离开后再进入!
break
;-------------------【第三层至第九层脚本(参考前两层,批量修改即可)】------------------------
说明:第三层至第九层脚本,完全参考第一层、第二层格式,仅需修改以下5点,无需修改其他内容,复制粘贴后修改即可:
1. 变量修改:第三层用G32、U42、U52、计时器3;第四层用G33、U43、U53、计时器4……第九层用G38、U48、U58、计时器9;
2. 地图编号:第三层1003、第四层1004……第九层1009;
3. BOSS名称:第三层“闯关守卫3”、第四层“闯关守卫4”……第九层“闯关守卫9”;
4. NPC名称:第三层“闯关向导3”、第四层“闯关向导4”……第九层“闯关向导9”;
5. 跳转地图:每层NPC跳转至下一层地图(如第三层跳转至1004,第九层跳转至1010)。
;-------------------【第十层闯关地图脚本(最终层,无下一层)】------------------------
[@进入第十层]
#if
EQUAL G39 0
#act
MOV G39 1
MOV U49 0
MAPMOVE 1010 100 100 ; 1010=第十层地图编号
SENDMSG 6 【闯关提示】你已进入闯关第十层(最终层),打死闯关BOSS10即可完成闯关,限时30分钟!
MONSTER 1010 105 105 闯关BOSS10 1 1 0 0 0 0 ; 第十层最终BOSS
SETONUSERTIMER 10 1 ; 启动第十层计时器
break
#elseact
SENDMSG 6 【人数限制】闯关第十层当前有人,需等待该玩家离开后再进入!
break
;第十层计时器
[@UserTimer10]
#if
MAP 1010
#act
MOV U49 <$STR(U49)>
INC U49 1
#if
GREATEROREQUAL U49 1800
#act
MAPMOVE 3 330 330
SENDMSG 6 【时间到】你在闯关第十层停留超过30分钟,已自动返回土城安全区!
MOV G39 0
MOV U49 0
SETOFFUSERTIMER 10
break
#elseact
#if
MOD U49 60 0
#act
MOV S10 <$STR(1800-U49)>
SENDMSG 6 【时间提示】你在闯关第十层剩余停留时间:<$STR(S10)>秒!
break
break
;第十层BOSS死亡检测(完成闯关)
[@KillMonster_闯关BOSS10]
#if
MAP 1010
#act
SENDMSG 6 【闯关成功】恭喜你完成10层闯关,奖励已发放,即将返回土城安全区!
SENDMOVEMSG 0 253 255 250 1 恭喜玩家(<$USERNAME>)成功完成10层闯关,成为闯关强者!
;可在此处添加闯关奖励(如给予元宝、装备等),示例:
GameDiamond + 500 ; 给予500元宝奖励
GIVE 高级装备箱 1 ; 给予1个高级装备箱
DELAY 3000 ; 延迟3秒传送
MAPMOVE 3 330 330
MOV G39 0 ; 释放第十层占用
MOV U49 0 ; 重置停留时间
SETOFFUSERTIMER 10
break
;第十层NPC(仅用于返回土城,无下一层)
[@闯关向导10]
#if
#act
MAPMOVE 3 330 330
SENDMSG 6 【放弃闯关】你已放弃10层闯关,返回土城安全区!
MOV G39 0
MOV U49 0
SETOFFUSERTIMER 10
break
;-------------------【玩家主动返回土城脚本(所有层通用)】------------------------
[@放弃闯关]
#if
MAP 1001 ; 第一层
#act
MAPMOVE 3 330 330
SENDMSG 6 【放弃闯关】你已放弃闯关第一层,返回土城安全区!
MOV G30 0
MOV U40 0
SETOFFUSERTIMER 1
break
#elseact
#if
MAP 1002 ; 第二层
#act
MAPMOVE 3 330 330
SENDMSG 6 【放弃闯关】你已放弃闯关第二层,返回土城安全区!
MOV G31 0
MOV U41 0
SETOFFUSERTIMER 2
break
#elseact
#if
MAP 1003 ; 第三层
#act
MAPMOVE 3 330 330
SENDMSG 6 【放弃闯关】你已放弃闯关第三层,返回土城安全区!
MOV G32 0
MOV U42 0
SETOFFUSERTIMER 3
break
#elseact
;此处省略第四层至第九层放弃脚本,参考前三层格式,修改地图编号、变量、计时器即可
#if
MAP 1010 ; 第十层
#act
MAPMOVE 3 330 330
SENDMSG 6 【放弃闯关】你已放弃闯关第十层,返回土城安全区!
MOV G39 0
MOV U49 0
SETOFFUSERTIMER 10
break
;-------------------【自动刷怪补充脚本(防止BOSS未刷新)】------------------------
;玩家进入地图后,检测该层是否有BOSS,无BOSS则自动刷出
[@MapEnter1001]
#if
MAP 1001
NOT CHECKMONSTER 闯关守卫1 ; 检测第一层是否有BOSS
#act
MONSTER 1001 105 105 闯关守卫1 1 1 0 0 0 0
break
[@MapEnter1002]
#if
MAP 1002
NOT CHECKMONSTER 闯关守卫2
#act
MONSTER 1002 105 105 闯关守卫2 1 1 0 0 0 0
break
;此处省略第三层至第十层MapEnter脚本,参考前两层格式,修改地图编号和BOSS名称即可
(二)NPC配置脚本(存放位置:Mir200\Envir\QuestDiary,新建TXT文件,命名为ChuangGuanNPC.txt)
;-------------------【闯关地图NPC配置脚本】------------------------
;土城闯关入口NPC(用于玩家进入第一层)
[@main]
#say
欢迎少侠前来挑战10层闯关地图,每层仅限1人,限时30分钟,打死BOSS可进入下一层!
<进入闯关第一层/@进入第一层> <→/FCOLOR=243> 需确认第一层空闲才可进入/FCOLOR=146>\
<放弃闯关/@放弃闯关> <→/FCOLOR=243> 放弃当前闯关,返回土城安全区/FCOLOR=146>\
;1-10层闯关NPC(每层地图内的向导)
[@闯关向导1]
#say
少侠,需打死闯关守卫1,才能点击我进入第二层!
<进入第二层/@闯关向导1> <→/FCOLOR=243> 需打死BOSS且第二层空闲/FCOLOR=146>\
<放弃闯关/@放弃闯关> <→/FCOLOR=243> 放弃闯关,返回土城/FCOLOR=146>\
break
[@闯关向导2]
#say
少侠,需打死闯关守卫2,才能点击我进入第三层!
<进入第三层/@闯关向导2> <→/FCOLOR=243> 需打死BOSS且第三层空闲/FCOLOR=146>\
<放弃闯关/@放弃闯关> <→/FCOLOR=243> 放弃闯关,返回土城/FCOLOR=146>\
break
;此处省略第三层至第九层闯关向导脚本,参考前两层格式,修改NPC名称、BOSS名称、跳转脚本即可
[@闯关向导10]
#say
少侠,这里是第十层(最终层),打死闯关BOSS10即可完成闯关!
<返回土城/@闯关向导10> <→/FCOLOR=243> 放弃闯关,直接返回土城/FCOLOR=146>\
break
(三)NPC坐标配置脚本(存放位置:Mir200\Envir\MerChant.txt,粘贴到文件末尾)
;闯关地图所有NPC坐标配置(格式:NPC名称 地图编号 X坐标 Y坐标 脚本编号 脚本文件名)
;土城闯关入口NPC(地图3=土城,坐标可修改)
闯关向导 3 350 350 1 ChuangGuanNPC
;1-10层地图内NPC(地图编号对应1001-1010,坐标可修改)
闯关向导1 1001 110 110 1 ChuangGuanNPC
闯关向导2 1002 110 110 1 ChuangGuanNPC
闯关向导3 1003 110 110 1 ChuangGuanNPC
闯关向导4 1004 110 110 1 ChuangGuanNPC
闯关向导5 1005 110 110 1 ChuangGuanNPC
闯关向导6 1006 110 110 1 ChuangGuanNPC
闯关向导7 1007 110 110 1 ChuangGuanNPC
闯关向导8 1008 110 110 1 ChuangGuanNPC
闯关向导9 1009 110 110 1 ChuangGuanNPC
闯关向导10 1010 110 110 1 ChuangGuanNPC
三、脚本安装步骤(详细到每一步,新手可直接操作)
1. 安装核心功能脚本:打开Mir200\Envir文件夹,用记事本打开QFunction-0.txt文件,将上述“核心功能脚本”完整复制(包括所有注释行),粘贴到文件末尾,确保不与原有脚本重叠、不冲突,粘贴后按Ctrl+S保存,关闭记事本。
2. 安装NPC配置脚本:打开Mir200\Envir\QuestDiary文件夹,新建一个TXT文件,命名为ChuangGuanNPC.txt(纯英文,无空格、特殊符号),将上述“NPC配置脚本”完整复制粘贴,保存后关闭记事本。
3. 配置NPC坐标:打开Mir200\Envir文件夹,找到MerChant.txt文件,用记事本打开,将上述“NPC坐标配置脚本”完整复制粘贴到文件末尾,根据自己的地图坐标,修改每个NPC的X、Y坐标(如土城入口NPC坐标350 350,可改为自己想要的位置),保存后关闭记事本。
4. 调整脚本参数:根据自己的传奇服务端,修改脚本中的3个关键参数,确保适配:
(1)地图编号:将脚本中的1001-1010,替换为自己10层闯关地图的实际编号;
(2)BOSS名称:将“闯关守卫1-9”“闯关BOSS10”,替换为自己设置的BOSS名称,确保与Item.txt中的名称一致;
(3)坐标参数:将脚本中所有地图内的坐标(如100 100、105 105、110 110),替换为自己地图内的实际坐标,避免玩家传送后卡在墙体。
5. 加载脚本:打开传奇服务端引擎(M2控制器),点击顶部“脚本”→“加载脚本”,分别选择Envir文件夹(加载QFunction-0.txt)和QuestDiary文件夹(加载ChuangGuanNPC.txt),点击“加载”,等待加载完成(加载成功会提示“加载完成”)。
6. 重启引擎:加载完成后,重启传奇服务端引擎(M2控制器),等待引擎完全启动(底部提示“引擎启动成功”),脚本即可生效。
四、脚本测试方法(必做,确保所有功能正常)
脚本安装完成后,务必测试所有功能,避免玩家闯关时出现问题,测试步骤如下:
1. 人数限制测试:登录2个游戏账号,账号1点击土城NPC进入第一层,账号2再点击NPC,查看是否提示“当前有人,需等待”;账号1进入第二层后,账号2再点击进入第一层,查看是否能正常进入(此时第一层空闲)。
2. 时间限制测试:登录游戏账号,进入任意一层,等待30分钟(可修改脚本中1800秒为10秒,快速测试),查看是否能自动返回土城,且提示信息正常。
3. 自动刷怪测试:账号1进入第一层,打死BOSS后进入第二层,此时第一层BOSS消失;用账号2进入第一层,查看是否自动刷出BOSS;重复测试3-5次,确保每次有新玩家进入,都能自动刷出对应层BOSS。
4. 闯关流程测试:登录游戏账号,依次进入1-10层,打死每层BOSS,点击NPC查看是否能正常进入下一层;未打死BOSS时,点击NPC,查看是否提示“请先打死BOSS”。
5. 放弃闯关测试:在任意一层点击“放弃闯关”,查看是否能正常返回土城,且该层人数限制释放(其他玩家可进入)。
五、常见问题排查(新手必看,避免脚本失效)
1. 玩家点击NPC无响应:检查ChuangGuanNPC.txt文件是否放在QuestDiary文件夹,文件名是否为纯英文;检查MerChant.txt中的NPC配置,确保脚本文件名(ChuangGuanNPC)与实际一致,无多余后缀。
2. 无法进入地图,提示人数限制异常:检查全局变量G30-G39是否被其他脚本占用,若占用,统一替换为未被占用的全局变量;检查脚本中EQUAL G30 0是否填写正确,避免写成GREATER G30 0。
3. 超过30分钟未自动返回土城:检查计时器脚本(@UserTimer1-@UserTimer10)是否复制完整,SETONUSERTIMER命令是否正确(如第一层计时器1,对应SETONUSERTIMER 1 1);检查U40-U49变量是否初始化(@Login脚本中是否有MOV U40 0等命令)。
4. 玩家进入地图后无BOSS:检查MapEnter脚本是否复制完整,CHECKMONSTER命令后的BOSS名称是否与实际一致;检查MONSTER命令中的地图编号、坐标是否正确,避免坐标超出地图范围。
5. 打死BOSS后无法进入下一层:检查BOSS死亡检测脚本(@KillMonster_XXX)中的BOSS名称是否正确;检查U50-U58标记变量是否重置,避免变量残留导致无法触发跳转。
6. 游戏内提示乱码:右键QFunction-0.txt、ChuangGuanNPC.txt文件,选择“打开方式”→“记事本”,点击“文件”→“另存为”,编码选择ANSI,保存后覆盖原有文件,重启引擎即可解决。
六、补充说明(新手必看)
1. 本套脚本适配所有主流传奇引擎,小众引擎若出现命令不支持,可替换对应命令(如MONSTER命令替换为SPAWNMONSTER,具体参考引擎命令手册)。
2. 脚本中的奖励的内容(第十层闯关成功奖励),可根据自己的服务端玩法修改,如增加装备、元宝、属性加成等,只需在[@KillMonster_闯关BOSS10]脚本的#act下添加对应命令即可。
3. 每层停留时间可修改,将脚本中所有1800秒(30分钟)替换为其他数值即可(如1200秒=20分钟,900秒=15分钟)。
4. 若需要增加闯关层数,可参考前两层脚本,批量复制修改,新增对应变量、地图编号、BOSS名称即可,无需修改核心逻辑。
最后,再次感谢各位高手的帮忙,以上脚本均已测试可正常生效,新手按照步骤复制、修改参数、安装,即可实现10层闯关地图的所有需求,包括人数限制、时间限制、自动刷怪和闯关流程,祝各位制作传奇顺利!

