传奇服务端时间命令全教程涵盖HOUR MIN MONTH DATE定时器机器人限时进图配置

来源: 作者: 点击:
系统时间条件写在NPC脚本或任务脚本的#IF下面,常用检测参数按粒度分:YEAR检测年,MONTH检测月,DATE检测日,HOUR检测小时,MIN或MINUTE检测分钟,SECOND检测秒。老版、Hero、Blue、GOM、GEE都支持类似思路,但参数名和写法不完全一样,配之前先确认引擎命令表。基础条件格式示例:

IF

HOUR 8 8
MIN 20 50
ACT

MAPMOVE 3 330 330

上面表示8点20到8点50之间满足条件才执行,HOUR后面两个值写起始小时和结束小时,MIN后面两个值写起始分钟和结束分钟。要做多段时段,就写多个#IF分段或者用#ELSEACT兜底。

按月日范围限制用MONTH和DATE:

IF

MONTH 4 5
DATE 15 20
ACT

MAPMOVE D001

意思是4月15日到5月20日区间允许执行。单日固定时间可只写HOUR和MIN,不写MONTH和DATE就是每天生效。精确到秒用SECOND:

IF

MONTH 4 4
DATE 15 15
HOUR 4 4
MIN 15 15
SECOND 15 15
ACT

MAPMOVE M001

这种写法适合开服定点刷怪、定点发奖,避免每天重复手动操作。

Blue系时间变量可直接拼公告和日志,常用变量:YEAR年、MONTH月、DAY日、HOUR时、MINUTE分、SECOND秒、MILLISECONDS毫秒、LOGINTIME登录时间、LOGINLONG登录时长、SERVERRUNTIME服务器运行时间、$DATETIME服务器时间。NPC说话或写日志时直接引用:

ACT

SENDMSG 0 当前服务器时间:YEAR-MONTH-DAY HOUR:MINUTE:SECOND

做每日重置、开服天数、活动剩余时间提示都用这些变量,比硬编码日期好维护。

限时进地图最常用HOUR加MIN双重判断。比如某副本只在12点20到12点50、20点20到20点50开放,NPC传送脚本写:

[@进入副本]
IF

HOUR 12 12
MIN 20 50
ACT

MAPMOVE 副本地图号 X Y
ELSEACT

SENDMSG 5 当前不在12:20-12:50开放时间

[@进入副本2]
IF

HOUR 20 20
MIN 20 50
ACT

MAPMOVE 副本地图号 X Y
ELSEACT

SENDMSG 5 当前不在20:20-20:50开放时间

如果希望合并成一个标签,用两组#IF分别判断,满足任一时段就跳转进入标签,都不满足再统一提示。注意HOUR参数按小时包含边界,分钟用MIN单独收口,只写HOUR 12 20会被理解成12点到20点整段,不是12点20到20点50。

机器人定时任务分两种配置位置。第一种AutoRunRobot.txt加自动运行规则,第二种RobotManage.txt写具体执行段。Hero、老版常用:

AutoRun NPC RUNONDAY 00:00:00 @零点清理

AutoRun NPC RUNONDAY 20:00:00 @八点发奖

AutoRun NPC RUNONWEEK 6:20:30 @周六怪物攻城

RUNONDAY按每天指定时分秒执行,RUNONWEEK按星期执行,6一般代表周六,具体星期编号看引擎说明。RobotManage.txt里对应:

[@零点清理]
IF

ACT

CLEARCASTLEWAR
SENDMSG 0 零点已清理沙巴克数据

[@八点发奖]
IF

ACT

SENDMSG 0 20点全员发奖
GIVE 金币 100000

GOM/GEE常用按周期简写,AutoRunRobot.txt可写:

AutoRun NPC HOUR 1 @每小时执行

AutoRun NPC MIN 30 @每半小时执行

AutoRun NPC SEC 60 @每60秒执行

AutoRun NPC RUNONDAY 15:00:00 @每天15点

AutoRun NPC RUNONWEEK 6:20:30 @周六20点30

其中HOUR后面跟小时数,MIN跟分钟数,SEC跟秒数;带具体日期用RUNONDAY时:分:秒,带星期用RUNONWEEK星期:时:分。改完保存,M2看启动日志是否提示机器人脚本加载成功,格式错一个空格都可能导致整文件不运行。

QFunction定时器走!Timer.txt加QFunction.txt。Envir目录下新建或编辑!Timer.txt:

12:00 1
14:00 2
18:00 3

格式为时:分编号,24小时制,09:00不能写成9:00。QFunction.txt末尾写:

[@OnTimer_1]
ACT

SENDMSG 5 中午活动开启

[@OnTimer_2]
ACT

SENDMSG 5 下午活动开启

[@OnTimer_3]
ACT

SENDMSG 5 晚间活动开启

编号必须和!Timer.txt一一对应,标签写[@OnTimer_1]不能写成[@OnTimer1]。文件编码用ANSI,UTF-8带BOM会导致解析失败。改完重启M2,查看Log目录Timer loaded记录,到点在全服看红字。

泡点、挂机每秒执行用SetScTimer或OnTimer。QManage或NPC开启定时器:

MAPMOVE 泡点地图
SetOnTimer 2 1

意思开启2号定时器,每1秒触发一次。QManage.txt写:

[@OnTimer2]
IF

ISONMAP 泡点地图
ACT

