guild_bank_right 公会银行权限表
基于 AzerothCore 官方数据库 · Characters 库 · 定义公会等级对各银行标签页的访问权限
表概述
guild_bank_right 表定义各公会等级(rid)对各银行标签页(TabId)的具体访问权限和每日取款数量限制。
核心概念:与 guild_rank 的全局权限不同,此表精细化控制每个等级对每个标签页的操作权限(查看/存入/取出)和每日取物数量。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guildid | INT UNSIGNED | 0 | 公会ID → guild.guildid |
| TabId | TINYINT UNSIGNED | 0 | 标签页ID → guild_bank_tab.TabId |
| rid | TINYINT UNSIGNED | 0 | 公会等级ID → guild_rank.rid |
| gbright | TINYINT UNSIGNED | 0 | 权限掩码 |
| SlotPerDay | INT UNSIGNED | 0 | 每日可取物品数量上限 |
重要字段详解
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。达到上限后当天无法再取。