mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Guilds: Implemented some guild packets, some basic guild functions is working, though most are still WIP/TODO
This commit is contained in:
@@ -25384,6 +25384,7 @@ void Player::SetReputation(uint32 factionentry, uint32 value)
|
||||
{
|
||||
GetReputationMgr().SetReputation(sFactionStore.LookupEntry(factionentry), value);
|
||||
}
|
||||
|
||||
uint32 Player::GetReputation(uint32 factionentry)
|
||||
{
|
||||
return GetReputationMgr().GetReputation(sFactionStore.LookupEntry(factionentry));
|
||||
@@ -25391,7 +25392,7 @@ uint32 Player::GetReputation(uint32 factionentry)
|
||||
|
||||
std::string Player::GetGuildName()
|
||||
{
|
||||
return sGuildMgr->GetGuildById(GetGuildId())->GetName();
|
||||
return GetGuildId() ? sGuildMgr->GetGuildById(GetGuildId())->GetName() : "";
|
||||
}
|
||||
|
||||
void Player::SendDuelCountdown(uint32 counter)
|
||||
|
||||
@@ -1895,7 +1895,7 @@ class Player : public Unit, public GridObject<Player>
|
||||
}
|
||||
|
||||
void SetRank(uint8 rankId) { SetUInt32Value(PLAYER_GUILDRANK, rankId); }
|
||||
uint8 GetRank() { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); }
|
||||
uint32 GetRank() { return GetUInt32Value(PLAYER_GUILDRANK); }
|
||||
void SetGuildIdInvited(uint32 GuildId) { m_GuildIdInvited = GuildId; }
|
||||
uint32 GetGuildId() const { return GetUInt32Value(OBJECT_FIELD_DATA); /* return only lower part */ }
|
||||
static uint32 GetGuildIdFromDB(uint64 guid);
|
||||
|
||||
@@ -220,17 +220,6 @@ void Guild::RankInfo::SaveToDB(SQLTransaction& trans) const
|
||||
CharacterDatabase.ExecuteOrAppend(trans, stmt);
|
||||
}
|
||||
|
||||
void Guild::RankInfo::WritePacket(WorldPacket& data) const
|
||||
{
|
||||
data << uint32(m_rights);
|
||||
data << uint32(m_bankMoneyPerDay); // In game set in gold, in packet set in bronze.
|
||||
for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; ++i)
|
||||
{
|
||||
data << uint32(m_bankTabRightsAndSlots[i].rights);
|
||||
data << uint32(m_bankTabRightsAndSlots[i].slots);
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::RankInfo::SetName(const std::string& name)
|
||||
{
|
||||
if (m_name == name)
|
||||
@@ -621,35 +610,6 @@ bool Guild::Member::CheckStats() const
|
||||
return true;
|
||||
}
|
||||
|
||||
void Guild::Member::WritePacket(WorldPacket& data) const
|
||||
{
|
||||
if (Player* player = FindPlayer())
|
||||
{
|
||||
data << uint64(player->GetGUID());
|
||||
data << uint8(1);
|
||||
data << player->GetName();
|
||||
data << uint32(m_rankId);
|
||||
data << uint8(player->getLevel());
|
||||
data << uint8(player->getClass());
|
||||
data << uint8(0); // new 2.4.0
|
||||
data << uint32(player->GetZoneId());
|
||||
}
|
||||
else
|
||||
{
|
||||
data << m_guid;
|
||||
data << uint8(0);
|
||||
data << m_name;
|
||||
data << uint32(m_rankId);
|
||||
data << uint8(m_level);
|
||||
data << uint8(m_class);
|
||||
data << uint8(0); // new 2.4.0
|
||||
data << uint32(m_zoneId);
|
||||
data << float(float(::time(NULL) - m_logoutTime) / DAY);
|
||||
}
|
||||
data << m_publicNote;
|
||||
data << m_officerNote;
|
||||
}
|
||||
|
||||
// Decreases amount of money/slots left for today.
|
||||
// If (tabId == GUILD_BANK_MAX_TABS) decrease money amount.
|
||||
// Otherwise decrease remaining items amount for specified tab.
|
||||
@@ -1145,6 +1105,8 @@ bool Guild::Create(Player* pLeader, const std::string& name)
|
||||
// Call scripts on successful create
|
||||
sScriptMgr->OnGuildCreate(this, pLeader, name);
|
||||
|
||||
_BroadcastEvent(GE_FOUNDER, m_leaderGuid);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1203,18 +1165,95 @@ void Guild::Disband()
|
||||
// HANDLE CLIENT COMMANDS
|
||||
void Guild::HandleRoster(WorldSession* session /*= NULL*/)
|
||||
{
|
||||
ByteBuffer memberData(100);
|
||||
// Guess size
|
||||
WorldPacket data(SMSG_GUILD_ROSTER, (4 + m_motd.length() + 1 + m_info.length() + 1 + 4 + _GetRanksSize() * (4 + 4 + GUILD_BANK_MAX_TABS * (4 + 4)) + m_members.size() * 50));
|
||||
data << uint32(m_members.size());
|
||||
data << m_motd;
|
||||
data << m_info;
|
||||
|
||||
data << uint32(_GetRanksSize());
|
||||
for (Ranks::const_iterator ritr = m_ranks.begin(); ritr != m_ranks.end(); ++ritr)
|
||||
ritr->WritePacket(data);
|
||||
WorldPacket data(SMSG_GUILD_ROSTER, 100);
|
||||
data.WriteBits(m_motd.length(), 11);
|
||||
data.WriteBits(m_members.size(), 18);
|
||||
|
||||
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
|
||||
itr->second->WritePacket(data);
|
||||
{
|
||||
Member* member = itr->second;
|
||||
Player* player = member->FindPlayer();
|
||||
size_t pubNoteLength = member->GetPublicNote().length();
|
||||
size_t offNoteLength = member->GetOfficerNote().length();
|
||||
|
||||
ObjectGuid guid = member->GetGUID();
|
||||
data.WriteBit(guid[3]);
|
||||
data.WriteBit(guid[4]);
|
||||
data.WriteBit(0); // unk
|
||||
data.WriteBit(0); // unk
|
||||
data.WriteBits(pubNoteLength, 8);
|
||||
data.WriteBits(offNoteLength, 8);
|
||||
data.WriteBit(guid[0]);
|
||||
data.WriteBits(member->GetName().length(), 7);
|
||||
data.WriteBit(guid[1]);
|
||||
data.WriteBit(guid[2]);
|
||||
data.WriteBit(guid[6]);
|
||||
data.WriteBit(guid[5]);
|
||||
data.WriteBit(guid[7]);
|
||||
|
||||
uint8 flags = GUILDMEMBER_STATUS_NONE;
|
||||
if (player)
|
||||
{
|
||||
flags |= GUILDMEMBER_STATUS_ONLINE;
|
||||
if (player->isAFK())
|
||||
flags |= GUILDMEMBER_STATUS_AFK;
|
||||
if (player->isDND())
|
||||
flags |= GUILDMEMBER_STATUS_DND;
|
||||
}
|
||||
|
||||
memberData << uint8(member->GetClass());
|
||||
memberData << int32(0); // unk
|
||||
memberData.WriteByteSeq(guid[0]);
|
||||
memberData << uint64(0); // weekly activity
|
||||
memberData << uint32(member->GetRankId());
|
||||
memberData << uint32(0); // player->GetAchievementMgr().GetCompletedAchievementsAmount()
|
||||
|
||||
// for (2 professions)
|
||||
memberData << uint32(0) << uint32(0) << uint32(0);
|
||||
memberData << uint32(0) << uint32(0) << uint32(0);
|
||||
|
||||
memberData.WriteByteSeq(guid[2]);
|
||||
memberData << uint8(flags);
|
||||
memberData << uint32(player ? player->GetZoneId() : member->GetZone());
|
||||
memberData << uint64(0); // Total activity
|
||||
memberData.WriteByteSeq(guid[7]);
|
||||
memberData << uint32(0); // Remaining guild week Rep
|
||||
|
||||
if (pubNoteLength)
|
||||
memberData.append(member->GetPublicNote().c_str(), pubNoteLength);
|
||||
|
||||
memberData.WriteByteSeq(guid[3]);
|
||||
memberData << uint8(player ? player->getLevel() : member->GetLevel());
|
||||
memberData << int32(0); // unk
|
||||
memberData.WriteByteSeq(guid[5]);
|
||||
memberData.WriteByteSeq(guid[4]);
|
||||
memberData << uint8(0); // unk
|
||||
memberData.WriteByteSeq(guid[1]);
|
||||
memberData << float(player ? 0.0f : float(::time(NULL) - member->GetLogoutTime()) / DAY);
|
||||
|
||||
if (offNoteLength)
|
||||
memberData.append(member->GetOfficerNote().c_str(), offNoteLength);
|
||||
|
||||
memberData.WriteByteSeq(guid[6]);
|
||||
memberData.append(member->GetName().c_str(), member->GetName().length());
|
||||
}
|
||||
|
||||
size_t infoLength = m_info.length();
|
||||
data.WriteBits(infoLength, 12);
|
||||
|
||||
data.FlushBits();
|
||||
data.append(memberData);
|
||||
|
||||
if (infoLength)
|
||||
data.append(m_info.c_str(), infoLength);
|
||||
|
||||
data.append(m_motd.c_str(), m_motd.length());
|
||||
data << uint32(0);
|
||||
data << uint32(0);
|
||||
data << uint32(0);
|
||||
data << uint32(0);
|
||||
|
||||
if (session)
|
||||
session->SendPacket(&data);
|
||||
@@ -1249,16 +1288,11 @@ void Guild::HandleQuery(WorldSession* session)
|
||||
}
|
||||
|
||||
// Rank order of "importance" (sorting by rights)
|
||||
Ranks ranks = m_ranks;
|
||||
std::sort(ranks.begin(), ranks.end());
|
||||
Ranks::iterator it;
|
||||
|
||||
for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i)
|
||||
{
|
||||
if (i < _GetRanksSize())
|
||||
{
|
||||
it = std::find(ranks.begin(), ranks.end(), m_ranks[i]);
|
||||
data << std::distance(ranks.begin(), it);
|
||||
data << uint32(m_ranks[i].GetId());
|
||||
}
|
||||
else
|
||||
data << uint32(0);
|
||||
@@ -1272,6 +1306,44 @@ void Guild::HandleQuery(WorldSession* session)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent (SMSG_GUILD_QUERY_RESPONSE)");
|
||||
}
|
||||
|
||||
void Guild::HandleGuildRanks(WorldSession* session)
|
||||
{
|
||||
// perhaps move to guild.cpp.....
|
||||
ByteBuffer rankData(100);
|
||||
WorldPacket data(SMSG_GUILD_RANK, 100);
|
||||
|
||||
data.WriteBits(_GetRanksSize(), 18);
|
||||
|
||||
for (uint8 i = 0; i < _GetRanksSize(); i++)
|
||||
{
|
||||
RankInfo* rankInfo = GetRankInfo(i);
|
||||
if (!rankInfo)
|
||||
continue;
|
||||
|
||||
data.WriteBits(rankInfo->GetName().length(), 7);
|
||||
|
||||
rankData << uint32(i);
|
||||
|
||||
for (uint8 j = 0; j < GUILD_BANK_MAX_TABS; ++j)
|
||||
{
|
||||
rankData << uint32(rankInfo->GetBankTabSlotsPerDay(j));
|
||||
rankData << uint32(rankInfo->GetBankTabRights(j));
|
||||
}
|
||||
|
||||
rankData << uint32(rankInfo->GetBankMoneyPerDay());
|
||||
rankData << uint32(rankInfo->GetRights());
|
||||
|
||||
if (rankInfo->GetName().length())
|
||||
rankData.append(rankInfo->GetName().c_str(), rankInfo->GetName().length());
|
||||
|
||||
rankData << uint32(rankInfo->GetId());
|
||||
}
|
||||
|
||||
data.FlushBits();
|
||||
data.append(rankData);
|
||||
session->SendPacket(&data);
|
||||
}
|
||||
|
||||
void Guild::HandleSetMOTD(WorldSession* session, const std::string& motd)
|
||||
{
|
||||
if (m_motd == motd)
|
||||
@@ -1279,7 +1351,7 @@ void Guild::HandleSetMOTD(WorldSession* session, const std::string& motd)
|
||||
|
||||
// Player must have rights to set MOTD
|
||||
if (!_HasRankRight(session->GetPlayer(), GR_RIGHT_SETMOTD))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
else
|
||||
{
|
||||
m_motd = motd;
|
||||
@@ -1302,7 +1374,7 @@ void Guild::HandleSetInfo(WorldSession* session, const std::string& info)
|
||||
|
||||
// Player must have rights to set guild's info
|
||||
if (!_HasRankRight(session->GetPlayer(), GR_RIGHT_MODIFY_GUILD_INFO))
|
||||
SendCommandResult(session, GUILD_CREATE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_CREATE, ERR_GUILD_PERMISSIONS);
|
||||
else
|
||||
{
|
||||
m_info = info;
|
||||
@@ -1344,7 +1416,7 @@ void Guild::HandleSetLeader(WorldSession* session, const std::string& name)
|
||||
Player* player = session->GetPlayer();
|
||||
// Only leader can assign new leader
|
||||
if (!_IsLeader(player))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
// Old leader must be a member of guild
|
||||
else if (Member* pOldLeader = GetMember(player->GetGUID()))
|
||||
{
|
||||
@@ -1357,7 +1429,7 @@ void Guild::HandleSetLeader(WorldSession* session, const std::string& name)
|
||||
}
|
||||
}
|
||||
else
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
}
|
||||
|
||||
void Guild::HandleSetBankTabInfo(WorldSession* session, uint8 tabId, const std::string& name, const std::string& icon)
|
||||
@@ -1370,27 +1442,26 @@ void Guild::HandleSetBankTabInfo(WorldSession* session, uint8 tabId, const std::
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::HandleSetMemberNote(WorldSession* session, const std::string& name, const std::string& note, bool officer)
|
||||
void Guild::HandleSetMemberNote(WorldSession* session, std::string const& note, uint64 guid, bool isPublic)
|
||||
{
|
||||
// Player must have rights to set public/officer note
|
||||
if (!_HasRankRight(session->GetPlayer(), officer ? GR_RIGHT_EOFFNOTE : GR_RIGHT_EPNOTE))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
// Noted player must be a member of guild
|
||||
else if (Member* member = GetMember(session, name))
|
||||
if (!_HasRankRight(session->GetPlayer(), isPublic ? GR_RIGHT_EPNOTE : GR_RIGHT_EOFFNOTE))
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
else if (Member* member = GetMember(guid))
|
||||
{
|
||||
if (officer)
|
||||
member->SetOfficerNote(note);
|
||||
else
|
||||
if (isPublic)
|
||||
member->SetPublicNote(note);
|
||||
else
|
||||
member->SetOfficerNote(note);
|
||||
HandleRoster(session);
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::HandleSetRankInfo(WorldSession* session, uint8 rankId, const std::string& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots)
|
||||
void Guild::HandleSetRankInfo(WorldSession* session, uint32 rankId, const std::string& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots)
|
||||
{
|
||||
// Only leader can modify ranks
|
||||
if (!_IsLeader(session->GetPlayer()))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
else if (RankInfo* rankInfo = GetRankInfo(rankId))
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Changed RankName to '%s', rights to 0x%08X", name.c_str(), rights);
|
||||
@@ -1436,7 +1507,7 @@ void Guild::HandleInviteMember(WorldSession* session, const std::string& name)
|
||||
Player* pInvitee = sObjectAccessor->FindPlayerByName(name.c_str());
|
||||
if (!pInvitee)
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PLAYER_NOT_FOUND_S, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PLAYER_NOT_FOUND_S, name);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1446,25 +1517,25 @@ void Guild::HandleInviteMember(WorldSession* session, const std::string& name)
|
||||
return;
|
||||
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && pInvitee->GetTeam() != player->GetTeam())
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_NOT_ALLIED, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_NOT_ALLIED, name);
|
||||
return;
|
||||
}
|
||||
// Invited player cannot be in another guild
|
||||
if (pInvitee->GetGuildId())
|
||||
/*if (pInvitee->GetGuildId())
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_ALREADY_IN_GUILD_S, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_ALREADY_IN_GUILD_S, name);
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
// Invited player cannot be invited
|
||||
if (pInvitee->GetGuildIdInvited())
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_ALREADY_INVITED_TO_GUILD_S, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_ALREADY_INVITED_TO_GUILD_S, name);
|
||||
return;
|
||||
}
|
||||
// Inviting player must have rights to invite
|
||||
if (!_HasRankRight(player, GR_RIGHT_INVITE))
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1473,9 +1544,65 @@ void Guild::HandleInviteMember(WorldSession* session, const std::string& name)
|
||||
pInvitee->SetGuildIdInvited(m_id);
|
||||
_LogEvent(GUILD_EVENT_LOG_INVITE_PLAYER, player->GetGUIDLow(), pInvitee->GetGUIDLow());
|
||||
|
||||
WorldPacket data(SMSG_GUILD_INVITE, 8 + 10); // Guess size
|
||||
data << player->GetName();
|
||||
data << m_name;
|
||||
WorldPacket data(SMSG_GUILD_INVITE, 100);
|
||||
data << uint32(1); // Guild Level
|
||||
data << uint32(m_emblemInfo.GetStyle());
|
||||
data << uint32(m_emblemInfo.GetBorderColor());
|
||||
data << uint32(m_emblemInfo.GetBorderStyle());
|
||||
data << uint32(m_emblemInfo.GetBackgroundColor());
|
||||
data << uint32(m_emblemInfo.GetColor());
|
||||
|
||||
ObjectGuid oldGuildGuid = MAKE_NEW_GUID(pInvitee->GetGuildId(), 0, pInvitee->GetGuildId() ? HIGHGUID_GUILD : 0);
|
||||
ObjectGuid newGuildGuid = GetGUID();
|
||||
|
||||
data.WriteBit(newGuildGuid[3]);
|
||||
data.WriteBit(newGuildGuid[2]);
|
||||
data.WriteBits(pInvitee->GetGuildName().length(), 8);
|
||||
data.WriteBit(newGuildGuid[1]);
|
||||
data.WriteBit(oldGuildGuid[6]);
|
||||
data.WriteBit(oldGuildGuid[4]);
|
||||
data.WriteBit(oldGuildGuid[1]);
|
||||
data.WriteBit(oldGuildGuid[5]);
|
||||
data.WriteBit(oldGuildGuid[7]);
|
||||
data.WriteBit(oldGuildGuid[2]);
|
||||
data.WriteBit(newGuildGuid[7]);
|
||||
data.WriteBit(newGuildGuid[0]);
|
||||
data.WriteBit(newGuildGuid[6]);
|
||||
data.WriteBits(m_name.length(), 8);
|
||||
data.WriteBit(oldGuildGuid[3]);
|
||||
data.WriteBit(oldGuildGuid[0]);
|
||||
data.WriteBit(newGuildGuid[5]);
|
||||
data.WriteBits(strlen(player->GetName()), 7);
|
||||
data.WriteBit(newGuildGuid[4]);
|
||||
|
||||
data.FlushBits();
|
||||
|
||||
data.WriteByteSeq(newGuildGuid[1]);
|
||||
data.WriteByteSeq(oldGuildGuid[3]);
|
||||
data.WriteByteSeq(newGuildGuid[6]);
|
||||
data.WriteByteSeq(oldGuildGuid[2]);
|
||||
data.WriteByteSeq(oldGuildGuid[1]);
|
||||
data.WriteByteSeq(newGuildGuid[0]);
|
||||
|
||||
if (!pInvitee->GetGuildName().empty())
|
||||
data.append(pInvitee->GetGuildName().c_str(), pInvitee->GetGuildName().length());
|
||||
|
||||
data.WriteByteSeq(newGuildGuid[7]);
|
||||
data.WriteByteSeq(newGuildGuid[2]);
|
||||
|
||||
data.append(player->GetName(), strlen(player->GetName()));
|
||||
|
||||
data.WriteByteSeq(oldGuildGuid[7]);
|
||||
data.WriteByteSeq(oldGuildGuid[6]);
|
||||
data.WriteByteSeq(oldGuildGuid[5]);
|
||||
data.WriteByteSeq(oldGuildGuid[0]);
|
||||
data.WriteByteSeq(newGuildGuid[4]);
|
||||
|
||||
data.append(m_name.c_str(), m_name.length());
|
||||
|
||||
data.WriteByteSeq(newGuildGuid[5]);
|
||||
data.WriteByteSeq(newGuildGuid[3]);
|
||||
data.WriteByteSeq(oldGuildGuid[4]);
|
||||
pInvitee->GetSession()->SendPacket(&data);
|
||||
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent (SMSG_GUILD_INVITE)");
|
||||
@@ -1503,7 +1630,7 @@ void Guild::HandleLeaveMember(WorldSession* session)
|
||||
{
|
||||
if (m_members.size() > 1)
|
||||
// Leader cannot leave if he is not the last member
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_LEADER_LEAVE);
|
||||
SendCommandResult(session, GUILD_QUIT, ERR_GUILD_LEADER_LEAVE);
|
||||
else
|
||||
// Guild is disbanded if leader leaves.
|
||||
Disband();
|
||||
@@ -1515,49 +1642,57 @@ void Guild::HandleLeaveMember(WorldSession* session)
|
||||
_LogEvent(GUILD_EVENT_LOG_LEAVE_GUILD, player->GetGUIDLow());
|
||||
_BroadcastEvent(GE_LEFT, player->GetGUID(), player->GetName());
|
||||
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_PLAYER_NO_MORE_IN_GUILD, m_name);
|
||||
SendCommandResult(session, GUILD_QUIT, ERR_PLAYER_NO_MORE_IN_GUILD, m_name);
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::HandleRemoveMember(WorldSession* session, const std::string& name)
|
||||
void Guild::HandleRemoveMember(WorldSession* session, uint64 guid)
|
||||
{
|
||||
Player* player = session->GetPlayer();
|
||||
Player* removedPlayer = ObjectAccessor::FindPlayer(guid);
|
||||
Member* member = GetMember(guid);
|
||||
|
||||
// Player must have rights to remove members
|
||||
if (!_HasRankRight(player, GR_RIGHT_REMOVE))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
// Removed player must be a member of guild
|
||||
else if (Member* member = GetMember(session, name))
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
// Removed player must be a member of the guild
|
||||
else if (member && removedPlayer)
|
||||
{
|
||||
// Leader cannot be removed
|
||||
// Guild masters cannot be removed
|
||||
if (member->IsRank(GR_GUILDMASTER))
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_LEADER_LEAVE);
|
||||
SendCommandResult(session, GUILD_QUIT, ERR_GUILD_LEADER_LEAVE);
|
||||
// Do not allow to remove player with the same rank or higher
|
||||
else if (member->IsRankNotLower(player->GetRank()))
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_RANK_TOO_HIGH_S, name);
|
||||
SendCommandResult(session, GUILD_QUIT, ERR_GUILD_RANK_TOO_HIGH_S, removedPlayer->GetName());
|
||||
else
|
||||
{
|
||||
uint64 guid = member->GetGUID();
|
||||
// After call to DeleteMember pointer to member becomes invalid
|
||||
DeleteMember(guid, false, true);
|
||||
_LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUIDLow(), GUID_LOPART(guid));
|
||||
_BroadcastEvent(GE_REMOVED, 0, name.c_str(), player->GetName());
|
||||
_BroadcastEvent(GE_REMOVED, 0, removedPlayer->GetName(), player->GetName());
|
||||
}
|
||||
}
|
||||
else if (removedPlayer)
|
||||
SendCommandResult(session, GUILD_QUIT, ERR_PLAYER_NO_MORE_IN_GUILD, removedPlayer->GetName());
|
||||
}
|
||||
|
||||
void Guild::HandleUpdateMemberRank(WorldSession* session, const std::string& name, bool demote)
|
||||
void Guild::HandleUpdateMemberRank(WorldSession* session, uint64 targetGuid, bool demote)
|
||||
{
|
||||
Player* player = session->GetPlayer();
|
||||
// Player must have rights to promote
|
||||
if (!_HasRankRight(player, demote ? GR_RIGHT_DEMOTE : GR_RIGHT_PROMOTE))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
|
||||
// Promoted player must be a member of guild
|
||||
else if (Member* member = GetMember(session, name))
|
||||
if (Member* member = GetMember(targetGuid))
|
||||
{
|
||||
if (!_HasRankRight(player, demote ? GR_RIGHT_DEMOTE : GR_RIGHT_PROMOTE))
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
// Player cannot promote himself
|
||||
if (member->IsSamePlayer(player->GetGUID()))
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_NAME_INVALID);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_NAME_INVALID);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1566,13 +1701,13 @@ void Guild::HandleUpdateMemberRank(WorldSession* session, const std::string& nam
|
||||
// Player can demote only lower rank members
|
||||
if (member->IsRankNotLower(player->GetRank()))
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_RANK_TOO_HIGH_S, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_RANK_TOO_HIGH_S, member->GetName());
|
||||
return;
|
||||
}
|
||||
// Lowest rank cannot be demoted
|
||||
if (member->GetRankId() >= _GetLowestRankId())
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_RANK_TOO_LOW_S, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_RANK_TOO_LOW_S, member->GetName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1582,27 +1717,50 @@ void Guild::HandleUpdateMemberRank(WorldSession* session, const std::string& nam
|
||||
// member->GetRank() + 1 is the highest rank that current player can promote to
|
||||
if (member->IsRankNotLower(player->GetRank() + 1))
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_RANK_TOO_HIGH_S, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_RANK_TOO_HIGH_S, member->GetName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// When promoting player, rank is decreased, when demoting - increased
|
||||
uint32 newRankId = member->GetRankId() + (demote ? 1 : -1);
|
||||
member->ChangeRank(newRankId);
|
||||
_LogEvent(demote ? GUILD_EVENT_LOG_DEMOTE_PLAYER : GUILD_EVENT_LOG_PROMOTE_PLAYER, player->GetGUIDLow(), GUID_LOPART(member->GetGUID()), newRankId);
|
||||
_BroadcastEvent(demote ? GE_DEMOTION : GE_PROMOTION, 0, player->GetName(), name.c_str(), _GetRankName(newRankId).c_str());
|
||||
_BroadcastEvent(demote ? GE_DEMOTION : GE_PROMOTION, 0, player->GetName(), member->GetName().c_str(), _GetRankName(newRankId).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::HandleAddNewRank(WorldSession* session, const std::string& name)
|
||||
void Guild::HandleSetMemberRank(WorldSession* session, uint64 targetGuid, uint64 setterGuid, uint32 rank)
|
||||
{
|
||||
Player* player = session->GetPlayer();
|
||||
|
||||
// Promoted player must be a member of guild
|
||||
if (Member* member = GetMember(targetGuid))
|
||||
{
|
||||
if (!_HasRankRight(player, rank > member->GetRankId() ? GR_RIGHT_DEMOTE : GR_RIGHT_PROMOTE))
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
// Player cannot promote himself
|
||||
if (member->IsSamePlayer(player->GetGUID()))
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_NAME_INVALID);
|
||||
return;
|
||||
}
|
||||
|
||||
SendGuildRanksUpdate(setterGuid, targetGuid, rank);
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::HandleAddNewRank(WorldSession* session, std::string const& name) //, uint32 rankId)
|
||||
{
|
||||
if (_GetRanksSize() >= GUILD_RANKS_MAX_COUNT)
|
||||
return;
|
||||
|
||||
// Only leader can add new rank
|
||||
if (!_IsLeader(session->GetPlayer()))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
else
|
||||
{
|
||||
_CreateRank(name, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK);
|
||||
@@ -1611,7 +1769,7 @@ void Guild::HandleAddNewRank(WorldSession* session, const std::string& name)
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::HandleRemoveLowestRank(WorldSession* session)
|
||||
void Guild::HandleRemoveRank(WorldSession* session, uint32 rankId)
|
||||
{
|
||||
// Cannot remove rank if total count is minimum allowed by the client
|
||||
if (_GetRanksSize() <= GUILD_RANKS_MIN_COUNT)
|
||||
@@ -1619,22 +1777,21 @@ void Guild::HandleRemoveLowestRank(WorldSession* session)
|
||||
|
||||
// Only leader can delete ranks
|
||||
if (!_IsLeader(session->GetPlayer()))
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
else
|
||||
{
|
||||
uint8 rankId = _GetLowestRankId();
|
||||
// Delete bank rights for rank
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK);
|
||||
stmt->setUInt32(0, m_id);
|
||||
stmt->setUInt8 (1, rankId);
|
||||
stmt->setUInt8(1, rankId);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
// Delete rank
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_LOWEST_RANK);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_RANK);
|
||||
stmt->setUInt32(0, m_id);
|
||||
stmt->setUInt8 (1, rankId);
|
||||
stmt->setUInt8(1, rankId);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
|
||||
m_ranks.pop_back();
|
||||
m_ranks.erase(m_ranks.begin() + rankId-1);
|
||||
|
||||
HandleQuery(session);
|
||||
HandleRoster(); // Broadcast for tab rights update
|
||||
@@ -1732,7 +1889,7 @@ void Guild::HandleDisband(WorldSession* session)
|
||||
{
|
||||
// Only leader can disband guild
|
||||
if (!_IsLeader(session->GetPlayer()))
|
||||
Guild::SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
|
||||
Guild::SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
|
||||
else
|
||||
{
|
||||
Disband();
|
||||
@@ -1787,6 +1944,7 @@ void Guild::SendBankTabData(WorldSession* session, uint8 tabId) const
|
||||
|
||||
void Guild::SendBankTabsInfo(WorldSession* session) const
|
||||
{
|
||||
// TODO
|
||||
WorldPacket data(SMSG_GUILD_BANK_LIST, 500);
|
||||
|
||||
data << uint64(m_bankMoney);
|
||||
@@ -1813,7 +1971,7 @@ void Guild::SendBankTabText(WorldSession* session, uint8 tabId) const
|
||||
void Guild::SendPermissions(WorldSession* session) const
|
||||
{
|
||||
uint64 guid = session->GetPlayer()->GetGUID();
|
||||
uint8 rankId = session->GetPlayer()->GetRank();
|
||||
uint32 rankId = session->GetPlayer()->GetRank();
|
||||
WorldPacket data(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, 4 * 15 + 1);
|
||||
data << uint32(rankId);
|
||||
data << uint32(_GetPurchasedTabsSize());
|
||||
@@ -1827,7 +1985,7 @@ void Guild::SendPermissions(WorldSession* session) const
|
||||
}
|
||||
|
||||
session->SendPacket(&data);
|
||||
sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (MSG_GUILD_PERMISSIONS)");
|
||||
sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_PERMISSIONS_QUERY_RESULTS)");
|
||||
}
|
||||
|
||||
void Guild::SendMoneyInfo(WorldSession* session) const
|
||||
@@ -1835,7 +1993,7 @@ void Guild::SendMoneyInfo(WorldSession* session) const
|
||||
WorldPacket data(SMSG_GUILD_BANK_MONEY_WITHDRAWN, 4);
|
||||
data << uint64(_GetMemberRemainingMoney(session->GetPlayer()->GetGUID()));
|
||||
session->SendPacket(&data);
|
||||
sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent MSG_GUILD_BANK_MONEY_WITHDRAWN");
|
||||
sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent SMSG_GUILD_BANK_MONEY_WITHDRAWN");
|
||||
}
|
||||
|
||||
void Guild::SendLoginInfo(WorldSession* session) const
|
||||
@@ -2341,7 +2499,7 @@ void Guild::_CreateRank(const std::string& name, uint32 rights)
|
||||
return;
|
||||
|
||||
// Ranks represent sequence 0, 1, 2, ... where 0 means guildmaster
|
||||
uint8 newRankId = _GetRanksSize();
|
||||
uint32 newRankId = _GetRanksSize();
|
||||
|
||||
RankInfo info(m_id, newRankId, name, rights, 0);
|
||||
m_ranks.push_back(info);
|
||||
@@ -2428,7 +2586,7 @@ void Guild::_SetLeaderGUID(Member* pLeader)
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
void Guild::_SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay)
|
||||
void Guild::_SetRankBankMoneyPerDay(uint32 rankId, uint32 moneyPerDay)
|
||||
{
|
||||
if (RankInfo* rankInfo = GetRankInfo(rankId))
|
||||
{
|
||||
@@ -2440,7 +2598,7 @@ void Guild::_SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay)
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::_SetRankBankTabRightsAndSlots(uint8 rankId, uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
|
||||
void Guild::_SetRankBankTabRightsAndSlots(uint32 rankId, uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
|
||||
{
|
||||
if (tabId >= _GetPurchasedTabsSize())
|
||||
return;
|
||||
@@ -2455,28 +2613,28 @@ void Guild::_SetRankBankTabRightsAndSlots(uint8 rankId, uint8 tabId, GuildBankRi
|
||||
}
|
||||
}
|
||||
|
||||
inline std::string Guild::_GetRankName(uint8 rankId) const
|
||||
inline std::string Guild::_GetRankName(uint32 rankId) const
|
||||
{
|
||||
if (const RankInfo* rankInfo = GetRankInfo(rankId))
|
||||
return rankInfo->GetName();
|
||||
return "<unknown>";
|
||||
}
|
||||
|
||||
inline uint32 Guild::_GetRankRights(uint8 rankId) const
|
||||
inline uint32 Guild::_GetRankRights(uint32 rankId) const
|
||||
{
|
||||
if (const RankInfo* rankInfo = GetRankInfo(rankId))
|
||||
return rankInfo->GetRights();
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline uint32 Guild::_GetRankBankMoneyPerDay(uint8 rankId) const
|
||||
inline uint32 Guild::_GetRankBankMoneyPerDay(uint32 rankId) const
|
||||
{
|
||||
if (const RankInfo* rankInfo = GetRankInfo(rankId))
|
||||
return rankInfo->GetBankMoneyPerDay();
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline uint32 Guild::_GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const
|
||||
inline uint32 Guild::_GetRankBankTabSlotsPerDay(uint32 rankId, uint8 tabId) const
|
||||
{
|
||||
if (tabId < _GetPurchasedTabsSize())
|
||||
if (const RankInfo* rankInfo = GetRankInfo(rankId))
|
||||
@@ -2484,7 +2642,7 @@ inline uint32 Guild::_GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline uint8 Guild::_GetRankBankTabRights(uint8 rankId, uint8 tabId) const
|
||||
inline uint32 Guild::_GetRankBankTabRights(uint32 rankId, uint8 tabId) const
|
||||
{
|
||||
if (const RankInfo* rankInfo = GetRankInfo(rankId))
|
||||
return rankInfo->GetBankTabRights(tabId);
|
||||
@@ -2791,3 +2949,56 @@ void Guild::_BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char* par
|
||||
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_GUILD_EVENT");
|
||||
}
|
||||
|
||||
void Guild::SendGuildRanksUpdate(uint64 setterGuid, uint64 targetGuid, uint32 rank)
|
||||
{
|
||||
ObjectGuid tarGuid = targetGuid;
|
||||
ObjectGuid setGuid = setterGuid;
|
||||
|
||||
Member* member = GetMember(targetGuid);
|
||||
ASSERT(member);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_RANKS_UPDATE, 100);
|
||||
data.WriteBit(setGuid[7]);
|
||||
data.WriteBit(setGuid[2]);
|
||||
data.WriteBit(tarGuid[2]);
|
||||
data.WriteBit(setGuid[1]);
|
||||
data.WriteBit(tarGuid[1]);
|
||||
data.WriteBit(tarGuid[7]);
|
||||
data.WriteBit(tarGuid[0]);
|
||||
data.WriteBit(tarGuid[5]);
|
||||
data.WriteBit(tarGuid[4]);
|
||||
data.WriteBit(rank < member->GetRankId()); // 1 == higher, 0 = lower?
|
||||
data.WriteBit(setGuid[5]);
|
||||
data.WriteBit(setGuid[0]);
|
||||
data.WriteBit(tarGuid[6]);
|
||||
data.WriteBit(setGuid[3]);
|
||||
data.WriteBit(setGuid[6]);
|
||||
data.WriteBit(tarGuid[3]);
|
||||
data.WriteBit(setGuid[4]);
|
||||
|
||||
data.FlushBits();
|
||||
|
||||
data << uint32(rank);
|
||||
data.WriteByteSeq(setGuid[3]);
|
||||
data.WriteByteSeq(tarGuid[7]);
|
||||
data.WriteByteSeq(setGuid[6]);
|
||||
data.WriteByteSeq(setGuid[2]);
|
||||
data.WriteByteSeq(tarGuid[5]);
|
||||
data.WriteByteSeq(tarGuid[0]);
|
||||
data.WriteByteSeq(setGuid[7]);
|
||||
data.WriteByteSeq(setGuid[5]);
|
||||
data.WriteByteSeq(tarGuid[2]);
|
||||
data.WriteByteSeq(tarGuid[1]);
|
||||
data.WriteByteSeq(setGuid[0]);
|
||||
data.WriteByteSeq(setGuid[4]);
|
||||
data.WriteByteSeq(setGuid[1]);
|
||||
data.WriteByteSeq(tarGuid[3]);
|
||||
data.WriteByteSeq(tarGuid[6]);
|
||||
data.WriteByteSeq(tarGuid[4]);
|
||||
BroadcastPacket(&data);
|
||||
|
||||
member->ChangeRank(rank);
|
||||
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_GUILD_RANKS_UPDATE");
|
||||
}
|
||||
|
||||
@@ -77,12 +77,23 @@ enum GuildRankRights
|
||||
|
||||
enum GuildCommandType
|
||||
{
|
||||
GUILD_CREATE_S = 0x00,
|
||||
GUILD_INVITE_S = 0x01,
|
||||
GUILD_QUIT_S = 0x03,
|
||||
GUILD_FOUNDER_S = 0x0E,
|
||||
GUILD_UNK1 = 0x13,
|
||||
GUILD_UNK2 = 0x14
|
||||
GUILD_CREATE = 0x00,
|
||||
GUILD_INVITE = 0x01,
|
||||
GUILD_QUIT = 0x03,
|
||||
GUILD_ROSTER = 0x05,
|
||||
GUILD_PROMOTE = 0x06,
|
||||
GUILD_DEMOTE = 0x07,
|
||||
GUILD_KICK = 0x08,
|
||||
GUILD_LEADER = 0x0A,
|
||||
GUILD_MOTD = 0x0B,
|
||||
GUILD_GUILDCHAT = 0x0D,
|
||||
GUILD_FOUNDER = 0x0E,
|
||||
GUILD_CHANGE_RANK = 0x10,
|
||||
GUILD_EDIT_PUB_NOTE = 0x13,
|
||||
GUILD_UNK = 0x14,
|
||||
GUILD_VIEW_TAB = 0x15,
|
||||
GUILD_MOVE_ITEM = 0x16,
|
||||
GUILD_REPAIR = 0x19,
|
||||
};
|
||||
|
||||
enum GuildCommandError
|
||||
@@ -110,12 +121,15 @@ enum GuildCommandError
|
||||
ERR_GUILD_WITHDRAW_LIMIT = 0x19,
|
||||
ERR_GUILD_NOT_ENOUGH_MONEY = 0x1A,
|
||||
ERR_GUILD_BANK_FULL = 0x1C,
|
||||
ERR_GUILD_ITEM_NOT_FOUND = 0x1D
|
||||
ERR_GUILD_ITEM_NOT_FOUND = 0x1D,
|
||||
ERR_GUILD_TOO_MUCH_MONEY = 0x1F,
|
||||
ERR_GUILD_WRONG_TAB = 0x20,
|
||||
ERR_GUILD_REQ_AUTHENTICATOR = 0x22,
|
||||
ERR_GUILD_BANK_VOUCHER_FAILED = 0x23,
|
||||
};
|
||||
|
||||
enum GuildEvents
|
||||
{
|
||||
// TODO Verify this enum, it changed in 4.x
|
||||
GE_PROMOTION = 1,
|
||||
GE_DEMOTION = 2,
|
||||
GE_MOTD = 3,
|
||||
@@ -130,18 +144,18 @@ enum GuildEvents
|
||||
GE_RANK_CREATED = 12,
|
||||
GE_RANK_DELETED = 13,
|
||||
GE_RANK_ORDER_CHANGED = 14,
|
||||
// Unk15 = 15, // At guild creation - Set founder
|
||||
GE_FOUNDER = 15, // At guild creation - Set founder
|
||||
GE_SIGNED_ON = 16,
|
||||
GE_SIGNED_OFF = 17,
|
||||
GE_GUILDBANKBAGSLOTS_CHANGED = 18,
|
||||
GE_BANK_TAB_PURCHASED = 19,
|
||||
GE_BANK_TAB_UPDATED = 20,
|
||||
GE_BANK_UPDATE_MONEY = 21,
|
||||
|
||||
// To be found:
|
||||
// GE_BANK_MONEY_WITHDRAWN = 19,
|
||||
// GE_BANK_TEXT_CHANGED = 20,
|
||||
// GE_UPDATE_ROSTER = 12,
|
||||
GE_BANK_MONEY_UPDATED = 21,
|
||||
GE_BANK_MONEY_WITHDRAWN = 22,
|
||||
GE_BANK_TEXT_CHANGED = 23,
|
||||
// 24 - error 795
|
||||
GE_SIGNED_ON_MOBILE = 25,
|
||||
GE_SIGNED_Off_MOBILE = 26,
|
||||
};
|
||||
|
||||
enum PetitionTurns
|
||||
@@ -185,7 +199,7 @@ enum GuildBankEventLogTypes
|
||||
GUILD_BANK_LOG_REPAIR_MONEY = 6,
|
||||
GUILD_BANK_LOG_MOVE_ITEM2 = 7,
|
||||
GUILD_BANK_LOG_UNK1 = 8,
|
||||
GUILD_BANK_LOG_UNK2 = 9,
|
||||
GUILD_BANK_LOG_BUY_SLOT = 9,
|
||||
};
|
||||
|
||||
enum GuildEventLogTypes
|
||||
@@ -208,6 +222,15 @@ enum GuildEmblemError
|
||||
ERR_GUILDEMBLEM_INVALIDVENDOR = 5
|
||||
};
|
||||
|
||||
enum GuildMemberFlags
|
||||
{
|
||||
GUILDMEMBER_STATUS_NONE = 0x0000,
|
||||
GUILDMEMBER_STATUS_ONLINE = 0x0001,
|
||||
GUILDMEMBER_STATUS_AFK = 0x0002,
|
||||
GUILDMEMBER_STATUS_DND = 0x0004,
|
||||
GUILDMEMBER_STATUS_MOBILE = 0x0008, // remote chat from mobile app
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Emblem info
|
||||
class EmblemInfo
|
||||
@@ -238,7 +261,7 @@ private:
|
||||
struct GuildBankRightsAndSlots
|
||||
{
|
||||
GuildBankRightsAndSlots() : rights(0), slots(0) { }
|
||||
GuildBankRightsAndSlots(uint8 _rights, uint32 _slots) : rights(_rights), slots(_slots) { }
|
||||
GuildBankRightsAndSlots(uint32 _rights, uint32 _slots) : rights(_rights), slots(_slots) { }
|
||||
|
||||
inline bool IsEqual(GuildBankRightsAndSlots const& rhs) const { return rights == rhs.rights && slots == rhs.slots; }
|
||||
void SetGuildMasterValues()
|
||||
@@ -247,7 +270,7 @@ struct GuildBankRightsAndSlots
|
||||
slots = uint32(GUILD_WITHDRAW_SLOT_UNLIMITED);
|
||||
}
|
||||
|
||||
uint8 rights;
|
||||
uint32 rights;
|
||||
uint32 slots;
|
||||
};
|
||||
typedef std::vector <GuildBankRightsAndSlots> GuildBankRightsAndSlotsVec;
|
||||
@@ -269,7 +292,7 @@ private:
|
||||
};
|
||||
|
||||
public:
|
||||
Member(uint32 guildId, uint64 guid, uint8 rankId) : m_guildId(guildId), m_guid(guid), m_logoutTime(::time(NULL)), m_rankId(rankId) { }
|
||||
Member(uint32 guildId, uint64 guid, uint32 rankId) : m_guildId(guildId), m_guid(guid), m_logoutTime(::time(NULL)), m_rankId(rankId) { }
|
||||
|
||||
void SetStats(Player* player);
|
||||
void SetStats(const std::string& name, uint8 level, uint8 _class, uint32 zoneId, uint32 accountId);
|
||||
@@ -278,14 +301,20 @@ private:
|
||||
void SetPublicNote(const std::string& publicNote);
|
||||
void SetOfficerNote(const std::string& officerNote);
|
||||
|
||||
std::string GetPublicNote() { return m_publicNote; };
|
||||
std::string GetOfficerNote() { return m_officerNote; };
|
||||
|
||||
bool LoadFromDB(Field* fields);
|
||||
void SaveToDB(SQLTransaction& trans) const;
|
||||
void WritePacket(WorldPacket& data) const;
|
||||
|
||||
uint64 GetGUID() const { return m_guid; }
|
||||
std::string GetName() const { return m_name; }
|
||||
uint32 GetAccountId() const { return m_accountId; }
|
||||
uint8 GetRankId() const { return m_rankId; }
|
||||
uint32 GetRankId() const { return m_rankId; }
|
||||
uint8 GetClass() const { return m_class; }
|
||||
uint8 GetLevel() const { return m_level; }
|
||||
uint8 GetZone() const { return m_zoneId; }
|
||||
uint64 GetLogoutTime() const { return m_logoutTime; }
|
||||
|
||||
void ChangeRank(uint8 newRank);
|
||||
|
||||
@@ -313,7 +342,7 @@ private:
|
||||
uint64 m_logoutTime;
|
||||
uint32 m_accountId;
|
||||
// Fields from guild_member table
|
||||
uint8 m_rankId;
|
||||
uint32 m_rankId;
|
||||
std::string m_publicNote;
|
||||
std::string m_officerNote;
|
||||
|
||||
@@ -426,14 +455,13 @@ private:
|
||||
{
|
||||
public:
|
||||
RankInfo(uint32 guildId) : m_guildId(guildId), m_rankId(GUILD_RANK_NONE), m_rights(GR_RIGHT_EMPTY), m_bankMoneyPerDay(0) { }
|
||||
RankInfo(uint32 guildId, uint8 rankId, const std::string& name, uint32 rights, uint32 money) :
|
||||
RankInfo(uint32 guildId, uint32 rankId, const std::string& name, uint32 rights, uint32 money) :
|
||||
m_guildId(guildId), m_rankId(rankId), m_name(name), m_rights(rights), m_bankMoneyPerDay(money) { }
|
||||
|
||||
void LoadFromDB(Field* fields);
|
||||
void SaveToDB(SQLTransaction& trans) const;
|
||||
void WritePacket(WorldPacket& data) const;
|
||||
|
||||
uint8 GetId() const { return m_rankId; }
|
||||
uint32 GetId() const { return m_rankId; }
|
||||
|
||||
std::string GetName() const { return m_name; }
|
||||
void SetName(const std::string& name);
|
||||
@@ -447,7 +475,7 @@ private:
|
||||
uint32 GetBankMoneyPerDay() const { return m_rankId == GR_GUILDMASTER ? GUILD_WITHDRAW_MONEY_UNLIMITED : m_bankMoneyPerDay; }
|
||||
void SetBankMoneyPerDay(uint32 money);
|
||||
|
||||
inline uint8 GetBankTabRights(uint8 tabId) const { return tabId < GUILD_BANK_MAX_TABS ? m_bankTabRightsAndSlots[tabId].rights : 0; }
|
||||
inline uint32 GetBankTabRights(uint8 tabId) const { return tabId < GUILD_BANK_MAX_TABS ? m_bankTabRightsAndSlots[tabId].rights : 0; }
|
||||
inline uint32 GetBankTabSlotsPerDay(uint8 tabId) const
|
||||
{
|
||||
if (tabId < GUILD_BANK_MAX_TABS)
|
||||
@@ -458,8 +486,7 @@ private:
|
||||
|
||||
private:
|
||||
uint32 m_guildId;
|
||||
|
||||
uint8 m_rankId;
|
||||
uint32 m_rankId;
|
||||
std::string m_name;
|
||||
uint32 m_rights;
|
||||
uint32 m_bankMoneyPerDay;
|
||||
@@ -614,21 +641,23 @@ public:
|
||||
// Handle client commands
|
||||
void HandleRoster(WorldSession* session = NULL); // NULL = broadcast
|
||||
void HandleQuery(WorldSession* session);
|
||||
void HandleGuildRanks(WorldSession* session);
|
||||
void HandleSetMOTD(WorldSession* session, const std::string& motd);
|
||||
void HandleSetInfo(WorldSession* session, const std::string& info);
|
||||
void HandleSetEmblem(WorldSession* session, const EmblemInfo& emblemInfo);
|
||||
void HandleSetLeader(WorldSession* session, const std::string& name);
|
||||
void HandleSetBankTabInfo(WorldSession* session, uint8 tabId, const std::string& name, const std::string& icon);
|
||||
void HandleSetMemberNote(WorldSession* session, const std::string& name, const std::string& note, bool officer);
|
||||
void HandleSetRankInfo(WorldSession* session, uint8 rankId, const std::string& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots);
|
||||
void HandleSetMemberNote(WorldSession* session, std::string const& note, uint64 guid, bool isPublic);
|
||||
void HandleSetRankInfo(WorldSession* session, uint32 rankId, const std::string& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots);
|
||||
void HandleBuyBankTab(WorldSession* session, uint8 tabId);
|
||||
void HandleInviteMember(WorldSession* session, const std::string& name);
|
||||
void HandleAcceptMember(WorldSession* session);
|
||||
void HandleLeaveMember(WorldSession* session);
|
||||
void HandleRemoveMember(WorldSession* session, const std::string& name);
|
||||
void HandleUpdateMemberRank(WorldSession* session, const std::string& name, bool demote);
|
||||
void HandleRemoveMember(WorldSession* session, uint64 guid);
|
||||
void HandleUpdateMemberRank(WorldSession* session, uint64 targetGuid, bool demote);
|
||||
void HandleSetMemberRank(WorldSession* session, uint64 targetGuid, uint64 setterGuid, uint32 rank);
|
||||
void HandleAddNewRank(WorldSession* session, const std::string& name);
|
||||
void HandleRemoveLowestRank(WorldSession* session);
|
||||
void HandleRemoveRank(WorldSession* session, uint32 rankId);
|
||||
void HandleMemberDepositMoney(WorldSession* session, uint32 amount);
|
||||
bool HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool repair = false);
|
||||
void HandleMemberLogout(WorldSession* session);
|
||||
@@ -715,11 +744,11 @@ protected:
|
||||
uint32 m_level;
|
||||
|
||||
private:
|
||||
inline uint8 _GetRanksSize() const { return uint8(m_ranks.size()); }
|
||||
inline const RankInfo* GetRankInfo(uint8 rankId) const { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; }
|
||||
inline RankInfo* GetRankInfo(uint8 rankId) { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; }
|
||||
inline uint32 _GetRanksSize() const { return uint32(m_ranks.size()); }
|
||||
inline const RankInfo* GetRankInfo(uint32 rankId) const { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; }
|
||||
inline RankInfo* GetRankInfo(uint32 rankId) { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; }
|
||||
inline bool _HasRankRight(Player* player, uint32 right) const { return (_GetRankRights(player->GetRank()) & right) != GR_RIGHT_EMPTY; }
|
||||
inline uint8 _GetLowestRankId() const { return uint8(m_ranks.size() - 1); }
|
||||
inline uint32 _GetLowestRankId() const { return uint32(m_ranks.size() - 1); }
|
||||
|
||||
inline uint8 _GetPurchasedTabsSize() const { return uint8(m_bankTabs.size()); }
|
||||
inline BankTab* GetBankTab(uint8 tabId) { return tabId < m_bankTabs.size() ? m_bankTabs[tabId] : NULL; }
|
||||
@@ -741,7 +770,7 @@ private:
|
||||
if (itr->second->GetName() == name)
|
||||
return itr->second;
|
||||
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD_S, name);
|
||||
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PLAYER_NOT_IN_GUILD_S, name);
|
||||
return NULL;
|
||||
}
|
||||
inline void _DeleteMemberFromDB(uint32 lowguid) const
|
||||
@@ -766,13 +795,13 @@ private:
|
||||
bool _ModifyBankMoney(SQLTransaction& trans, uint64 amount, bool add);
|
||||
void _SetLeaderGUID(Member* pLeader);
|
||||
|
||||
void _SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay);
|
||||
void _SetRankBankTabRightsAndSlots(uint8 rankId, uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB = true);
|
||||
uint8 _GetRankBankTabRights(uint8 rankId, uint8 tabId) const;
|
||||
uint32 _GetRankRights(uint8 rankId) const;
|
||||
uint32 _GetRankBankMoneyPerDay(uint8 rankId) const;
|
||||
uint32 _GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const;
|
||||
std::string _GetRankName(uint8 rankId) const;
|
||||
void _SetRankBankMoneyPerDay(uint32 rankId, uint32 moneyPerDay);
|
||||
void _SetRankBankTabRightsAndSlots(uint32 rankId, uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB = true);
|
||||
uint32 _GetRankBankTabRights(uint32 rankId, uint8 tabId) const;
|
||||
uint32 _GetRankRights(uint32 rankId) const;
|
||||
uint32 _GetRankBankMoneyPerDay(uint32 rankId) const;
|
||||
uint32 _GetRankBankTabSlotsPerDay(uint32 rankId, uint8 tabId) const;
|
||||
std::string _GetRankName(uint32 rankId) const;
|
||||
|
||||
uint32 _GetMemberRemainingSlots(uint64 guid, uint8 tabId) const;
|
||||
uint32 _GetMemberRemainingMoney(uint64 guid) const;
|
||||
@@ -791,6 +820,8 @@ private:
|
||||
void _SendBankMoneyUpdate(WorldSession* session) const;
|
||||
void _SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) const;
|
||||
void _SendBankContentUpdate(uint8 tabId, SlotIds slots) const;
|
||||
|
||||
void SendGuildRanksUpdate(uint64 setterGuid, uint64 targetGuid, uint32 rank);
|
||||
|
||||
void _BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char* param1 = NULL, const char* param2 = NULL, const char* param3 = NULL) const;
|
||||
};
|
||||
|
||||
@@ -36,7 +36,7 @@ inline Guild* _GetPlayerGuild(WorldSession* session, bool sendError = false)
|
||||
if (Guild* guild = sGuildMgr->GetGuildById(guildId)) // Find guild by id
|
||||
return guild;
|
||||
if (sendError)
|
||||
Guild::SendCommandResult(session, GUILD_CREATE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
Guild::SendCommandResult(session, GUILD_CREATE, ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
|
||||
return;
|
||||
}
|
||||
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
|
||||
@@ -79,8 +79,8 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_INVITE");
|
||||
|
||||
std::string invitedName;
|
||||
recvPacket >> invitedName;
|
||||
uint32 nameLength = recvPacket.ReadBits(7);
|
||||
std::string invitedName = recvPacket.ReadString(nameLength);
|
||||
|
||||
if (normalizePlayerName(invitedName))
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
@@ -91,12 +91,28 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_REMOVE");
|
||||
|
||||
std::string playerName;
|
||||
recvPacket >> playerName;
|
||||
ObjectGuid playerGuid;
|
||||
|
||||
if (normalizePlayerName(playerName))
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleRemoveMember(this, playerName);
|
||||
playerGuid[6] = recvPacket.ReadBit();
|
||||
playerGuid[5] = recvPacket.ReadBit();
|
||||
playerGuid[4] = recvPacket.ReadBit();
|
||||
playerGuid[0] = recvPacket.ReadBit();
|
||||
playerGuid[1] = recvPacket.ReadBit();
|
||||
playerGuid[3] = recvPacket.ReadBit();
|
||||
playerGuid[7] = recvPacket.ReadBit();
|
||||
playerGuid[2] = recvPacket.ReadBit();
|
||||
|
||||
recvPacket.ReadByteSeq(playerGuid[2]);
|
||||
recvPacket.ReadByteSeq(playerGuid[6]);
|
||||
recvPacket.ReadByteSeq(playerGuid[5]);
|
||||
recvPacket.ReadByteSeq(playerGuid[7]);
|
||||
recvPacket.ReadByteSeq(playerGuid[1]);
|
||||
recvPacket.ReadByteSeq(playerGuid[4]);
|
||||
recvPacket.ReadByteSeq(playerGuid[3]);
|
||||
recvPacket.ReadByteSeq(playerGuid[0]);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleRemoveMember(this, playerGuid);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
|
||||
@@ -129,36 +145,114 @@ void WorldSession::HandleGuildRosterOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ROSTER");
|
||||
|
||||
recvPacket.rfinish();
|
||||
|
||||
uint64 guildGuid = 0;
|
||||
|
||||
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
|
||||
if (guild->IsMember(GetPlayer()->GetGUID()))
|
||||
guild->HandleRoster(this);
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleRoster(this);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_PROMOTE");
|
||||
|
||||
std::string playerName;
|
||||
recvPacket >> playerName;
|
||||
ObjectGuid targetGuid;
|
||||
|
||||
if (normalizePlayerName(playerName))
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleUpdateMemberRank(this, playerName, false);
|
||||
targetGuid[7] = recvPacket.ReadBit();
|
||||
targetGuid[2] = recvPacket.ReadBit();
|
||||
targetGuid[5] = recvPacket.ReadBit();
|
||||
targetGuid[6] = recvPacket.ReadBit();
|
||||
targetGuid[1] = recvPacket.ReadBit();
|
||||
targetGuid[0] = recvPacket.ReadBit();
|
||||
targetGuid[3] = recvPacket.ReadBit();
|
||||
targetGuid[4] = recvPacket.ReadBit();
|
||||
|
||||
recvPacket.ReadByteSeq(targetGuid[0]);
|
||||
recvPacket.ReadByteSeq(targetGuid[5]);
|
||||
recvPacket.ReadByteSeq(targetGuid[2]);
|
||||
recvPacket.ReadByteSeq(targetGuid[3]);
|
||||
recvPacket.ReadByteSeq(targetGuid[6]);
|
||||
recvPacket.ReadByteSeq(targetGuid[4]);
|
||||
recvPacket.ReadByteSeq(targetGuid[1]);
|
||||
recvPacket.ReadByteSeq(targetGuid[7]);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleUpdateMemberRank(this, targetGuid, false);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_DEMOTE");
|
||||
|
||||
std::string playerName;
|
||||
recvPacket >> playerName;
|
||||
ObjectGuid targetGuid;
|
||||
|
||||
if (normalizePlayerName(playerName))
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleUpdateMemberRank(this, playerName, true);
|
||||
targetGuid[7] = recvPacket.ReadBit();
|
||||
targetGuid[1] = recvPacket.ReadBit();
|
||||
targetGuid[5] = recvPacket.ReadBit();
|
||||
targetGuid[6] = recvPacket.ReadBit();
|
||||
targetGuid[2] = recvPacket.ReadBit();
|
||||
targetGuid[3] = recvPacket.ReadBit();
|
||||
targetGuid[0] = recvPacket.ReadBit();
|
||||
targetGuid[4] = recvPacket.ReadBit();
|
||||
|
||||
recvPacket.ReadByteSeq(targetGuid[1]);
|
||||
recvPacket.ReadByteSeq(targetGuid[2]);
|
||||
recvPacket.ReadByteSeq(targetGuid[7]);
|
||||
recvPacket.ReadByteSeq(targetGuid[5]);
|
||||
recvPacket.ReadByteSeq(targetGuid[6]);
|
||||
recvPacket.ReadByteSeq(targetGuid[0]);
|
||||
recvPacket.ReadByteSeq(targetGuid[4]);
|
||||
recvPacket.ReadByteSeq(targetGuid[3]);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleUpdateMemberRank(this, targetGuid, true);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildAssignRankOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ASSIGN_MEMBER_RANK");
|
||||
|
||||
ObjectGuid targetGuid;
|
||||
ObjectGuid setterGuid;
|
||||
|
||||
uint32 rankId;
|
||||
recvPacket >> rankId;
|
||||
|
||||
targetGuid[1] = recvPacket.ReadBit();
|
||||
targetGuid[7] = recvPacket.ReadBit();
|
||||
setterGuid[4] = recvPacket.ReadBit();
|
||||
setterGuid[2] = recvPacket.ReadBit();
|
||||
targetGuid[4] = recvPacket.ReadBit();
|
||||
targetGuid[5] = recvPacket.ReadBit();
|
||||
targetGuid[6] = recvPacket.ReadBit();
|
||||
setterGuid[1] = recvPacket.ReadBit();
|
||||
setterGuid[7] = recvPacket.ReadBit();
|
||||
targetGuid[2] = recvPacket.ReadBit();
|
||||
targetGuid[3] = recvPacket.ReadBit();
|
||||
targetGuid[0] = recvPacket.ReadBit();
|
||||
setterGuid[6] = recvPacket.ReadBit();
|
||||
setterGuid[3] = recvPacket.ReadBit();
|
||||
setterGuid[0] = recvPacket.ReadBit();
|
||||
setterGuid[5] = recvPacket.ReadBit();
|
||||
|
||||
recvPacket.ReadByteSeq(targetGuid[0]);
|
||||
recvPacket.ReadByteSeq(setterGuid[1]);
|
||||
recvPacket.ReadByteSeq(setterGuid[3]);
|
||||
recvPacket.ReadByteSeq(setterGuid[5]);
|
||||
recvPacket.ReadByteSeq(targetGuid[7]);
|
||||
recvPacket.ReadByteSeq(targetGuid[3]);
|
||||
recvPacket.ReadByteSeq(setterGuid[0]);
|
||||
recvPacket.ReadByteSeq(targetGuid[1]);
|
||||
recvPacket.ReadByteSeq(setterGuid[6]);
|
||||
recvPacket.ReadByteSeq(targetGuid[2]);
|
||||
recvPacket.ReadByteSeq(targetGuid[5]);
|
||||
recvPacket.ReadByteSeq(targetGuid[4]);
|
||||
recvPacket.ReadByteSeq(setterGuid[2]);
|
||||
recvPacket.ReadByteSeq(setterGuid[4]);
|
||||
recvPacket.ReadByteSeq(targetGuid[6]);
|
||||
recvPacket.ReadByteSeq(setterGuid[7]);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleSetMemberRank(this, targetGuid, setterGuid, rankId);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
|
||||
@@ -193,107 +287,104 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_MOTD");
|
||||
|
||||
std::string motd; // Empty by default
|
||||
if (!recvPacket.empty())
|
||||
recvPacket >> motd;
|
||||
uint32 motdLength = recvPacket.ReadBits(11);
|
||||
std::string motd = recvPacket.ReadString(motdLength);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleSetMOTD(this, motd);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
|
||||
void WorldSession::HandleGuildSetNoteOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE");
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_SET_NOTE");
|
||||
|
||||
std::string playerName;
|
||||
recvPacket >> playerName;
|
||||
ObjectGuid playerGuid;
|
||||
|
||||
std::string publicNote;
|
||||
recvPacket >> publicNote;
|
||||
playerGuid[1] = recvPacket.ReadBit();
|
||||
playerGuid[4] = recvPacket.ReadBit();
|
||||
playerGuid[5] = recvPacket.ReadBit();
|
||||
playerGuid[3] = recvPacket.ReadBit();
|
||||
playerGuid[0] = recvPacket.ReadBit();
|
||||
playerGuid[7] = recvPacket.ReadBit();
|
||||
bool type = recvPacket.ReadBit(); // 0 == Officer, 1 == Public
|
||||
playerGuid[6] = recvPacket.ReadBit();
|
||||
uint32 noteLength = recvPacket.ReadBits(8);
|
||||
playerGuid[2] = recvPacket.ReadBit();
|
||||
|
||||
if (normalizePlayerName(playerName))
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleSetMemberNote(this, playerName, publicNote, false);
|
||||
recvPacket.ReadByteSeq(playerGuid[4]);
|
||||
recvPacket.ReadByteSeq(playerGuid[5]);
|
||||
recvPacket.ReadByteSeq(playerGuid[0]);
|
||||
recvPacket.ReadByteSeq(playerGuid[3]);
|
||||
recvPacket.ReadByteSeq(playerGuid[1]);
|
||||
recvPacket.ReadByteSeq(playerGuid[6]);
|
||||
recvPacket.ReadByteSeq(playerGuid[7]);
|
||||
std::string note = recvPacket.ReadString(noteLength);
|
||||
recvPacket.ReadByteSeq(playerGuid[2]);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleSetMemberNote(this, note, playerGuid, type);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
|
||||
void WorldSession::HandleGuildQueryRanksOpcode(WorldPacket& recvData)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE");
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_QUERY_RANKS");
|
||||
|
||||
std::string playerName;
|
||||
recvPacket >> playerName;
|
||||
ObjectGuid guildGuid;
|
||||
|
||||
std::string officerNote;
|
||||
recvPacket >> officerNote;
|
||||
guildGuid[2] = recvData.ReadBit();
|
||||
guildGuid[3] = recvData.ReadBit();
|
||||
guildGuid[0] = recvData.ReadBit();
|
||||
guildGuid[6] = recvData.ReadBit();
|
||||
guildGuid[4] = recvData.ReadBit();
|
||||
guildGuid[7] = recvData.ReadBit();
|
||||
guildGuid[5] = recvData.ReadBit();
|
||||
guildGuid[1] = recvData.ReadBit();
|
||||
|
||||
if (normalizePlayerName(playerName))
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleSetMemberNote(this, playerName, officerNote, true);
|
||||
}
|
||||
recvData.ReadByteSeq(guildGuid[3]);
|
||||
recvData.ReadByteSeq(guildGuid[4]);
|
||||
recvData.ReadByteSeq(guildGuid[5]);
|
||||
recvData.ReadByteSeq(guildGuid[7]);
|
||||
recvData.ReadByteSeq(guildGuid[1]);
|
||||
recvData.ReadByteSeq(guildGuid[0]);
|
||||
recvData.ReadByteSeq(guildGuid[6]);
|
||||
recvData.ReadByteSeq(guildGuid[2]);
|
||||
|
||||
void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_RANK");
|
||||
|
||||
Guild* guild = _GetPlayerGuild(this, true);
|
||||
if (!guild)
|
||||
{
|
||||
recvPacket.rpos(recvPacket.wpos());
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 rankId;
|
||||
recvPacket >> rankId;
|
||||
|
||||
uint32 rights;
|
||||
recvPacket >> rights;
|
||||
|
||||
std::string rankName;
|
||||
recvPacket >> rankName;
|
||||
|
||||
uint32 money;
|
||||
recvPacket >> money;
|
||||
|
||||
GuildBankRightsAndSlotsVec rightsAndSlots(GUILD_BANK_MAX_TABS);
|
||||
for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId)
|
||||
{
|
||||
uint32 bankRights;
|
||||
uint32 slots;
|
||||
|
||||
recvPacket >> bankRights;
|
||||
recvPacket >> slots;
|
||||
|
||||
rightsAndSlots[tabId] = GuildBankRightsAndSlots(uint8(bankRights), slots);
|
||||
}
|
||||
|
||||
guild->HandleSetRankInfo(this, rankId, rankName, rights, money, rightsAndSlots);
|
||||
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
|
||||
if (guild->IsMember(_player->GetGUID()))
|
||||
guild->HandleGuildRanks(this);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ADD_RANK");
|
||||
|
||||
std::string rankName;
|
||||
recvPacket >> rankName;
|
||||
uint32 rankId;
|
||||
recvPacket >> rankId;
|
||||
|
||||
uint32 length = recvPacket.ReadBits(7);
|
||||
std::string rankName = recvPacket.ReadString(length);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleAddNewRank(this, rankName);
|
||||
guild->HandleAddNewRank(this, rankName); //, rankId);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/)
|
||||
void WorldSession::HandleGuildDelRankOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_DEL_RANK");
|
||||
|
||||
uint32 rankId;
|
||||
recvPacket >> rankId;
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleRemoveLowestRank(this);
|
||||
guild->HandleRemoveRank(this, rankId);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_INFO_TEXT");
|
||||
|
||||
std::string info;
|
||||
recvPacket >> info;
|
||||
uint32 length = recvPacket.ReadBits(12);
|
||||
std::string info = recvPacket.ReadString(length);
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this, true))
|
||||
guild->HandleSetInfo(this, info);
|
||||
@@ -347,7 +438,7 @@ void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPacket & /* recv_data */)
|
||||
|
||||
void WorldSession::HandleGuildPermissions(WorldPacket& /* recv_data */)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (MSG_GUILD_PERMISSIONS)");
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_PERMISSIONS)");
|
||||
|
||||
if (Guild* guild = _GetPlayerGuild(this))
|
||||
guild->SendPermissions(this);
|
||||
@@ -369,7 +460,7 @@ void WorldSession::HandleGuildBankerActivate(WorldPacket & recv_data)
|
||||
if (Guild* guild = _GetPlayerGuild(this))
|
||||
guild->SendBankTabsInfo(this);
|
||||
else
|
||||
Guild::SendCommandResult(this, GUILD_UNK1, ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
Guild::SendCommandResult(this, GUILD_VIEW_TAB, ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -459,13 +550,14 @@ void WorldSession::HandleGuildBankSwapItems(WorldPacket & recv_data)
|
||||
|
||||
uint8 destSlotId;
|
||||
recv_data >> destSlotId;
|
||||
recv_data.read_skip<uint32>(); // Always 0
|
||||
|
||||
uint32 destItemEntry;
|
||||
recv_data >> destItemEntry;
|
||||
|
||||
recv_data >> tabId;
|
||||
recv_data >> slotId;
|
||||
recv_data >> itemEntry;
|
||||
recv_data.read_skip<uint8>(); // Always 0
|
||||
|
||||
recv_data >> splitedAmount;
|
||||
|
||||
guild->SwapItems(GetPlayer(), tabId, slotId, destTabId, destSlotId, splitedAmount);
|
||||
@@ -515,7 +607,7 @@ void WorldSession::HandleGuildBankBuyTab(WorldPacket & recv_data)
|
||||
uint8 tabId;
|
||||
recv_data >> tabId;
|
||||
|
||||
if (GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
|
||||
if (!GoGuid || GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
|
||||
if (Guild* guild = _GetPlayerGuild(this))
|
||||
guild->HandleBuyBankTab(this, tabId);
|
||||
}
|
||||
@@ -578,26 +670,71 @@ void WorldSession::HandleSetGuildBankTabText(WorldPacket& recv_data)
|
||||
guild->SetBankTabText(tabId, text);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildQueryXPOpcode(WorldPacket& recv_data)
|
||||
void WorldSession::HandleGuildQueryXPOpcode(WorldPacket& recvData)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUERY_GUILD_XP");
|
||||
/*
|
||||
Bitstream is correct, it just needs a proper guild implementation
|
||||
uint64 playerGuid = 0;
|
||||
|
||||
BitStream mask = recv_data.ReadBitStream(8);
|
||||
ObjectGuid guildGuid;
|
||||
|
||||
ByteBuffer bytes(8, true);
|
||||
guildGuid[2] = recvData.ReadBit();
|
||||
guildGuid[1] = recvData.ReadBit();
|
||||
guildGuid[0] = recvData.ReadBit();
|
||||
guildGuid[5] = recvData.ReadBit();
|
||||
guildGuid[4] = recvData.ReadBit();
|
||||
guildGuid[7] = recvData.ReadBit();
|
||||
guildGuid[6] = recvData.ReadBit();
|
||||
guildGuid[3] = recvData.ReadBit();
|
||||
|
||||
recv_data.ReadXorByte(mask[5], bytes[6]);
|
||||
recv_data.ReadXorByte(mask[1], bytes[2]);
|
||||
recv_data.ReadXorByte(mask[7], bytes[1]);
|
||||
recv_data.ReadXorByte(mask[4], bytes[4]);
|
||||
recv_data.ReadXorByte(mask[0], bytes[0]);
|
||||
recv_data.ReadXorByte(mask[6], bytes[3]);
|
||||
recv_data.ReadXorByte(mask[3], bytes[5]);
|
||||
recv_data.ReadXorByte(mask[2], bytes[7]);
|
||||
recvData.ReadByteSeq(guildGuid[7]);
|
||||
recvData.ReadByteSeq(guildGuid[2]);
|
||||
recvData.ReadByteSeq(guildGuid[3]);
|
||||
recvData.ReadByteSeq(guildGuid[6]);
|
||||
recvData.ReadByteSeq(guildGuid[1]);
|
||||
recvData.ReadByteSeq(guildGuid[5]);
|
||||
recvData.ReadByteSeq(guildGuid[0]);
|
||||
recvData.ReadByteSeq(guildGuid[4]);
|
||||
|
||||
playerGuid = BitConverter::ToUInt64(bytes);
|
||||
*/
|
||||
//if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
|
||||
// guild->Send SMSG_GUILD_XP
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildSetRankPermissionsOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_SET_RANK_PERMISSIONS");
|
||||
|
||||
Guild* guild = _GetPlayerGuild(this, true);
|
||||
if (!guild)
|
||||
{
|
||||
recvPacket.rfinish();
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 unk;
|
||||
uint32 rankId;
|
||||
uint32 oldRights;
|
||||
uint32 newRights;
|
||||
uint32 moneyPerDay;
|
||||
|
||||
recvPacket >> unk;
|
||||
recvPacket >> oldRights;
|
||||
recvPacket >> newRights;
|
||||
|
||||
GuildBankRightsAndSlotsVec rightsAndSlots(GUILD_BANK_MAX_TABS);
|
||||
for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId)
|
||||
{
|
||||
uint32 bankRights;
|
||||
uint32 slots;
|
||||
|
||||
recvPacket >> bankRights;
|
||||
recvPacket >> slots;
|
||||
|
||||
rightsAndSlots[tabId] = GuildBankRightsAndSlots(uint8(bankRights), slots);
|
||||
}
|
||||
|
||||
recvPacket >> moneyPerDay;
|
||||
recvPacket >> rankId;
|
||||
uint32 nameLength = recvPacket.ReadBits(7);
|
||||
std::string rankName = recvPacket.ReadString(nameLength);
|
||||
|
||||
guild->HandleSetRankInfo(this, rankId, rankName, newRights, moneyPerDay, rightsAndSlots);
|
||||
}
|
||||
|
||||
@@ -157,12 +157,12 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (sGuildMgr->GetGuildByName(name))
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, name);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_NAME_EXISTS_S, name);
|
||||
return;
|
||||
}
|
||||
if (sObjectMgr->IsReservedName(name) || !ObjectMgr::IsValidCharterName(name))
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_INVALID, name);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_NAME_INVALID, name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -423,12 +423,12 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (sGuildMgr->GetGuildByName(newName))
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, newName);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_NAME_EXISTS_S, newName);
|
||||
return;
|
||||
}
|
||||
if (sObjectMgr->IsReservedName(newName) || !ObjectMgr::IsValidCharterName(newName))
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_INVALID, newName);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_NAME_INVALID, newName);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -498,7 +498,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
|
||||
if (type != GUILD_CHARTER_TYPE)
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
|
||||
else
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NOT_ALLIED);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_NOT_ALLIED);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -530,12 +530,12 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (_player->GetGuildId())
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_IN_GUILD_S, _player->GetName());
|
||||
Guild::SendCommandResult(this, GUILD_INVITE, ERR_ALREADY_IN_GUILD_S, _player->GetName());
|
||||
return;
|
||||
}
|
||||
if (_player->GetGuildIdInvited())
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName());
|
||||
Guild::SendCommandResult(this, GUILD_INVITE, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -658,7 +658,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
|
||||
if (type != GUILD_CHARTER_TYPE)
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
|
||||
else
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NOT_ALLIED);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_NOT_ALLIED);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -692,13 +692,13 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (player->GetGuildId())
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_IN_GUILD_S, _player->GetName());
|
||||
Guild::SendCommandResult(this, GUILD_INVITE, ERR_ALREADY_IN_GUILD_S, _player->GetName());
|
||||
return;
|
||||
}
|
||||
|
||||
if (player->GetGuildIdInvited())
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName());
|
||||
Guild::SendCommandResult(this, GUILD_INVITE, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -790,7 +790,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
|
||||
// Check if guild name is already taken
|
||||
if (sGuildMgr->GetGuildByName(name))
|
||||
{
|
||||
Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, name);
|
||||
Guild::SendCommandResult(this, GUILD_CREATE, ERR_GUILD_NAME_EXISTS_S, name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -314,41 +314,44 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupChangeSubGroupOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_DECLINE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupDeclineOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_DISBAND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupDisbandOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GROUP_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_RAID_CONVERT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupRaidConvertOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_SET_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSetLeaderOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_SWAP_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSwapSubGroupOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_UNINVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupUninviteOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_UNINVITE_GUID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupUninviteGuidOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ACHIEVEMENT_PROGRESS_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAchievementProgressQuery);
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_ADD_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAddRankOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ADD_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAddRankOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ASSIGN_MEMBER_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAssignRankOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANKER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankerActivate );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_BUY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankBuyTab );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_BUY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankBuyTab );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_DEPOSIT_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankDepositMoney );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_MONEY_WITHDRAWN_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankMoneyWithdrawn );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_QUERY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankQueryTab );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSwapItems );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankUpdateTab );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_QUERY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankQueryTab );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSwapItems );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankUpdateTab );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_BANK_WITHDRAW_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankWithdrawMoney );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_CREATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildCreateOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_DECLINE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDeclineOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_DEL_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDelRankOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_DEMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDemoteOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_DECLINE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDeclineOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_DEL_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDelRankOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_DEMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDemoteOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_DISBAND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDisbandOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildInfoOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_INFO_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildChangeInfoTextOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildInviteOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_INFO_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildChangeInfoTextOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildInviteOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildLeaderOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildLeaveOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_MOTD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildMOTDOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_PROMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPromoteOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_MOTD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildMOTDOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_PERMISSIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPermissions );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_PROMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPromoteOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_QUERY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRankOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_REMOVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRemoveOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_ROSTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRosterOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_SET_OFFICER_NOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetOfficerNoteOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_SET_PUBLIC_NOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetPublicNoteOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_QUERY_RANKS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryRanksOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_REMOVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRemoveOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ROSTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRosterOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_SET_NOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetNoteOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_SET_RANK_PERMISSIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetRankPermissionsOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_HEARTH_AND_RESURRECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleHearthAndResurrect );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_IGNORE_DIMINISHING_RETURNS_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_IGNORE_KNOCKBACK_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@@ -474,7 +477,7 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_PETGODMODE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_PETITION_BUY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionBuyOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_PETITION_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionQueryOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_PETITION_SHOWLIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowListOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_PETITION_SHOWLIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowListOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_PETITION_SHOW_SIGNATURES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowSignOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_PETITION_SIGN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionSignOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_PET_ABANDON, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetAbandon );
|
||||
@@ -500,6 +503,11 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_PROFILEDATA_REQUEST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_PUSHQUESTTOPARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_PVP_QUEUE_STATS_REQUEST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_GUILD_MAX_XP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_GUILD_MEMBERS_FOR_RECIPE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_GUILD_MEMBER_RECIPES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_GUILD_RECIPES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_GUILD_REWARDS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_GUILD_XP, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryXPOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryInspectAchievements );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_OBJECT_POSITION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@@ -711,7 +719,6 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(MSG_GM_SUMMON, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(MSG_GUILD_BANK_LOG_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankLogQuery );
|
||||
//DEFINE_OPCODE_HANDLER(MSG_GUILD_EVENT_LOG_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildEventLogQueryOpcode );
|
||||
DEFINE_OPCODE_HANDLER(MSG_GUILD_PERMISSIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPermissions );
|
||||
//DEFINE_OPCODE_HANDLER(MSG_INSPECT_ARENA_TEAMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectArenaTeamsOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(MSG_INSPECT_HONOR_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectHonorStatsOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(MSG_LIST_STABLED_PETS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleListStabledPetsOpcode );
|
||||
@@ -932,7 +939,7 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DAMAGE_CALC_LOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DANCE_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DBLOOKUP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DB_REPLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_DB_REPLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DEATH_RELEASE_LOC, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DEBUGAURAPROC, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DEBUG_AISTATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
@@ -1016,16 +1023,18 @@ void InitOpcodes()
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_EARNED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_BANK_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_BANK_MONEY_WITHDRAWN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_DELETED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_DECLINE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_DECLINE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_EVENT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_INVITE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_INVITE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_RANK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_RANKS_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_HIGHEST_THREAT_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_HOTFIX_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
|
||||
@@ -264,18 +264,17 @@ enum Opcodes
|
||||
CMSG_GUILD_EVENT_LOG_QUERY = 0x1220,
|
||||
CMSG_GUILD_INFO = 0x0000,
|
||||
CMSG_GUILD_INFO_TEXT = 0x3227,
|
||||
CMSG_GUILD_INVITE = 0x0000,
|
||||
CMSG_GUILD_INVITE_BY_NAME = 0x24B0,
|
||||
CMSG_GUILD_INVITE = 0x24B0,
|
||||
CMSG_GUILD_LEADER = 0x0000,
|
||||
CMSG_GUILD_LEAVE = 0x1021,
|
||||
CMSG_GUILD_MEMBER_SEND_SOR_REQUEST = 0x3225,
|
||||
CMSG_GUILD_MOTD = 0x1035,
|
||||
CMSG_GUILD_NEWS_UPDATE_STICKY = 0x3223,
|
||||
CMSG_GUILD_PERMISSIONS = 0x3022,
|
||||
CMSG_GUILD_PROMOTE = 0x1030,
|
||||
CMSG_GUILD_QUERY = 0x4426,
|
||||
CMSG_GUILD_QUERY_NEWS = 0x3020,
|
||||
CMSG_GUILD_RANK = 0x0000,
|
||||
CMSG_GUILD_RANKS = 0x1026,
|
||||
CMSG_GUILD_QUERY_RANKS = 0x1026,
|
||||
CMSG_GUILD_REMOVE = 0x1231,
|
||||
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x1034,
|
||||
CMSG_GUILD_REQUEST_CHALLENGE_UPDATE = 0x1224,
|
||||
@@ -606,7 +605,6 @@ enum Opcodes
|
||||
MSG_GM_SUMMON = 0x0000,
|
||||
MSG_GUILD_BANK_LOG_QUERY = 0x0000,
|
||||
MSG_GUILD_EVENT_LOG_QUERY = 0x0000,
|
||||
MSG_GUILD_PERMISSIONS = 0x3022,
|
||||
MSG_INSPECT_ARENA_TEAMS = 0x2704,
|
||||
MSG_LIST_STABLED_PETS = 0x0834,
|
||||
MSG_MINIMAP_PING = 0x6635,
|
||||
|
||||
@@ -574,13 +574,14 @@ class WorldSession
|
||||
void HandleGuildRosterOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildPromoteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildDemoteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildAssignRankOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildLeaveOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildDisbandOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildLeaderOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildMOTDOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildRankOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildSetNoteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildQueryRanksOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildSetRankPermissionsOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildAddRankOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildDelRankOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket);
|
||||
|
||||
@@ -161,7 +161,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
// 0: uint32, 1: uint8, 3: string, 4: uint32
|
||||
PREPARE_STATEMENT(CHAR_INS_GUILD_RANK, "INSERT INTO guild_rank (guildid, rid, rname, rights) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC)
|
||||
PREPARE_STATEMENT(CHAR_DEL_GUILD_RANKS, "DELETE FROM guild_rank WHERE guildid = ?", CONNECTION_ASYNC) // 0: uint32
|
||||
PREPARE_STATEMENT(CHAR_DEL_GUILD_LOWEST_RANK, "DELETE FROM guild_rank WHERE guildid = ? AND rid >= ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8
|
||||
PREPARE_STATEMENT(CHAR_DEL_GUILD_RANK, "DELETE FROM guild_rank WHERE guildid = ? AND rid = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8
|
||||
PREPARE_STATEMENT(CHAR_INS_GUILD_BANK_TAB, "INSERT INTO guild_bank_tab (guildid, TabId) VALUES (?, ?)", CONNECTION_ASYNC) // 0: uint32, 1: uint8
|
||||
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_TAB, "DELETE FROM guild_bank_tab WHERE guildid = ? AND TabId = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8
|
||||
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_TABS, "DELETE FROM guild_bank_tab WHERE guildid = ?", CONNECTION_ASYNC) // 0: uint32
|
||||
|
||||
@@ -166,7 +166,7 @@ enum CharacterDatabaseStatements
|
||||
CHAR_DEL_GUILD_MEMBERS,
|
||||
CHAR_INS_GUILD_RANK,
|
||||
CHAR_DEL_GUILD_RANKS,
|
||||
CHAR_DEL_GUILD_LOWEST_RANK,
|
||||
CHAR_DEL_GUILD_RANK,
|
||||
CHAR_INS_GUILD_BANK_TAB,
|
||||
CHAR_DEL_GUILD_BANK_TAB,
|
||||
CHAR_DEL_GUILD_BANK_TABS,
|
||||
|
||||
Reference in New Issue
Block a user