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

传奇地图随机失效与新人出生点固定修改完整教程

热度:
先确认两个现象不是一回事:随机卷点不动是地图被禁随机;新人一上线总在同一个点,是出生点配置固定。两套逻辑分开改。

一、地图不能随机传送:查MapInfo参数

进服务端Mir200\Envir\MapInfo.txt,找到对应地图那一行,格式大概这样:

[3盟重省]SAFE

如果后面带了下面这些参数,随机卷、随机石、传送戒指就会失效:

NORANDOMMOVE禁止随机传送卷
NOPOSITIONMOVE禁止传送戒指等定点传送
NOSPACEMOVE禁止回城卷/结婚戒指
NORECALL禁止记忆套装召回
NORE
NORECONNECT(地图号)掉线后重登被扔到指定地图

比如某张图写成:

[1050祖玛教主之家]FIGHTNORANDOMMOVENOPOSITIONMOVE

那在这张图里随机卷就是灰的。把NORANDOMMOVE和NOPOSITIONMOVE删掉,保存,M2点“重新加载地图配置”或者重启M2,再进图测试。

注意:参数名大小写不敏感,但拼写必须全对,NORANDOMMOVE少个字母地图会直接忽略,看起来像没生效。

二让某张图“能随机但限制范围”,不要加NORANDOMMOVE,用脚本层控制就行,地图参数保持干净。

二、道具级禁用:NOTALLOWUSEITEMS

有些版本不是禁地图,而是禁道具:

[1050祖玛教主之家]NOTALLOWUSEITEMS(随机传送卷随机石
回城卷)

这种地图参数里没写NORANDOMMOVE,但用了随机卷会被系统直接拦掉。想放开就把括号里的物品名去掉或删整段。

三、新人出生地为什么总在同一个点

不是bug,是默认机制。新角色创建后读三个地方,按顺序生效:

1.!Setup.txt全局出生点
路径Mir200\!Setup.txt,搜这段:

HomeMap=0
HomeX=289
HomeY=618

HomeMap是地图编号,对应MapInfo.txt里的编号;HomeX/HomeY是固定坐标。改成你想让新人出生的地图和坐标,保存重启M2。

三职业分开配也行:

WarriorHomeMap=0
WarriorHomeX=289
WarriorHomeY=618
WizardHomeMap=0
WizardHomeX=650
WizardHomeY=631
TaoistHomeMap=0
TaoistHomeX=334
TaoistHomeY=266

2.StartPoint.txt安全区出生点
路径Mir200\Envir\StartPoint.txt,格式:

;地图号XY禁言范围光环PK区PK火
0289618010400

最后一列“范围”如果是10,代表在10格内安全区随机;想完全固定,把范围改成0,坐标写死。

M2控制台里“选项-参数设置-坐标范围-新人出生点范围数”如果设成2,会随机读前两条记录,设成1就只认第一条。

3.数据库/存档层
角色表里LastMap、LastX、LastY控制老角色下线后上线位置;新角色只看上面两个配置文件。

四、下线再上线被扔回安全区随机点

这是另一个常见问题,根因通常是三个:

M2没开坐标保存
M2控制台:选项-参数设置-角色设置,勾“下线保存角色当前坐标”,取消“上线强制传送安全区”。

!Setup.txt里SaveUserPos=0
改成SaveUserPos=1,老角色才会记住下线位置。

登录脚本里有强制随机命令
查这几个文件:
Mir200\Envir\MapQuest_def\QFunction-0.txt
Mir200\Envir\QuestDiary\QManage.txt
Mir200\Envir\Market_Def里相关触发脚本

搜关键词:RANDOMMOVE、RandomMove、MAPMOVE、MoveToRandom。

看到类似:

[@Login]
ACT

RANDOMMOVE333033010

直接注释掉,前面加//或;,保存重载脚本。

如果想让上线固定回原坐标,不用写脚本,开SaveUserPos就行;只有要做
想强制飞到指定点才用:

[@Login]
IF

ACT

MAPMOVE3330330

五、想让新人出生点“随机”反而要手动做

原版机制是固定点。要真随机,得靠脚本在创建角色或首次登录时掷点:

[@Login]
IF

CHECKVARHUMAN已初始化=0
ACT

RANDOM14
CASE1
MAPMOVE0280600
CASE2
MAPMOVE0330330
CASE3
MAPMOVE3320320
CASE4
MAPMOVE3290610
SETVARHUMAN已初始化=1

CHECKVAR那段是自己加的标记,避免每次上线都重掷。GOM/GEE/Hero语法略有差异,Hero里RANDOM写法要按引擎文档调。

六、死亡复活点也是独立配置

死了以后回城还是回安全区,看两处:

MapInfo.txt里安全区地图带SAFE参数,默认复活在最近安全区。
部分版本在QFunction-0.txt有[@Death]或[@Revival]段,里面写了MAPMOVE强制回城。

想让复活点固定,就把脚本里的RANDOM分支删掉,写死MAPMOVE3330330。

七、调试顺序

先改MapInfo去掉NORANDOMMOVE,拿随机卷进图测,确认地图层放开。
再改!Setup.txt的HomeMap/HomeX/HomeY,建新号看出生点。
然后查StartPoint.txt范围值,设0固定。
最后清登录脚本里的RANDOMMOVE/MAPMOVE强制命令。
每次只改一处,重启或重载后建测试号验证,别一次性全改。

八、常见翻车点

改了MapInfo没重载:M2里“控制-重新加载-地图设置”点一下,不然读缓存。
坐标站在墙里:MAPMOVE目标点必须是可行走格,用M2“查看-地图信息”查安全区中心坐标。
三职业配置冲突:!Setup.txt里同时有HomeMap和三职业独立配置,引擎优先读三职业那段。
脚本热重载失败:部分引擎不认@Login热重载
重载,改完重启M2最稳。
备份习惯:动MapInfo.txt、!Setup.txt、StartPoint.txt、QFunction-0.txt前,每个文件复制一份.bak,改崩了直接覆原。

地图随机和出生点本质就是“参数开关+坐标配置+脚本触发”三层,先分层定位再动手,比到处改文件效率高得多。
[顶部]