在传奇世界单机服务端中实现限时地图功能,需完成三个核心环节:限制进入条件、记录进入时间、到时自动传送玩家离开。以下以“每日限进10分钟的练级地图”为例,提供完整脚本逻辑,适用于主流单机版本(如Hero、GOM兼容引擎)。
第一步:设置地图入口NPC
在主城放置NPC,控制玩家进入限时地图。脚本文件如EnvirMarket_defTimeMapNPC.txt:
[@main]
\
\
『』\
『』\
[@EnterTimeMap]
IF
CHECKMAPTIME 3000 ; 检测是否已在限时地图停留超时(单位秒)
ACT
MESSAGEBOX 您今日已用完限时地图时间!
BREAK
; 检查是否已进入过(防止重复计时)
IF
HAVEVAR HUMAN InTimeMap
ACT
MESSAGEBOX 您已在限时地图中。
BREAK
; 允许进入,记录开始时间并传送
ACT
SET [InTimeMap] 1
MAPMOVE 99 10 10 ; 假设99为限时地图编号
STARTTIMER 600 ; 启动600秒倒计时(10分钟)
SENDMSG 7 已进入限时地图,停留时间:10分钟。
注:STARTTIMER为部分引擎支持的内置计时器指令;若不支持,需改用全局变量+心跳检测。
第二步:创建地图自动踢出机制
在QFunction-0.txt中添加定时检测逻辑。由于单机版通常无后台任务,需依赖玩家行为触发检查。采用[@UserTimer10](每10秒触发一次):
[@UserTimer10]
IF
EQUAL MAP 99 ; 当前在限时地图
HAVEVAR HUMAN InTimeMap
ACT
INC HUMAN TimerCount 1 ; 每10秒+1,累计次数
; 60次 × 10秒 = 600秒 = 10分钟
IF
LARGE HUMAN TimerCount 60
ACT
MAPMOVE 0 300 300 ; 传送回主城
DEL HUMAN InTimeMap
DEL HUMAN TimerCount
SENDMSG 7 限时结束,已将您移出地图。
第三步:防止重复进入与时间重置
为实现“每日重置”,需记录最后进入日期。使用字符串变量存储日期:
[@EnterTimeMap]
ACT
MOV S0 ; 获取当前日期时间,格式如202405081230
MOV S1 [0:8] ; 截取前8位为日期(20240508)
IF
HAVEVAR HUMAN LastTimeMapDate
ACT
IF
NOTEQUAL S1
; 日期不同,重置状态
DEL HUMAN InTimeMap
DEL HUMAN TimerCount
MOV HUMAN LastTimeMapDate S1
; 继续进入流程
ELSEACT
; 同一天,检查是否已用完时间
IF
HAVEVAR HUMAN UsedTimeFull
ACT
MESSAGEBOX 今日限时已用尽。
BREAK
; 若未超时但已在地图中
IF
HAVEVAR HUMAN InTimeMap
ACT
MESSAGEBOX 您已在限时地图内。
BREAK
; 正常进入
ACT
SET [InTimeMap] 1
MAPMOVE 99 10 10
STARTTIMER 600
SENDMSG 7 进入限时地图,剩余时间10分钟。
BREAK
; 首次进入当天
ACT
MOV HUMAN LastTimeMapDate S1
SET [InTimeMap] 1
MAPMOVE 99 10 10
STARTTIMER 600
SENDMSG 7 首次进入限时地图,时长10分钟。
替代方案:无Timer支持时的纯变量计时
若引擎不支持STARTTIMER或[@UserTimer],可改用登录时计算剩余时间:
在玩家进入地图时记录服务器启动后的秒数():
[@EnterTimeMap]
ACT
MOV HUMAN TimeMapStart
MAPMOVE 99 10 10
在[@Login]和[@Map99]中检测:
[@Map99]
IF
HAVEVAR HUMAN TimeMapStart
ACT
CALC S0 -
IF
LARGE S0 600
ACT
MAPMOVE 0 300 300
DEL HUMAN TimeMapStart
SENDMSG 7 限时已到,自动退出。
关键变量说明
HUMAN 变量:绑定角色,重启不丢失(部分单机版支持);
MAP:当前地图编号;
:服务端运行总秒数,稳定可靠;
CALC:执行数学运算(减法判断超时)。
地图配置补充
确保地图99在MapInfo.txt中存在:
99 限时地图 100 100
并在MapQuest_def99.txt中可选添加进入提示:
[@Map99]
ACT
SENDMSG 6 欢迎进入限时练级地图,10分钟后自动离开。
通过以上脚本组合,即可实现单机版传奇世界中限时地图的完整控制:限制进入、计时、到期自动踢出、每日重置,无需外部工具,纯脚本驱动。

