diff options
| author | Spp <spp@jorge.gr> | 2012-11-19 10:09:58 +0100 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2012-11-19 10:09:58 +0100 |
| commit | 7f061fc57fac4b48417d25579e833e9b66364237 (patch) | |
| tree | cdbe2ff223967034dd9f236da4ca38cc73c30a7b /src/server/game/Guilds/Guild.cpp | |
| parent | 09ab26ac946bc7b5458d92fbadfb66e442744098 (diff) | |
| parent | d42212b595ad01be0a839405d853f7db2b9f88de (diff) | |
Merge branch 'master' into 4.3.4
Conflicts:
src/server/game/AI/EventAI/CreatureEventAI.cpp
src/server/game/AI/EventAI/CreatureEventAIMgr.cpp
src/server/game/AI/EventAI/CreatureEventAIMgr.h
src/server/game/Battlegrounds/Battleground.h
src/server/game/Chat/Chat.h
src/server/game/Entities/Player/Player.cpp
src/server/game/Globals/ObjectMgr.cpp
src/server/game/Globals/ObjectMgr.h
src/server/game/Guilds/Guild.cpp
src/server/game/Handlers/CharacterHandler.cpp
src/server/game/Handlers/MailHandler.cpp
src/server/game/Miscellaneous/SharedDefines.h
src/server/game/Server/Protocol/Opcodes.cpp
src/server/game/Spells/SpellInfo.cpp
src/server/game/World/World.cpp
src/server/scripts/Commands/cs_modify.cpp
src/server/scripts/Commands/cs_reload.cpp
src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
src/server/shared/Database/Implementation/CharacterDatabase.cpp
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
| -rw-r--r-- | src/server/game/Guilds/Guild.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 1a73974b906..3d06b266afb 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -27,6 +27,7 @@ #include "Log.h" #include "AccountMgr.h" #include "AchievementMgr.h" +#include "CalendarMgr.h" #define MAX_GUILD_BANK_TAB_TEXT_LEN 500 #define EMBLEM_PRICE 10 * GOLD @@ -1833,6 +1834,8 @@ void Guild::HandleLeaveMember(WorldSession* session) SendCommandResult(session, GUILD_COMMAND_QUIT, ERR_GUILD_COMMAND_SUCCESS, m_name); } + + sCalendarMgr->RemovePlayerGuildEventsAndSignups(player->GetGUID(), GetId()); } void Guild::HandleRemoveMember(WorldSession* session, uint64 guid) @@ -2541,6 +2544,39 @@ void Guild::BroadcastPacket(WorldPacket* packet) const player->GetSession()->SendPacket(packet); } +void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 maxLevel, uint32 minRank) +{ + uint32 count = 0; + + WorldPacket data(SMSG_CALENDAR_FILTER_GUILD); + data << uint32(count); // count placeholder + + for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr) + { + // not sure if needed, maybe client checks it as well + if (count >= CALENDAR_MAX_INVITES) + { + if (Player* player = session->GetPlayer()) + sCalendarMgr->SendCalendarCommandResult(player->GetGUID(), CALENDAR_ERROR_INVITES_EXCEEDED); + return; + } + + Member* member = itr->second; + uint32 level = Player::GetLevelFromDB(member->GetGUID()); + + if (member->GetGUID() != session->GetPlayer()->GetGUID() && level >= minLevel && level <= maxLevel && member->IsRankNotLower(minRank)) + { + data.appendPackGUID(member->GetGUID()); + data << uint8(0); // unk + ++count; + } + } + + data.put<uint32>(0, count); + + session->SendPacket(&data); +} + // Members handling bool Guild::AddMember(uint64 guid, uint8 rankId) { |
