表概述

guild_bank_right 表定义各公会等级(rid)对各银行标签页(TabId)的具体访问权限和每日取款数量限制。

核心概念:与 guild_rank 的全局权限不同,此表精细化控制每个等级对每个标签页的操作权限(查看/存入/取出)和每日取物数量。

表结构

字段名数据类型默认值说明
guildidINT UNSIGNED0公会ID → guild.guildid
TabIdTINYINT UNSIGNED0标签页ID → guild_bank_tab.TabId
ridTINYINT UNSIGNED0公会等级ID → guild_rank.rid
gbrightTINYINT UNSIGNED0权限掩码
SlotPerDayINT UNSIGNED0每日可取物品数量上限

重要字段详解

gbright - 权限掩码

详细说明:按位标记控制对该标签页的操作权限。权限位
  • 位 0 (1):查看标签页
  • 位 1 (2):存入物品
  • 位 2 (4):取出物品
  • 位 5 (32):查看标签页日志
  • 例如 gbright=7 (1+2+4) = 查看+存入+取出

SlotPerDay - 每日取物数量

详细说明:限制该等级成员每天从此标签页取出的物品数量。
  • 0 = 无限制
  • 正整数值 = 每日最多取出该数量的物品
  • 配合 guild_member_withdraw 表追踪实际使用量
SQL示例:查看等级1在标签页0的权限 → SELECT * FROM guild_bank_right WHERE guildid=1 AND TabId=0 AND rid=1;

SQL查询示例

-- 设置等级2在标签页1只能查看,不能存取 INSERT INTO guild_bank_right (guildid, TabId, rid, gbright, SlotPerDay) VALUES (1, 1, 2, 1, 0) ON DUPLICATE KEY UPDATE gbright = 1, SlotPerDay = 0;
-- 查看某公会所有标签页的所有等级权限 SELECT gbr.TabId, gbr.rid, gr.rname, gbr.gbright, gbr.SlotPerDay FROM guild_bank_right gbr JOIN guild_rank gr ON gbr.guildid = gr.guildid AND gbr.rid = gr.rid WHERE gbr.guildid = 1 ORDER BY gbr.TabId, gbr.rid;

常见问题

Q: gbright 和 guild_rank.rights 有什么关系?

guild_rank.rights 是全局权限(如能否查看银行总览),guild_bank_right.gbright 是每个标签页的细粒度权限(能否在特定标签页存取物品)。两者互补。

Q: SlotPerDay 是如何计算的?

基于日历日重置。每次成员从该标签页取走1格物品(不管堆叠数量),计数器+1。达到上限后当天无法再取。