传奇单机版里说的地图开关,本质不是单独装个功能,而是在 MapInfo.txt 给地图挂进入条件,再用脚本改任务标志或G变量控制这个条件真假。玩家进图时引擎检测标志,标志不开就拦住,开了就放行。GOM引擎这套逻辑通用,手动开关、GM命令开关、定时自动开关都围着同一个标志转。
一、地图开关涉及的文件
服务端路径按 D:\MirServer 举例,实际看你解压目录。
• D:\MirServer\Mir200\Envir\MapInfo.txt
地图总配置,控制每张地图名称、规则、进入条件。
• D:\MirServer\Mir200\Map
地图文件目录,地图编号要和里面 .map 文件名一致,比如 3.map 对应地图编号3。
• D:\MirServer\Mir200\Envir\Robot_def\AutoRunRobot.txt
机器人定时触发入口,做定时开关用。
• D:\MirServer\Mir200\Envir\Robot_def\RobotManage.txt
机器人执行脚本段,真正改标志的地方。
• D:\MirServer\Mir200\Envir\Market_Def\传送员-x.txt
NPC传送脚本,做手动拦截或提示。
• D:\MirServer\Mir200\Envir\AdminList.txt
GM账号列表,手动开关一般给GM权限用。
• D:\MirServer\Mir200\Envir\MonGen.txt
怪物刷新,地图关着的时候通常不刷怪,开关也可顺带控刷怪。
二、MapInfo.txt里地图行格式
打开 MapInfo.txt,每行一张地图。GOM常见两种写法:
老格式字段式:
3 盟重省 3 1 1 1 1 1 0
新格式方括号式:
[3 盟重省] FIGHT NORECALL
做开关主要加后面参数,不是去改前面编号和名字。
常用开关参数:
NEEDSET_ON(数字)
人物标志为1才让进,比如 NEEDSET_ON(88)。
NEEDSET_OFF(数字)
人物标志为0才让进,反过来用。
CHECKQUEST(脚本名)
进图时跑一个任务脚本,脚本里再判断放不放行。
NEEDLEVEL(等级)
纯等级门槛,不算开关,但常和开关叠加。
NEEDITEM 道具名
带指定道具才进。
举例,沃玛神殿默认关,开标志88才进:
[Woma 沃玛神殿] RUNMON NORECALL NEEDSET_ON(88)
三、最简单的永久开关:直接改MapInfo
如果只是单机自己玩,不想搞脚本,直接改配置就行。
永久开放
找到目标地图行,删掉 NEEDSET_ON / NEEDSET_OFF / CHECKQUEST。
例如原来:
[D508 恶魔广场] NEEDSET_ON(310)
改成:
[D508 恶魔广场]
保存,重启M2,地图任何人能进。
永久关闭
反过来,给地图加上 NEEDSET_ON(999),但999标志永远不置1,玩家就进不去。
或者直接在传送NPC里不写这个地图入口。
这种方式适合固定开放/封闭,不适合随时切换。
四、GM手动开关做法
1. 选一个标志位
用G变量也行,用任务标志也行。单机教程里常见用 G88 或 SET(310)。
下面以G88举例。
2. 地图行挂条件
MapInfo.txt里目标地图加:
NEEDSET_ON(88)
注意NEEDSET_ON吃的是人物标志,不是G变量时可换成脚本判断;GOM里很多端直接用G变量配合NPC脚本检测更稳。真要用NEEDSET_ON,就在机器人或QF里 SET 88 1。
3. 写GM命令脚本
在 Market_Def 建一个NPC,比如 地图管理员.txt,MerChant.txt里注册:
地图管理员 地图管理员-D508.txt 0 地图编号 X Y 管理员 0
NPC脚本里写:
[@Main]
地图状态管理\\
<开启恶魔广场>/@open_map\\
<关闭恶魔广场>/@close_map\\
[@open_map]
IF
ACT
MOV G88 1
MESSAGEBOX 恶魔广场已开启
BREAK
[@close_map]
IF
ACT
MOV G88 0
MESSAGEBOX 恶魔广场已关闭
BREAK
4. MapInfo用CHECKQUEST或NPC拦截
如果NEEDSET_ON不直接跟G变量生效,就把地图入口放NPC里判断:
[@进恶魔广场]
IF
EQUAL G88 1
ACT
MAPMOVE D508 30 30
ELSEACT
MESSAGEBOX 当前地图未开启
BREAK
这种比纯MapInfo参数稳,单机推荐这么写。
5. GM权限
AdminList.txt里加你的账号,格式一般是一行一个:
• GM账号
或
GM账号
看版本头部说明。加完重启M2,游戏里点NPC就能切开关。
五、 Robot_def定时开关
适合活动图,比如每天20点开、21点关。
1. AutoRunRobot.txt加触发
末尾加两行:
AutoRun NPC HOUR 20 MINUTE 0 @OpenD508
AutoRun NPC HOUR 21 MINUTE 0 @CloseD508
HOUR是小时,MINUTE是分钟。
2. RobotManage.txt加执行段
[@OpenD508]
IF
ACT
MOV G88 1
SENDMSG 0 恶魔广场已开启
BREAK
[@CloseD508]
IF
ACT
MOV G88 0
SENDMSG 0 恶魔广场已关闭
BREAK
3. 地图进图判断
NPC传送脚本里还是用:
IF
EQUAL G88 1
ACT
MAPMOVE D508 30 30
ELSEACT
MESSAGEBOX 未开放
BREAK
也可以MapInfo挂 NEEDSET_ON,但NPC判断更直观,还能发提示。
4. 重载机器人
改完不用每次重启整个服务端,M2里「刷新机器人脚本」或重启M2都行。单机直接重启M2最稳。
六、按开区时间逐步开放
很多版本地图默认绑了开区天数,比如第3天才开。
排查两处:
MapInfo.txt
看地图行有没有 NEEDSET_ON(xxx) 或 CHECKQUEST(xxx)。
传送NPC脚本
搜 CHECK[开区天数]、CheckOpenDays、EQUAL Gxx 0 这类判断。
解除方法二选一:
直接删条件
NPC脚本里把判断删了,只留 MAPMOVE。
MapInfo里把 NEEDSET_ON 去掉。
改天数变量
找到 QuestDiary 里开区天数脚本,把天数改大,比如99,条件自然过。
单机自己玩建议直接删条件,别留时间锁。
七、传送员NPC里的开关拦截
地图开关最常卡在NPC没改,只改MapInfo没用。
传送员脚本例子:
[@沃玛入口]
IF
EQUAL G88 1
ACT
MAPMOVE Woma 100 100
SENDMSG 6 进入沃玛神殿
BREAK
ELSEACT
MESSAGEBOX 沃玛神殿暂未开启
BREAK
多个地图就每个入口都加这段判断。
如果想按等级再叠一层:
IF
EQUAL G88 1
CHECKLEVEL 40
ACT
MAPMOVE Woma 100 100
BREAK
ELSEACT
MESSAGEBOX 等级不足或地图未开启
BREAK
八、地图关着时不刷怪
地图不让进不等于不刷怪,MonGen.txt里怪还在刷,关了图也占资源。
MonGen.txt格式:
地图编号 X Y 怪物名 范围 数量 间隔
例子:
Woma 100 100 沃玛卫士 5 10 30
开关图建议两种处理:
手动清怪
关地图时M2里手动清除该地图怪物。
用脚本控制刷怪文件
进阶做法是在开地图时写文件、关地图时注释MonGen段落,单机不值当。
偷懒办法
地图关了玩家进不去,怪刷着也无所谓,单机架设一般不理。
真要干净,开图命令里顺带发个全局消息,自己手动去M2清一下也行。
九、新增一张可开关的自定义地图
顺带说下完整加图,不然开关没载体。
1. 放地图文件
服务端 D:\MirServer\Mir200\Map 放 d508.map
客户端 Map 目录也放一份,不然自己看到黑屏。
2. MapInfo.txt加行
[D508 恶魔广场] FIGHT NORECALL NEEDSET_ON(88)
或不用NEEDSET,纯靠NPC判断也行。
3. MiniMap.txt加小地图
D508 50
编号按补丁来。
4. 传送NPC加入口
按上面EQUAL G88判断写MAPMOVE。
5. MonGen.txt加怪
D508 30 30 恶魔卫士 8 20 60
6. 重启M2
看M2日志有没有地图加载成功,红字说找不到D508.map就是文件名不对。
十、常见故障
改了MapInfo没生效
M2没重启,或改的是客户端文件。必须改服务端 Mir200\Envir 下的。
进图提示无法进入
NEEDSET_ON标志没置1,或NPC脚本判断写反了。
地图黑屏但能跑
.map文件客户端没放,或补丁缺失,不是开关问题。
机器人定时不开
AutoRunRobot.txt里 @段名字和RobotManage.txt不一致;
HOUR/MINUTE格式错;
M2没重载机器人。
GM命令没反应
AdminList.txt没加账号,或M2没重启,或NPC没绑定脚本。
NEEDSET_ON不认G变量
有些端NEEDSET_ON吃人物标志SET,不吃G变量。
稳妥写法放NPC里用 EQUAL G88 判断。
地图能进但没怪
MonGen.txt没配,或地图编号写错,或刷怪间隔为0。
十一、单机常用开关模板
手动开关变量
G88 = 地图总开关
MapInfo
[D508 恶魔广场] FIGHT NORECALL
NPC
EQUAL G88 1 才 MAPMOVE
GM点NPC
MOV G88 1 / MOV G88 0
定时开放
AutoRunRobot.txt 触发 @OpenD508 / @CloseD508
RobotManage.txt 里 MOV G88 1/0
逐步开放解除
删 NPC 里 CheckOpenDays
删 MapInfo 里 NEEDSET_ON
开区天数改99
多地图联动
G88管主图,G89管子图,NPC里分层判断就行。
地图开关不用装额外插件,核心就是「MapInfo挂条件 + 脚本改标志 + NPC拦传送」。单机版最稳的方案别死磕NEEDSET_ON,直接在传送员脚本里写 EQUAL G变量 判断,开关瞬间生效,排错也直观。改完Robot脚本记得重载或重启M2,改MapInfo必须重启M2,只点重载配置地图参数不一定全生效。
单机架设传奇地图开关配置与GOM引擎实操教程
来源:
作者:
点击:

