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

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

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

IF

HOUR88
MIN2050
ACT

MAPMOVE3330330

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

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

IF

MONTH45
DATE1520
ACT

MAPMOVED001

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

IF

MONTH44
DATE1515
HOUR44
MIN1515
SECOND1515
ACT

MAPMOVEM001

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

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

ACT

SENDMSG0当前服务器时间:YEAR-MONTH-DAYHOUR:MINUTE:SECOND

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

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

[@进入副本]
IF

HOUR1212
MIN2050
ACT

MAPMOVE副本地图号XY
ELSEACT

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

[@进入副本2]
IF

HOUR2020
MIN2050
ACT

MAPMOVE副本地图号XY
ELSEACT

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

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

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

AutoRunNPCRUNONDAY00:00:00@零点清理

AutoRunNPCRUNONDAY20:00:00@八点发奖

AutoRunNPCRUNONWEEK6:20:30@周六怪物攻城

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

[@零点清理]
IF

ACT

CLEARCASTLEWAR
SENDMSG0零点已清理沙巴克数据

[@八点发奖]
IF

ACT

SENDMSG020点全员发奖
GIVE金币100000

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

AutoRunNPCHOUR1@每小时执行

AutoRunNPCMIN30@每半小时执行

AutoRunNPCSEC60@每60秒执行

AutoRunNPCRUNONDAY15:00:00@每天15点

AutoRunNPCRUNONWEEK6:20:30@周六20点30

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

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

12:001
14:002
18:003

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

[@OnTimer_1]
ACT

SENDMSG5中午活动开启

[@OnTimer_2]
ACT

SENDMSG5下午活动开启

[@OnTimer_3]
ACT

SENDMSG5晚间活动开启

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

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

MAPMOVE泡点地图
SetOnTimer21

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

[@OnTimer2]
IF

ISONMAP泡点地图
ACT

CHANGEEXP+200000
ELSEACT

SetOffTimer2

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

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

[@Login]
ACT

CALCS1UNIXTIME
SAVEVARHUMANU[登录时间戳]S1

后续判断会员是否到期:

IF

CALCS1UNIXTIME
LOADVARHUMANU[会员到期时间]S2
SMALLS2S1
ACT

SENDMSG5会员已过期
CHANGEPROFILE普通配置

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

02:00:00#RUNSCRIPTCheckAllVip

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

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

[@双倍判断]
IF

CheckTime19:0021:00
ACT

SetDoubleExp1
SENDMSG2双倍经验开启
ELSEACT

SetDoubleExp0

HOUR+MIN示例:

[@双倍判断]
IF

HOUR1920
MIN059
ACT

SetDoubleExp1
ELSEACT

SetDoubleExp0

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

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

[@Login]
ACT

SetScTimer13600

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

[@OnTimer1]
IF

ISONMAP限制地图
ACT

MAPMOVE回城地图330330
SetScTimer13600

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

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

ACT

SetScTimer186400

[@OnTimer1]
IF

HOUR2020
ACT

MapMoveAll原地图目标地图XY

Mir/Hero可用MapMoveAll原地图号目标地图号XY,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、SetOnTimer2、SetScTimer1都不能和别的脚本占用同号。泡点用2号、回城用1号、发奖用3号,统一记一个编号表。

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

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

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

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