<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.waylee.net/index.php?action=history&amp;feed=atom&amp;title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83%2F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%2FServer%2FNotifyDate.txt</id>
	<title>工程参考/配置文件/Server/NotifyDate.txt - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.waylee.net/index.php?action=history&amp;feed=atom&amp;title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83%2F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%2FServer%2FNotifyDate.txt"/>
	<link rel="alternate" type="text/html" href="https://www.waylee.net/index.php?title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/Server/NotifyDate.txt&amp;action=history"/>
	<updated>2026-09-11T19:04:37Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://www.waylee.net/index.php?title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/Server/NotifyDate.txt&amp;diff=1442&amp;oldid=prev</id>
		<title>雪舞：​维护配置文件知识库：完整字段、读取范围、手工修改实例与核对状态</title>
		<link rel="alternate" type="text/html" href="https://www.waylee.net/index.php?title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/Server/NotifyDate.txt&amp;diff=1442&amp;oldid=prev"/>
		<updated>2026-09-11T16:49:47Z</updated>

		<summary type="html">&lt;p&gt;维护配置文件知识库：完整字段、读取范围、手工修改实例与核对状态&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;font-size:24px;line-height:1.4;overflow-wrap:anywhere;&amp;quot;&amp;gt;工程参考/配置文件/Server/NotifyDate.txt&amp;lt;/span&amp;gt;}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;div class=&amp;quot;config-file-reference&amp;quot; style=&amp;quot;max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,&amp;#039;Microsoft YaHei&amp;#039;,sans-serif;letter-spacing:0;overflow-wrap:anywhere;&amp;quot;&amp;gt;&lt;br /&gt;
