表概述

guild_rank 表定义每个公会的等级结构和权限。每个公会最多10个等级(rid 0-9),每个等级有独立的名称、权限和每日银行提款限额。

核心概念:公会等级决定成员的权限范围(如邀请、踢人、发言频道、修改备注等)和经济权限(银行金币取款限额)。

表结构

字段名数据类型默认值说明
guildidINT UNSIGNED0公会ID → guild.guildid
ridTINYINT UNSIGNEDNOT NULL等级编号(0=会长 1-9=自定义)
rnameVARCHAR(20)''等级名称(如"会长""官员""精英""会员")
rightsINT UNSIGNEDNULL权限掩码(按位标记)
BankMoneyPerDayINT UNSIGNED0每日银行金币提款上限(铜币)

重要字段详解

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 固定为会长,其他等级可由会长自定义名称和权限。