核心需求实现:10层闯关地图,每层仅限1人停留(前玩家离开/进入下一层后,后续玩家可进入);每层停留限时30分钟,超时自动返回土城;玩家进入任意层时,系统自动刷出对应BOSS;打死BOSS后通过NPC进入下一层。以下是完整脚本代码、逐行解析及文件存放路径,新手可直接套用。
一、核心脚本变量规划(必看基础)
需提前规划10层地图的专属变量,用于记录每层人数、玩家进入时间,避免冲突,变量含义如下:
-人数控制变量:G1-G10(G系列为全局变量,重启服务端重置),分别对应1-10层当前停留人数,初始值为0,玩家进入时设为1,离开/超时后设为0。
-时间控制变量:T1-T10(T系列为时间变量),分别记录进入1-10层玩家的初始时间,用于计算停留时长。
-地图ID说明:假设1-10层闯关地图ID为101-110(第一层101、第二层102...第十层110),土城安全区地图ID为3(需按自身服务端实际地图ID修改,查询路径:服务端根目录\MapInfo.txt)。
-NPC触发入口:每层设置“闯关引导NPC”(如第一层NPCID为1001,第二层1002...),用于玩家进入下一层的触发。
二、分模块脚本完整写法(含注释)
模块1:进入第一层脚本(核心入口,其他层逻辑通用)
//土城进入闯关地图的触发NPC(假设NPCID为999,名称“闯关使者”)
[@EntryChuangGuan]
#IF
//检测第一层(地图101)当前人数(G1变量)是否为0
EQUALG10
#ACT
//进入第一层前,将G1设为1(锁定当前层,禁止其他人进入)
MOVG11
//记录玩家进入第一层的初始时间(赋值给T1变量,单位:秒)
MOVT1<$TIME>
//将玩家传送至第一层安全坐标(101地图,300300坐标,需自行确认无障碍物)
MOVEMAP101300300
//玩家进入后自动刷第一层BOSS(怪物名称“闯关一层BOSS”,数量1,坐标320320)
MONSTER101320320闯关一层BOSS1
//发送系统提示
SENDMSG20已进入闯关第一层,限时30分钟,打死BOSS后找NPC进入下一层!
BREAK
#ELSEACT
//若第一层有人,提示玩家等待
SENDMSG20闯关第一层当前有玩家正在挑战,请稍后再试!
BREAK
模块2:第一层→第二层跳转脚本(含BOSS击杀检测)
//第一层闯关引导NPC(ID1001)触发入口
[@GotoLayer2]
#IF
//检测玩家是否在第一层地图(101)
MAP101
//检测第一层BOSS是否已被击杀(通过怪物名称判断,确保打死才允许进入下一层)
NOTMONSTEREXIST101闯关一层BOSS
//检测第二层(地图102)当前人数(G2变量)是否为0
EQUALG20
#ACT
//玩家离开第一层,将G1重置为0(释放第一层,允许其他玩家进入)
MOVG10
//锁定第二层,将G2设为1
MOVG21
//记录玩家进入第二层的初始时间(赋值给T2变量)
MOVT2<$TIME>
//传送玩家至第二层安全坐标(102地图,300300)
MOVEMAP102300300
//自动刷第二层BOSS(怪物名称“闯关二层BOSS”,数量1,坐标320320)
MONSTER102320320闯关二层BOSS1
//发送系统提示
SENDMSG20成功进入闯关第二层,限时30分钟,加油!
BREAK
#ELSEACT
#IF
//若BOSS未击杀,提示玩家先打怪
MONSTEREXIST101闯关一层BOSS
SENDMSG20请先击杀当前层BOSS,方可进入下一层!
BREAK
#ELSEACT
//若第二层有人,提示玩家等待
SENDMSG20闯关第二层当前有玩家正在挑战,请稍后再试!
BREAK
模块3:30分钟时间限制脚本(全层通用,定时检测)
//定时检测脚本(每10秒执行一次,确保时间判断精准)
[@RobotTimer]
#IF
//检测是否有玩家在第一层(G1=1)
EQUALG11
//计算当前时间与进入时间的差值,是否超过30分钟(30*60=1800秒)
TIME><$CALC(T1+1800)>
#ACT
//找到第一层所有玩家,传送回土城安全区(3地图,330330坐标)
MOVEMAPALL1013330330
//释放第一层,将G1重置为0
MOVG10
//发送超时提示
SENDMSG20闯关第一层停留时间已超30分钟,自动返回土城!
BREAK
//第二层时间检测(逻辑与第一层完全一致,替换对应变量和地图ID即可)
#IF
EQUALG21
TIME><$CALC(T2+1800)>
#ACT
MOVEMAPALL1023330330
MOVG20
SENDMSG20闯关第二层停留时间已超30分钟,自动返回土城!
BREAK
//3-10层时间检测脚本,直接复制上述第二层代码,替换:
//G2→G3-G10、T2→T3-T10、102→103-110、提示文字中的“第二层”→对应层数即可
//此处省略3-10层重复代码,实际编写需完整复制补充
模块4:玩家主动退出/死亡返回脚本(避免层数锁定)
//第一层主动退出(通过NPC触发,NPCID1001添加“返回土城”选项)
[@ExitLayer1]
#IF
MAP101
#ACT
MOVEMAP3330330
MOVG10
SENDMSG20已主动退出闯关地图,返回土城安全区!
BREAK
//第一层玩家死亡返回(避免玩家死亡后层数一直锁定)
[@DeathInLayer1]
#IF
MAP101
#ACT
MOVG10
//死亡后默认返回土城,无需额外传送(若服务端有死亡复活设置,可添加MOVEMAP命令)
SENDMSG20你在闯关第一层死亡,已释放当前层挑战权限!
BREAK
//2-10层主动退出/死亡返回脚本,复制上述代码,替换:
//G1→G2-G10、101→102-110、NPCID→对应层NPCID即可
三、关键补充:10层脚本快速复用技巧
无需逐行编写10层脚本,核心复用逻辑如下:1.进入下一层脚本:复制“第一层→第二层”代码,替换G1→G当前层、G2→G下一层、T1→T当前层、T2→T下一层、地图ID101→当前层ID、102→下一层ID、BOSS名称→对应层BOSS名称;2.时间检测脚本:复制第一层时间检测代码,替换G1→G对应层、T1→T对应层、地图ID101→对应层ID;3.主动退出/死亡脚本:同理替换变量和地图ID即可,仅需修改“层数”“地图ID”“变量名”三个核心信息。
四、脚本文件存放路径与部署步骤(通用所有主流服务端)
1.脚本文件存放位置
所有编写好的脚本代码,统一存放在服务端根目录的“QuestDiary”文件夹下,新建一个专属脚本文件(建议命名为“ChuangGuanMap.txt”,便于后续维护),将上述所有模块代码复制粘贴至该文件中,保存关闭。
2.脚本导入与NPC配置(核心部署步骤)
-第一步:导入脚本文件。打开“QuestDiary”文件夹下的“QFunction-0.txt”文件(该文件是脚本主入口,所有自定义脚本需在此导入),在文件末尾添加代码:#INCLUDE..\QuestDiary\ChuangGuanMap.txt,保存关闭(“..\”表示当前目录上一级,即“QuestDiary”文件夹,确保路径正确)。
-第二步:配置触发NPC。打开服务端“Envir”文件夹下的“NPC.txt”文件,添加触发NPC信息:①土城闯关使者(ID999):在土城安全区坐标(如335335)添加一行“3335335闯关使者999”(格式:地图ID横坐标纵坐标NPC名称NPCID);②每层引导NPC:在对应层地图(101-110)添加NPC,如第一层(101地图)添加“101300300闯关引导员1001”,依次配置1001-1010(对应1-10层)的NPC信息。
-第三步:NPC对话配置。打开“Envir”文件夹下的“Market_Def”文件夹,新建“999.txt”(土城闯关使者对话文件)和“1001-1010.txt”(每层引导员对话文件),示例:①999.txt内容:[@main]#say欢迎参与闯关挑战!<进入第一层/@EntryChuangGuan>;②1001.txt内容:[@main]#say当前为闯关第一层<进入第二层/@GotoLayer2><返回土城/@ExitLayer1>。
3.刷怪参数补充说明
脚本中MONSTER101320320闯关一层BOSS1命令解析:①101:刷怪地图ID;②320320:刷怪坐标(需在对应层地图确认无障碍物,可游戏内输入“@坐标”查看);③闯关一层BOSS:怪物名称(需与服务端“MonData.txt”中的怪物名称完全一致);④1:刷怪数量(此处为1个BOSS)。若需设置BOSS刷新后不刷新其他小怪,保持该命令即可;若需添加小怪,可额外增加MONSTER命令刷小怪。
五、部署测试要点(避坑指南)
-1.地图ID核对:必须在“MapInfo.txt”中确认1-10层闯关地图的实际ID(101-110为示例,实际可能为其他数值),ID错误会导致传送失败。
-2.变量重置:首次测试前,需重启服务端(重置G1-G10、T1-T10变量初始值为0),避免变量残留导致检测异常。
-3.时间测试:无需等待30分钟,可临时将脚本中“1800秒”改为“60秒”(1分钟),测试超时返回功能是否正常,测试完成后改回1800秒。
-4.权限检查:确保服务端“QuestDiary”“Envir”文件夹有读写权限(右键文件夹→属性→安全→勾选“完全控制”),避免脚本文件无法读取或修改。
整体脚本适配GOM、GEE、BLUE等主流传奇服务端,按上述步骤编写部署后,即可实现“每层1人挑战、30分钟限时、进入自动刷怪”的核心需求。若服务端为特殊版本,仅需微调变量前缀(如部分服务端用VAR代替G)或命令格式(参考对应服务端的脚本命令手册)即可。
一、核心脚本变量规划(必看基础)
需提前规划10层地图的专属变量,用于记录每层人数、玩家进入时间,避免冲突,变量含义如下:
-人数控制变量:G1-G10(G系列为全局变量,重启服务端重置),分别对应1-10层当前停留人数,初始值为0,玩家进入时设为1,离开/超时后设为0。
-时间控制变量:T1-T10(T系列为时间变量),分别记录进入1-10层玩家的初始时间,用于计算停留时长。
-地图ID说明:假设1-10层闯关地图ID为101-110(第一层101、第二层102...第十层110),土城安全区地图ID为3(需按自身服务端实际地图ID修改,查询路径:服务端根目录\MapInfo.txt)。
-NPC触发入口:每层设置“闯关引导NPC”(如第一层NPCID为1001,第二层1002...),用于玩家进入下一层的触发。
二、分模块脚本完整写法(含注释)
模块1:进入第一层脚本(核心入口,其他层逻辑通用)
//土城进入闯关地图的触发NPC(假设NPCID为999,名称“闯关使者”)
[@EntryChuangGuan]
#IF
//检测第一层(地图101)当前人数(G1变量)是否为0
EQUALG10
#ACT
//进入第一层前,将G1设为1(锁定当前层,禁止其他人进入)
MOVG11
//记录玩家进入第一层的初始时间(赋值给T1变量,单位:秒)
MOVT1<$TIME>
//将玩家传送至第一层安全坐标(101地图,300300坐标,需自行确认无障碍物)
MOVEMAP101300300
//玩家进入后自动刷第一层BOSS(怪物名称“闯关一层BOSS”,数量1,坐标320320)
MONSTER101320320闯关一层BOSS1
//发送系统提示
SENDMSG20已进入闯关第一层,限时30分钟,打死BOSS后找NPC进入下一层!
BREAK
#ELSEACT
//若第一层有人,提示玩家等待
SENDMSG20闯关第一层当前有玩家正在挑战,请稍后再试!
BREAK
模块2:第一层→第二层跳转脚本(含BOSS击杀检测)
//第一层闯关引导NPC(ID1001)触发入口
[@GotoLayer2]
#IF
//检测玩家是否在第一层地图(101)
MAP101
//检测第一层BOSS是否已被击杀(通过怪物名称判断,确保打死才允许进入下一层)
NOTMONSTEREXIST101闯关一层BOSS
//检测第二层(地图102)当前人数(G2变量)是否为0
EQUALG20
#ACT
//玩家离开第一层,将G1重置为0(释放第一层,允许其他玩家进入)
MOVG10
//锁定第二层,将G2设为1
MOVG21
//记录玩家进入第二层的初始时间(赋值给T2变量)
MOVT2<$TIME>
//传送玩家至第二层安全坐标(102地图,300300)
MOVEMAP102300300
//自动刷第二层BOSS(怪物名称“闯关二层BOSS”,数量1,坐标320320)
MONSTER102320320闯关二层BOSS1
//发送系统提示
SENDMSG20成功进入闯关第二层,限时30分钟,加油!
BREAK
#ELSEACT
#IF
//若BOSS未击杀,提示玩家先打怪
MONSTEREXIST101闯关一层BOSS
SENDMSG20请先击杀当前层BOSS,方可进入下一层!
BREAK
#ELSEACT
//若第二层有人,提示玩家等待
SENDMSG20闯关第二层当前有玩家正在挑战,请稍后再试!
BREAK
模块3:30分钟时间限制脚本(全层通用,定时检测)
//定时检测脚本(每10秒执行一次,确保时间判断精准)
[@RobotTimer]
#IF
//检测是否有玩家在第一层(G1=1)
EQUALG11
//计算当前时间与进入时间的差值,是否超过30分钟(30*60=1800秒)
TIME><$CALC(T1+1800)>
#ACT
//找到第一层所有玩家,传送回土城安全区(3地图,330330坐标)
MOVEMAPALL1013330330
//释放第一层,将G1重置为0
MOVG10
//发送超时提示
SENDMSG20闯关第一层停留时间已超30分钟,自动返回土城!
BREAK
//第二层时间检测(逻辑与第一层完全一致,替换对应变量和地图ID即可)
#IF
EQUALG21
TIME><$CALC(T2+1800)>
#ACT
MOVEMAPALL1023330330
MOVG20
SENDMSG20闯关第二层停留时间已超30分钟,自动返回土城!
BREAK
//3-10层时间检测脚本,直接复制上述第二层代码,替换:
//G2→G3-G10、T2→T3-T10、102→103-110、提示文字中的“第二层”→对应层数即可
//此处省略3-10层重复代码,实际编写需完整复制补充
模块4:玩家主动退出/死亡返回脚本(避免层数锁定)
//第一层主动退出(通过NPC触发,NPCID1001添加“返回土城”选项)
[@ExitLayer1]
#IF
MAP101
#ACT
MOVEMAP3330330
MOVG10
SENDMSG20已主动退出闯关地图,返回土城安全区!
BREAK
//第一层玩家死亡返回(避免玩家死亡后层数一直锁定)
[@DeathInLayer1]
#IF
MAP101
#ACT
MOVG10
//死亡后默认返回土城,无需额外传送(若服务端有死亡复活设置,可添加MOVEMAP命令)
SENDMSG20你在闯关第一层死亡,已释放当前层挑战权限!
BREAK
//2-10层主动退出/死亡返回脚本,复制上述代码,替换:
//G1→G2-G10、101→102-110、NPCID→对应层NPCID即可
三、关键补充:10层脚本快速复用技巧
无需逐行编写10层脚本,核心复用逻辑如下:1.进入下一层脚本:复制“第一层→第二层”代码,替换G1→G当前层、G2→G下一层、T1→T当前层、T2→T下一层、地图ID101→当前层ID、102→下一层ID、BOSS名称→对应层BOSS名称;2.时间检测脚本:复制第一层时间检测代码,替换G1→G对应层、T1→T对应层、地图ID101→对应层ID;3.主动退出/死亡脚本:同理替换变量和地图ID即可,仅需修改“层数”“地图ID”“变量名”三个核心信息。
四、脚本文件存放路径与部署步骤(通用所有主流服务端)
1.脚本文件存放位置
所有编写好的脚本代码,统一存放在服务端根目录的“QuestDiary”文件夹下,新建一个专属脚本文件(建议命名为“ChuangGuanMap.txt”,便于后续维护),将上述所有模块代码复制粘贴至该文件中,保存关闭。
2.脚本导入与NPC配置(核心部署步骤)
-第一步:导入脚本文件。打开“QuestDiary”文件夹下的“QFunction-0.txt”文件(该文件是脚本主入口,所有自定义脚本需在此导入),在文件末尾添加代码:#INCLUDE..\QuestDiary\ChuangGuanMap.txt,保存关闭(“..\”表示当前目录上一级,即“QuestDiary”文件夹,确保路径正确)。
-第二步:配置触发NPC。打开服务端“Envir”文件夹下的“NPC.txt”文件,添加触发NPC信息:①土城闯关使者(ID999):在土城安全区坐标(如335335)添加一行“3335335闯关使者999”(格式:地图ID横坐标纵坐标NPC名称NPCID);②每层引导NPC:在对应层地图(101-110)添加NPC,如第一层(101地图)添加“101300300闯关引导员1001”,依次配置1001-1010(对应1-10层)的NPC信息。
-第三步:NPC对话配置。打开“Envir”文件夹下的“Market_Def”文件夹,新建“999.txt”(土城闯关使者对话文件)和“1001-1010.txt”(每层引导员对话文件),示例:①999.txt内容:[@main]#say欢迎参与闯关挑战!<进入第一层/@EntryChuangGuan>;②1001.txt内容:[@main]#say当前为闯关第一层<进入第二层/@GotoLayer2><返回土城/@ExitLayer1>。
3.刷怪参数补充说明
脚本中MONSTER101320320闯关一层BOSS1命令解析:①101:刷怪地图ID;②320320:刷怪坐标(需在对应层地图确认无障碍物,可游戏内输入“@坐标”查看);③闯关一层BOSS:怪物名称(需与服务端“MonData.txt”中的怪物名称完全一致);④1:刷怪数量(此处为1个BOSS)。若需设置BOSS刷新后不刷新其他小怪,保持该命令即可;若需添加小怪,可额外增加MONSTER命令刷小怪。
五、部署测试要点(避坑指南)
-1.地图ID核对:必须在“MapInfo.txt”中确认1-10层闯关地图的实际ID(101-110为示例,实际可能为其他数值),ID错误会导致传送失败。
-2.变量重置:首次测试前,需重启服务端(重置G1-G10、T1-T10变量初始值为0),避免变量残留导致检测异常。
-3.时间测试:无需等待30分钟,可临时将脚本中“1800秒”改为“60秒”(1分钟),测试超时返回功能是否正常,测试完成后改回1800秒。
-4.权限检查:确保服务端“QuestDiary”“Envir”文件夹有读写权限(右键文件夹→属性→安全→勾选“完全控制”),避免脚本文件无法读取或修改。
整体脚本适配GOM、GEE、BLUE等主流传奇服务端,按上述步骤编写部署后,即可实现“每层1人挑战、30分钟限时、进入自动刷怪”的核心需求。若服务端为特殊版本,仅需微调变量前缀(如部分服务端用VAR代替G)或命令格式(参考对应服务端的脚本命令手册)即可。

