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

传奇闯关地图脚本制作限制人数时间及自动刷怪完整教程

热度:
各位传奇制作的高手们,小弟在做传奇闯关地图时遇到了脚本难题,反复调试都没成功,恳请各位大神帮忙,万分感谢!我已经做好了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

MOVU400

MOVU410

MOVU420

MOVU430

MOVU440

MOVU450

MOVU460

MOVU470

MOVU480

MOVU490

break

;-------------------【第一层闯关地图脚本】------------------------

[@进入第一层]

#if

EQUALG300;校验第一层当前是否空闲(0=空闲)

#act

MOVG301;第一层人数设为1(占用)

MOVU400;重置玩家第一层停留时间

MAPMOVE1001100100;传送玩家到第一层地图(1001=地图编号,100100=地图内坐标)

SENDMSG6【闯关提示】你已进入闯关第一层,需打死闯关守卫1才能进入下一层,限时30分钟!

;自动刷出第一层BOSS(闯关守卫1)

MONSTER1001105105闯关守卫1110000;地图编号坐标XYBOSS名称数量等级其他参数默认

SETONUSERTIMER11;启动玩家个人计时器1,每秒触发1次(统计停留时间)

break

#elseact

SENDMSG6【人数限制】闯关第一层当前有人,需等待该玩家离开后再进入!

break

;第一层计时器(每秒统计停留时间,超过1800秒传送回土城)

[@UserTimer1]

#if

MAP1001;校验玩家当前是否在第一层地图

#act

MOVU40<$STR(U40)>

INCU401;停留时间+1秒

;判断是否超过30分钟(1800秒)

#if

GREATEROREQUALU401800

#act

MAPMOVE3330330;传送回土城安全区(3=土城地图编号,330330=安全区坐标)

SENDMSG6【时间到】你在闯关第一层停留超过30分钟,已自动返回土城安全区!

MOVG300;释放第一层占用,允许其他玩家进入

MOVU400;重置停留时间

SETOFFUSERTIMER1;关闭计时器

break

#elseact

;剩余时间提示(每60秒提示1次)

#if

MODU40600

#act

MOVS1<$STR(1800-U40)>

SENDMSG6【时间提示】你在闯关第一层剩余停留时间:<$STR(S1)>秒!

break

break

;第一层BOSS死亡检测(打死BOSS后标记,允许进入下一层)

[@KillMonster_闯关守卫1]

#if

MAP1001;校验玩家是否在第一层

#act

MOVU501;标记玩家已打死第一层BOSS(U50为临时标记变量)

SENDMSG6【闯关提示】你已打死闯关守卫1,可点击闯关向导1进入第二层!

break

;第一层NPC跳转下一层(闯关向导1)

[@闯关向导1]

#if

EQUALU501;校验玩家是否已打死BOSS

EQUALG310;校验第二层是否空闲

#act

MOVG300;释放第一层占用

MOVG311;占用第二层

MOVU400;重置第一层停留时间

MOVU410;重置第二层停留时间

MOVU500;重置BOSS死亡标记

MAPMOVE1002100100;传送至第二层地图(1002=第二层地图编号)

SENDMSG6【闯关成功】你已进入闯关第二层,需打死闯关守卫2,限时30分钟!

;自动刷出第二层BOSS(闯关守卫2)

MONSTER1002105105闯关守卫2110000

SETOFFUSERTIMER1;关闭第一层计时器

SETONUSERTIMER21;启动第二层计时器

break

#elseact

#if

NOTEQUALU501

#act

SENDMSG6【闯关提示】请先打死闯关守卫1,才能进入下一层!

break

#elseact

SENDMSG6【人数限制】闯关第二层当前有人,需等待该玩家离开后再进入!

break

;-------------------【第二层闯关地图脚本】------------------------

[@进入第二层]

#if

EQUALG310

#act

MOVG311

MOVU410

MAPMOVE1002100100

SENDMSG6【闯关提示】你已进入闯关第二层,需打死闯关守卫2才能进入下一层,限时30分钟!

MONSTER1002105105闯关守卫2110000

SETONUSERTIMER21

break

#elseact

SENDMSG6【人数限制】闯关第二层当前有人,需等待该玩家离开后再进入!

break

;第二层计时器

[@UserTimer2]

#if

MAP1002

#act

MOVU41<$STR(U41)>

INCU411

#if

GREATEROREQUALU411800

#act

MAPMOVE3330330

SENDMSG6【时间到】你在闯关第二层停留超过30分钟,已自动返回土城安全区!

MOVG310

MOVU410

SETOFFUSERTIMER2

break

#elseact

#if

MODU41600

#act

MOVS2<$STR(1800-U41)>

SENDMSG6【时间提示】你在闯关第二层剩余停留时间:<$STR(S2)>秒!

break

break

;第二层BOSS死亡检测

[@KillMonster_闯关守卫2]

#if

MAP1002

#act

MOVU511

SENDMSG6【闯关提示】你已打死闯关守卫2,可点击闯关向导2进入第三层!

break

;第二层NPC跳转下一层(闯关向导2)

[@闯关向导2]

#if

EQUALU511

EQUALG320

#act

MOVG310

MOVG321

MOVU410

MOVU420

MOVU510

MAPMOVE1003100100;传送至第三层地图(1003=第三层地图编号)

SENDMSG6【闯关成功】你已进入闯关第三层,需打死闯关守卫3,限时30分钟!

MONSTER1003105105闯关守卫3110000

SETOFFUSERTIMER2

SETONUSERTIMER31

break

#elseact

#if

NOTEQUALU511

#act

SENDMSG6【闯关提示】请先打死闯关守卫2,才能进入下一层!

break

#elseact

SENDMSG6【人数限制】闯关第三层当前有人,需等待该玩家离开后再进入!

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

