表概述

petition_sign 表存储请愿书上的签名信息。每个签名记录签名者、所属账号、以及签名的请愿书和发起人。

核心概念:创建公会或竞技场队伍需要收集签名。此表记录哪些玩家在哪些请愿书上签了名。每个玩家只能在一张请愿书上签名。

表结构

字段名数据类型默认值说明
ownerguidINT UNSIGNEDNOT NULL发起人GUID → petition.ownerguid
petitionguidINT UNSIGNED0请愿书物品GUID → petition.petitionguid
playerguidINT UNSIGNED0签名者GUID → characters.guid
player_accountINT UNSIGNED0签名者账号ID → account.id
typeTINYINT UNSIGNED0请愿类型(0=公会 2/3/5=竞技场)

重要字段详解

playerguid / player_account

详细说明:同时记录签名者的角色GUID和账号ID。
  • playerguid:谁签了名
  • player_account:签名者所属账号(防止同账号多角色重复签名)
  • 通常一个账号只能在一个请愿书上签一次

petitionguid + playerguid - 联合主键

详细说明:确保同一请愿书上同一玩家只能签名一次。
  • 最多收集5个签名(含发起人)
  • 签名达到要求数后即可提交创建公会
SQL示例:查看请愿书签名 → SELECT ps.*, c.name FROM petition_sign ps JOIN characters c ON ps.playerguid=c.guid WHERE ps.petitionguid=请愿书GUID;

SQL查询示例

-- 查看某请愿书收集了多少签名 SELECT COUNT(*) AS sign_count FROM petition_sign WHERE ownerguid = 发起人GUID AND type = 0;
-- 查看某玩家签了哪些请愿书 SELECT p.petitionguid, p.ownerguid, pe.name AS guild_name FROM petition_sign p JOIN petition pe ON p.ownerguid = pe.ownerguid AND p.type = pe.type WHERE p.playerguid = 角色GUID;

常见问题

Q: 签名有数量限制吗?

每个请愿书需要指定数量的签名(默认4个其他玩家签名),由 MinPetitionSigns 配置控制。一个玩家只能在一张同类请愿书上签名。

Q: 签名者退出了游戏,签名还有效吗?

签名与角色是否在线无关。一旦签名完成记录在表中,即使签名者离线也有效。创建公会时不需要签名者同时在线。