Some fixes to guild/arenateam events. Big thx to TOM_RUS.
--HG-- branch : trunk
This commit is contained in:
+33
-3
@@ -312,9 +312,8 @@ void ArenaTeam::Disband(WorldSession *session)
|
||||
// event
|
||||
if (session)
|
||||
{
|
||||
WorldPacket data;
|
||||
session->BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_DISBANDED_S, 2, session->GetPlayerName(), GetName(), "");
|
||||
BroadcastPacket(&data);
|
||||
// probably only 1 string required...
|
||||
BroadcastEvent(ERR_ARENA_TEAM_DISBANDED_S, 0, 2, session->GetPlayerName(), GetName(), "");
|
||||
}
|
||||
|
||||
while (!m_members.empty())
|
||||
@@ -488,6 +487,37 @@ void ArenaTeam::BroadcastPacket(WorldPacket *packet)
|
||||
}
|
||||
}
|
||||
|
||||
void ArenaTeam::BroadcastEvent(ArenaTeamEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3)
|
||||
{
|
||||
WorldPacket data(SMSG_ARENA_TEAM_EVENT, 1+1+1);
|
||||
data << uint8(event);
|
||||
data << uint8(strCount);
|
||||
switch (strCount)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
data << str1;
|
||||
break;
|
||||
case 2:
|
||||
data << str1 << str2;
|
||||
break;
|
||||
case 3:
|
||||
data << str1 << str2 << str3;
|
||||
break;
|
||||
default:
|
||||
sLog.outError("Unhandled strCount %u in ArenaTeam::BroadcastEvent", strCount);
|
||||
return;
|
||||
}
|
||||
|
||||
if (guid)
|
||||
data << uint64(guid);
|
||||
|
||||
BroadcastPacket(&data);
|
||||
|
||||
sLog.outDebug("WORLD: Sent SMSG_ARENA_TEAM_EVENT");
|
||||
}
|
||||
|
||||
uint8 ArenaTeam::GetSlotByType(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
|
||||
@@ -25,14 +25,12 @@ enum ArenaTeamCommandTypes
|
||||
{
|
||||
ERR_ARENA_TEAM_CREATE_S = 0x00,
|
||||
ERR_ARENA_TEAM_INVITE_SS = 0x01,
|
||||
//ERR_ARENA_TEAM_QUIT_S = 0x02,
|
||||
ERR_ARENA_TEAM_QUIT_S = 0x03,
|
||||
ERR_ARENA_TEAM_FOUNDER_S = 0x0C // need check, probably wrong...
|
||||
ERR_ARENA_TEAM_FOUNDER_S = 0x0E
|
||||
};
|
||||
|
||||
enum ArenaTeamCommandErrors
|
||||
{
|
||||
//ARENA_TEAM_PLAYER_NO_MORE_IN_ARENA_TEAM = 0x00,
|
||||
ERR_ARENA_TEAM_INTERNAL = 0x01,
|
||||
ERR_ALREADY_IN_ARENA_TEAM = 0x02,
|
||||
ERR_ALREADY_IN_ARENA_TEAM_S = 0x03,
|
||||
@@ -46,8 +44,12 @@ enum ArenaTeamCommandErrors
|
||||
ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM_SS = 0x0A,
|
||||
ERR_ARENA_TEAM_PLAYER_NOT_FOUND_S = 0x0B,
|
||||
ERR_ARENA_TEAM_NOT_ALLIED = 0x0C,
|
||||
ERR_ARENA_TEAM_PLAYER_TO_LOW = 0x15,
|
||||
ERR_ARENA_TEAM_FULL = 0x16
|
||||
ERR_ARENA_TEAM_IGNORING_YOU_S = 0x13,
|
||||
ERR_ARENA_TEAM_TARGET_TOO_LOW_S = 0x15,
|
||||
ERR_ARENA_TEAM_TARGET_TOO_HIGH_S = 0x16,
|
||||
ERR_ARENA_TEAM_TOO_MANY_MEMBERS_S = 0x17,
|
||||
ERR_ARENA_TEAM_NOT_FOUND = 0x1B,
|
||||
ERR_ARENA_TEAMS_LOCKED = 0x1E
|
||||
};
|
||||
|
||||
enum ArenaTeamEvents
|
||||
@@ -180,6 +182,7 @@ class ArenaTeam
|
||||
void SaveToDB();
|
||||
|
||||
void BroadcastPacket(WorldPacket *packet);
|
||||
void BroadcastEvent(ArenaTeamEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3);
|
||||
|
||||
void Roster(WorldSession *session);
|
||||
void Query(WorldSession *session);
|
||||
|
||||
@@ -102,7 +102,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recv_data)
|
||||
|
||||
if (player->getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", player->GetName(), ERR_ARENA_TEAM_PLAYER_TO_LOW);
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", player->GetName(), ERR_ARENA_TEAM_TARGET_TOO_LOW_S);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recv_data)
|
||||
|
||||
if (arenateam->GetMembersSize() >= arenateam->GetType() * 2)
|
||||
{
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S,arenateam->GetName(),"",ERR_ARENA_TEAM_FULL);
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, arenateam->GetName(), "", ERR_ARENA_TEAM_TOO_MANY_MEMBERS_S);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -163,26 +163,27 @@ void WorldSession::HandleArenaTeamAcceptOpcode(WorldPacket & /*recv_data*/)
|
||||
|
||||
if (_player->GetArenaTeamId(at->GetSlot()))
|
||||
{
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S,"","",ERR_ALREADY_IN_ARENA_TEAM); // already in arena team that size
|
||||
// already in arena team that size
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ALREADY_IN_ARENA_TEAM);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && _player->GetTeam() != objmgr.GetPlayerTeamByGUID(at->GetCaptain()))
|
||||
{
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S,"","",ERR_ARENA_TEAM_NOT_ALLIED);// not let enemies sign petition
|
||||
// not let enemies sign petition
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!at->AddMember(_player->GetGUID()))
|
||||
{
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S,"","",ERR_ARENA_TEAM_INTERNAL);// arena team not found
|
||||
// arena team not found
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S,"","",ERR_ARENA_TEAM_INTERNAL);
|
||||
return;
|
||||
}
|
||||
|
||||
// event
|
||||
WorldPacket data;
|
||||
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_JOIN_SS, 2, _player->GetName(), at->GetName(), "");
|
||||
at->BroadcastPacket(&data);
|
||||
at->BroadcastEvent(ERR_ARENA_TEAM_JOIN_SS, _player->GetGUID(), 2, _player->GetName(), at->GetName(), "");
|
||||
}
|
||||
|
||||
void WorldSession::HandleArenaTeamDeclineOpcode(WorldPacket & /*recv_data*/)
|
||||
@@ -221,9 +222,7 @@ void WorldSession::HandleArenaTeamLeaveOpcode(WorldPacket & recv_data)
|
||||
at->DelMember(_player->GetGUID());
|
||||
|
||||
// event
|
||||
WorldPacket data;
|
||||
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_LEAVE_SS, 2, _player->GetName(), at->GetName(), "");
|
||||
at->BroadcastPacket(&data);
|
||||
at->BroadcastEvent(ERR_ARENA_TEAM_LEAVE_SS, _player->GetGUID(), 2, _player->GetName(), at->GetName(), "");
|
||||
|
||||
// send you are no longer member of team
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_QUIT_S, at->GetName(), "", 0);
|
||||
@@ -288,9 +287,7 @@ void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket & recv_data)
|
||||
at->DelMember(member->guid);
|
||||
|
||||
// event
|
||||
WorldPacket data;
|
||||
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_REMOVE_SSS, 3, name, at->GetName(), _player->GetName());
|
||||
at->BroadcastPacket(&data);
|
||||
at->BroadcastEvent(ERR_ARENA_TEAM_REMOVE_SSS, 0, 3, name, at->GetName(), _player->GetName());
|
||||
}
|
||||
|
||||
void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket & recv_data)
|
||||
@@ -329,9 +326,7 @@ void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket & recv_data)
|
||||
at->SetCaptain(member->guid);
|
||||
|
||||
// event
|
||||
WorldPacket data;
|
||||
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_LEADER_CHANGED_SSS, 3, _player->GetName(), name, at->GetName());
|
||||
at->BroadcastPacket(&data);
|
||||
at->BroadcastEvent(ERR_ARENA_TEAM_LEADER_CHANGED_SSS, 0, 3, _player->GetName(), name, at->GetName());
|
||||
}
|
||||
|
||||
void WorldSession::SendArenaTeamCommandResult(uint32 team_action, const std::string& team, const std::string& player, uint32 error_id)
|
||||
@@ -344,31 +339,6 @@ void WorldSession::SendArenaTeamCommandResult(uint32 team_action, const std::str
|
||||
SendPacket(&data);
|
||||
}
|
||||
|
||||
void WorldSession::BuildArenaTeamEventPacket(WorldPacket *data, uint8 eventid, uint8 str_count, const std::string& str1, const std::string& str2, const std::string& str3)
|
||||
{
|
||||
data->Initialize(SMSG_ARENA_TEAM_EVENT, 1+1+1);
|
||||
*data << eventid;
|
||||
*data << str_count;
|
||||
switch(str_count)
|
||||
{
|
||||
case 1:
|
||||
*data << str1;
|
||||
break;
|
||||
case 2:
|
||||
*data << str1;
|
||||
*data << str2;
|
||||
break;
|
||||
case 3:
|
||||
*data << str1;
|
||||
*data << str2;
|
||||
*data << str3;
|
||||
break;
|
||||
default:
|
||||
sLog.outError("Unhandled str_count %u in SendArenaTeamEvent()", str_count);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void WorldSession::SendNotInArenaTeamPacket(uint8 type)
|
||||
{
|
||||
WorldPacket data(SMSG_ARENA_ERROR, 4+1); // 886 - You are not in a %uv%u arena team
|
||||
|
||||
@@ -663,7 +663,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
|
||||
Guild* guild = objmgr.GetGuildById(pCurrChar->GetGuildId());
|
||||
if (guild)
|
||||
{
|
||||
data.Initialize(SMSG_GUILD_EVENT, (2+guild->GetMOTD().size()+1));
|
||||
data.Initialize(SMSG_GUILD_EVENT, (1+1+guild->GetMOTD().size()+1));
|
||||
data << uint8(GE_MOTD);
|
||||
data << uint8(1);
|
||||
data << guild->GetMOTD();
|
||||
@@ -672,13 +672,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
|
||||
|
||||
guild->DisplayGuildBankTabsInfo(this);
|
||||
|
||||
data.Initialize(SMSG_GUILD_EVENT, (5+10)); // we guess size
|
||||
data<<uint8(GE_SIGNED_ON);
|
||||
data<<uint8(1);
|
||||
data<< pCurrChar->GetName();
|
||||
data<< pCurrChar->GetGUID();
|
||||
guild->BroadcastPacket(&data);
|
||||
DEBUG_LOG("WORLD: Sent guild-signed-on (SMSG_GUILD_EVENT)");
|
||||
guild->BroadcastEvent(GE_SIGNED_ON, pCurrChar->GetGUID(), 1, pCurrChar->GetName(), "", "");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+36
-17
@@ -475,21 +475,10 @@ void Guild::DelMember(uint64 guid, bool isDisbanding)
|
||||
// when leader non-exist (at guild load with deleted leader only) not send broadcasts
|
||||
if (oldLeader)
|
||||
{
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (1+1+(oldLeader->Name).size()+1+(best->Name).size()+1));
|
||||
data << (uint8)GE_LEADER_CHANGED;
|
||||
data << (uint8)2;
|
||||
data << oldLeader->Name;
|
||||
data << best->Name;
|
||||
BroadcastPacket(&data);
|
||||
BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->Name, best->Name, "");
|
||||
|
||||
data.Initialize(SMSG_GUILD_EVENT, (1+1+(oldLeader->Name).size()+1));
|
||||
data << (uint8)GE_LEFT;
|
||||
data << (uint8)1;
|
||||
data << oldLeader->Name;
|
||||
BroadcastPacket(&data);
|
||||
BroadcastEvent(GE_LEFT, guid, 1, oldLeader->Name, "", "");
|
||||
}
|
||||
|
||||
sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
|
||||
}
|
||||
|
||||
members.erase(GUID_LOPART(guid));
|
||||
@@ -689,9 +678,7 @@ int32 Guild::GetRank(uint32 LowGuid)
|
||||
|
||||
void Guild::Disband()
|
||||
{
|
||||
WorldPacket data(SMSG_GUILD_EVENT, 1);
|
||||
data << (uint8)GE_DISBANDED;
|
||||
BroadcastPacket(&data);
|
||||
BroadcastEvent(GE_DISBANDED, 0, 0, "", "", "");
|
||||
|
||||
while (!members.empty())
|
||||
{
|
||||
@@ -772,7 +759,7 @@ void Guild::Query(WorldSession *session)
|
||||
{
|
||||
WorldPacket data(SMSG_GUILD_QUERY_RESPONSE, (8*32+200));// we can only guess size
|
||||
|
||||
data << m_Id;
|
||||
data << uint32(m_Id);
|
||||
data << m_Name;
|
||||
|
||||
for (size_t i = 0 ; i < GUILD_RANKS_MAX_COUNT; ++i) // show always 10 ranks
|
||||
@@ -2294,6 +2281,38 @@ void Guild::MoveFromCharToBank(Player * pl, uint8 PlayerBag, uint8 PlayerSlot, u
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3)
|
||||
{
|
||||
WorldPacket data(SMSG_GUILD_EVENT, 1+1+(guid ? 8 : 0));
|
||||
data << uint8(event);
|
||||
data << uint8(strCount);
|
||||
|
||||
switch(strCount)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
data << str1;
|
||||
break;
|
||||
case 2:
|
||||
data << str1 << str2;
|
||||
break;
|
||||
case 3:
|
||||
data << str1 << str2 << str3;
|
||||
break;
|
||||
default:
|
||||
sLog.outError("Guild::BroadcastEvent: incorrect strings count %u!", strCount);
|
||||
break;
|
||||
}
|
||||
|
||||
if(guid)
|
||||
data << uint64(guid);
|
||||
|
||||
BroadcastPacket(&data);
|
||||
|
||||
sLog.outDebug("WORLD: Sent SMSG_GUILD_EVENT");
|
||||
}
|
||||
|
||||
bool GuildItemPosCount::isContainedIn(GuildItemPosCountVec const &vec) const
|
||||
{
|
||||
for (GuildItemPosCountVec::const_iterator itr = vec.begin(); itr != vec.end(); ++itr)
|
||||
|
||||
+32
-32
@@ -72,37 +72,36 @@ enum Typecommand
|
||||
GUILD_INVITE_S = 0x01,
|
||||
GUILD_QUIT_S = 0x03,
|
||||
GUILD_FOUNDER_S = 0x0E,
|
||||
GUILD_UNK1 = 0x10,
|
||||
GUILD_BANK_S = 0x15,
|
||||
GUILD_UNK3 = 0x16
|
||||
GUILD_UNK1 = 0x13,
|
||||
GUILD_UNK2 = 0x14
|
||||
};
|
||||
|
||||
enum CommandErrors
|
||||
{
|
||||
GUILD_PLAYER_NO_MORE_IN_GUILD = 0x00,
|
||||
GUILD_INTERNAL = 0x01,
|
||||
GUILD_ALREADY_IN_GUILD = 0x02,
|
||||
ALREADY_IN_GUILD = 0x03,
|
||||
INVITED_TO_GUILD = 0x04,
|
||||
ALREADY_INVITED_TO_GUILD = 0x05,
|
||||
GUILD_NAME_INVALID = 0x06,
|
||||
GUILD_NAME_EXISTS = 0x07,
|
||||
GUILD_LEADER_LEAVE = 0x08,
|
||||
GUILD_PERMISSIONS = 0x08,
|
||||
GUILD_PLAYER_NOT_IN_GUILD = 0x09,
|
||||
GUILD_PLAYER_NOT_IN_GUILD_S = 0x0A,
|
||||
GUILD_PLAYER_NOT_FOUND = 0x0B,
|
||||
GUILD_NOT_ALLIED = 0x0C,
|
||||
GUILD_RANK_TOO_HIGH_S = 0x0D,
|
||||
GUILD_ALREADY_LOWEST_RANK_S = 0x0E,
|
||||
GUILD_TEMP_ERROR = 0x11,
|
||||
GUILD_RANK_IN_USE = 0x12,
|
||||
GUILD_IGNORE = 0x13,
|
||||
GUILD_ERR_UNK1 = 0x17,
|
||||
GUILD_WITHDRAW_TOO_MUCH = 0x18,
|
||||
GUILD_BANK_NO_MONEY = 0x19,
|
||||
GUILD_BANK_TAB_IS_FULL = 0x1B,
|
||||
GUILD_BANK_ITEM_NOT_FOUND = 0x1C
|
||||
ERR_PLAYER_NO_MORE_IN_GUILD = 0x00,
|
||||
ERR_GUILD_INTERNAL = 0x01,
|
||||
ERR_ALREADY_IN_GUILD = 0x02,
|
||||
ERR_ALREADY_IN_GUILD_S = 0x03,
|
||||
ERR_INVITED_TO_GUILD = 0x04,
|
||||
ERR_ALREADY_INVITED_TO_GUILD_S = 0x05,
|
||||
ERR_GUILD_NAME_INVALID = 0x06,
|
||||
ERR_GUILD_NAME_EXISTS_S = 0x07,
|
||||
ERR_GUILD_LEADER_LEAVE = 0x08,
|
||||
ERR_GUILD_PERMISSIONS = 0x08,
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD = 0x09,
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD_S = 0x0A,
|
||||
ERR_GUILD_PLAYER_NOT_FOUND_S = 0x0B,
|
||||
ERR_GUILD_NOT_ALLIED = 0x0C,
|
||||
ERR_GUILD_RANK_TOO_HIGH_S = 0x0D,
|
||||
ERR_GUILD_RANK_TOO_LOW_S = 0x0E,
|
||||
ERR_GUILD_RANKS_LOCKED = 0x11,
|
||||
ERR_GUILD_RANK_IN_USE = 0x12,
|
||||
ERR_GUILD_IGNORING_YOU_S = 0x13,
|
||||
ERR_GUILD_UNK1 = 0x14,
|
||||
ERR_GUILD_WITHDRAW_LIMIT = 0x19,
|
||||
ERR_GUILD_NOT_ENOUGH_MONEY = 0x1A,
|
||||
ERR_GUILD_BANK_FULL = 0x1C,
|
||||
ERR_GUILD_ITEM_NOT_FOUND = 0x1D
|
||||
};
|
||||
|
||||
enum GuildEvents
|
||||
@@ -117,16 +116,16 @@ enum GuildEvents
|
||||
GE_LEADER_CHANGED = 0x07,
|
||||
GE_DISBANDED = 0x08,
|
||||
GE_TABARDCHANGE = 0x09,
|
||||
GE_UNK1 = 0x0A, // string, string EVENT_GUILD_ROSTER_UPDATE
|
||||
GE_UNK1 = 0x0A, // string, string EVENT_GUILD_ROSTER_UPDATE tab content change?
|
||||
GE_UNK2 = 0x0B, // EVENT_GUILD_ROSTER_UPDATE
|
||||
GE_SIGNED_ON = 0x0C, // ERR_FRIEND_ONLINE_SS
|
||||
GE_SIGNED_OFF = 0x0D, // ERR_FRIEND_OFFLINE_S
|
||||
GE_UNK3 = 0x0E, // EVENT_GUILDBANKBAGSLOTS_CHANGED
|
||||
GE_GUILDBANKBAGSLOTS_CHANGED = 0x0E, // EVENT_GUILDBANKBAGSLOTS_CHANGED
|
||||
GE_BANKTAB_PURCHASED = 0x0F, // EVENT_GUILDBANK_UPDATE_TABS
|
||||
GE_UNK5 = 0x10, // EVENT_GUILDBANK_UPDATE_TABS
|
||||
GE_UNK6 = 0x11, // EVENT_GUILDBANK_UPDATE_MONEY, string 0000000000002710 is 1 gold
|
||||
GE_UNK7 = 0x12, // MSG_GUILD_BANK_MONEY_WITHDRAWN
|
||||
GE_UNK8 = 0x13 // EVENT_GUILDBANK_TEXT_CHANGED
|
||||
GE_GUILDBANK_UPDATE_MONEY = 0x11, // EVENT_GUILDBANK_UPDATE_MONEY, string 0000000000002710 is 1 gold
|
||||
GE_GUILD_BANK_MONEY_WITHDRAWN = 0x12, // MSG_GUILD_BANK_MONEY_WITHDRAWN
|
||||
GE_GUILDBANK_TEXT_CHANGED = 0x13 // EVENT_GUILDBANK_TEXT_CHANGED
|
||||
};
|
||||
|
||||
enum PetitionTurns
|
||||
@@ -336,6 +335,7 @@ class Guild
|
||||
void BroadcastToOfficers(WorldSession *session, const std::string& msg, uint32 language = LANG_UNIVERSAL);
|
||||
void BroadcastPacketToRank(WorldPacket *packet, uint32 rankId);
|
||||
void BroadcastPacket(WorldPacket *packet);
|
||||
void BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3);
|
||||
|
||||
template<class Do>
|
||||
void BroadcastWorker(Do& _do, Player* except = NULL)
|
||||
|
||||
+52
-92
@@ -42,7 +42,7 @@ void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
|
||||
return;
|
||||
}
|
||||
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
|
||||
@@ -86,7 +86,7 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
|
||||
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -97,27 +97,27 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
|
||||
// not let enemies sign guild charter
|
||||
if (!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && player->GetTeam() != GetPlayer()->GetTeam())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, Invitedname, GUILD_NOT_ALLIED);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, Invitedname, ERR_GUILD_NOT_ALLIED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (player->GetGuildId())
|
||||
{
|
||||
plname = player->GetName();
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plname, ALREADY_IN_GUILD);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plname, ERR_ALREADY_IN_GUILD_S);
|
||||
return;
|
||||
}
|
||||
|
||||
if (player->GetGuildIdInvited())
|
||||
{
|
||||
plname = player->GetName();
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plname, ALREADY_INVITED_TO_GUILD);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plname, ERR_ALREADY_INVITED_TO_GUILD_S);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_INVITE))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -148,13 +148,13 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||
Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -162,20 +162,20 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||
MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
|
||||
if (!slot)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
return;
|
||||
}
|
||||
|
||||
if (slot->RankId == GR_GUILDMASTER)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_QUIT_S, "", GUILD_LEADER_LEAVE);
|
||||
SendGuildCommandResult(GUILD_QUIT_S, "", ERR_GUILD_LEADER_LEAVE);
|
||||
return;
|
||||
}
|
||||
|
||||
//do not allow to kick player with same or higher rights
|
||||
if (GetPlayer()->GetRank() >= slot->RankId)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_QUIT_S, plName, GUILD_RANK_TOO_HIGH_S);
|
||||
SendGuildCommandResult(GUILD_QUIT_S, plName, ERR_GUILD_RANK_TOO_HIGH_S);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -183,12 +183,7 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||
// Put record into guildlog
|
||||
guild->LogGuildEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), 0);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (2+20)); // guess size
|
||||
data << (uint8)GE_REMOVED;
|
||||
data << (uint8)2; // strings count
|
||||
data << plName;
|
||||
data << GetPlayer()->GetName();
|
||||
guild->BroadcastPacket(&data);
|
||||
guild->BroadcastEvent(GE_REMOVED, 0, 2, plName, _player->GetName(), "");
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
|
||||
@@ -211,11 +206,7 @@ void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
|
||||
// Put record into guildlog
|
||||
guild->LogGuildEvent(GUILD_EVENT_LOG_JOIN_GUILD, GetPlayer()->GetGUIDLow(), 0, 0);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (2+10)); // guess size
|
||||
data << (uint8)GE_JOINED;
|
||||
data << (uint8)1; // strings count
|
||||
data << player->GetName();
|
||||
guild->BroadcastPacket(&data);
|
||||
guild->BroadcastEvent(GE_JOINED, player->GetGUID(), 1, player->GetName(), "", "");
|
||||
|
||||
sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
|
||||
}
|
||||
@@ -236,7 +227,7 @@ void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/)
|
||||
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -270,13 +261,13 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
|
||||
Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -285,13 +276,13 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
|
||||
|
||||
if (!slot)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
return;
|
||||
}
|
||||
|
||||
if (plGuid == GetPlayer()->GetGUID())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_NAME_INVALID);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -300,19 +291,13 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
|
||||
//GetPlayer()->GetRank() + 1 is highest rank that current player can promote to
|
||||
if (GetPlayer()->GetRank() + 1 >= slot->RankId)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_RANK_TOO_HIGH_S);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_RANK_TOO_HIGH_S);
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 newRankId = slot->RankId - 1; //when promoting player, rank is decreased
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (2+30)); // guess size
|
||||
data << (uint8)GE_PROMOTION;
|
||||
data << (uint8)3; // strings count
|
||||
data << GetPlayer()->GetName();
|
||||
data << plName;
|
||||
data << guild->GetRankName(newRankId);
|
||||
guild->BroadcastPacket(&data);
|
||||
guild->BroadcastEvent(GE_PROMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(newRankId));
|
||||
|
||||
guild->ChangeRank(plGuid, newRankId);
|
||||
// Put record into guildlog
|
||||
@@ -333,13 +318,13 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
|
||||
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_DEMOTE))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -348,27 +333,27 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
|
||||
|
||||
if (!slot)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
return;
|
||||
}
|
||||
|
||||
if (plGuid == GetPlayer()->GetGUID())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_NAME_INVALID);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID);
|
||||
return;
|
||||
}
|
||||
|
||||
//do not allow to demote same or higher rank
|
||||
if (GetPlayer()->GetRank() >= slot->RankId)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_RANK_TOO_HIGH_S);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_RANK_TOO_HIGH_S);
|
||||
return;
|
||||
}
|
||||
|
||||
//do not allow to demote lowest rank
|
||||
if (slot->RankId >= guild->GetLowestRank())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_ALREADY_LOWEST_RANK_S);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_RANK_TOO_LOW_S);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -378,13 +363,7 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
|
||||
// Put record into guildlog
|
||||
guild->LogGuildEvent(GUILD_EVENT_LOG_DEMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (2+30)); // guess size
|
||||
data << (uint8)GE_DEMOTION;
|
||||
data << (uint8)3; // strings count
|
||||
data << GetPlayer()->GetName();
|
||||
data << plName;
|
||||
data << guild->GetRankName(slot->RankId);
|
||||
guild->BroadcastPacket(&data);
|
||||
guild->BroadcastEvent(GE_DEMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(slot->RankId));
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
|
||||
@@ -394,13 +373,13 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
|
||||
Guild *guild = objmgr.GetGuildById(_player->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_player->GetGUID() == guild->GetLeader() && guild->GetMemberSize() > 1)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_QUIT_S, "", GUILD_LEADER_LEAVE);
|
||||
SendGuildCommandResult(GUILD_QUIT_S, "", ERR_GUILD_LEADER_LEAVE);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -414,15 +393,9 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
|
||||
// Put record into guildlog
|
||||
guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetGUIDLow(), 0, 0);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (2+10)); // guess size
|
||||
data << (uint8)GE_LEFT;
|
||||
data << (uint8)1; // strings count
|
||||
data << _player->GetName();
|
||||
guild->BroadcastPacket(&data);
|
||||
guild->BroadcastEvent(GE_LEFT, _player->GetGUID(), 1, _player->GetName(), "", "");
|
||||
|
||||
sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
|
||||
|
||||
SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), GUILD_PLAYER_NO_MORE_IN_GUILD);
|
||||
SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), ERR_PLAYER_NO_MORE_IN_GUILD);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
|
||||
@@ -432,13 +405,13 @@ void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
|
||||
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetPlayer()->GetGUID() != guild->GetLeader())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -463,13 +436,13 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
|
||||
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (oldLeader->GetGUID() != guild->GetLeader())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -485,14 +458,7 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
|
||||
guild->SetLeader(newLeaderGUID);
|
||||
guild->ChangeRank(oldLeader->GetGUID(), GR_OFFICER);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (2+20)); // guess size
|
||||
data << (uint8)GE_LEADER_CHANGED;
|
||||
data << (uint8)2; // strings count
|
||||
data << oldLeader->GetName();
|
||||
data << name.c_str();
|
||||
guild->BroadcastPacket(&data);
|
||||
|
||||
//sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
|
||||
guild->BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->GetName(), name, "");
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
|
||||
@@ -509,25 +475,19 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
|
||||
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_SETMOTD))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
guild->SetMOTD(MOTD);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (2+MOTD.size()+1));
|
||||
data << (uint8)GE_MOTD;
|
||||
data << (uint8)1; // strings count
|
||||
data << MOTD;
|
||||
guild->BroadcastPacket(&data);
|
||||
|
||||
sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
|
||||
guild->BroadcastEvent(GE_MOTD, 0, 1, MOTD, "", "");
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
|
||||
@@ -543,13 +503,13 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
|
||||
Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EPNOTE))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -581,13 +541,13 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
|
||||
Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EOFFNOTE))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -596,7 +556,7 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
|
||||
|
||||
if (!slot)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -618,13 +578,13 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
|
||||
if (!guild)
|
||||
{
|
||||
recvPacket.rpos(recvPacket.wpos()); // set to end to avoid warnings spam
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
else if (GetPlayer()->GetGUID() != guild->GetLeader())
|
||||
{
|
||||
recvPacket.rpos(recvPacket.wpos()); // set to end to avoid warnings spam
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -667,13 +627,13 @@ void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
|
||||
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetPlayer()->GetGUID() != guild->GetLeader())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -693,12 +653,12 @@ void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/)
|
||||
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
else if (GetPlayer()->GetGUID() != guild->GetLeader())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -730,7 +690,7 @@ void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
|
||||
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (!guild)
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -866,7 +826,7 @@ void WorldSession::HandleGuildBankerActivate(WorldPacket & recv_data)
|
||||
}
|
||||
}
|
||||
|
||||
SendGuildCommandResult(GUILD_BANK_S, "", GUILD_PLAYER_NOT_IN_GUILD);
|
||||
SendGuildCommandResult(GUILD_UNK1, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
|
||||
}
|
||||
|
||||
/* Called when opening guild bank tab only (first one) */
|
||||
|
||||
@@ -149,12 +149,12 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (objmgr.GetGuildByName(name))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, name, GUILD_NAME_EXISTS);
|
||||
SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_EXISTS_S);
|
||||
return;
|
||||
}
|
||||
if (objmgr.IsReservedName(name) || !ObjectMgr::IsValidCharterName(name))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, name, GUILD_NAME_INVALID);
|
||||
SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_INVALID);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -268,17 +268,17 @@ void WorldSession::HandlePetitionShowSignOpcode(WorldPacket & recv_data)
|
||||
sLog.outDebug("CMSG_PETITION_SHOW_SIGNATURES petition entry: '%u'", petitionguid_low);
|
||||
|
||||
WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8+8+4+1+signs*12));
|
||||
data << petitionguid; // petition guid
|
||||
data << _player->GetGUID(); // owner guid
|
||||
data << petitionguid_low; // guild guid (in Trinity always same as GUID_LOPART(petitionguid)
|
||||
data << signs; // sign's count
|
||||
data << uint64(petitionguid); // petition guid
|
||||
data << uint64(_player->GetGUID()); // owner guid
|
||||
data << uint32(petitionguid_low); // guild guid (in mangos always same as GUID_LOPART(petitionguid)
|
||||
data << uint8(signs); // sign's count
|
||||
|
||||
for (uint8 i = 1; i <= signs; ++i)
|
||||
{
|
||||
Field *fields2 = result->Fetch();
|
||||
uint64 plguid = fields2[0].GetUInt64();
|
||||
|
||||
data << plguid; // Player GUID
|
||||
data << uint64(plguid); // Player GUID
|
||||
data << (uint32)0; // there 0 ...
|
||||
|
||||
result->NextRow();
|
||||
@@ -429,7 +429,7 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
|
||||
|
||||
sLog.outDebug("Petition (GUID: %u) renamed to '%s'", GUID_LOPART(petitionguid), newname.c_str());
|
||||
WorldPacket data(MSG_PETITION_RENAME, (8+newname.size()+1));
|
||||
data << petitionguid;
|
||||
data << uint64(petitionguid);
|
||||
data << newname;
|
||||
SendPacket(&data);
|
||||
}
|
||||
@@ -472,7 +472,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
|
||||
if (type != 9)
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
|
||||
else
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_NOT_ALLIED);
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_NOT_ALLIED);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -480,7 +480,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (_player->getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", _player->GetName(), ERR_ARENA_TEAM_PLAYER_TO_LOW);
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", _player->GetName(), ERR_ARENA_TEAM_TARGET_TOO_LOW_S);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -504,7 +504,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (_player->GetGuildId())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ALREADY_IN_GUILD);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_IN_GUILD_S);
|
||||
return;
|
||||
}
|
||||
if (_player->GetGuildIdInvited())
|
||||
@@ -524,8 +524,8 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
|
||||
if (result)
|
||||
{
|
||||
WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4));
|
||||
data << petitionguid;
|
||||
data << _player->GetGUID();
|
||||
data << uint64(petitionguid);
|
||||
data << uint64(_player->GetGUID());
|
||||
data << (uint32)PETITION_SIGN_ALREADY_SIGNED;
|
||||
|
||||
// close at signer side
|
||||
@@ -542,8 +542,8 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
|
||||
sLog.outDebug("PETITION SIGN: GUID %u by player: %s (GUID: %u Account: %u)", GUID_LOPART(petitionguid), _player->GetName(),plguidlo,GetAccountId());
|
||||
|
||||
WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4));
|
||||
data << petitionguid;
|
||||
data << _player->GetGUID();
|
||||
data << uint64(petitionguid);
|
||||
data << uint64(_player->GetGUID())
|
||||
data << (uint32)PETITION_SIGN_OK;
|
||||
|
||||
// close at signer side
|
||||
@@ -580,7 +580,7 @@ void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recv_data)
|
||||
if (owner) // petition owner online
|
||||
{
|
||||
WorldPacket data(MSG_PETITION_DECLINE, 8);
|
||||
data << _player->GetGUID();
|
||||
data << uint64(_player->GetGUID());
|
||||
owner->GetSession()->SendPacket(&data);
|
||||
}
|
||||
}
|
||||
@@ -616,7 +616,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
|
||||
if (type != 9)
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
|
||||
else
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_NOT_ALLIED);
|
||||
SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_NOT_ALLIED);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -650,7 +650,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (player->GetGuildId())
|
||||
{
|
||||
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ALREADY_IN_GUILD);
|
||||
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_IN_GUILD_S);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -667,17 +667,17 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
|
||||
signs = result->GetRowCount();
|
||||
|
||||
WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8+8+4+signs+signs*12));
|
||||
data << petitionguid; // petition guid
|
||||
data << _player->GetGUID(); // owner guid
|
||||
data << GUID_LOPART(petitionguid); // guild guid (in Trinity always same as GUID_LOPART(petition guid)
|
||||
data << signs; // sign's count
|
||||
data << uint64(petitionguid); // petition guid
|
||||
data << uint64(_player->GetGUID()); // owner guid
|
||||
data << uint32(GUID_LOPART(petitionguid)); // guild guid (in mangos always same as GUID_LOPART(petition guid)
|
||||
data << uint8(signs); // sign's count
|
||||
|
||||
for (uint8 i = 1; i <= signs; ++i)
|
||||
{
|
||||
Field *fields2 = result->Fetch();
|
||||
plguid = fields2[0].GetUInt64();
|
||||
|
||||
data << plguid; // Player GUID
|
||||
data << uint64(plguid); // Player GUID
|
||||
data << (uint32)0; // there 0 ...
|
||||
|
||||
result->NextRow();
|
||||
@@ -772,7 +772,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
if (objmgr.GetGuildByName(name))
|
||||
{
|
||||
SendGuildCommandResult(GUILD_CREATE_S, name, GUILD_NAME_EXISTS);
|
||||
SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_EXISTS_S);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-9
@@ -6334,16 +6334,9 @@ void Player::RewardReputation(Quest const *pQuest)
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32 row = 1;
|
||||
int32 field = 0;
|
||||
uint32 row = ((pQuest->RewRepValueId[i] < 0) ? 1 : 0) + 1;
|
||||
uint32 field = abs(pQuest->RewRepValueId[i]);
|
||||
|
||||
if (pQuest->RewRepValueId[i] < 0)
|
||||
{
|
||||
++row;
|
||||
field = abs(pQuest->RewRepValueId[i]);
|
||||
}
|
||||
else
|
||||
field = pQuest->RewRepValueId[i];
|
||||
if (const QuestFactionRewEntry *pRow = sQuestFactionRewardStore.LookupEntry(row))
|
||||
{
|
||||
int32 repPoints = pRow->QuestRewFactionValue[field];
|
||||
|
||||
@@ -391,12 +391,7 @@ void WorldSession::LogoutPlayer(bool Save)
|
||||
guild->SetMemberStats(_player->GetGUID());
|
||||
guild->UpdateLogoutTime(_player->GetGUID());
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, (1+1+12+8)); // name limited to 12 in character table.
|
||||
data<<(uint8)GE_SIGNED_OFF;
|
||||
data<<(uint8)1;
|
||||
data<<_player->GetName();
|
||||
data<<_player->GetGUID();
|
||||
guild->BroadcastPacket(&data);
|
||||
guild->BroadcastEvent(GE_SIGNED_OFF, _player->GetGUID(), 1, _player->GetName(), "", "");
|
||||
}
|
||||
|
||||
///- Remove pet
|
||||
|
||||
@@ -233,7 +233,6 @@ class WorldSession
|
||||
// Guild/Arena Team
|
||||
void SendGuildCommandResult(uint32 typecmd, const std::string& str, uint32 cmdresult);
|
||||
void SendArenaTeamCommandResult(uint32 team_action, const std::string& team, const std::string& player, uint32 error_id);
|
||||
void BuildArenaTeamEventPacket(WorldPacket *data, uint8 eventid, uint8 str_count, const std::string& str1, const std::string& str2, const std::string& str3);
|
||||
void SendNotInArenaTeamPacket(uint8 type);
|
||||
void SendPetitionShowList(uint64 guid);
|
||||
void SendSaveGuildEmblem(uint32 msg);
|
||||
|
||||
Reference in New Issue
Block a user