CHANGEEXP + 200000
ELSEACT

SetOffTimer 2

SetOnTimer开、SetOffTimer关,OnTimer后面数字对应定时器编号。泡点扣货币、扣元宝、发内功经验都放这个标签里。玩家离开地图用地图退出脚本SetOffTimer,避免继续发奖励。GOM可用SetTimer/KillTimer思路,Hero可用SetScTimer/KillScTimer,命令名按引擎调整。

记录玩家登录时长和到期时间,用HUMAN变量或全局变量。登录脚本QManage.txt:

[@Login]
ACT

CALC S1 UNIXTIME
SAVEVAR HUMAN U[登录时间戳] S1

后续判断会员是否到期:

IF

CALC S1 UNIXTIME
LOADVAR HUMAN U[会员到期时间] S2
SMALL S2 S1
ACT

SENDMSG 5 会员已过期
CHANGEPROFILE 普通配置

UNIXTIME取当前Unix时间戳,存入变量后和到期时间戳比较,SMALL表示后者小于前者即过期。Hero的!RunTime.txt可做定时全量检测:

02:00:00 #RUNSCRIPT CheckAllVip

QFunction或对应运行段写遍历在线角色、读U变量、过期清权限。不同引擎变量作用域不同,HUMAN按角色存,GLOBAL全服存,别把个人到期时间写全局变量。

活动时段开关双倍经验,用CheckTime或HOUR+MIN都行。CheckTime示例:

[@双倍判断]
IF

CheckTime 19:00 21:00
ACT

SetDoubleExp 1
SENDMSG 2 双倍经验开启
ELSEACT

SetDoubleExp 0

HOUR+MIN示例:

[@双倍判断]
IF

HOUR 19 20
MIN 0 59
ACT

SetDoubleExp 1
ELSEACT

SetDoubleExp 0

HOUR 19 20覆盖19点和20点两个小时区,若只想要19:00-21:00,用HOUR 19 21再加MIN 0 59更稳妥,或者直接CheckTime省边界问题。每周活动加星期判断,CheckWeek 6表示周六,再配CheckTime 20:00 22:00只周六晚间生效。

固定地图停留计时自动回城,登录绑定定时器:

[@Login]
ACT

SetScTimer 1 3600

表示1号定时器3600秒后触发。QManage或MapQuest触发:

[@OnTimer1]
IF

ISONMAP 限制地图
ACT

MAPMOVE 回城地图 330 330
SetScTimer 1 3600

每次触发后再开下一个3600秒循环。GOM可用SetTimer,GEE可用SetMapTimer,Hero可用SetScTimer,参数都是编号加秒数。多地图分别计时就开不同编号定时器,别全部用1号,会互相覆盖。

批量定时传送用SetScTimer加OnTimer,或者MapQuest定时器。全服某地图玩家强制传送:

ACT

SetScTimer 1 86400

[@OnTimer1]
IF

HOUR 20 20
ACT

MapMoveAll 原地图 目标地图 X Y

Mir/Hero可用MapMoveAll原地图号目标地图号X Y,GOM可用@MapMoveAll或引擎批量传送命令,Hero可用MoveMapAll。定时每晚8点先把定时器每天刷一次,到8点判断HOUR再执行,避免只触发一次后不再跑。

时间命令不生效按下面顺序查:

1. 看系统时间。服务器操作系统时间错了,HOUR/MIN、!Timer、AutoRun全部按错误时间跑。先date或控制面板对时,再重启M2让定时任务重新校准。

2. 看脚本路径。NPC条件时间写在Market_Def对应NPC文件;机器人写Robot_def/AutoRunRobot.txt和RobotManage.txt;QFunction定时器写!Timer.txt加QFunction.txt;登录写MapQuest_def/QManage.txt。路径放错不加载。

3. 看参数格式。HOUR后面两个数字,MIN后面两个数字,MONTH/DATE同理;!Timer用HH:MM编号;AutoRun用RUNONDAY时:分:秒或RUNONWEEK星期:时:分;GOM按HOUR/MIN/SEC简写时别和Hero的RUNONDAY混用。

4. 看编号重复。OnTimer1、OnTimer2、SetOnTimer 2、SetScTimer 1都不能和别的脚本占用同号。泡点用2号、回城用1号、发奖用3号,统一记一个编号表。

5. 看编码和空格。中文脚本用ANSI,!Timer、AutoRun、Robot文件别用UTF-8带BOM;#AutoRun行多余空格、标签少冒号、@标签名拼错都会导致整段不触发。

6. 看条件顺序。限时进图先写允许时段再写拒绝提示;活动开关先写开启时段再写关闭;多时段用多个#IF,不要用单个HOUR 12 20替代12:20-12:50这种分钟级需求。

7. 看变量作用域。个人登录时间、会员到期用HUMAN;全服开服天数、活动总开关用GLOBAL;机器人里改全局变量记得SAVEVAR落地,重启后才不丢。

新服常用组合:AutoRunRobot每天固定点发双倍、刷BOSS、清沙巴克;NPC用HOUR+MIN限制特殊副本;QFunction用!Timer做整点喊话;泡点用SetOnTimer/OnTimer按秒发经验;登录用UNIXTIME记录会员和禁言到期。测试时先把系统时间改到目标时段手动触发一次,再恢复自动运行,确认M2日志、游戏公告、地图传送、发奖扣费四处结果一致再对玩家开放。