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

传奇进入指定地图自动增加游戏点:MapInfoINCGAMEPOINT参数配置与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
ISONMAP3
EQUALS泡点状态0
ACT
MOVS泡点状态1
SetOnTimer31
SENDMSG6已进入泡点地图,每秒获得1点游戏点。
BREAK

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

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

[@OnTimer3]
IF
ISONMAP3
ACT
GAMEPOINT+1
BREAK
ELSEACT
SETOFFTIMER3
MOVS泡点状态0
BREAK

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

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

VARIntegerHUMAN游戏点

增加时写成:

INC游戏点1

保存时写成:

SAVEVARHUMAN游戏点

显示时可以用:

SENDMSG6当前游戏点:<STR(游戏点)>

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

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

[@CheckMapReward]
IF
ISONMAP3
EQUALG地图奖励_30
ACT
INC游戏点10
MOVG地图奖励_31
SENDMSG6进入地图奖励10点游戏点。
BREAK

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

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

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

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