传奇开区倒计时实现方案与脚本配置

来源: 作者: 点击:
开区倒计时分为“登录器列表倒计时”与“游戏内脚本倒计时”两个层面,分别控制开区前的等待与开区后的活动触发。核心依赖列表文件的时间戳与引擎的机器人脚本系统。

 

一、登录器列表倒计时(开区预告)

玩家在登录器界面看到“距开区还剩X小时”由列表文件控制,与引擎无关。

1. 列表文件配置
登录器读取的列表文件(如ServerList.txt或在线JSON)需包含State(状态)与StartTime(开区时间)字段。状态需设置为“未开区”或“预热”,登录器会自动计算当前时间与StartTime的差值显示倒计时。若状态误设为“正常”,则直接显示“进入游戏”,无倒计时。

2. 时间格式规范
开区时间必须使用标准时间戳或YYYY-MM-DD HH:MM:SS格式。例如:2026-04-29 20:00:00。时间格式错误会导致登录器解析失败,显示乱码或直接跳过。

3. 列表更新机制
修改开区时间后,必须更新列表文件并刷新登录器缓存。若使用网页列表,需上传至服务器并确保登录器能正常拉取;若使用本地列表,需重启登录器重新读取。

二、游戏内开区倒计时脚本(活动控制)

游戏内的全服公告与活动倒计时,通过Robot_def目录下的机器人脚本实现。

1. 机器人脚本配置(AutoRunRobot.txt)

在MirServer\Mir200\Envir\Robot_def\AutoRunRobot.txt中添加触发规则。支持按开区后时间或具体时钟触发。

#AutoRun NPC MIN 1 @CheckOpen
#AutoRun NPC HOUR 1 @OpenReward

• MIN 1:开区后每分钟检测一次。

• HOUR 1:开区后每小时触发一次。

2. 倒计时逻辑脚本(RobotManage.txt)

在RobotManage.txt中编写具体的倒计时逻辑,利用全局变量(如G变量)标记开区阶段。

示例:开区后1小时开启活动

[@CheckOpen]
#IF
EQUAL G100 0
#ACT
INC G101 1
#IF
EQUAL G101 60
#ACT
MOV G100 1
SENDMSG 0 ★★★★★ 开区已达60分钟,全服双倍经验活动已开启! ★★★★★ 249 216
BREAK

• G100=0表示活动未开启,G101为计时变量(分钟)。

• 当G101累计到60(1小时),设置G100=1并发送全服公告。

3. 屏幕居中倒计时(SendCenterMsg)

使用SendCenterMsg命令在屏幕中央显示带倒计时的公告,倒计时结束后执行特定脚本(如发放奖励)。

[@OpenReward]
#IF
#ACT
SendCenterMsg 251 0 距离双倍经验结束还剩%d秒! 1 3600 @EndDoubleExp

• 1:发送给所有在线玩家。

• 3600:倒计时总秒数(1小时)。

• @EndDoubleExp:倒计时结束后跳转执行的脚本标签(需在QFunction-0.txt中定义)。

三、开区等待地图NPC脚本

对于需要玩家在固定地图等待开区的版本,NPC脚本需结合CheckDateTime或CheckOnTimer命令。

等待地图NPC示例:

[@Main]
#if
CheckDateTime < 2026/04/29 20:00:00
#act
MessageBox 开区倒计时中,请耐心等待!当前时间:<$DATETIME>
BREAK
#if
#act
mapmove 3 330 330

• CheckDateTime:检测当前服务器时间是否早于开区时间,若是则提示等待。

- 到达开区时间后,自动传送至土城(地图3)。

四、常见问题与修复

1. 登录器不显示倒计时
- 检查列表文件状态是否为“未开区”。
◦ 确认系统时间与列表时间格式一致(24小时制)。

- 清除登录器缓存或重新生成登录器。

2. 游戏内倒计时不触发
◦ 确认AutoRunRobot.txt语法正确,无多余空格。

- 检查M2引擎加载时是否报机器人脚本错误。
◦ 确认G变量未被其他脚本重复使用导致数值被覆盖。

3. 时间不同步
◦ 服务器需使用NTP同步网络时间,避免服务器本地时间与列表时间不一致导致倒计时错乱。

核心配置要点:登录器倒计时依赖列表文件的时间戳,游戏内倒计时依赖机器人脚本的计时变量。修改任何时间参数后,务必重启相关服务(M2、登录器)以生效。