查看“︁工程参考/配置文件/Server/GeneralSets.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Server/GeneralSets.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Server/GeneralSets.txt</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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] GeneralSets.txt 只有一行、18 列:第 1 列是集合编号,第 2 列是说明文字,第 3 到 18 列是这个集合里的 16 个整数元素。 当前只有一个集合类型生效:第 0 行是**允许做银行操作的场景 ID 清单**。某个场景不在清单里时,玩家在该场景打开银行会被服务端拒绝。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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;">./Config/GeneralSets.txt</code>,由 FileDef.h 的 FILE_GENERAL_SETS 定义,相对于 Server 工作目录。当前检索没有发现客户端读取这份文件。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 进程:TableInit::InitGeneralSetsTable 打开 FILE_GENERAL_SETS;六处 CGBank*Handler 用 g_GeneralSetsTbl.Contains(GENERAL_SET_BANK, 场景ID) 判定 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 正常保存并停服后重启 Server。当前检索未发现单独重载本文件的可用入口。 |- | 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;">GB18030-compatible</code>,<code style="white-space:normal;overflow-wrap:anywhere;">CRLF</code>。保留原编码;源码读取器不会自动把中文转为 UTF-8。 |} 加载时先断言行数**恰好等于** GENERAL_SET_NUM(1)、列数至少 2 + GENERAL_SET_SIZE(16),然后对每个集合读 16 个整数到 <code style="white-space:normal;overflow-wrap:anywhere;">m_aSets[i][j]</code>。 {| 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;" | 必须正好 1 行数据(GENERAL_SET_NUM)。多一行少一行都会断言。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 列数 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 至少 18 列(索引、描述、16 个元素)。多出来的列不影响,少了直接返回。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合类型 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 枚举只有 GENERAL_SET_BANK = 0 一种,GENERAL_SET_NUM = 1 表示就这一个集合。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 元素个数 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定读 16 个;样本只用了 5 个场景,其余填 -1 占位。 |} 消费点是 <code style="white-space:normal;overflow-wrap:anywhere;">Contains(集合类型, 值)</code>,它线性扫 16 个元素做相等判断,命中即通过。样本开放的场景是 0、1、2、186、420。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT</code>;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。 == 字段详解 == 列号从 1 开始,源码列下标从 0 开始。 {| 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;">第 1 列</code><br>INT:索引 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合编号。必须为 0,因为代码只认 GENERAL_SET_BANK = 0;这一行的行号才是集合下标,列值不参与寻址。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 行数必须正好 1;重复行会让行数断言失败。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>STRING:描述 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 人工说明文字(样本「银行所在地」)。<code style="white-space:normal;overflow-wrap:anywhere;">Search_Posistion</code> 只读整数元素,这一列服务端不读。 | 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;">第 3 列</code><br>INT:Element0 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 0 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 4 列</code><br>INT:Element1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 1 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>INT:Element2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 2 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 6 列</code><br>INT:Element3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 3 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 7 列</code><br>INT:Element4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 4 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 8 列</code><br>INT:Element5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 5 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 9 列</code><br>INT:Element6 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 6 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 10 列</code><br>INT:Element7 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 7 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 11 列</code><br>INT:Element8 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 8 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 12 列</code><br>INT:Element9 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 9 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 13 列</code><br>INT:Element10 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 10 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 14 列</code><br>INT:Element11 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 11 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 15 列</code><br>INT:Element12 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 12 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 16 列</code><br>INT:Element13 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 13 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 17 列</code><br>INT:Element14 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 14 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 18 列</code><br>INT:Element15 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 集合的第 15 个元素,对第 0 行来说就是一个**允许做银行操作的场景 ID**。<code style="white-space:normal;overflow-wrap:anywhere;">Contains</code> 逐个比较这 16 个值。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 必须填整数。用不到的位置填 -1 占位(-1 不会等于任何合法场景 ID);留空会被 atoi 解析成 0,等于把场景 0 也算进清单,与样本第 3 列重复但无害——不过建议显式写 -1 以免误会。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 给银行清单再开放一个场景(把第一个空位从 -1 改成 431) === 修改前: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT 索引 描述 Element0 Element1 Element2 Element3 Element4 Element5 Element6 Element7 Element8 Element9 Element10 Element11 Element12 Element13 Element14 Element15 0 银行所在地 0 1 2 186 420 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1</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;">INT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT 索引 描述 Element0 Element1 Element2 Element3 Element4 Element5 Element6 Element7 Element8 Element9 Element10 Element11 Element12 Element13 Element14 Element15 0 银行所在地 0 1 2 186 420 431 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1</pre> 按第 1 列定位唯一的那一行。样本前 5 个位置依次是 0、1、2、186、420,第 6 个位置(第 8 列 Element5)原本是 -1,改成 431——这是一个教学用的场景号,实际开放时填真实的目标场景 ID。 改完重启 Server,在 431 场景里尝试打开银行应当成功,在清单外的场景里会被拒绝。只改这一列,其余 17 列保持原样。示例块含类型行、列名行与该行原文,不能覆盖整表。 == 验证与排查 == 改动后重启 Server,分别到清单内的场景和清单外的场景执行银行操作:清单内可以打开界面并存、取、换位置的钱物;清单外服务端不会处理对应的 CG 包。想确认改动是否生效,最省事的办法是临时把自己的目标场景从清单里删掉,看该场景是否立刻不能开银行。 行数或列数不对会在启动时 Assert;元素写成负数(除 -1 外)不会报错,只会永远匹配不到。 === 这张表看着像通用机制,其实只有一个用途 === <code style="white-space:normal;overflow-wrap:anywhere;">GENERAL_SET_TYPE</code> 里只有 GENERAL_SET_BANK 一项,GENERAL_SET_NUM = 1。别指望加第二行就能开出一个新的开关——加行会先撞上行数断言。 === 元素是 16 个固定槽位,不是列表 === 没有「元素个数」这一列,永远是 16 个。写不下就放不下;留空会被解析成 0 而不是「无」。 === 描述列不参与逻辑 === 第 2 列是人看的说明,改成什么都行,但保持与实际内容一致能少踩坑。 === 与 IPRange.ini 是两套东西 === 这里管的是「哪些场景能用银行」,不是访问限制;IP 白名单在别的文件里。 == 关联与依据 == [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGBankMoneyHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Server/Config/GeneralSets.txt</code>:实际加载、解析、字段使用或示例关联依据 本页核对 InitGeneralSetsTable 的行列断言与 16 元素读取循环、GENERAL_SET_TYPE 枚举,以及 CGBank*Handler 里 Contains(GENERAL_SET_BANK, 场景ID) 的调用方式;未启动服务端与游戏,银行界面的实际表现需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Server/GeneralSets.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息