guild_rank 公会等级表
基于 AzerothCore 官方数据库 · Characters 库 · 定义公会等级名称和权限
表概述
guild_rank 表定义每个公会的等级结构和权限。每个公会最多10个等级(rid 0-9),每个等级有独立的名称、权限和每日银行提款限额。
核心概念:公会等级决定成员的权限范围(如邀请、踢人、发言频道、修改备注等)和经济权限(银行金币取款限额)。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guildid | INT UNSIGNED | 0 | 公会ID → guild.guildid |
| rid | TINYINT UNSIGNED | NOT NULL | 等级编号(0=会长 1-9=自定义) |
| rname | VARCHAR(20) | '' | 等级名称(如"会长""官员""精英""会员") |
| rights | INT UNSIGNED | NULL | 权限掩码(按位标记) |
| BankMoneyPerDay | INT UNSIGNED | 0 | 每日银行金币提款上限(铜币) |
重要字段详解
rights - 权限掩码
详细说明:按位标记控制该等级的各项权限。权限位
- 位 0 (1):收听公会聊天(GCHATLISTEN)
- 位 1 (2):公会发言(GCHATSPEAK)
- 位 2 (4):收听官员频道(OFCHATLISTEN)
- 位 3 (8):官员频道发言(OFCHATSPEAK)
- 位 4 (16):邀请成员
- 位 5 (32):踢出成员
- 位 6 (64):提升/降级成员
- 位 7 (128):修改公会信息
- 位 8 (256):修改公共备注
- 位 13 (8192):修改官员备注
BankMoneyPerDay - 每日银行限额
详细说明:该等级成员每天从公会银行提取金币的上限(铜币单位)。
- 0 = 不允许提取金币
- 100000000(1万金)= 无限制(超过合理上限)
- 配合 guild_member_withdraw 表追踪每日已提金额
SQL示例:修改等级3的银行限额为500G →
UPDATE guild_rank SET BankMoneyPerDay=5000000 WHERE guildid=1 AND rid=3;SQL查询示例
-- 查看某公会的所有等级
SELECT rid, rname, rights, BankMoneyPerDay / 10000 AS daily_gold_limit
FROM guild_rank
WHERE guildid = 1
ORDER BY rid;-- 给官员等级添加邀请和踢人权限
UPDATE guild_rank
SET rights = rights | 16 | 32
WHERE guildid = 1 AND rid = 1;常见问题
Q: 如何给成员添加银行金币提取权限?
修改对应等级的 BankMoneyPerDay 值(单位铜币)。同时需要在 guild_bank_right 表中配置银行标签页权限。
Q: 公会最多能有多少个等级?
最多10个等级(rid 0-9)。rid=0 固定为会长,其他等级可由会长自定义名称和权限。