<?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%2FItemSerial.ini</id>
	<title>工程参考/配置文件/Server/ItemSerial.ini - 版本历史</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%2FItemSerial.ini"/>
	<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/ItemSerial.ini&amp;action=history"/>
	<updated>2026-09-10T12:23:13Z</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/ItemSerial.ini&amp;diff=1264&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/ItemSerial.ini&amp;diff=1264&amp;oldid=prev"/>
		<updated>2026-09-09T15:19:50Z</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/ItemSerial.ini&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;
ItemSerial.ini 保存非共享内存模式下新物品 GUID 的流水号起点。它是会被程序写回的状态文件，不是物品模板表，也不控制掉落、数量、属性或价格。已有角色和物品的环境，不要把它重置为 0，也不要像普通参数文件那样直接恢复旧备份。&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/ItemSerial.ini&amp;lt;/code&amp;gt;，相对于读取程序的工作目录。源码 resources/Server/Config 是样本位置，实际部署可能另有副本。&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 游戏进程的物品管理器，仅在未启用共享内存时读写&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 初始化物品管理器时读取并尝试写回；运行中改文件不会改变内存中的当前计数。启用共享内存时应核对 ServerInfo.ini 的 ItemSerialKey 与 ShareMemInfo.ini 中 Type=7 的键，不修改本 INI 来重置共享计数。客户端不读取本文件。&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;ASCII&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;
原始 INI 写回器会把缓冲末字节写为 NUL；这不是编辑器自动追加的可见字符。缺键时的自动补写也不能当作修复：隔离测试中仅有 [ItemConfig] 和 Other=1、并以 CRLF 结束的文件，本来要补写 1000，却写成了可读数值 100。应在停服后由人工确认完整节、键、值和行尾，再核对启动写回，不能故意删除键让程序重建。&lt;br /&gt;
&lt;br /&gt;
只有 [ItemConfig] 的 ItemSerial 一个字段。先查看当前 Server 对应的 ServerInfo.ini [ServerN] EnableShareMem：关闭共享内存时使用本 INI；启用时从 ItemSerialKey 对应的共享数据读取流水号，本 INI 不参与这一分支。不要为让本文件生效而切换存储模式。&lt;br /&gt;
&lt;br /&gt;
== 文件格式 ==&lt;br /&gt;
使用 [节名] 与 Key=Value，节名和键名区分大小写，保持节标题位于行首。用单独一行分号写注释，保留原编码及 CRLF 换行；重复节或键取先匹配项，不依赖后写覆盖。缺项、空值与 0 分别按下表处理。&lt;br /&gt;
&lt;br /&gt;
== 字段详解 ==&lt;br /&gt;
模板 [n] 表示从 0 开始的序号，写入时应展开为实际数字；不是字面键名。&lt;br /&gt;
&lt;br /&gt;
=== [ItemConfig] ===&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;ItemSerial&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;INT：十进制流水号起点&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 非共享内存启动时读入为 N，文件写回 N+1000，内存仍为 N；本次运行第一次生成返回 N+1，以后逐次加 1。物品 GUID 由 World、Server 和该流水号共同组成，跟 GemInfo/CommonItem 的模板 index、角色 GUID、对象 ID 或背包格号不同。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 读取失败将内存初值设为 0，空值或非法数字也可能经 atoi 成为 0。代码不拒绝负数，不自动检查已有物品是否占用。不得用缺项、空值、负数或超出 INT 的数作为修复；还须为启动 +1000 和持续递增保留空间，接近上限时停止生成并专门处理，不能依赖溢出回绕。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 常用修改实例 ==&lt;br /&gt;
示例为局部教学片段，先备份原运行文件，再修改对应行并保留其余配置。教学值不是程序默认值。&lt;br /&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;&amp;amp;#91;ItemConfig&amp;amp;#93;&lt;br /&gt;
ItemSerial=0&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;&amp;amp;#91;ItemConfig&amp;amp;#93;&lt;br /&gt;
ItemSerial=10000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
本例仅适用于尚未生成、导入或保存任何物品的全新隔离测试区，且该区原本就采用非共享内存模式，World/Server 标识不与其他数据环境混用。10000 是教学值，不是通用修复值。停服后保留其他文件和存储模式，只将起点由 0 改为 10000。按当前代码，启动写回应为 11000，本次运行首个流水号为 10001；它可能先被启动过程生成的其他物品使用，不能承诺玩家拿到的第一件恰好是此号。有既存物品的环境不适用本例。&lt;br /&gt;
&lt;br /&gt;
== 验证与排查 ==&lt;br /&gt;
在隔离测试环境记录启动前后的文件值、当前 EnableShareMem、WorldID 和 ServerID；关闭共享内存时检查启动后成功写回起点 +1000。物品的 GUID 可在已有物品日志或检查工具中核对，不用物品模板编号代替。程序没有检查 Write/Save 返回值，仅看到 Server 启动成功不能证明写回成功；确认目录可写。共享模式下本 INI 不变是符合读取分支的结果。实际物品生成及持久化恢复仍需要实测。&lt;br /&gt;
&lt;br /&gt;
=== 为什么不能照普通配置恢复旧值 ===&lt;br /&gt;
非共享内存代码只在初始化时写回 N+1000，后续每次生成只增加内存计数，本文件不逐件更新。假设某次读取 N=10000，文件写成 11000，本轮生成 1001 次就已经用过 11001。下一次重启从文件 11000 开始，第一次又生成 11001。这个 +1000 的预留不能保证长期运行后不会重用流水号；把起点提高一次也没有修复该机制。&lt;br /&gt;
&lt;br /&gt;
已有数据的恢复必须同时核对保存下来的物品 GUID、共享状态/数据库和同一 World、Server 范围内所有生成来源。旧 INI 备份可能低于实际已用流水号，不应直接覆盖；不能只扫描一个角色的背包就认定找到了全部物品最大号。本页不提供重置数据库或清空共享内存命令。全新测试区如果已按示例生成物品，也不能继续把旧的 0 值恢复回去当作普通回滚。&lt;br /&gt;
&lt;br /&gt;
=== 与共享内存及区服编号的关系 ===&lt;br /&gt;
共享内存模式使用 ItemSerialKey 对应的数据，ShareMemory 有独立的数据库读取和保存流程；它不会自动从本 INI 迁移当前计数。两种模式之间迁移需要专门核对数据，不能只切 EnableShareMem。生成 GUID 时 World 和 Server 被转为 BYTE，超出 0 到 255 会截断，不能靠增大区服编号创造可靠的新范围；保持已核对的原标识。&lt;br /&gt;
&lt;br /&gt;
当前源码明确存在上述启动写回与持续生成的区别，原生隔离测试可以复现。实际服的生成速率、其他持久化来源及恢复后的唯一性需要实测和完整数据核查。&lt;br /&gt;
&lt;br /&gt;
== 关联与依据 ==&lt;br /&gt;
[[工程参考/配置文件/Server/ServerInfo.ini|Server/ServerInfo.ini]] · [[工程参考/配置文件/Server/WorldInfo.ini|Server/WorldInfo.ini]] · [[工程参考/配置文件/Server/ShareMemInfo.ini|Server/ShareMemInfo.ini]]&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;Common/ServerBase/Ini.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/ServerBase/Ini.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/ServerBase/FileDef.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/ServerBase/Config.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/GameStruct_Item.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/DB_Struct.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;Server/Server/GameServer/Server/Item/ItemManager.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/Item/ItemManager.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;Server/Server/GameServer/Server/Main/Server.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/Main/ShareMemManager.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/ShareMemory/ShareMemory/ShareData/SMULogicManager.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
&lt;br /&gt;
本页以原始 INI 解析器和物品流水号初始化、递增、GUID 赋值函数作隔离验证；共享内存访问以测试桩验证分支。未启动服务或数据库，不代表已验证线上持久化恢复。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:工程参考]]&lt;/div&gt;</summary>
		<author><name>雪舞</name></author>
	</entry>
</feed>