查看“︁工程参考/配置文件/Public/ShopSceneLimiti.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/ShopSceneLimiti.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/ShopSceneLimiti.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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] ShopSceneLimiti.txt 决定某个商店编号能否在当前场景打开。脚本调用 DispatchShopItem 时传入的 sceneId 必须通过本表,否则商店不会下发。它不决定商品、价格或货币;那些在 ShopTable.txt。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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;">../Public/Config/ShopSceneLimiti.txt</code>,相对于 Server 工作目录。文件名中的 Limiti 是原名,不要改成 Limit。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 在静态商店管理器初始化时与 ShopTable 一起加载;打开商店的 Lua 入口调用 IsShopInScene |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 与 ShopTable.txt 一起修改:两表行数必须相同,且同行第一列商店编号相同,否则 StaticShopManager::Init 断言。正常停服后改实际 Public 副本并重启 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。 |} 样本 172 行、35 列,与 ShopTable 逐行对齐,第一列同为 1..207 的商店编号。第 2..33 列最多 32 个场景配置编号,第 34 列“是否允许在副本打开”目前只加载未参与授权判断,第 35 列非 0 时任意场景都可通过。 === 场景编号是什么 === {| 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;" | 第 1 列 Index | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 商店编号,必须等于同行 ShopTable 第一列,不是行号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2..33 列 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | SceneInfo.ini 的场景配置编号,例如 1 苏州、2 大理。不是 NPC 对象 ID、角色 GUID 或地图资源内部编号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空位 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 样本用 -1 或 0 填满未用槽;IsShopInScene 按相等比较,-1/0 不会匹配正常正数场景。 |} 授权函数先按商店编号找到行,再看第 35 列;为 0 时逐个比较 32 个场景槽。副本场景若使用不同场景编号,不会因为第 34 列而为真。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT 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:Index | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 商店编号,加载时必须等于已经读入的同行 ShopTable 编号。查询仍按编号而不是行号。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 与 ShopTable 行数或编号不一致会断言。空首列跳行会破坏对齐。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>INT:允许摆放的场景1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 3 列</code><br>INT:场景2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 4 列</code><br>INT:场景3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>INT:场景4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 4 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 6 列</code><br>INT:场景5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 7 列</code><br>INT:场景6 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 6 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 8 列</code><br>INT:场景7 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 7 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 9 列</code><br>INT:场景8 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 8 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 10 列</code><br>INT:场景9 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 9 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 11 列</code><br>INT:场景10 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 10 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 12 列</code><br>INT:场景11 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 11 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 13 列</code><br>INT:场景12 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 12 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 14 列</code><br>INT:场景13 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 13 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 15 列</code><br>INT:场景14 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 14 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 16 列</code><br>INT:场景15 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 15 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 17 列</code><br>INT:场景16 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 16 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 18 列</code><br>INT:场景17 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 17 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 19 列</code><br>INT:场景18 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 18 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 20 列</code><br>INT:场景19 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 19 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 21 列</code><br>INT:场景20 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 20 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 22 列</code><br>INT:场景21 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 21 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 23 列</code><br>INT:场景22 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 22 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 24 列</code><br>INT:场景23 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 23 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 25 列</code><br>INT:场景24 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 24 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 26 列</code><br>INT:场景25 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 25 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 27 列</code><br>INT:场景26 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 26 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 28 列</code><br>INT:场景27 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 27 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 29 列</code><br>INT:场景28 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 28 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 30 列</code><br>INT:场景29 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 29 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 31 列</code><br>INT:场景30 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 30 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 32 列</code><br>INT:场景31 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 31 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 33 列</code><br>INT:场景32 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 32 个授权场景配置编号。Shop 33 样本为 1、2、186、71、72,其余为 -1。只要其中一个等于当前 sceneId 即通过。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 或 -1 不能当作“全部场景”。重复填写同一场景不会叠加权限。不要填商店编号或 NPC 号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 34 列</code><br>INT:是否允许在副本打开 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 加载到 m_bOpenInCopyScene。当前 IsShopInScene 以及已核对的四个打开商店 Lua 入口都不读取它。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 样本部分行为 1。不能承诺改本列就能在副本打开或禁止商店;副本若 sceneId 不同,仍看第 2..33 列或第 35 列。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 35 列</code><br>INT:是否所有场景都能用 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 非 0 时 IsShopInScene 对任意 sceneId 返回真,不再看 32 个场景槽。Shop 120 等 63 行为 1。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0 必须命中场景槽。不能用本列代替商品表,也不会跳过 NPC 存在等其他检查。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 让商店 33 在任意场景都能通过授权 === 修改前: <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 INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT Index 允许摆放的场景1 场景2 场景3 场景4 场景5 场景6 场景7 场景8 场景9 场景10 场景11 场景12 场景13 场景14 场景15 场景16 场景17 场景18 场景19 场景20 场景21 场景22 场景23 场景24 场景25 场景26 场景27 场景28 场景29 场景30 场景31 场景32 是否允许在副本打开 是否所有场景都能用 33 0 1 2 186 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 71 72 0 0</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 INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT Index 允许摆放的场景1 场景2 场景3 场景4 场景5 场景6 场景7 场景8 场景9 场景10 场景11 场景12 场景13 场景14 场景15 场景16 场景17 场景18 场景19 场景20 场景21 场景22 场景23 场景24 场景25 场景26 场景27 场景28 场景29 场景30 场景31 场景32 是否允许在副本打开 是否所有场景都能用 33 0 1 2 186 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 71 72 0 1</pre> 定位第一列为 33 的行,确认与 ShopTable 商店 33 对齐。样本第 2..33 列含苏州 1、大理 2、186、71、72,第 34 列为 0,第 35 列为 0。只把第 35 列改为 1,保留 35 列、Tab、其余场景槽和第 34 列。片段含表头与该行,不能覆盖 172 行整表。 改后 IsShopInScene(33, 9) 由假变真,原先未列入的场景配置编号也能通过授权。原始函数隔离测试已核对。这不会改变大理石价格或商票货币,也不会让客户端自己放行;脚本仍要调用打开接口。第 34 列保持 0,因为当前授权函数并不使用它。 恢复时改回 0 并重启。不要只改客户端同名文件。 == 验证与排查 == 启动无两表 Version 断言,仍为 172 行且同行编号一致,仅商店 33 的第 35 列为 1。用原先不在列表中的场景调用 DispatchShopItem(..., 33) 应能通过授权检查;改回 0 后同一场景应失败。实际 NPC 对话、距离和背包仍需要实测。 === 与 ShopTable 必须对齐 === Init 先读 ShopTable 再读本表。行数不同或同行商店编号不同都会断言。插入、删除或排序其中一张表时必须同步另一张,并保持第一列编号。 === 第 34 列为什么不能当开关 === 源码把该列读进结构,但授权函数只判断“全场景”标志和 32 个场景槽。已核对 DispatchShopItem、DispatchNoNpcShopItem、DispatchYuanbaoShopItem、DispatchNpcYuanbaoShopItem 都调用这个授权函数。副本能否打开应实测副本实际 sceneId,不能只改第 34 列。 === 客户端 === 当前客户端 GMDataBase 只登记 ShopTable.txt,未登记本文件。Client/Data/Config 虽有同名样本,不能当作客户端场景授权表。 == 关联与依据 == [[工程参考/配置文件/Public/ShopTable.txt|Public/ShopTable.txt]] [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Other/ShopManager.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Other/ShopManager.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/Server.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGShopBuyHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGShopSellHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGShopRepairHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Script/LuaFnTbl_Shop.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Script/LuaFnRegister.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Item/ItemHelper.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;">Common/GameStruct_Item.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;">Client/Client/Common/TDDBC_Struct.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DBC/GMDataBase.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DataPool/GMDataPool.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DataPool/GMDataPool.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/Network/PacketHandler/GCShopMerchandiseListHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Render/ResourceProvider.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Render/RenderSystem.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Core/Core/FairySystem.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Bin/FairyResources.cfg</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/ShopTable.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/ShopSceneLimiti.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/CommonItem.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Config/ShopTable.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Config/ShopSceneLimiti.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Server/Config/SceneInfo.ini</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Data/Script/city0_building5.lua</code>:实际加载、解析、字段使用或示例关联依据 原始 DBC、与 ShopTable 同行对齐、场景槽比较和全场景标志在隔离夹具验证。副本 sceneId、NPC 距离和真实打开流程需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/ShopSceneLimiti.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息