[[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]]&lt;br /&gt;
&lt;br /&gt;
NotifyDate.txt 是「日期区间 → 文案」的对照表：第 2、3 列是起止日期（八位 YYYYMMDD），第 4 列是这段时间内登录后要发的文案。样本 40 行，内容是平安夜、圣诞节、元旦、情人节这类固定日期的问候。&lt;br /&gt;
&lt;br /&gt;
和星期表一样，它自己不会生效，需要 NotifyOnline.txt 里 mode = 2 的行把日期转换领进去。&lt;br /&gt;
&lt;br /&gt;
[[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]]&lt;br /&gt;
&lt;br /&gt;
== 文件位置与生效 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 项目&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:76%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 说明&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 运行文件&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;./Config/NotifyDate.txt&amp;lt;/code&amp;gt;，相对 Server 工作目录；路径写死在加载函数里。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 读取程序&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | Server 进程：NotifyOnline.cpp 的 LoadNotifyDateTab 加载，NotifyDateProcess 在 NotifyOnline.txt 出现 mode = 2 的行时按当前日期匹配&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 生效方法&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 正常保存并停服后重启 Server。仅在 NotifyOnline.txt 有 mode = 2 且 isShow ≠ 0 的行时才会被用到。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 样本格式&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;GB18030-compatible&amp;lt;/code&amp;gt;，&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;CRLF&amp;lt;/code&amp;gt;。保留原编码；源码读取器不会自动把中文转为 UTF-8。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
日期由 &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;PlayerLoginProcess&amp;lt;/code&amp;gt; 算成 &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;年*10000 + 月*100 + 日&amp;lt;/code&amp;gt;，例如 2026 年 9 月 11 日是 20260911。判定式是 &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;datBegin &amp;amp;lt;= iDate &amp;amp;amp;&amp;amp;amp; datEnd &amp;amp;gt;= iDate&amp;lt;/code&amp;gt;，**两端都包含**。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 检查项&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:76%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 行为&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 区间写法&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 同一天写成起止相同即可；跨月、跨年也支持，因为它只是一个整数比较。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 多条命中&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 全部发送，不做去重。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 上限&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 最多 64 行（m_tabDate[64]），超出读不进来。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 过期条目&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 不会报错，只是永远匹配不到；样本里就保留着 2006、2007 年的条目。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 文件格式 ==&lt;br /&gt;
首行是类型行：&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;INT	INT	INT	STRING&amp;lt;/code&amp;gt;；第二行是列名行，程序跳过其内容；从第三行开始读取数据。各列用真实 Tab 分隔，保留首列、空列及行尾，不用空格代替。数据行行首 # 表示注释，分号不是此表的注释规则。首列为空的行被跳过；不足的尾列补为空值，多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0，空字符串仍为空，不把解析成功当作业务合法。第一列须唯一，重复会触发读取器错误。&lt;br /&gt;
&lt;br /&gt;
== 字段详解 ==&lt;br /&gt;
列号从 1 开始，源码列下标从 0 开始。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:34%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 字段与类型&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:42%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 含义与修改要点&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 缺项或特殊值&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;第 1 列&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;INT：index&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 人工编号，判定不看它。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 不参与判定，允许重复。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;第 2 列&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;INT：BeginDate&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 区间起始日期，格式 YYYYMMDD（如 20061224）。包含在判定范围内。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 填 0 会让所有日期都满足“不小于起点”；加载过程不校验是不是合法日期，写 20261332 也不会报错，只是匹配不到。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;第 3 列&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;INT：EndDate&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 区间结束日期，格式同上。包含在判定范围内。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 小于起始日期时这条永远匹配不到。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;第 4 列&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;STRING：info$1$&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 命中区间时发送的文案。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 发送时按单字节长度截断到 255；空串会发出一条空的系统消息。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 常用修改实例 ==&lt;br /&gt;
示例为局部教学片段，先备份原运行文件，再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab；本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示，不表示运行文件应改存 UTF-8。&lt;br /&gt;
&lt;br /&gt;
=== 把新年问候的有效期从 1 月 1 日延长到 1 月 3 日 ===&lt;br /&gt;
修改前：&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;&amp;quot;&amp;gt;INT	INT	INT	STRING&lt;br /&gt;
index	BeginDate	EndDate	info$1$&lt;br /&gt;
2	20070101	20070101	新年伊始，万象更新，天龙八部祝您在新的一年里，心想事成，万事如意。&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
修改后：&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;&amp;quot;&amp;gt;INT	INT	INT	STRING&lt;br /&gt;
index	BeginDate	EndDate	info$1$&lt;br /&gt;
2	20070101	20070103	新年伊始，万象更新，天龙八部祝您在新的一年里，心想事成，万事如意。&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
按第 1 列定位 index 2（新年问候，起止原本都是 20070101）。只改第 3 列：20070101 → 20070103，之后 1 月 1 日到 1 月 3 日每天登录都会收到这条提示（两端都算在内）。&lt;br /&gt;
&lt;br /&gt;
样本里的年份是 2007，实际启用请把日期改成今年的值。八位整数的写法不能有分隔符：2007-01-03 会被解析失败。其余三列保持原样。示例块含类型行、列名行与该行原文，不能覆盖整表。&lt;br /&gt;
&lt;br /&gt;
== 验证与排查 ==&lt;br /&gt;
改动后重启 Server，并确认 NotifyOnline.txt 里存在 mode = 2 且 isShow ≠ 0 的行。把某行的起始日期改成今天、结束日期改成明天，登录角色应当看到这条文案；把同样的起止改成去年，同一年内不会再出现这条提示。&lt;br /&gt;
&lt;br /&gt;
换行、恢复后重启。&lt;br /&gt;
&lt;br /&gt;
=== 八位整数，两端包含 ===&lt;br /&gt;
写 20070101 而不是 2007-01-01；&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;datBegin &amp;amp;lt;= iDate &amp;amp;amp;&amp;amp;amp; datEnd &amp;amp;gt;= iDate&amp;lt;/code&amp;gt;，起止当天都算数。&lt;br /&gt;
&lt;br /&gt;
=== 跨年只是整数比较 ===&lt;br /&gt;
没有其他日历逻辑，20261225 到 20270105 这种跨年区间可以直接写。&lt;br /&gt;
&lt;br /&gt;
=== 过期条目不会报错 ===&lt;br /&gt;
超过 64 行之外读不进来，读进来的过期条目只是永远命中不了，不会有任何提示——这也是样本里堆着大量 2006/2007 年条目的原因。&lt;br /&gt;
&lt;br /&gt;
=== 入口开关在另一张表 ===&lt;br /&gt;
没有 NotifyOnline.txt 的 mode = 2 行，这张表不会被遍历。&lt;br /&gt;
&lt;br /&gt;
== 关联与依据 ==&lt;br /&gt;
[[工程参考/配置文件/Server/NotifyOnline.txt|Server/NotifyOnline.txt]] · [[工程参考/配置文件/Server/NotifyWeek.txt|Server/NotifyWeek.txt]]&lt;br /&gt;
&lt;br /&gt;
[[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/Module/NotifyOnline.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/Module/NotifyOnline.h&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Common/DataBase/TLBB_DBC.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Common/DataBase/TLBB_DBC.h&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;resources/Server/Config/NotifyDate.txt&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
&lt;br /&gt;
本页核对 LoadNotifyDateTab 的四列读取与 64 行上限、NotifyDateProcess 的闭区间判定式，以及 iDate = 年*10000+月*100+日 的计算方式；未启动服务端与游戏，实际推送需要实测。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:工程参考]]&lt;/div&gt;</summary>
		<author><name>雪舞</name></author>
	</entry>
</feed>