查看“︁工程参考/配置文件/Server/ShareMemInfo.ini”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Server/ShareMemInfo.ini
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Server/ShareMemInfo.ini</span>}} __NOTOC__ <div class="config-file-reference" style="max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,'Microsoft YaHei',sans-serif;letter-spacing:0;overflow-wrap:anywhere;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] ShareMemory 负责共享数据的存储处理。本文件中的 Key 与 ServerInfo.ini、WorldInfo.ini 的共享内存键相互对应;改错键可能让进程连接到不同的数据区域,不能把它们当作随意编号。 [[#文件位置与生效|位置与生效]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] · [[#验证与排查|验证与排查]] == 文件位置与生效 == {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 项目 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 说明 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务器运行路径 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">Server/Config/ShareMemInfo.ini</code>,以程序实际工作目录为准;源码 resources 中的文件是样本。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 主要使用者 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 主要使用者为 ShareMemory;Server 和 World 使用其中关联的数据键 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 这六份文件通过公共初始化流程读取,主要使用者在本页标明;不需要把它们复制到玩家客户端。重新加载配置的入口没有重读本页字段。修改后按正常流程保存并停服,再重启使用这份配置的程序;服务共用同一 Config 目录时,相关进程须使用一致配置。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 样本格式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">UTF-8</code>,换行为 <code style="white-space:normal;overflow-wrap:anywhere;">CRLF</code>;保留原编码、节名、键名与换行,不自动改成 UTF-8。 |} [System] 配数据库和周期,[ShareMem] 从 Key0/Type0 开始逐对列出共享数据。KeyCount 是条目数量,不是键的最大数值。 == 文件格式 == 使用 [节名] 与 Key=Value。节名和键名按源码拼写保留;本读取器按大小写精确匹配,节标题从行首开始。推荐沿用原有 CRLF 换行,在单独一行用分号写注释,不向值里插入制表符,也不依赖引号转义。详细读取边界见修改约定。 == 字段详解 == 表中“必填”表示读取代码要求存在,并不表示程序已校验业务取值合法。序号字段中的 [n] 表示按数量展开,不能原样写成带 [n] 的键。 === [System] === {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:34%;text-align:left;background:#edf3f2;padding:8px;" | 项目与类型 ! scope="col" style="width:42%;text-align:left;background:#edf3f2;padding:8px;" | 含义与修改要点 ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 缺项或特殊值 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">DBIP</code><br>字符串,地址 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 保存配置中的数据库主机地址。当前核对的 ODBC 连接代码没有把它传入 SQLConnect;实际主机由 DBName 指定的数据源配置决定。修改它不能代替修改 ODBC 数据源。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">DBPort</code><br>整数,端口 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 保存配置中的数据库端口。当前连接调用不使用此值建立连接;实际端口在对应 ODBC 数据源中设置。不能填游戏或登录端口。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">DBName</code><br>字符串,ODBC 数据源名 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 作为 SQLConnect 的数据源名称传入。它要对应服务器电脑上已配置的 ODBC DSN;不一定等于数据库中的库名。数据源内部还需选对实际数据库。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">DBUser</code><br>字符串 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 连接数据库使用的用户,不是玩家账号或 Wiki 账号。应具有目标数据库所需权限。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">DBPassword</code><br>字符串 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | DBUser 对应的数据库凭据。填写自己的值,不照抄示例;格式还受本程序的 CryptPwd 处理影响。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">CryptPwd</code><br>整数,建议使用明确的 0 或 1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 大于 0 时用 Seraph::string2pwd 解码配置中的数据库密码;小于等于 0 时直接使用字符串。它不是玩家登录密码的加密开关,也不能把任意密文填写进来。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">SMUInterval</code><br>正整数,毫秒 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 多类共享数据检查/保存逻辑使用的周期,10000 为 10 秒。并非所有类型统一采用它:全局数据分支使用固定 30 秒。降低周期会增加处理负担,实际保存结果需要实测。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">DATAInterval</code><br>正整数,毫秒 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 用于角色数据写入任务的后续保存时间安排。它不是数据库超时,也不保证所有类型每隔这个时间写一次。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |} === [ShareMem] === {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:34%;text-align:left;background:#edf3f2;padding:8px;" | 项目与类型 ! scope="col" style="width:42%;text-align:left;background:#edf3f2;padding:8px;" | 含义与修改要点 ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 缺项或特殊值 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">KeyCount</code><br>正整数,条目数量 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 循环读取 n=0 到 KeyCount-1 的 Key[n] 与 Type[n],两项都必须存在。样本列出 11 对,但数量须按实际部署核对。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">Key[n]</code><br>整数,共享内存键 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 对应 ServerInfo.ini 或 WorldInfo.ini 中同一数据用途的键,所有使用者保持一致。不是端口、容量、表行号或玩家 GUID。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 启用序号内必填。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">Type[n]</code><br>整数,数据类型 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 1 角色;2 帮会;3 邮件;4 玩家商店;5 全局数据;6 寄售商店;7 物品序列号;8 珍兽创建;9 城市;10 帮会联盟;11 交友广告。-1 是无效标识,不用来禁用有效条目。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 启用序号内必填;与同序号 Key 配对。 |} == 常用修改实例 == 以下均是局部教学片段,修改原文件对应位置,不能覆盖整份文件。IP、编号、周期均为教学值。 === 在测试环境调整共享数据处理周期 === 修改前的教学片段: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">[System] SMUInterval=10000 DATAInterval=60000</pre> 修改后: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">[System] SMUInterval=20000 DATAInterval=60000</pre> 教学示例把采用 SMUInterval 的周期从 10 秒改为 20 秒,DATAInterval 继续保持 60 秒。先正常完成保存和停服,备份原文件,再修改这两行中的第一行;保留数据库、KeyCount 及所有键。这会降低部分处理频率,但不代表统一改变全部数据的落库间隔。 == 验证与排查 == 逐对检查键与类型,再检查数据库连接和保存日志。在独立测试环境修改角色数据、正常停服后重启检查持久化结果;本页没有实际执行该测试。 不要强制结束正在保存的 ShareMemory;不要为了测试本页而清空共享内存或修改线上数据键。完成正常保存后再停服。数据库也使用 ODBC 数据源,DBIP/DBPort 不能代替 DSN 内的连接设置。 == 关联与依据 == [[工程参考/配置文件/Server/ServerInfo.ini|ServerInfo.ini]] · [[工程参考/配置文件/Server/WorldInfo.ini|WorldInfo.ini]] · [[工程参考/配置文件/Server/LoginInfo.ini|LoginInfo.ini]] [[工程参考/服务端外网设置|服务端外网设置]] · [[工程参考/登录器配置|登录器配置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/Config.cpp</code>:加载位置、字段读取与重新加载范围 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/Config.h</code>:初始化值与配置结构 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/Ini.cpp</code>:INI 实际解析规则 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/Ini.h</code>:读取失败与返回方式 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/FileDef.h</code>:运行时相对路径 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/GameDefine2.h</code>:程序类型与共享内存类型枚举 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server_2026_Project.props</code>:当前 Windows 工程的条件编译定义 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/ShareMemory/ShareMemory/ShareData/SMULogicManager.cpp</code>:字段使用、连接或数据处理分支 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/ShareMemory/ShareMemory/DB/ShareDBManager.cpp</code>:字段使用、连接或数据处理分支 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/ShareMemory/ShareMemory/Main/ShareMemory.cpp</code>:字段使用、连接或数据处理分支 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DBSystem/DataBase/ODBCInterface.cpp</code>:ODBC DSN 连接调用 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/TimeManager.cpp</code>:计时单位 核对范围为当前维护源码与配置样本;未启动游戏、服务端或数据库。配置解析测试与游戏业务测试分开记录;文中运行效果仍需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Server/ShareMemInfo.ini
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息