20#define MAX_GUILD_BANK_TAB_TEXT_LEN 500
21#define EMBLEM_PRICE 10 * GOLD
28 return "Member promotion";
30 return "Member demotion";
34 return "Member joined";
38 return "Member removed";
42 return "Leader changed";
44 return "Guild disbanded";
46 return "Tabard change";
48 return "Rank updated";
50 return "Rank deleted";
52 return "Member signed on";
54 return "Member signed off";
56 return "Bank bag slots changed";
58 return "Bank tab purchased";
60 return "Bank tab updated";
62 return "Bank money set";
64 return "Bank money changed";
66 return "Bank tab text changed";
99 SF_LOG_DEBUG(
"guild",
"SMSG_GUILD_COMMAND_RESULT [%s]: Type: %u, code: %u, param: %s", session->
GetPlayerInfo().c_str(), type, errCode, param.c_str());
115 for (GuildLog::iterator itr =
m_log.begin(); itr !=
m_log.end(); ++itr)
124 m_log.push_front(entry);
139 m_log.push_back(entry);
149 for (GuildLog::const_iterator itr =
m_log.begin(); itr !=
m_log.end(); ++itr)
150 (*itr)->WritePacket(data, buffer);
371 for (
uint8 i = 0; i < tabs; ++i)
448 guildBR = rightsAndSlots;
477 SF_LOG_ERROR(
"guild",
"Invalid slot for item (GUID: %u, id: %u) in guild bank, skipped.", itemGuid, itemEntry);
484 SF_LOG_ERROR(
"guild",
"Unknown item (GUID: %u, id: %u) in guild bank, skipped.", itemGuid, itemEntry);
489 if (!pItem->
LoadFromDB(itemGuid, 0, fields, itemEntry))
491 SF_LOG_ERROR(
"guild",
"Item (GUID %u, id: %u) not found in item_instance, deleting from guild bank!", itemGuid, itemEntry);
514 pItem->RemoveFromWorld();
515 if (removeItemsFromDB)
516 pItem->DeleteFromDB(trans);
662 player->SetRank(newRank);
693 fields[14].GetString(),
694 fields[15].GetUInt8(),
695 fields[16].GetUInt8(),
696 fields[17].GetUInt16(),
697 fields[18].GetUInt32(),
725 if (m_class < CLASS_WARRIOR || m_class >=
MAX_CLASSES)
815 if (splitedAmount >
m_pItem->GetCount())
817 if (splitedAmount ==
m_pItem->GetCount())
854 for (ItemPosCountVec::const_iterator itr =
m_vec.begin(); itr !=
m_vec.end(); ++itr)
855 ids.insert(
uint8(itr->pos));
871 else if (!
m_pItem->CanBeTraded())
886 m_pPlayer->SaveInventoryAndGoldToDB(trans);
891 m_pItem->DeleteFromInventoryDB(trans);
900 m_pPlayer->SaveInventoryAndGoldToDB(trans);
975 Item* pLastItem = pItem;
976 for (ItemPosCountVec::const_iterator itr =
m_vec.begin(); itr !=
m_vec.end(); )
981 SF_LOG_DEBUG(
"guild",
"GUILD STORAGE: StoreItem tab = %u, slot = %u, item = %u, count = %u",
1007 "GM %s (Guid: %u) (Account: %u) deposit item: %s (Entry: %d Count: %u) to guild bank named: %s (Guild ID: %u)",
1020 pItemDest->SetCount(pItemDest->GetCount() + count);
1022 pItemDest->SaveToDB(trans);
1037 if (pItem && pTab->
SetItem(trans, slotId, pItem))
1055 requiredSpace -= pItemDest->
GetCount();
1058 requiredSpace = std::min(requiredSpace, count);
1064 m_vec.push_back(pos);
1065 count -= requiredSpace;
1075 if (slotId == skipSlotId)
1079 if (pItemDest == pItem)
1083 if ((pItemDest != NULL) != merge)
1092 SF_LOG_DEBUG(
"guild",
"GUILD STORAGE: CanStore() tab = %u, slot = %u, item = %u, count = %u",
1109 if ((pItemDest == pItem) || swap)
1185 if (!pLeaderSession)
1192 m_motd =
"No message set.";
1200 SF_LOG_DEBUG(
"guild",
"GUILD: creating guild [%s] for leader %s (%u)",
1207 trans->Append(stmt);
1223 trans->Append(stmt);
1232 sScriptMgr->OnGuildCreate(
this, pLeader, name);
1248 Members::const_iterator itr =
m_members.begin();
1256 trans->Append(stmt);
1260 trans->Append(stmt);
1264 trans->Append(stmt);
1271 trans->Append(stmt);
1275 trans->Append(stmt);
1279 trans->Append(stmt);
1283 trans->Append(stmt);
1301 trans->Append(stmt);
1315 member->SetZoneId(value);
1318 member->SetAchievementPoints(value);
1321 member->SetLevel(value);
1324 SF_LOG_ERROR(
"guild",
"Guild::UpdateMemberData: Called with incorrect DATAID %u (value %u)", dataid, value);
1336 member->AddFlag(flag);
1337 else member->RemFlag(flag);
1378 Member* member = itr->second;
1414 memberData <<
uint8(0);
1447 SF_LOG_DEBUG(
"guild",
"SMSG_GUILD_ROSTER [Broadcast]");
1670 data.
WriteBits(removedName.length(), 6);
1728 if (newGuildMaster->GetRankId() >
GR_MEMBER)
1736 if (oldGuildMaster->GetLogoutTime() >
uint64(time(NULL) - (
DAY * 90)))
1754 SF_LOG_ERROR(
"guild",
"Guild::HandleSetBankTabInfo: Player %s trying to change bank tab info from unexisting tab %d.",
1761 SF_LOG_ERROR(
"guild",
"Guild::HandleSetBankTabInfo: Player %s is trying to modify bank tab info but doesn't have permission!",
1790 member->SetPublicNote(note);
1792 member->SetOfficerNote(note);
1827 SF_LOG_DEBUG(
"guild",
"SMSG_GUILD_MEMBER_UPDATE_NOTE [Broadcast]");
1840 SF_LOG_DEBUG(
"guild",
"Changed RankName to '%s', rights to 0x%08X", name.c_str(), rights);
1842 rankInfo->SetName(name);
1843 rankInfo->SetRights(rights);
1846 for (GuildBankRightsAndSlotsVec::const_iterator itr = rightsAndSlots.begin(); itr != rightsAndSlots.end(); ++itr)
1850 snprintf(aux,
sizeof(aux),
"%u", rankId);
1936 SF_LOG_DEBUG(
"guild",
"Player %s invited %s to join his Guild", player->
GetName().c_str(), name.c_str());
2022 bool disband =
false;
2068 std::string name = member->GetName();
2094 std::string name = member->GetName();
2096 if (member->IsSamePlayer(player->
GetGUID()))
2107 if (member->IsRankNotLower(rankId))
2123 if (member->IsRankNotLower(rankId + 1))
2130 uint32 newRankId = member->GetRankId() + (demote ? 1 : -1);
2131 member->ChangeRank(newRankId);
2209 sScriptMgr->OnGuildMemberDepositMoney(
this, player, amount);
2229 "GM %s (Account: %u) deposit money (Amount: " UI64FMTD ") to guild bank (Guild ID %u)",
2252 sScriptMgr->OnGuildMemberWitdrawMoney(
this, player, amount, repair);
2285 member->SetStats(player);
2286 member->UpdateLogoutTime();
2287 member->ResetFlags();
2344 for (GuildLog::const_iterator itr = logs->begin(); itr != logs->end(); ++itr)
2361 for (GuildLog::const_iterator itr = logs->begin(); itr != logs->end(); ++itr)
2406 tab->SendText(
this, session);
2444 data <<
int64(amount);
2520 uint8 purchasedTabs =
uint8(fields[15].GetUInt64());
2525 for (
uint8 i = 0; i < purchasedTabs; ++i)
2569 fields[1].GetUInt32(),
2570 time_t(fields[6].GetUInt32()),
2572 fields[3].GetUInt32(),
2573 fields[4].GetUInt32(),
2574 fields[5].GetUInt8()));
2596 SF_LOG_ERROR(
"guild",
"GuildBankEventLog ERROR: MoneyEvent(LogGuid: %u, Guild: %u) does not belong to money tab (%u), ignoring...", guid,
m_id, dbTabId);
2600 else if (isMoneyTab)
2602 SF_LOG_ERROR(
"guild",
"GuildBankEventLog ERROR: non-money event (LogGuid: %u, Guild: %u) belongs to money tab, ignoring...", guid,
m_id);
2608 time_t(fields[8].GetUInt32()),
2611 fields[4].GetUInt32(),
2612 fields[5].GetUInt32(),
2613 fields[6].GetUInt16(),
2614 fields[7].GetUInt8()));
2627 fields[1].GetUInt32(),
2628 fields[6].GetUInt32(),
2630 fields[3].GetUInt32(),
2631 fields[4].GetUInt32(),
2632 fields[5].GetUInt32()));
2639 SF_LOG_ERROR(
"guild",
"Invalid tab (tabId: %u) in guild bank, skipped.", tabId);
2649 SF_LOG_ERROR(
"guild",
"Invalid tab for item (GUID: %u, id: #%u) in guild bank, skipped.",
2650 fields[14].GetUInt32(), fields[15].GetUInt32());
2653 return m_bankTabs[tabId]->LoadItemFromDB(fields);
2664 bool broken_ranks =
false;
2668 SF_LOG_ERROR(
"guild",
"Guild %u has invalid number of ranks, creating new...",
m_id);
2669 broken_ranks =
true;
2673 for (
uint8 rankId = 0; rankId < ranks; ++rankId)
2676 if (rankInfo->
GetId() != rankId)
2678 SF_LOG_ERROR(
"guild",
"Guild %u has broken rank id %u, creating default set of ranks...",
m_id, rankId);
2679 broken_ranks =
true;
2719 if (!
sConfigMgr->GetBoolDefault(
"Guild.AllowMultipleGuildMaster", 0))
2736 if (
Player* player = itr->second->FindPlayer())
2739 player->GetSession()->SendPacket(&data);
2750 if (
Player* player = itr->second->FindPlayer())
2753 player->GetSession()->IsAddonRegistered(prefix))
2754 player->GetSession()->SendPacket(&data);
2761 if (itr->second->IsRank(rankId))
2762 if (
Player* player = itr->second->FindPlayer())
2763 player->GetSession()->SendPacket(packet);
2769 if (
Player* player = itr->second->FindPlayer())
2770 player->GetSession()->SendPacket(packet);
2791 Member* member = itr->second;
2794 if (member->
GetGUID() != session->
GetPlayer()->
GetGUID() && level >= minLevel && level <= maxLevel && member->IsRankNotLower(minRank))
2806 inviteeData <<
uint8(level);
2822 data.
append(inviteeData);
2872 Field* fields = result->Fetch();
2875 fields[5].GetUInt32(),
2877 fields[1].GetUInt8(),
2878 fields[2].GetUInt8(),
2879 fields[3].GetUInt16(),
2880 fields[4].GetUInt32(),
2903 sScriptMgr->OnGuildAddMember(
this, player, rankId);
2917 Member* oldLeader = NULL;
2918 Member* newLeader = NULL;
2921 if (i->first == lowguid)
2922 oldLeader = i->second;
2923 else if (!newLeader || newLeader->
GetRankId() > i->second->GetRankId())
2924 newLeader = i->second;
2949 sScriptMgr->OnGuildRemoveMember(
this, player, isDisbanding, isKicked);
2965 player->
removeSpell(entry->SpellId,
false,
false);
2978 member->ChangeRank(newRank);
2997 if (tabId == destTabId && slotId == destSlotId)
3013 _MoveItems(&bankData, &charData, splitedAmount);
3015 _MoveItems(&charData, &bankData, splitedAmount);
3023 pTab->SetText(text);
3024 pTab->SendText(
this, NULL);
3047 trans->Append(stmt);
3052 trans->Append(stmt);
3055 for (Ranks::iterator itr =
m_ranks.begin(); itr !=
m_ranks.end(); ++itr)
3056 (*itr).CreateMissingTabsIfNeeded(tabId, trans,
false);
3101 std::set<uint32> accountsIdSet;
3103 accountsIdSet.insert(itr->second->GetAccountId());
3124 m_bankTabs[tabId]->Delete(trans, removeItemsFromDB);
3146 trans->Append(stmt);
3167 rankInfo->SetBankMoneyPerDay(moneyPerDay);
3176 rankInfo->SetBankTabSlotsAndRights(rightsAndSlots, saveToDB);
3182 return rankInfo->GetName();
3189 return rankInfo->GetRights();
3196 return rankInfo->GetBankMoneyPerDay();
3204 return rankInfo->GetBankTabSlotsPerDay(tabId);
3211 return rankInfo->GetBankTabRights(tabId);
3254 uint8 rankId = member->GetRankId();
3257 member->UpdateBankWithdrawValue(trans, tabId, 1);
3280 sScriptMgr->OnGuildEvent(
this,
uint8(eventType), playerGuid1, playerGuid2, newRank);
3293 uint8 dbTabId = tabId;
3302 sScriptMgr->OnGuildBankEvent(
this,
uint8(eventType), tabId, lowguid, itemOrMoney, itemStackCount, destTabId);
3308 return tab->GetItem(slotId);
3315 pTab->SetItem(trans, slotId, NULL);
3382 bool swap = (pDestItem != NULL);
3386 if (!pDest->
CanStore(pSrcItem, swap, sendError))
3391 if (!pSrc->
CanStore(pDestItem,
true,
true))
3406 pSrc->
RemoveItem(trans, pDest, splitedAmount);
3446 else if (pDest->
IsBank())
3465 size_t pos = data.
wpos();
3472 for (SlotIds::const_iterator itr = slots.begin(); itr != slots.end(); ++itr)
3474 Item const* tabItem = tab->GetItem(*itr);
3485 tabData <<
uint32(enchantId);
3505 if (!tabData.
empty())
3510 if (
Player* player = itr->second->FindPlayer())
3513 player->GetSession()->SendPacket(&data);
3516 SF_LOG_DEBUG(
"guild",
"WORLD: Sent (SMSG_GUILD_BANK_LIST)");
3522 uint8 count = !param3 ? (!param2 ? (!param1 ? 0 : 1) : 2) : 3;
3525 data <<
uint8(guildEvent);
3526 data <<
uint8(count);
3529 data << param1 << param2 << param3;
3531 data << param1 << param2;
3555 data.
WriteBit(withContent && withTabInfo);
3561 if (tab->GetItem(slotId))
3582 if (
Item* tabItem = tab->GetItem(slotId))
3592 tabData <<
uint32(enchantId);
3603 tabData <<
uint32(tabItem->GetEntry());
3604 tabData <<
uint32(abs(tabItem->GetSpellCharges()));
3605 tabData <<
uint32(tabItem->GetCount());
3606 tabData <<
uint32(slotId);
3607 tabData <<
uint32(tabItem->GetItemRandomPropertyId());
3608 tabData <<
uint32(tabItem->GetItemSuffixFactor());
3616 if (!tabData.
empty())
3631 SF_LOG_DEBUG(
"guild",
"WORLD: Sent (SMSG_GUILD_BANK_LIST)");
3658 data.
WriteBit(rank < member->GetRankId());
3684 SF_LOG_DEBUG(
"network",
"SMSG_GUILD_RANKS_UPDATE [Broadcast] Target: %u, Issuer: %u, RankId: %u",
3720 std::vector<uint32> perksToLearn;
3723 if (entry->Level > oldLevel && entry->Level <=
GetLevel())
3724 perksToLearn.push_back(entry->SpellId);
3729 if (
Player* player = itr->second->FindPlayer())
3732 for (
size_t i = 0; i < perksToLearn.size(); ++i)
3733 player->learnSpell(perksToLearn[i],
true);
3762 SF_LOG_DEBUG(
"guild",
"SMSG_GUILD_REPUTATION_WEEKLY_CAP [%s]: Left: %u",
3771 itr->second->ResetValues(weekly);
3772 if (
Player* player = itr->second->FindPlayer())
3776 player->GetSession()->SendPacket(&data);
3805 m_achievementMgr.UpdateAchievementCriteria(type, miscValue1, miscValue2, miscValue3, unit, player);
3811 GuildLog::iterator itr = logs->begin();
3812 while (itr != logs->end() && (*itr)->GetGUID() != newsId)
3815 if (itr == logs->end())
3817 SF_LOG_DEBUG(
"guild",
"HandleNewsSetSticky: [%s] requested unknown newsId %u - Sticky: %u",
3825 SF_LOG_DEBUG(
"guild",
"HandleNewsSetSticky: [%s] chenged newsId %u sticky to %u",
3840 SF_LOG_ERROR(
"guild",
"Guild::HandleSetBankTabNote: Player %s is trying to modify bank tab note for non existing tab %d.",
3847 SF_LOG_ERROR(
"guild",
"Guild::HandleSetBankTabNote: Player %s is trying to modify a bank tab note but doesn't have permission!",
Item * NewItemOrBag(ItemTemplate const *proto)
@ CALENDAR_ERROR_INVITES_EXCEEDED
#define CALENDAR_MAX_INVITES
@ CHAR_DEL_GUILD_BANK_TABS
@ CHAR_UPD_GUILD_BANK_TAB_TEXT
@ CHAR_DEL_GUILD_BANK_RIGHTS
@ CHAR_UPD_GUILD_RANK_NAME
@ CHAR_INS_GUILD_EVENTLOG
@ CHAR_UPD_GUILD_EMBLEM_INFO
@ CHAR_DEL_GUILD_BANK_EVENTLOGS
@ CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK
@ CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM
@ CHAR_UPD_GUILD_MEMBER_RANK
@ CHAR_UPD_GUILD_RANK_BANK_MONEY
@ CHAR_UPD_GUILD_RANK_RIGHTS
@ CHAR_UPD_GUILD_MEMBER_PNOTE
@ CHAR_INS_GUILD_BANK_TAB
@ CHAR_SEL_CHAR_DATA_FOR_GUILD
@ CHAR_UPD_GUILD_BANK_MONEY
@ CHAR_DEL_GUILD_BANK_TAB
@ CHAR_UPD_GUILD_MEMBER_OFFNOTE
@ CHAR_DEL_GUILD_BANK_EVENTLOG
@ CHAR_DEL_GUILD_BANK_ITEMS
@ CHAR_DEL_GUILD_BANK_ITEM
@ CHAR_DEL_GUILD_EVENTLOG
@ CHAR_DEL_GUILD_EVENTLOGS
@ CHAR_INS_GUILD_BANK_EVENTLOG
@ CHAR_UPD_GUILD_EXPERIENCE
@ CHAR_INS_GUILD_BANK_ITEM
@ CHAR_UPD_GUILD_BANK_TAB_INFO
@ CHAR_INS_GUILD_MEMBER_WITHDRAW
@ CHAR_INS_GUILD_BANK_RIGHT
@ ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL
DBCStorage< GuildPerkSpellsEntry > sGuildPerkSpellsStore(GuildPerkSpellsfmt)
uint32 _GetGuildBankTabPrice(uint8 tabId)
#define MAX_GUILD_BANK_TAB_TEXT_LEN
std::string _GetGuildEventString(GuildEvents event)
@ 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
@ GUILDMEMBER_STATUS_ONLINE
@ GUILD_BANK_RIGHT_VIEW_TAB
@ GUILD_BANK_RIGHT_DEPOSIT_ITEM
std::set< uint8 > SlotIds
@ GUILD_COMMAND_CHANGE_LEADER
@ GUILD_COMMAND_PUBLIC_NOTE
@ GUILD_COMMAND_CHANGE_RANK
@ GUILD_COMMAND_EDIT_MOTD
@ ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL
@ ERR_GUILD_COMMAND_SUCCESS
@ ERR_GUILD_PLAYER_NOT_FOUND_S
@ ERR_GUILD_RANK_TOO_LOW_S
@ ERR_GUILD_RANK_TOO_HIGH_S
@ ERR_ALREADY_INVITED_TO_GUILD_S
@ 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
@ GR_RIGHT_MODIFY_BANK_TAB
@ 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_NOTENOUGHMONEY
@ ERR_GUILDEMBLEM_SUCCESS
@ 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
@ EQUIP_ERR_DESTROY_NONEMPTY_BAG
@ EQUIP_ERR_WRONG_BAG_TYPE
@ EQUIP_ERR_DROP_BOUND_ITEM
@ EQUIP_ERR_ITEM_NOT_FOUND
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
uint32 GUID_LOPART(uint64 x)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
@ PLAYER_FLAGS_AUTO_DECLINE_GUILD
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
@ ITEM_FIELD_CONTAINED_IN
@ PLAYER_FIELD_PLAYER_FLAGS
void utf8truncate(std::string &utf8str, size_t len)
void WriteGuidBytes(const ObjectGuid &guid, Offsets... offsets)
bool WriteBit(uint32 bit)
void put(size_t pos, T value)
void WriteGuidMask(const ObjectGuid &guid, Offsets... offsets)
void WriteString(std::string const &str)
void PutBits(size_t pos, T value, uint32 bitCount)
void WriteBits(T value, size_t bits)
void AppendPackedTime(time_t time)
void WriteByteSeq(uint8 b)
static size_t BuildChatPacket(WorldPacket &data, ChatMsg chatType, Language language, ObjectGuid senderGUID, ObjectGuid receiverGUID, std::string const &message, uint8 chatTag, std::string const &senderName="", std::string const &receiverName="", uint32 achievementId=0, bool gmMessage=false, std::string const &channelName="", std::string const &addonPrefix="")
void LoadFromDB(Field *fields)
void ReadPacket(WorldPacket &recv)
void WritePacket(WorldPacket &data) const
void SaveToDB(uint32 guildId) const
std::string GetString() const
GuildBankEventLogTypes m_eventType
void WritePacket(WorldPacket &data, ByteBuffer &content) const
void SaveToDB(SQLTransaction &trans) const
static bool IsMoneyEvent(GuildBankEventLogTypes eventType)
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
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)
Item * m_items[GUILD_BANK_MAX_SLOTS]
void Delete(SQLTransaction &trans, bool removeItemsFromDB=false)
void SetInfo(std::string const &name, std::string const &icon)
Item * GetItem(uint8 slotId) const
bool LoadItemFromDB(Field *fields)
bool SetItem(SQLTransaction &trans, uint8 slotId, Item *item)
void SetText(std::string const &text)
void SendText(Guild const *guild, WorldSession *session) const
GuildEventLogTypes m_eventType
void SaveToDB(SQLTransaction &trans) const
void WritePacket(WorldPacket &data, ByteBuffer &content) const
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)
std::string GetOfficerNote() const
std::string const & GetName() const
uint32 GetVirtualRealm() const
bool IsRankNotLower(uint8 rankId) const
bool IsRank(uint8 rankId) const
bool IsSamePlayer(uint64 guid) const
void ChangeRank(uint8 newRank)
uint32 GetTotalReputation() 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]
void SaveToDB(SQLTransaction &trans) const
uint64 GetTotalActivity() const
void SetPublicNote(std::string const &publicNote)
std::string m_officerNote
uint32 GetWeekReputation() const
uint32 GetAchievementPoints() const
void ResetValues(bool weekly=false)
Player * FindPlayer() const
uint64 GetLogoutTime() const
void SetStats(Player *player)
void UpdateBankWithdrawValue(SQLTransaction &trans, uint8 tabId, uint32 amount)
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
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)
uint64 GetPlayerGuid() const
GuildNews GetType() const
void WritePacket(WorldPacket &data, ByteBuffer &content) const
void SetSticky(bool sticky)
void SaveToDB(SQLTransaction &trans) const
void RemoveItem(SQLTransaction &trans, MoveItemData *pOther, uint32 splitedAmount=0)
InventoryResult CanStore(Item *pItem, bool swap)
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
int8 GetBankTabRights(uint8 tabId) const
int32 GetBankTabSlotsPerDay(uint8 tabId) const
void SetName(std::string const &name)
void SetRights(uint32 rights)
void SaveToDB(SQLTransaction &trans) const
void SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
int32 GetBankMoneyPerDay() const
GuildBankRightsAndSlots m_bankTabRightsAndSlots[GUILD_BANK_MAX_TABS]
void LoadFromDB(Field *fields)
void SetGuildMasterValues()
void SetTabId(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)
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)
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()
void BroadcastPacketToRank(WorldPacket *packet, uint8 rankId) const
void _LogEvent(GuildEventLogTypes eventType, uint32 playerGuid1, uint32 playerGuid2=0, uint8 newRank=0)
void HandleSetNewGuildMaster(WorldSession *session, std::string const &name)
bool LoadEventLogFromDB(Field *fields)
void HandleMemberLogout(WorldSession *session)
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)
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
BankTab * GetBankTab(uint8 tabId)
void HandleReplaceGuildMaster(WorldSession *session)
const Member * GetMember(uint64 guid) const
const RankInfo * GetRankInfo(uint8 rankId) const
void SendNewsUpdate(WorldSession *session)
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)
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 LoadRankFromDB(Field *fields)
void _SetLeaderGUID(Member *pLeader)
uint32 GetEnchantmentId(EnchantmentSlot slot) const
int32 GetSpellCharges(uint8 index=0) const
Item * CloneItem(uint32 count, Player const *player=NULL) const
virtual void SaveToDB(SQLTransaction &trans)
void SetCount(uint32 value)
int32 GetItemRandomPropertyId() const
ItemTemplate const * GetTemplate() const
uint32 GetItemSuffixFactor() const
virtual bool LoadFromDB(uint32 guid, uint64 owner_guid, Field *fields, uint32 entry)
void FSetState(ItemUpdateState state)
uint32 GetMaxStackCount() const
static void DeleteFromDB(SQLTransaction &trans, uint32 itemGuid)
virtual uint32 GetOwnerGuildId(uint32=TEAM_OTHER) const
static Player * FindPlayer(uint64)
uint32 GetGUIDLow() const
virtual void AddToWorld()
bool HasFlag(uint16 index, uint32 flag) const
virtual void RemoveFromWorld()
void SetUInt64Value(uint16 index, uint64 value)
static bool IsValidCharterName(std::string const &name)
static uint32 GetGuildIdFromDB(uint64 guid)
void SetInGuild(uint32 guildId)
bool ModifyMoney(int64 amount, bool sendError=true)
void SetGuildIdInvited(uint32 GuildId)
uint32 GetGuildId() const
static uint32 GetLevelFromDB(uint64 guid)
WorldSession * GetSession() const
int GetGuildIdInvited() const
static uint32 GetZoneIdFromDB(uint64 guid)
void SendDeclineGuildInvitation(std::string declinerName, bool autoDecline=false)
void removeSpell(uint32 spell_id, bool disabled=false, bool learn_low_rank=true)
uint32 GetAchievementPoints() const
void learnSpell(uint32 spell_id, bool dependent)
std::string GetGuildName()
void SetRank(uint8 rankId)
void SetLastGuildInviterGUID(uint64 guid)
static void RemovePetitionsAndSigns(uint64 guid, uint32 type)
PlayerSocial * GetSocial()
void SetGuildLevel(uint32 level)
void SaveGoldToDB(SQLTransaction &trans)
bool HasEnoughMoney(uint64 amount) const
bool HasIgnore(uint32 ignore_guid)
void setString(const uint8 index, const std::string &value)
void setUInt16(const uint8 index, const uint16 value)
void setUInt64(const uint8 index, const uint64 value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
uint32 getVirtualRealm() const
std::string const & GetName() const
void Initialize(Opcodes opcode, size_t newres=200)
Player session in the World.
uint32 GetGuidLow() const
Get player guid if available. Use for logging purposes only.
LocaleConstant GetSessionDbLocaleIndex() const
std::string GetPlayerInfo() const
Player * GetPlayer() const
bool HasPermission(uint32 permissionId)
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
uint32 GetAccountId() const
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ SMSG_GUILD_SET_GUILD_MASTER
@ SMSG_GUILD_RANKS_UPDATE
@ SMSG_GUILD_QUERY_RESPONSE
@ SMSG_GUILD_EVENT_BANK_MONEY_CHANGED
@ SMSG_GUILD_EVENT_BANK_TAB_ADDED
@ SMSG_GUILD_PARTY_STATE_RESPONSE
@ SMSG_GUILD_EVENT_LOG_QUERY_RESULT
@ SMSG_CALENDAR_EVENT_INITIAL_INVITE
@ SMSG_GUILD_REPUTATION_WEEKLY_CAP
@ SMSG_GUILD_BANK_LOG_QUERY_RESULT
@ SMSG_GUILD_MEMBER_UPDATE_NOTE
@ SMSG_GUILD_COMMAND_RESULT
@ SMSG_GUILD_PERMISSIONS_QUERY_RESULTS
@ SMSG_GUILD_BANK_QUERY_TEXT_RESULT
@ SMSG_GUILD_MEMBER_DAILY_RESET
@ SMSG_GUILD_EVENT_BANK_TAB_TEXT_CHANGED
@ SMSG_GUILD_BANK_MONEY_WITHDRAWN
@ SMSG_GUILD_EVENT_BANK_TAB_MODIFIED
@ SMSG_GUILD_EVENT_PLAYER_LEFT
uint32 realmID
Id of the realm.
@ CONFIG_GUILD_WEEKLY_REP_CAP
@ CONFIG_GUILD_EVENT_LOG_COUNT
@ CONFIG_GUILD_NEWS_LOG_COUNT
@ CONFIG_GUILD_BANK_EVENT_LOG_COUNT
@ CONFIG_GUILD_UNDELETABLE_LEVEL
@ CONFIG_GUILD_DAILY_XP_CAP
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD
@ CONFIG_GUILD_LEVELING_ENABLED
bool isContainedIn(std::vector< ItemPosCount > const &vec) const