传奇进入指定地图自动增加游戏点:MapInfo INCGAMEPOINT参数配置与QManage定时器脚本

来源: 作者: 点击:
进入地图后自动加游戏点,最稳的做法有两种。第一种直接在MapInfo.txt里挂INCGAMEPOINT参数,适合固定间隔持续加游戏点;第二种用QManage.txt配合OnTimer定时器,适合做泡点、地图奖励、在线时长奖励等复杂玩法。

先看MapInfo.txt配置。打开MirServerMir200EnvirMapInfo.txt,找到目标地图,在地图参数里加上INCGAMEPOINT。格式是INCGAMEPOINT(间隔/数量),前面数字是间隔秒数,后面数字是每次增加的游戏点数量。例如:

[3 盟重土城] INCGAMEPOINT(60/5)

这段配置表示玩家进入盟重土城后,每60秒自动增加5点游戏点。只要玩家停留在该地图,就会按这个间隔持续增加;离开地图后自动停止。

如果需要进入地图只加一次,不建议用INCGAMEPOINT,因为它会按间隔循环触发。一次性奖励更适合用CHECKQUEST配合脚本判断变量,或者用OnTimer在玩家进入地图后触发一次。

第二种方法用QManage.txt定时器。打开MirServerMir200EnvirMapQuest_defQManage.txt,先写一个进入地图时触发的标签,例如:

[@进入泡点地图]
IF
ISONMAP 3
EQUAL S泡点状态 0
ACT
MOV S泡点状态 1
SetOnTimer 3 1
SENDMSG 6 已进入泡点地图,每秒获得1点游戏点。
BREAK

这里ISONMAP 3用于检测玩家是否在地图编号3的地图内,S泡点状态用来防止重复开启定时器。SetOnTimer 3 1表示开启第3号定时器,每1秒触发一次。

然后在同一个文件里写定时器段落:

[@OnTimer3]
IF
ISONMAP 3
ACT
GAMEPOINT + 1
BREAK
ELSEACT
SETOFFTIMER 3
MOV S泡点状态 0
BREAK

这段脚本每1秒检测玩家是否仍在地图3内。如果在,就增加1点游戏点;如果已经离开,就关闭定时器并重置状态,避免离线或离开后继续加游戏点。

如果版本不是996引擎,GAMEPOINT命令可能不可用。传统M2引擎里游戏点通常用自定义变量记录,例如:

VAR Integer HUMAN 游戏点

增加时写成:

INC 游戏点 1

保存时写成:

SAVEVAR HUMAN 游戏点

显示时可以用:

SENDMSG 6 当前游戏点:<STR(游戏点)>

这样就能兼容不支持GAMEPOINT的版本。

如果希望玩家进入地图就立刻给一次奖励,可以在QManage.txt的@Login脚本或地图触发脚本里加判断:

[@CheckMapReward]
IF
ISONMAP 3
EQUAL G地图奖励_3 0
ACT
INC 游戏点 10
MOV G地图奖励_3 1
SENDMSG 6 进入地图奖励10点游戏点。
BREAK

这里用G地图奖励_3记录是否已经领取过,防止玩家反复进出地图刷奖励。

排查时先看MapInfo.txt里地图编号是否正确。很多版本地图编号不是纯数字,可能写成3|0159、d601、xintucheng等形式。INCGAMEPOINT必须写在正确的地图行里,写错地图编号不会生效。修改MapInfo.txt后通常需要重启M2Server。

如果用了OnTimer定时器,要确认定时器编号没有重复。服务端一般支持多个定时器,但同一编号只能用于一个功能。重复使用会导致泡点、任务计时、地图奖励互相冲突。定时器开启后必须有对应关闭条件,否则玩家离开地图后仍可能继续触发。

实际配置可以按这个顺序走:先确认引擎是否支持GAMEPOINT命令;再决定使用MapInfo的INCGAMEPOINT还是QManage定时器;接着确认地图编号;然后设置间隔和数量;最后测试玩家进入、停留、离开时游戏点是否正常增减。固定间隔持续奖励优先用INCGAMEPOINT,复杂奖励、一次性奖励或需要判断条件时优先用QManage定时器脚本。