传奇报错 "is not a valid date and time" 解决:系统格式、配置文件、脚本、数据库

来源: 作者: 点击:
这行红字意思是“不是一个合法的日期时间”,GOM/GEE/HERO 启动时 M2Server 一解析时间字符串就炸。不是引擎坏了,是某处时间字符串格式不对。按下面顺序查,别重装。

一、先修系统时间格式(80% 在这)
引擎只认横杠分隔,不认斜杠/点号/中文。
1. 右下角时间 → 调整日期和时间 → 语言和区域 → 区域格式 → 更改格式
2. 短日期改成:yyyy-MM-dd(或 yyyy-M-d)
3. 长时间改成:HH:mm:ss
4. 时区锁死:(UTC+08:00) 北京、重庆、香港、乌鲁木齐
5. Win+R → regedit → HKEY_CURRENT_USER\Control Panel\International
- sShortDate = yyyy-MM-dd
• sTimeFormat = HH:mm:ss

6. 改完注销或重启电脑,再起 M2

虚拟机额外做:关 VMware Tools 时间同步,别恢复快照回退时间。

二、修 !Setup.txt 里的时间参数(老 GOM/HERO 必查)
路径:MirServer\Mir200\!Setup.txt
Notepad++ 打开,Ctrl+F 搜:
• DayOfGuildFountain=

- ServerStartTime=
• EndTime=

• OpenServerTime=

• DateTimeCheck=

正确写法:2026-09-12 13:00:00(横杠+空格+冒号,四位年,月日补零)
错误写法:2026/9/12、26-9-12、2026.09.12、202609121300

最快处理:
• 把等号后面时间全删,留 DayOfGuildFountain=(引擎自动取系统时间)

• 或整行前加 ; 注释掉

- 保存,关 M2 删 ScriptCache.dat / 日志,重启全套

三、查脚本里时间变量(启动不崩、运行中弹红)
重点文件:
• Mir200\Envir\QFunction-0.txt

- QManage.txt
• LoginQuest.txt

• Robot.txt

• MapEvent.txt

搜关键字:STR、DAY、$TIME、StrToDateTime、FormatDateTime、CheckTime、AutoMove

常见死法:
• 变量为空直接转时间:上次登录时间存成 "" 或 "NULL"

• 硬编码 "2023年10月1日"、"2023/13/45"(13月直接非法)

• 从数据库读时间字段没判空就 GOTO 计算

修法:
• 转时间前加 #IF 判断非空且长度>8

• 非法值给默认 Now() 或 "2026-01-01 00:00:00"

• 脚本文件另存为 ANSI,别用 UTF-8-BOM

四、修数据库脏时间(能起 M2 但加载角色崩)
MySQL 用 Navicat,DBC 用 DBRepair:
查表:TBL_CHAR、UserData、Guild、Event、Mail
找字段:CreateTime、LastLoginTime、ExpireTime、RegDate

非法值典型:
• 0000-00-00 00:00:00

• 1970-01-01 00:00:00

• 2023-13-01

• 空字符串

MySQL 修复 SQL:
ALTER TABLE TBL_CHAR MODIFY COLUMN CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP;
UPDATE TBL_CHAR SET CreateTime = STR_TO_DATE(CreateTime,'%Y-%m-%d %H:%i:%s') WHERE CreateTime LIKE '%/%' OR CreateTime='0000-00-00 00:00:00';
UPDATE TBL_CHAR SET CreateTime = NOW() WHERE CreateTime IS NULL OR CreateTime='';

SQLite 老库:
UPDATE 表名 SET 时间字段=NULL WHERE 时间字段='0000-00-00 00:00:00';
再改字段允许 NULL 或给默认 CURRENT_TIMESTAMP

五、GOM 专属:ESP 时间校验
GOM 新版带 ESP 封挂插件,单机报“请先同步再使用”:
• 直接删 GomEngine\Plugins\esp.dll(单机测试)

• 外网服买正版 ESP 插件对齐时间服务,别硬删

六、改完必做动作
1. 任务管理器结束 M2Server.exe / DBServer.exe / LoginSrv.exe 残留
2. 删 MirServer\Mir200\Log\ScriptCache.dat 和当天 log
3. 按顺序起:DBServer → LoginSrv → Gate → M2
4. M2 窗口看“Load Time Config OK”无红字才算过

七、速查口诀
• 斜杠改横杠,中文改数字,补零四位年

• Setup.txt 时间行删光最稳

• 脚本转时间前先判空

• 数据库 0000-00-00 全 UPDATE 成 NOW()

• 系统区域锁 yyyy-MM-dd + UTC+8

• 改完注销重启,别只保存就起 M2

一句话收尾:这报错不是玄学,是“某处写了 2026/9/12 或 0000-00-00 引擎不认”。先把系统格式拧成 yyyy-MM-dd,再把 !Setup.txt 里时间行清掉或改标准格式,最后扫脚本和数据库脏时间,M2 就能正常 Load Time Config。下次再弹,别关日志,看它指到哪个文件哪一行,比百度准。