6#ifndef SKYFIRESERVER_GUILD_H
7#define SKYFIRESERVER_GUILD_H
581 void SetName(std::string
const& name);
632 void SetInfo(std::string
const& name, std::string
const& icon);
633 void SetText(std::string
const& text);
741 typedef std::vector<RankInfo>
Ranks;
764 bool SetName(std::string
const& name);
833 if (
Player* player = itr->second->FindPlayer())
834 if (player != except)
841 void DeleteMember(
uint64 guid,
bool isDisbanding =
false,
bool isKicked =
false,
bool canDeleteGuild =
false);
917 return itr !=
m_members.end() ? itr->second : NULL;
923 return itr !=
m_members.end() ? itr->second : NULL;
929 if (itr->second->GetName() == name)
975 void _MoveItems(MoveItemData* pSrc, MoveItemData* pDest,
uint32 splitedAmount);
976 bool _DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest,
bool sendError,
uint32 splitedAmount = 0);
@ GE_GUILDBANKBAGSLOTS_CHANGED
@ GUILD_EXPERIENCE_UNCAPPED_LEVEL
@ GUILD_EVENT_LOG_GUID_UNDEFINED
@ GUILD_WITHDRAW_SLOT_UNLIMITED
@ GUILD_BANK_MONEY_LOGS_TAB
@ GUILD_WITHDRAW_MONEY_UNLIMITED
const uint32 GuildChallengeMaxLevelGoldReward[]
uint32 const MinNewsItemLevel[MAX_CONTENT]
@ GUILDMEMBER_STATUS_NONE
@ GUILDMEMBER_STATUS_MOBILE
@ GUILDMEMBER_STATUS_ONLINE
@ GUILD_BANK_RIGHT_PUT_ITEM
@ GUILD_BANK_RIGHT_VIEW_TAB
@ GUILD_BANK_RIGHT_DEPOSIT_ITEM
@ GUILD_BANK_RIGHT_UPDATE_TEXT
std::set< uint8 > SlotIds
@ GUILD_COMMAND_GUILD_CHAT
@ GUILD_COMMAND_CHANGE_LEADER
@ GUILD_COMMAND_MOVE_ITEM
@ GUILD_COMMAND_PUBLIC_NOTE
@ GUILD_COMMAND_CHANGE_RANK
@ GUILD_COMMAND_EDIT_MOTD
const uint32 GuildChallengeGoldReward[]
@ ERR_GUILD_BANK_WRONG_TAB
@ ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL
@ ERR_GUILD_WITHDRAW_LIMIT
@ ERR_GUILD_PLAYER_NOT_IN_GUILD
@ ERR_GUILD_PLAYER_NOT_IN_GUILD_S
@ ERR_GUILD_TOO_MUCH_MONEY
@ ERR_GUILD_COMMAND_SUCCESS
@ ERR_GUILD_TRIAL_ACCOUNT
@ ERR_GUILD_MOVE_STARTING
@ ERR_RANK_REQUIRES_AUTHENTICATOR
@ ERR_GUILD_NOT_ENOUGH_MONEY
@ ERR_GUILD_PLAYER_NOT_FOUND_S
@ ERR_GUILD_RANK_TOO_LOW_S
@ ERR_GUILD_IGNORING_YOU_S
@ ERR_GUILD_NAME_EXISTS_S
@ ERR_GUILD_RANK_TOO_HIGH_S
@ ERR_ALREADY_INVITED_TO_GUILD_S
@ ERR_GUILD_ITEM_NOT_FOUND
@ ERR_GUILD_BANK_VOUCHER_FAILED
@ PETITION_SIGN_ALREADY_SIGNED
@ PETITION_SIGN_ALREADY_IN_GUILD
@ PETITION_SIGN_CANT_SIGN_OWN
@ PETITION_SIGN_RESTRICTED_ACCOUNT
@ PETITION_SIGN_ALREADY_SIGNED_OTHER
@ PETITION_SIGN_NOT_SERVER
const uint32 GuildChallengeWeeklyMaximum[]
@ PETITION_TURN_NEED_MORE_SIGNATURES
@ PETITION_TURN_ALREADY_IN_GUILD
@ PETITION_TURN_GUILD_NAME_INVALID
@ PETITION_TURN_GUILD_PERMISSIONS
@ GUILD_NEWS_ITEM_CRAFTED
@ GUILD_NEWS_GUILD_ACHIEVEMENT
@ GUILD_NEWS_ITEM_PURCHASED
@ GUILD_NEWS_DUNGEON_ENCOUNTER
@ GUILD_NEWS_PLAYER_ACHIEVEMENT
@ GUILD_BANK_LOG_MOVE_ITEM
@ GUILD_BANK_LOG_WITHDRAW_ITEM
@ GUILD_BANK_LOG_DEPOSIT_MONEY
@ GUILD_BANK_LOG_DEPOSIT_ITEM
@ GUILD_BANK_LOG_WITHDRAW_MONEY
@ GUILD_BANK_LOG_CASH_FLOW_DEPOSIT
@ GUILD_BANK_LOG_REPAIR_MONEY
@ GUILD_BANK_LOG_MOVE_ITEM2
@ GUILD_BANK_LOG_BUY_SLOT
const uint32 GuildChallengeXPReward[]
@ GR_RIGHT_REQUIRES_AUTHENTICATOR
@ GR_RIGHT_WITHDRAW_GOLD_LOCK
@ GR_RIGHT_MODIFY_BANK_TAB
@ GR_RIGHT_CREATE_GUILD_EVENT
@ GR_RIGHT_MODIFY_GUILD_INFO
@ GR_RIGHT_WITHDRAW_REPAIR
std::vector< GuildBankRightsAndSlots > GuildBankRightsAndSlotsVec
@ GUILD_MEMBER_DATA_LEVEL
@ GUILD_MEMBER_DATA_ACHIEVEMENT_POINTS
@ GUILD_MEMBER_DATA_ZONEID
@ ERR_GUILDEMBLEM_NOTGUILDMASTER
@ ERR_GUILDEMBLEM_INVALIDVENDOR
@ ERR_GUILDEMBLEM_INVALID_TABARD_COLORS
@ ERR_GUILDEMBLEM_NOTENOUGHMONEY
@ ERR_GUILDEMBLEM_SUCCESS
@ ERR_GUILDEMBLEM_NOGUILD
@ GUILD_EVENT_LOG_LEAVE_GUILD
@ GUILD_EVENT_LOG_PROMOTE_PLAYER
@ GUILD_EVENT_LOG_UNINVITE_PLAYER
@ GUILD_EVENT_LOG_INVITE_PLAYER
@ GUILD_EVENT_LOG_DEMOTE_PLAYER
@ GUILD_EVENT_LOG_JOIN_GUILD
uint32 GUID_LOPART(uint64 x)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
std::vector< ItemPosCount > ItemPosCountVec
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
void LoadFromDB(Field *fields)
uint32 GetBackgroundColor() const
void ReadPacket(WorldPacket &recv)
uint32 GetBorderStyle() const
uint32 GetBorderColor() const
void WritePacket(WorldPacket &data) const
void SaveToDB(uint32 guildId) const
GuildBankEventLogTypes m_eventType
BankEventLogEntry(uint32 guildId, uint32 guid, time_t timestamp, uint8 tabId, GuildBankEventLogTypes eventType, uint32 playerGuid, uint64 itemOrMoney, uint16 itemStackCount, uint8 destTabId)
BankEventLogEntry(uint32 guildId, uint32 guid, GuildBankEventLogTypes eventType, uint8 tabId, uint32 playerGuid, uint64 itemOrMoney, uint16 itemStackCount, uint8 destTabId)
void WritePacket(WorldPacket &data, ByteBuffer &content) const
static bool IsMoneyEvent(GuildBankEventLogTypes eventType)
bool IsMoneyEvent() const
void LogAction(MoveItemData *pFrom) const
bool _ReserveSpace(uint8 slotId, Item *pItem, Item *pItemDest, uint32 &count)
Item * StoreItem(SQLTransaction &trans, Item *pItem)
bool HasStoreRights(MoveItemData *pOther) const
void CanStoreItemInTab(Item *pItem, uint8 skipSlotId, bool merge, uint32 &count)
void LogBankEvent(SQLTransaction &trans, MoveItemData *pFrom, uint32 count) const
BankMoveItemData(Guild *guild, Player *player, uint8 container, uint8 slotId)
Item * _StoreItem(SQLTransaction &trans, BankTab *pTab, Item *pItem, ItemPosCount &pos, bool clone) const
InventoryResult CanStore(Item *pItem, bool swap)
bool HasWithdrawRights(MoveItemData *pOther) const
void RemoveItem(SQLTransaction &trans, MoveItemData *pOther, uint32 splitedAmount)
void LoadFromDB(Field *fields)
std::string const & GetName() const
Item * m_items[GUILD_BANK_MAX_SLOTS]
std::string const & GetIcon() const
void Delete(SQLTransaction &trans, bool removeItemsFromDB=false)
BankTab(uint32 guildId, uint8 tabId)
void SetInfo(std::string const &name, std::string const &icon)
Item * GetItem(uint8 slotId) const
void WriteInfoPacket(WorldPacket &data) const
bool LoadItemFromDB(Field *fields)
bool SetItem(SQLTransaction &trans, uint8 slotId, Item *item)
bool WriteSlotPacket(WorldPacket &data, uint8 slotId, bool ignoreEmpty=true) const
std::string const & GetText() const
void SetText(std::string const &text)
void SendText(Guild const *guild, WorldSession *session) const
void WritePacket(WorldPacket &data) const
GuildEventLogTypes m_eventType
EventLogEntry(uint32 guildId, uint32 guid, GuildEventLogTypes eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank)
EventLogEntry(uint32 guildId, uint32 guid, time_t timestamp, GuildEventLogTypes eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank)
void WritePacket(WorldPacket &data, ByteBuffer &content) const
virtual void WritePacket(WorldPacket &data, ByteBuffer &content) const =0
LogEntry(uint32 guildId, uint32 guid)
LogEntry(uint32 guildId, uint32 guid, time_t timestamp)
uint64 GetTimestamp() const
virtual void SaveToDB(SQLTransaction &trans) const =0
void WritePacket(WorldPacket &data) const
void AddEvent(SQLTransaction &trans, LogEntry *entry)
void LoadEvent(LogEntry *entry)
LogHolder(uint32 maxRecords)
std::string GetOfficerNote() const
std::string const & GetName() const
uint32 GetVirtualRealm() const
bool IsRankNotLower(uint8 rankId) const
bool IsRank(uint8 rankId) const
void SetZoneId(uint32 id)
bool IsSamePlayer(uint64 guid) const
void ChangeRank(uint8 newRank)
uint32 GetTotalReputation() const
uint32 GetAccountId() const
int32 GetBankWithdrawValue(uint8 tabId) const
std::string GetPublicNote() const
void SetOfficerNote(std::string const &officerNote)
uint32 m_achievementPoints
uint64 GetWeekActivity() const
bool LoadFromDB(Field *fields)
int32 m_bankWithdraw[GUILD_BANK_MAX_TABS+1]
uint64 GetTotalActivity() const
void SetPublicNote(std::string const &publicNote)
void AddActivity(uint64 activity)
void SetAchievementPoints(uint32 val)
std::string m_officerNote
uint32 GetWeekReputation() const
uint32 GetAchievementPoints() const
void ResetValues(bool weekly=false)
void AddReputation(uint32 &reputation)
Player * FindPlayer() const
uint64 GetLogoutTime() const
void SetStats(Player *player)
void UpdateBankWithdrawValue(SQLTransaction &trans, uint8 tabId, uint32 amount)
Member(uint32 guildId, uint64 guid, uint8 rankId)
MoveItemData(Guild *guild, Player *player, uint8 container, uint8 slotId)
virtual void LogAction(MoveItemData *pFrom) const
virtual void RemoveItem(SQLTransaction &trans, MoveItemData *pOther, uint32 splitedAmount=0)=0
virtual InventoryResult CanStore(Item *pItem, bool swap)=0
Item * GetItem(bool isCloned=false) const
uint8 GetContainer() const
virtual bool CheckItem(uint32 &splitedAmount)
virtual void LogBankEvent(SQLTransaction &trans, MoveItemData *pFrom, uint32 count) const =0
virtual bool HasWithdrawRights(MoveItemData *) const
virtual bool HasStoreRights(MoveItemData *) const
void CopySlots(SlotIds &ids) const
virtual Item * StoreItem(SQLTransaction &trans, Item *pItem)=0
virtual bool IsBank() const =0
bool CloneItem(uint32 count)
virtual bool InitItem()=0
bool CanStore(Item *pItem, bool swap, bool sendError)
NewsLogEntry(uint32 guildId, uint32 guid, time_t timestamp, GuildNews type, uint32 playerGuid, uint32 flags, uint32 value)
uint64 GetPlayerGuid() const
GuildNews GetType() const
NewsLogEntry(uint32 guildId, uint32 guid, GuildNews type, uint32 playerGuid, uint32 flags, uint32 value)
void WritePacket(WorldPacket &data, ByteBuffer &content) const
void SetSticky(bool sticky)
void RemoveItem(SQLTransaction &trans, MoveItemData *pOther, uint32 splitedAmount=0)
InventoryResult CanStore(Item *pItem, bool swap)
PlayerMoveItemData(Guild *guild, Player *player, uint8 container, uint8 slotId)
Item * StoreItem(SQLTransaction &trans, Item *pItem)
void LogBankEvent(SQLTransaction &trans, MoveItemData *pFrom, uint32 count) const
void SetBankMoneyPerDay(uint32 money)
void CreateMissingTabsIfNeeded(uint8 ranks, SQLTransaction &trans, bool logOnCreate=false)
std::string const & GetName() const
RankInfo(uint32 guildId, uint8 rankId, std::string const &name, uint32 rights, uint32 money)
int8 GetBankTabRights(uint8 tabId) const
int32 GetBankTabSlotsPerDay(uint8 tabId) const
void SetName(std::string const &name)
void SetRights(uint32 rights)
void SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
int32 GetBankMoneyPerDay() const
GuildBankRightsAndSlots m_bankTabRightsAndSlots[GUILD_BANK_MAX_TABS]
void LoadFromDB(Field *fields)
void SetGuildMasterValues()
GuildBankRightsAndSlots(uint8 _tabId, uint8 _rights, uint32 _slots)
void SetSlots(uint32 _slots)
void SetTabId(uint8 _tabId)
void SetRights(uint8 _rights)
GuildBankRightsAndSlots()
GuildBankRightsAndSlots(uint8 _tabId)
std::string _GetRankName(uint8 rankId) const
void SendGuildReputationWeeklyCap(WorldSession *session, uint32 reputation) const
int8 _GetRankBankTabRights(uint8 rankId, uint8 tabId) const
void SwapItemsWithInventory(Player *player, bool toChar, uint8 tabId, uint8 slotId, uint8 playerBag, uint8 playerSlotId, uint32 splitedAmount)
void HandleAddNewRank(WorldSession *session, std::string const &name)
void HandleRemoveMember(WorldSession *session, uint64 guid)
int32 _GetMemberRemainingSlots(Member const *member, uint8 tabId) const
void _SetRankBankTabRightsAndSlots(uint8 rankId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB=true)
void _BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char *param1=NULL, const char *param2=NULL, const char *param3=NULL) const
bool Create(Player *pLeader, std::string const &name)
int32 _GetMemberRemainingMoney(Member const *member) const
int32 _GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const
void _SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay)
void HandleSetBankTabNote(WorldSession *session, uint32 tabId, std::string const ¬e)
void LoadBankRightFromDB(Field *fields)
bool _CreateRank(std::string const &name, uint32 rights)
uint32 _GetRankRights(uint8 rankId) const
static void SendCommandResult(WorldSession *session, GuildCommandType type, GuildCommandError errCode, std::string const ¶m="")
void SwapItems(Player *player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount)
void SetBankTabText(uint8 tabId, std::string const &text)
uint64 GetExperience() const
void _SendRemovePlayerFromGuild(ObjectGuid removedGuid, std::string const &removedName, Player const *remover) const
AchievementMgr< Guild > m_achievementMgr
bool LoadMemberFromDB(Field *fields)
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, Unit *unit, Player *player)
void OnPlayerStatusChange(Player *player, uint32 flag, bool state)
void HandleLeaveMember(WorldSession *session)
Member * GetMember(std::string const &name)
void HandleRemoveRank(WorldSession *session, uint8 rankId)
void SendPermissions(WorldSession *session) const
void UpdateMemberData(Player *player, uint8 dataid, uint32 value)
bool ChangeMemberRank(uint64 guid, uint8 newRank)
void HandleQuery(WorldSession *session)
bool HasAchieved(uint32 achievementId) const
void HandleSetInfo(WorldSession *session, std::string const &info)
void GiveXP(uint32 xp, Player *source)
void BroadcastPacket(WorldPacket *packet) const
void SendEventLog(WorldSession *session) const
void _DeleteMemberFromDB(uint32 lowguid) const
void HandleSetRankInfo(WorldSession *session, uint8 rankId, std::string const &name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec const &rightsAndSlots)
void SendGuildXP(WorldSession *session=NULL) const
uint8 _GetPurchasedTabsSize() const
bool LoadBankItemFromDB(Field *fields)
void SendGuildRanksUpdate(uint64 setterGuid, uint64 targetGuid, uint32 rank)
void LoadGuildNewsLogFromDB(Field *fields)
bool LoadFromDB(Field *fields)
std::vector< BankTab * > BankTabs
uint64 GetLeaderGUID() const
void SendLoginInfo(WorldSession *session)
void SendBankList(WorldSession *session, uint8 tabId, bool withContent, bool withTabInfo) const
bool _MemberHasTabRights(uint64 guid, uint8 tabId, uint32 rights) const
void HandleInviteMember(WorldSession *session, std::string const &name)
std::string const & GetName() const
int32 _GetRankBankMoneyPerDay(uint8 rankId) const
bool HandleMemberWithdrawMoney(WorldSession *session, uint64 amount, bool repair=false)
void ResetTimes(bool weekly)
LogHolder * m_bankEventLog[GUILD_BANK_MAX_TABS+1]
void _UpdateAccountsNumber()
Member * GetMember(uint64 guid)
void BroadcastPacketToRank(WorldPacket *packet, uint8 rankId) const
RankInfo * GetRankInfo(uint8 rankId)
void _LogEvent(GuildEventLogTypes eventType, uint32 playerGuid1, uint32 playerGuid2=0, uint8 newRank=0)
void HandleSetNewGuildMaster(WorldSession *session, std::string const &name)
const BankTab * GetBankTab(uint8 tabId) const
bool LoadEventLogFromDB(Field *fields)
UNORDERED_MAP< uint32, Member * > Members
void HandleMemberLogout(WorldSession *session)
std::string const & GetInfo() const
void BroadcastAddonToGuild(WorldSession *session, bool officerOnly, std::string const &msg, std::string const &prefix) const
void HandleMemberDepositMoney(WorldSession *session, uint64 amount, bool cashFlow=false)
void HandleSetBankTabInfo(WorldSession *session, uint8 tabId, std::string const &name, std::string const &icon)
EmblemInfo const & GetEmblemInfo() const
void _UpdateMemberWithdrawSlots(SQLTransaction &trans, uint64 guid, uint8 tabId)
void SendGuildRankInfo(WorldSession *session) const
bool _IsLeader(Player *player) const
bool LoadBankEventLogFromDB(Field *fields)
void HandleSetMemberNote(WorldSession *session, std::string const ¬e, uint64 guid, bool isPublic)
void HandleDisband(WorldSession *session)
bool AddMember(uint64 guid, uint8 rankId=GUILD_RANK_NONE)
static void SendSaveEmblemResult(WorldSession *session, GuildEmblemError errCode)
std::list< LogEntry * > GuildLog
void SendBankTabText(WorldSession *session, uint8 tabId) const
uint8 _GetRanksSize() const
AchievementMgr< Guild > & GetAchievementMgr()
AchievementMgr< Guild > const & GetAchievementMgr() const
BankTab * GetBankTab(uint8 tabId)
void HandleReplaceGuildMaster(WorldSession *session)
const Member * GetMember(uint64 guid) const
const RankInfo * GetRankInfo(uint8 rankId) const
void SendNewsUpdate(WorldSession *session)
std::string const & GetMOTD() const
void HandleRoster(WorldSession *session=NULL)
bool _DoItemsMove(MoveItemData *pSrc, MoveItemData *pDest, bool sendError, uint32 splitedAmount=0)
void AddGuildNews(uint8 type, uint64 guid, uint32 flags, uint32 value)
void _SendBankContentUpdate(MoveItemData *pSrc, MoveItemData *pDest) const
void _SendSetNewGuildMaster(Member const *guildMaster, Member const *newGuildMaster, bool replace) const
void HandleUpdateMemberRank(WorldSession *session, uint64 guid, bool demote)
bool SetName(std::string const &name)
uint64 GetTodayExperience() const
void HandleSetMOTD(WorldSession *session, std::string const &motd)
void HandleGuildPartyRequest(WorldSession *session)
void HandleNewsSetSticky(WorldSession *session, uint32 newsId, bool sticky)
void HandleAcceptMember(WorldSession *session)
void MassInviteToEvent(WorldSession *session, uint32 minLevel, uint32 maxLevel, uint32 minRank)
Item * _GetItem(uint8 tabId, uint8 slotId) const
void DeleteMember(uint64 guid, bool isDisbanding=false, bool isKicked=false, bool canDeleteGuild=false)
void SendMoneyInfo(WorldSession *session) const
void SendBankLog(WorldSession *session, uint8 tabId) const
void _LogBankEvent(SQLTransaction &trans, GuildBankEventLogTypes eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount=0, uint8 destTabId=0)
void HandleSetMemberRank(WorldSession *session, uint64 guid, uint64 setterGuid, uint32 rank)
void HandleSetEmblem(WorldSession *session, const EmblemInfo &emblemInfo)
std::vector< RankInfo > Ranks
bool _ModifyBankMoney(SQLTransaction &trans, uint64 amount, bool add)
void LoadBankTabFromDB(Field *fields)
bool IsMember(uint64 guid) const
uint8 _GetLowestRankId() const
void _MoveItems(MoveItemData *pSrc, MoveItemData *pDest, uint32 splitedAmount)
void HandleBuyBankTab(WorldSession *session, uint8 tabId)
void _CreateDefaultGuildRanks(LocaleConstant loc)
void _DeleteBankItems(SQLTransaction &trans, bool removeItemsFromDB=false)
void _RemoveItem(SQLTransaction &trans, uint8 tabId, uint8 slotId)
bool _HasRankRight(Player const *player, uint32 right) const
void BroadcastToGuild(WorldSession *session, bool officerOnly, std::string const &msg, Language language=Language::LANG_UNIVERSAL) const
void BroadcastWorker(Do &_do, Player *except=NULL)
void LoadRankFromDB(Field *fields)
void _SetLeaderGUID(Member *pLeader)
static Player * FindPlayer(uint64)
void setUInt32(const uint8 index, const uint32 value)
Player session in the World.
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
std::vector< uint32 > Achievements