EQUALG390

#act

MOVG391

MOVU490

MAPMOVE1010100100;1010=第十层地图编号

SENDMSG6【闯关提示】你已进入闯关第十层(最终层),打死闯关BOSS10即可完成闯关,限时30分钟!

MONSTER1010105105闯关BOSS10110000;第十层最终BOSS

SETONUSERTIMER101;启动第十层计时器

break

#elseact

SENDMSG6【人数限制】闯关第十层当前有人,需等待该玩家离开后再进入!

break

;第十层计时器

[@UserTimer10]

#if

MAP1010

#act

MOVU49<$STR(U49)>

INCU491

#if

GREATEROREQUALU491800

#act

MAPMOVE3330330

SENDMSG6【时间到】你在闯关第十层停留超过30分钟,已自动返回土城安全区!

MOVG390

MOVU490

SETOFFUSERTIMER10

break

#elseact

#if

MODU49600

#act

MOVS10<$STR(1800-U49)>

SENDMSG6【时间提示】你在闯关第十层剩余停留时间:<$STR(S10)>秒!

break

break

;第十层BOSS死亡检测(完成闯关)

[@KillMonster_闯关BOSS10]

#if

MAP1010

#act

SENDMSG6【闯关成功】恭喜你完成10层闯关,奖励已发放,即将返回土城安全区!

SENDMOVEMSG02532552501恭喜玩家(<$USERNAME>)成功完成10层闯关,成为闯关强者!

;可在此处添加闯关奖励(如给予元宝、装备等),示例:

GameDiamond+500;给予500元宝奖励

GIVE高级装备箱1;给予1个高级装备箱

DELAY3000;延迟3秒传送

MAPMOVE3330330

MOVG390;释放第十层占用

MOVU490;重置停留时间

SETOFFUSERTIMER10

break

;第十层NPC(仅用于返回土城,无下一层)

[@闯关向导10]

#if

#act

MAPMOVE3330330

SENDMSG6【放弃闯关】你已放弃10层闯关,返回土城安全区!

MOVG390

MOVU490

SETOFFUSERTIMER10

break

;-------------------【玩家主动返回土城脚本(所有层通用)】------------------------

[@放弃闯关]

#if

MAP1001;第一层

#act

MAPMOVE3330330

SENDMSG6【放弃闯关】你已放弃闯关第一层,返回土城安全区!

MOVG300

MOVU400

SETOFFUSERTIMER1

break

#elseact

#if

MAP1002;第二层

#act

MAPMOVE3330330

SENDMSG6【放弃闯关】你已放弃闯关第二层,返回土城安全区!

MOVG310

MOVU410

SETOFFUSERTIMER2

break

#elseact

#if

MAP1003;第三层

#act

MAPMOVE3330330

SENDMSG6【放弃闯关】你已放弃闯关第三层,返回土城安全区!

MOVG320

MOVU420

SETOFFUSERTIMER3

break

#elseact

;此处省略第四层至第九层放弃脚本,参考前三层格式,修改地图编号、变量、计时器即可

#if

MAP1010;第十层

#act

MAPMOVE3330330

SENDMSG6【放弃闯关】你已放弃闯关第十层,返回土城安全区!

MOVG390

MOVU490

SETOFFUSERTIMER10

break

;-------------------【自动刷怪补充脚本(防止BOSS未刷新)】------------------------

;玩家进入地图后,检测该层是否有BOSS,无BOSS则自动刷出

[@MapEnter1001]

#if

MAP1001

NOTCHECKMONSTER闯关守卫1;检测第一层是否有BOSS

#act

MONSTER1001105105闯关守卫1110000

break

[@MapEnter1002]

#if

MAP1002

NOTCHECKMONSTER闯关守卫2

#act

MONSTER1002105105闯关守卫2110000

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=土城,坐标可修改)

闯关向导33503501ChuangGuanNPC

;1-10层地图内NPC(地图编号对应1001-1010,坐标可修改)

闯关向导110011101101ChuangGuanNPC

闯关向导210021101101ChuangGuanNPC

闯关向导310031101101ChuangGuanNPC

闯关向导410041101101ChuangGuanNPC

闯关向导510051101101ChuangGuanNPC

闯关向导610061101101ChuangGuanNPC

闯关向导710071101101ChuangGuanNPC

闯关向导810081101101ChuangGuanNPC

闯关向导910091101101ChuangGuanNPC

闯关向导1010101101101ChuangGuanNPC

三、脚本安装步骤(详细到每一步,新手可直接操作)

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坐标350350,可改为自己想要的位置),保存后关闭记事本。

4.调整脚本参数:根据自己的传奇服务端,修改脚本中的3个关键参数,确保适配:

(1)地图编号:将脚本中的1001-1010,替换为自己10层闯关地图的实际编号;

(2)BOSS名称:将“闯关守卫1-9”“闯关BOSS10”,替换为自己设置的BOSS名称,确保与Item.txt中的名称一致;

(3)坐标参数:将脚本中所有地图内的坐标(如100100、105105、110110),替换为自己地图内的实际坐标,避免玩家传送后卡在墙体。

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是否被其他脚本占用,若占用,统一替换为未被占用的全局变量;检查脚本中EQUALG300是否填写正确,避免写成GREATERG300。

3.超过30分钟未自动返回土城:检查计时器脚本(@UserTimer1-@UserTimer10)是否复制完整,SETONUSERTIMER命令是否正确(如第一层计时器1,对应SETONUSERTIMER11);检查U40-U49变量是否初始化(@Login脚本中是否有MOVU400等命令)。

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层闯关地图的所有需求,包括人数限制、时间限制、自动刷怪和闯关流程,祝各位制作传奇顺利!
[顶部]