[9353] Some fixes to guild/arenateam events.

This commit is contained in:
tomrus88 2010-02-10 18:31:42 +03:00
parent 1aa6c8eac9
commit 0bd88dd55a
12 changed files with 317 additions and 347 deletions

View file

@ -294,9 +294,8 @@ void ArenaTeam::Disband(WorldSession *session)
// event // event
if (session) if (session)
{ {
WorldPacket data; // probably only 1 string required...
session->BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_DISBANDED_S, 2, session->GetPlayerName(), GetName(), ""); BroadcastEvent(ERR_ARENA_TEAM_DISBANDED_S, 0, 2, session->GetPlayerName(), GetName(), "");
BroadcastPacket(&data);
} }
while (!m_members.empty()) while (!m_members.empty())
@ -307,7 +306,7 @@ void ArenaTeam::Disband(WorldSession *session)
CharacterDatabase.BeginTransaction(); CharacterDatabase.BeginTransaction();
CharacterDatabase.PExecute("DELETE FROM arena_team WHERE arenateamid = '%u'", m_TeamId); CharacterDatabase.PExecute("DELETE FROM arena_team WHERE arenateamid = '%u'", m_TeamId);
CharacterDatabase.PExecute("DELETE FROM arena_team_member WHERE arenateamid = '%u'", m_TeamId); //< this should be alredy done by calling DelMember(memberGuids[j]); for each member CharacterDatabase.PExecute("DELETE FROM arena_team_member WHERE arenateamid = '%u'", m_TeamId); //< this should be already done by calling DelMember(memberGuids[j]); for each member
CharacterDatabase.PExecute("DELETE FROM arena_team_stats WHERE arenateamid = '%u'", m_TeamId); CharacterDatabase.PExecute("DELETE FROM arena_team_stats WHERE arenateamid = '%u'", m_TeamId);
CharacterDatabase.CommitTransaction(); CharacterDatabase.CommitTransaction();
sObjectMgr.RemoveArenaTeam(m_TeamId); sObjectMgr.RemoveArenaTeam(m_TeamId);
@ -464,6 +463,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 ) uint8 ArenaTeam::GetSlotByType( uint32 type )
{ {
switch(type) switch(type)

View file

@ -23,14 +23,12 @@ enum ArenaTeamCommandTypes
{ {
ERR_ARENA_TEAM_CREATE_S = 0x00, ERR_ARENA_TEAM_CREATE_S = 0x00,
ERR_ARENA_TEAM_INVITE_SS = 0x01, ERR_ARENA_TEAM_INVITE_SS = 0x01,
//ERR_ARENA_TEAM_QUIT_S = 0x02,
ERR_ARENA_TEAM_QUIT_S = 0x03, ERR_ARENA_TEAM_QUIT_S = 0x03,
ERR_ARENA_TEAM_FOUNDER_S = 0x0C // need check, probably wrong... ERR_ARENA_TEAM_FOUNDER_S = 0x0E
}; };
enum ArenaTeamCommandErrors enum ArenaTeamCommandErrors
{ {
//ARENA_TEAM_PLAYER_NO_MORE_IN_ARENA_TEAM = 0x00,
ERR_ARENA_TEAM_INTERNAL = 0x01, ERR_ARENA_TEAM_INTERNAL = 0x01,
ERR_ALREADY_IN_ARENA_TEAM = 0x02, ERR_ALREADY_IN_ARENA_TEAM = 0x02,
ERR_ALREADY_IN_ARENA_TEAM_S = 0x03, ERR_ALREADY_IN_ARENA_TEAM_S = 0x03,
@ -44,8 +42,12 @@ enum ArenaTeamCommandErrors
ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM_SS = 0x0A, ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM_SS = 0x0A,
ERR_ARENA_TEAM_PLAYER_NOT_FOUND_S = 0x0B, ERR_ARENA_TEAM_PLAYER_NOT_FOUND_S = 0x0B,
ERR_ARENA_TEAM_NOT_ALLIED = 0x0C, ERR_ARENA_TEAM_NOT_ALLIED = 0x0C,
ERR_ARENA_TEAM_PLAYER_TO_LOW = 0x15, ERR_ARENA_TEAM_IGNORING_YOU_S = 0x13,
ERR_ARENA_TEAM_FULL = 0x16 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 enum ArenaTeamEvents
@ -186,6 +188,7 @@ class ArenaTeam
void SaveToDB(); void SaveToDB();
void BroadcastPacket(WorldPacket *packet); 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 Roster(WorldSession *session);
void Query(WorldSession *session); void Query(WorldSession *session);

View file

@ -99,7 +99,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recv_data)
if(player->getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL)) 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; return;
} }
@ -134,7 +134,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recv_data)
if(arenateam->GetMembersSize() >= arenateam->GetType() * 2) 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; return;
} }
@ -160,26 +160,27 @@ void WorldSession::HandleArenaTeamAcceptOpcode(WorldPacket & /*recv_data*/)
if(_player->GetArenaTeamId(at->GetSlot())) 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; return;
} }
if (!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && _player->GetTeam() != sObjectMgr.GetPlayerTeamByGUID(at->GetCaptain())) if (!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && _player->GetTeam() != sObjectMgr.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; return;
} }
if(!at->AddMember(_player->GetGUID())) 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; return;
} }
// event // event
WorldPacket data; at->BroadcastEvent(ERR_ARENA_TEAM_JOIN_SS, _player->GetGUID(), 2, _player->GetName(), at->GetName(), "");
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_JOIN_SS, 2, _player->GetName(), at->GetName(), "");
at->BroadcastPacket(&data);
} }
void WorldSession::HandleArenaTeamDeclineOpcode(WorldPacket & /*recv_data*/) void WorldSession::HandleArenaTeamDeclineOpcode(WorldPacket & /*recv_data*/)
@ -218,9 +219,7 @@ void WorldSession::HandleArenaTeamLeaveOpcode(WorldPacket & recv_data)
at->DelMember(_player->GetGUID()); at->DelMember(_player->GetGUID());
// event // event
WorldPacket data; at->BroadcastEvent(ERR_ARENA_TEAM_LEAVE_SS, _player->GetGUID(), 2, _player->GetName(), at->GetName(), "");
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_LEAVE_SS, 2, _player->GetName(), at->GetName(), "");
at->BroadcastPacket(&data);
// send you are no longer member of team // send you are no longer member of team
SendArenaTeamCommandResult(ERR_ARENA_TEAM_QUIT_S, at->GetName(), "", 0); SendArenaTeamCommandResult(ERR_ARENA_TEAM_QUIT_S, at->GetName(), "", 0);
@ -285,9 +284,7 @@ void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket & recv_data)
at->DelMember(member->guid); at->DelMember(member->guid);
// event // event
WorldPacket data; at->BroadcastEvent(ERR_ARENA_TEAM_REMOVE_SSS, 0, 3, name, at->GetName(), _player->GetName());
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_REMOVE_SSS, 3, name, at->GetName(), _player->GetName());
at->BroadcastPacket(&data);
} }
void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket & recv_data) void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket & recv_data)
@ -326,9 +323,7 @@ void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket & recv_data)
at->SetCaptain(member->guid); at->SetCaptain(member->guid);
// event // event
WorldPacket data; at->BroadcastEvent(ERR_ARENA_TEAM_LEADER_CHANGED_SSS, 0, 3, _player->GetName(), name, at->GetName());
BuildArenaTeamEventPacket(&data, ERR_ARENA_TEAM_LEADER_CHANGED_SSS, 3, _player->GetName(), name, at->GetName());
at->BroadcastPacket(&data);
} }
void WorldSession::SendArenaTeamCommandResult(uint32 team_action, const std::string& team, const std::string& player, uint32 error_id) void WorldSession::SendArenaTeamCommandResult(uint32 team_action, const std::string& team, const std::string& player, uint32 error_id)
@ -341,31 +336,6 @@ void WorldSession::SendArenaTeamCommandResult(uint32 team_action, const std::str
SendPacket(&data); 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) void WorldSession::SendNotInArenaTeamPacket(uint8 type)
{ {
WorldPacket data(SMSG_ARENA_ERROR, 4+1); // 886 - You are not in a %uv%u arena team WorldPacket data(SMSG_ARENA_ERROR, 4+1); // 886 - You are not in a %uv%u arena team

View file

@ -658,7 +658,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder)
Guild* guild = sObjectMgr.GetGuildById(pCurrChar->GetGuildId()); Guild* guild = sObjectMgr.GetGuildById(pCurrChar->GetGuildId());
if(guild) 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(GE_MOTD);
data << uint8(1); data << uint8(1);
data << guild->GetMOTD(); data << guild->GetMOTD();
@ -667,13 +667,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder)
guild->DisplayGuildBankTabsInfo(this); guild->DisplayGuildBankTabsInfo(this);
data.Initialize(SMSG_GUILD_EVENT, (5+10)); // we guess size guild->BroadcastEvent(GE_SIGNED_ON, pCurrChar->GetGUID(), 1, pCurrChar->GetName(), "", "");
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)" );
} }
else else
{ {
@ -773,7 +767,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder)
{ {
pCurrChar->resetTalents(true); pCurrChar->resetTalents(true);
pCurrChar->SendTalentsInfoData(false); // original talents send already in to SendInitialPacketsBeforeAddToMap, resend reset state pCurrChar->SendTalentsInfoData(false); // original talents send already in to SendInitialPacketsBeforeAddToMap, resend reset state
SendNotification(LANG_RESET_TALENTS); SendNotification(LANG_RESET_TALENTS); // we can use SMSG_TALENTS_INVOLUNTARILY_RESET here
} }
if (pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST)) if (pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST))

View file

@ -393,7 +393,7 @@ bool Guild::LoadMembersFromDB(QueryResult *guildMembersResult)
newmember.ZoneId = fields[22].GetUInt32(); newmember.ZoneId = fields[22].GetUInt32();
newmember.LogoutTime = fields[23].GetUInt64(); newmember.LogoutTime = fields[23].GetUInt64();
//this code will remove unexisting character guids from guild // this code will remove not existing character guids from guild
if (newmember.Level < 1 || newmember.Level > STRONG_MAX_LEVEL) // can be at broken `data` field if (newmember.Level < 1 || newmember.Level > STRONG_MAX_LEVEL) // can be at broken `data` field
{ {
sLog.outError("Player (GUID: %u) has a broken data in field `characters`.`data`, deleting him from guild!",GUID_LOPART(guid)); sLog.outError("Player (GUID: %u) has a broken data in field `characters`.`data`, deleting him from guild!",GUID_LOPART(guid));
@ -485,21 +485,10 @@ void Guild::DelMember(uint64 guid, bool isDisbanding)
// when leader non-exist (at guild load with deleted leader only) not send broadcasts // when leader non-exist (at guild load with deleted leader only) not send broadcasts
if (oldLeader) if (oldLeader)
{ {
WorldPacket data(SMSG_GUILD_EVENT, (1+1+(oldLeader->Name).size()+1+(best->Name).size()+1)); BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->Name, best->Name, "");
data << (uint8)GE_LEADER_CHANGED;
data << (uint8)2;
data << oldLeader->Name;
data << best->Name;
BroadcastPacket(&data);
data.Initialize(SMSG_GUILD_EVENT, (1+1+(oldLeader->Name).size()+1)); BroadcastEvent(GE_LEFT, guid, 1, oldLeader->Name, "", "");
data << (uint8)GE_LEFT;
data << (uint8)1;
data << oldLeader->Name;
BroadcastPacket(&data);
} }
sLog.outDebug( "WORLD: Sent (SMSG_GUILD_EVENT)" );
} }
members.erase(GUID_LOPART(guid)); members.erase(GUID_LOPART(guid));
@ -700,9 +689,7 @@ int32 Guild::GetRank(uint32 LowGuid)
void Guild::Disband() void Guild::Disband()
{ {
WorldPacket data(SMSG_GUILD_EVENT, 1); BroadcastEvent(GE_DISBANDED, 0, 0, "", "", "");
data << (uint8)GE_DISBANDED;
BroadcastPacket(&data);
while (!members.empty()) while (!members.empty())
{ {
@ -727,11 +714,11 @@ void Guild::Roster(WorldSession *session /*= NULL*/)
{ {
// we can only guess size // we can only guess size
WorldPacket data(SMSG_GUILD_ROSTER, (4+MOTD.length()+1+GINFO.length()+1+4+m_Ranks.size()*(4+4+GUILD_BANK_MAX_TABS*(4+4))+members.size()*50)); WorldPacket data(SMSG_GUILD_ROSTER, (4+MOTD.length()+1+GINFO.length()+1+4+m_Ranks.size()*(4+4+GUILD_BANK_MAX_TABS*(4+4))+members.size()*50));
data << (uint32)members.size(); data << uint32(members.size());
data << MOTD; data << MOTD;
data << GINFO; data << GINFO;
data << (uint32)m_Ranks.size(); data << uint32(m_Ranks.size());
for (RankList::const_iterator ritr = m_Ranks.begin(); ritr != m_Ranks.end(); ++ritr) for (RankList::const_iterator ritr = m_Ranks.begin(); ritr != m_Ranks.end(); ++ritr)
{ {
data << uint32(ritr->Rights); data << uint32(ritr->Rights);
@ -783,7 +770,7 @@ void Guild::Query(WorldSession *session)
{ {
WorldPacket data(SMSG_GUILD_QUERY_RESPONSE, (8*32+200));// we can only guess size WorldPacket data(SMSG_GUILD_QUERY_RESPONSE, (8*32+200));// we can only guess size
data << m_Id; data << uint32(m_Id);
data << m_Name; data << m_Name;
for (size_t i = 0 ; i < GUILD_RANKS_MAX_COUNT; ++i) // show always 10 ranks for (size_t i = 0 ; i < GUILD_RANKS_MAX_COUNT; ++i) // show always 10 ranks
@ -791,7 +778,7 @@ void Guild::Query(WorldSession *session)
if (i < m_Ranks.size()) if (i < m_Ranks.size())
data << m_Ranks[i].Name; data << m_Ranks[i].Name;
else else
data << (uint8)0; // null string data << uint8(0); // null string
} }
data << uint32(m_EmblemStyle); data << uint32(m_EmblemStyle);
@ -799,7 +786,7 @@ void Guild::Query(WorldSession *session)
data << uint32(m_BorderStyle); data << uint32(m_BorderStyle);
data << uint32(m_BorderColor); data << uint32(m_BorderColor);
data << uint32(m_BackgroundColor); data << uint32(m_BackgroundColor);
data << uint32(0); // something new in WotLK data << uint32(0); // probably real ranks count
session->SendPacket( &data ); session->SendPacket( &data );
sLog.outDebug( "WORLD: Sent (SMSG_GUILD_QUERY_RESPONSE)" ); sLog.outDebug( "WORLD: Sent (SMSG_GUILD_QUERY_RESPONSE)" );
@ -2336,6 +2323,38 @@ void Guild::MoveFromCharToBank( Player * pl, uint8 PlayerBag, uint8 PlayerSlot,
} }
} }
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 bool GuildItemPosCount::isContainedIn(GuildItemPosCountVec const &vec) const
{ {
for(GuildItemPosCountVec::const_iterator itr = vec.begin(); itr != vec.end(); ++itr) for(GuildItemPosCountVec::const_iterator itr = vec.begin(); itr != vec.end(); ++itr)

View file

@ -71,38 +71,38 @@ enum Typecommand
GUILD_CREATE_S = 0x00, GUILD_CREATE_S = 0x00,
GUILD_INVITE_S = 0x01, GUILD_INVITE_S = 0x01,
GUILD_QUIT_S = 0x03, GUILD_QUIT_S = 0x03,
// 0x05?
GUILD_FOUNDER_S = 0x0E, GUILD_FOUNDER_S = 0x0E,
GUILD_UNK1 = 0x10, GUILD_UNK1 = 0x13,
GUILD_BANK_S = 0x15, GUILD_UNK2 = 0x14
GUILD_UNK3 = 0x16
}; };
enum CommandErrors enum CommandErrors
{ {
GUILD_PLAYER_NO_MORE_IN_GUILD = 0x00, ERR_PLAYER_NO_MORE_IN_GUILD = 0x00,
GUILD_INTERNAL = 0x01, ERR_GUILD_INTERNAL = 0x01,
GUILD_ALREADY_IN_GUILD = 0x02, ERR_ALREADY_IN_GUILD = 0x02,
ALREADY_IN_GUILD = 0x03, ERR_ALREADY_IN_GUILD_S = 0x03,
INVITED_TO_GUILD = 0x04, ERR_INVITED_TO_GUILD = 0x04,
ALREADY_INVITED_TO_GUILD = 0x05, ERR_ALREADY_INVITED_TO_GUILD_S = 0x05,
GUILD_NAME_INVALID = 0x06, ERR_GUILD_NAME_INVALID = 0x06,
GUILD_NAME_EXISTS = 0x07, ERR_GUILD_NAME_EXISTS_S = 0x07,
GUILD_LEADER_LEAVE = 0x08, ERR_GUILD_LEADER_LEAVE = 0x08,
GUILD_PERMISSIONS = 0x08, ERR_GUILD_PERMISSIONS = 0x08,
GUILD_PLAYER_NOT_IN_GUILD = 0x09, ERR_GUILD_PLAYER_NOT_IN_GUILD = 0x09,
GUILD_PLAYER_NOT_IN_GUILD_S = 0x0A, ERR_GUILD_PLAYER_NOT_IN_GUILD_S = 0x0A,
GUILD_PLAYER_NOT_FOUND = 0x0B, ERR_GUILD_PLAYER_NOT_FOUND_S = 0x0B,
GUILD_NOT_ALLIED = 0x0C, ERR_GUILD_NOT_ALLIED = 0x0C,
GUILD_RANK_TOO_HIGH_S = 0x0D, ERR_GUILD_RANK_TOO_HIGH_S = 0x0D,
GUILD_ALREADY_LOWEST_RANK_S = 0x0E, ERR_GUILD_RANK_TOO_LOW_S = 0x0E,
GUILD_TEMP_ERROR = 0x11, ERR_GUILD_RANKS_LOCKED = 0x11,
GUILD_RANK_IN_USE = 0x12, ERR_GUILD_RANK_IN_USE = 0x12,
GUILD_IGNORE = 0x13, ERR_GUILD_IGNORING_YOU_S = 0x13,
GUILD_ERR_UNK1 = 0x17, ERR_GUILD_UNK1 = 0x14,
GUILD_WITHDRAW_TOO_MUCH = 0x18, ERR_GUILD_WITHDRAW_LIMIT = 0x19,
GUILD_BANK_NO_MONEY = 0x19, ERR_GUILD_NOT_ENOUGH_MONEY = 0x1A,
GUILD_BANK_TAB_IS_FULL = 0x1B, ERR_GUILD_BANK_FULL = 0x1C,
GUILD_BANK_ITEM_NOT_FOUND = 0x1C ERR_GUILD_ITEM_NOT_FOUND = 0x1D
}; };
enum GuildEvents enum GuildEvents
@ -117,16 +117,16 @@ enum GuildEvents
GE_LEADER_CHANGED = 0x07, GE_LEADER_CHANGED = 0x07,
GE_DISBANDED = 0x08, GE_DISBANDED = 0x08,
GE_TABARDCHANGE = 0x09, 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_UNK2 = 0x0B, // EVENT_GUILD_ROSTER_UPDATE
GE_SIGNED_ON = 0x0C, // ERR_FRIEND_ONLINE_SS GE_SIGNED_ON = 0x0C, // ERR_FRIEND_ONLINE_SS
GE_SIGNED_OFF = 0x0D, // ERR_FRIEND_OFFLINE_S 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_BANKTAB_PURCHASED = 0x0F, // EVENT_GUILDBANK_UPDATE_TABS
GE_UNK5 = 0x10, // EVENT_GUILDBANK_UPDATE_TABS GE_UNK5 = 0x10, // EVENT_GUILDBANK_UPDATE_TABS
GE_UNK6 = 0x11, // EVENT_GUILDBANK_UPDATE_MONEY, string 0000000000002710 is 1 gold GE_GUILDBANK_UPDATE_MONEY = 0x11, // EVENT_GUILDBANK_UPDATE_MONEY, string 0000000000002710 is 1 gold
GE_UNK7 = 0x12, // MSG_GUILD_BANK_MONEY_WITHDRAWN GE_GUILD_BANK_MONEY_WITHDRAWN = 0x12, // MSG_GUILD_BANK_MONEY_WITHDRAWN
GE_UNK8 = 0x13 // EVENT_GUILDBANK_TEXT_CHANGED GE_GUILDBANK_TEXT_CHANGED = 0x13 // EVENT_GUILDBANK_TEXT_CHANGED
}; };
enum PetitionTurns enum PetitionTurns
@ -338,6 +338,7 @@ class Guild
void BroadcastToOfficers(WorldSession *session, const std::string& msg, uint32 language = LANG_UNIVERSAL); void BroadcastToOfficers(WorldSession *session, const std::string& msg, uint32 language = LANG_UNIVERSAL);
void BroadcastPacketToRank(WorldPacket *packet, uint32 rankId); void BroadcastPacketToRank(WorldPacket *packet, uint32 rankId);
void BroadcastPacket(WorldPacket *packet); void BroadcastPacket(WorldPacket *packet);
void BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3);
template<class Do> template<class Do>
void BroadcastWorker(Do& _do, Player* except = NULL) void BroadcastWorker(Do& _do, Player* except = NULL)

View file

@ -40,7 +40,7 @@ void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
return; return;
} }
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
} }
void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
@ -77,14 +77,14 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
if(!player) if(!player)
{ {
SendGuildCommandResult(GUILD_INVITE_S, Invitedname, GUILD_PLAYER_NOT_FOUND); SendGuildCommandResult(GUILD_INVITE_S, Invitedname, ERR_GUILD_PLAYER_NOT_FOUND_S);
return; return;
} }
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
@ -95,27 +95,27 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
// not let enemies sign guild charter // not let enemies sign guild charter
if (!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && player->GetTeam() != GetPlayer()->GetTeam()) 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; return;
} }
if(player->GetGuildId()) if(player->GetGuildId())
{ {
plname = player->GetName(); plname = player->GetName();
SendGuildCommandResult(GUILD_INVITE_S, plname, ALREADY_IN_GUILD); SendGuildCommandResult(GUILD_INVITE_S, plname, ERR_ALREADY_IN_GUILD_S);
return; return;
} }
if(player->GetGuildIdInvited()) if(player->GetGuildIdInvited())
{ {
plname = player->GetName(); plname = player->GetName();
SendGuildCommandResult(GUILD_INVITE_S, plname, ALREADY_INVITED_TO_GUILD); SendGuildCommandResult(GUILD_INVITE_S, plname, ERR_ALREADY_INVITED_TO_GUILD_S);
return; return;
} }
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_INVITE)) if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_INVITE))
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -146,13 +146,13 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE)) if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE))
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -160,20 +160,20 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
MemberSlot* slot = guild->GetMemberSlot(plName, plGuid); MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
if(!slot) 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; return;
} }
if(slot->RankId == GR_GUILDMASTER) if(slot->RankId == GR_GUILDMASTER)
{ {
SendGuildCommandResult(GUILD_QUIT_S, "", GUILD_LEADER_LEAVE); SendGuildCommandResult(GUILD_QUIT_S, "", ERR_GUILD_LEADER_LEAVE);
return; return;
} }
// do not allow to kick player with same or higher rights // do not allow to kick player with same or higher rights
if(GetPlayer()->GetRank() >= slot->RankId) 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; return;
} }
@ -181,12 +181,7 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
// Put record into guild log // Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), 0); guild->LogGuildEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), 0);
WorldPacket data(SMSG_GUILD_EVENT, (2+20)); // guess size guild->BroadcastEvent(GE_REMOVED, 0, 2, plName, _player->GetName(), "");
data << (uint8)GE_REMOVED;
data << (uint8)2; // strings count
data << plName;
data << GetPlayer()->GetName();
guild->BroadcastPacket(&data);
} }
void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
@ -209,13 +204,7 @@ void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
// Put record into guild log // Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_JOIN_GUILD, GetPlayer()->GetGUIDLow(), 0, 0); guild->LogGuildEvent(GUILD_EVENT_LOG_JOIN_GUILD, GetPlayer()->GetGUIDLow(), 0, 0);
WorldPacket data(SMSG_GUILD_EVENT, (2+10)); // guess size guild->BroadcastEvent(GE_JOINED, player->GetGUID(), 1, player->GetName(), "", "");
data << (uint8)GE_JOINED;
data << (uint8)1; // strings count
data << player->GetName();
guild->BroadcastPacket(&data);
sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
} }
void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/)
@ -233,7 +222,7 @@ void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/)
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
@ -269,12 +258,12 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE)) if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE))
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -283,13 +272,13 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
if(!slot) 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; return;
} }
if(plGuid == GetPlayer()->GetGUID()) if(plGuid == GetPlayer()->GetGUID())
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_NAME_INVALID); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID);
return; return;
} }
@ -298,7 +287,7 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
// GetPlayer()->GetRank() + 1 is highest rank that current player can promote to // GetPlayer()->GetRank() + 1 is highest rank that current player can promote to
if(GetPlayer()->GetRank() + 1 >= slot->RankId) 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; return;
} }
@ -308,13 +297,7 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
// Put record into guild log // Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_PROMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId); guild->LogGuildEvent(GUILD_EVENT_LOG_PROMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId);
WorldPacket data(SMSG_GUILD_EVENT, (2+30)); // guess size guild->BroadcastEvent(GE_PROMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(newRankId));
data << (uint8)GE_PROMOTION;
data << (uint8)3; // strings count
data << GetPlayer()->GetName();
data << plName;
data << guild->GetRankName(newRankId);
guild->BroadcastPacket(&data);
} }
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
@ -331,13 +314,13 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_DEMOTE)) if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_DEMOTE))
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -346,27 +329,27 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
if (!slot) 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; return;
} }
if(plGuid == GetPlayer()->GetGUID()) if(plGuid == GetPlayer()->GetGUID())
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_NAME_INVALID); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID);
return; return;
} }
// do not allow to demote same or higher rank // do not allow to demote same or higher rank
if(GetPlayer()->GetRank() >= slot->RankId) 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; return;
} }
// do not allow to demote lowest rank // do not allow to demote lowest rank
if(slot->RankId >= guild->GetLowestRank()) 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; return;
} }
@ -376,13 +359,7 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
// Put record into guild log // Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_DEMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId); guild->LogGuildEvent(GUILD_EVENT_LOG_DEMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId);
WorldPacket data(SMSG_GUILD_EVENT, (2+30)); // guess size guild->BroadcastEvent(GE_DEMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(slot->RankId));
data << (uint8)GE_DEMOTION;
data << (uint8)3; // strings count
data << GetPlayer()->GetName();
data << plName;
data << guild->GetRankName(slot->RankId);
guild->BroadcastPacket(&data);
} }
void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
@ -392,13 +369,13 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
Guild *guild = sObjectMgr.GetGuildById(_player->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(_player->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(_player->GetGUID() == guild->GetLeader() && guild->GetMemberSize() > 1) if(_player->GetGUID() == guild->GetLeader() && guild->GetMemberSize() > 1)
{ {
SendGuildCommandResult(GUILD_QUIT_S, "", GUILD_LEADER_LEAVE); SendGuildCommandResult(GUILD_QUIT_S, "", ERR_GUILD_LEADER_LEAVE);
return; return;
} }
@ -412,15 +389,9 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
// Put record into guild log // Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetGUIDLow(), 0, 0); guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetGUIDLow(), 0, 0);
WorldPacket data(SMSG_GUILD_EVENT, (2+10)); // guess size guild->BroadcastEvent(GE_LEFT, _player->GetGUID(), 1, _player->GetName(), "", "");
data << (uint8)GE_LEFT;
data << (uint8)1; // strings count
data << _player->GetName();
guild->BroadcastPacket(&data);
sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)"); SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), ERR_PLAYER_NO_MORE_IN_GUILD);
SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), GUILD_PLAYER_NO_MORE_IN_GUILD);
} }
void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
@ -430,13 +401,13 @@ void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(GetPlayer()->GetGUID() != guild->GetLeader()) if(GetPlayer()->GetGUID() != guild->GetLeader())
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -461,13 +432,13 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
if (!guild) if (!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if (oldLeader->GetGUID() != guild->GetLeader()) if (oldLeader->GetGUID() != guild->GetLeader())
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -476,21 +447,14 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
if (!slot) if (!slot)
{ {
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S); SendGuildCommandResult(GUILD_INVITE_S, name, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
return; return;
} }
guild->SetLeader(newLeaderGUID); guild->SetLeader(newLeaderGUID);
guild->ChangeRank(oldLeader->GetGUID(), GR_OFFICER); guild->ChangeRank(oldLeader->GetGUID(), GR_OFFICER);
WorldPacket data(SMSG_GUILD_EVENT, (2+20)); // guess size guild->BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->GetName(), name, "");
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)");
} }
void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
@ -507,24 +471,18 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_SETMOTD)) if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_SETMOTD))
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
guild->SetMOTD(MOTD); guild->SetMOTD(MOTD);
WorldPacket data(SMSG_GUILD_EVENT, (2+MOTD.size()+1)); guild->BroadcastEvent(GE_MOTD, 0, 1, MOTD, "", "");
data << (uint8)GE_MOTD;
data << (uint8)1; // strings count
data << MOTD;
guild->BroadcastPacket(&data);
sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
} }
void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
@ -541,13 +499,13 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
if (!guild) if (!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EPNOTE)) if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EPNOTE))
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -556,7 +514,7 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
if (!slot) if (!slot)
{ {
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S); SendGuildCommandResult(GUILD_INVITE_S, name, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
return; return;
} }
@ -580,12 +538,12 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
if (!guild) if (!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EOFFNOTE)) if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EOFFNOTE))
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -594,7 +552,7 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
if (!slot) 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; return;
} }
@ -616,13 +574,13 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
if(!guild) if(!guild)
{ {
recvPacket.rpos(recvPacket.wpos()); // set to end to avoid warnings spam recvPacket.rpos(recvPacket.wpos()); // set to end to avoid warnings spam
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
else if(GetPlayer()->GetGUID() != guild->GetLeader()) else if(GetPlayer()->GetGUID() != guild->GetLeader())
{ {
recvPacket.rpos(recvPacket.wpos()); // set to end to avoid warnings spam 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; return;
} }
@ -665,13 +623,13 @@ void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(GetPlayer()->GetGUID() != guild->GetLeader()) if(GetPlayer()->GetGUID() != guild->GetLeader())
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -691,12 +649,12 @@ void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/)
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
else if(GetPlayer()->GetGUID() != guild->GetLeader()) else if(GetPlayer()->GetGUID() != guild->GetLeader())
{ {
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -727,13 +685,13 @@ void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return; return;
} }
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_MODIFY_GUILD_INFO)) if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_MODIFY_GUILD_INFO))
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PERMISSIONS); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PERMISSIONS);
return; return;
} }
@ -864,7 +822,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) */ /* Called when opening guild bank tab only (first one) */

View file

@ -4509,7 +4509,7 @@ bool ChatHandler::HandleResetTalentsCommand(const char * args)
} }
else if (target_guid) else if (target_guid)
{ {
uint32 at_flags = AT_LOGIN_NONE | AT_LOGIN_RESET_PET_TALENTS; uint32 at_flags = AT_LOGIN_RESET_PET_TALENTS;
CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '%u' WHERE guid = '%u'", at_flags, GUID_LOPART(target_guid) ); CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '%u' WHERE guid = '%u'", at_flags, GUID_LOPART(target_guid) );
std::string nameLink = playerLink(target_name); std::string nameLink = playerLink(target_name);
PSendSysMessage(LANG_RESET_TALENTS_OFFLINE, nameLink.c_str()); PSendSysMessage(LANG_RESET_TALENTS_OFFLINE, nameLink.c_str());

View file

@ -45,6 +45,7 @@
#define ARENA_TEAM_CHARTER_3v3_COST 1200000 // 120 G #define ARENA_TEAM_CHARTER_3v3_COST 1200000 // 120 G
#define ARENA_TEAM_CHARTER_5v5 23562 #define ARENA_TEAM_CHARTER_5v5 23562
#define ARENA_TEAM_CHARTER_5v5_COST 2000000 // 200 G #define ARENA_TEAM_CHARTER_5v5_COST 2000000 // 200 G
#define CHARTER_DISPLAY_ID 16161
void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
{ {
@ -148,12 +149,12 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
{ {
if(sObjectMgr.GetGuildByName(name)) if(sObjectMgr.GetGuildByName(name))
{ {
SendGuildCommandResult(GUILD_CREATE_S, name, GUILD_NAME_EXISTS); SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_EXISTS_S);
return; return;
} }
if(sObjectMgr.IsReservedName(name) || !ObjectMgr::IsValidCharterName(name)) if(sObjectMgr.IsReservedName(name) || !ObjectMgr::IsValidCharterName(name))
{ {
SendGuildCommandResult(GUILD_CREATE_S, name, GUILD_NAME_INVALID); SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_INVALID);
return; return;
} }
} }
@ -204,8 +205,7 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
_player->SendNewItem(charter, 1, true, false); _player->SendNewItem(charter, 1, true, false);
// a petition is invalid, if both the owner and the type matches // a petition is invalid, if both the owner and the type matches
// we checked above, if this player is in an arenateam, so this must be // we checked above, if this player is in an arenateam, so this must be data corruption
// datacorruption
QueryResult *result = CharacterDatabase.PQuery("SELECT petitionguid FROM petition WHERE ownerguid = '%u' AND type = '%u'", _player->GetGUIDLow(), type); QueryResult *result = CharacterDatabase.PQuery("SELECT petitionguid FROM petition WHERE ownerguid = '%u' AND type = '%u'", _player->GetGUIDLow(), type);
std::ostringstream ssInvalidPetitionGUIDs; std::ostringstream ssInvalidPetitionGUIDs;
@ -270,18 +270,18 @@ void WorldSession::HandlePetitionShowSignOpcode(WorldPacket & recv_data)
sLog.outDebug("CMSG_PETITION_SHOW_SIGNATURES petition entry: '%u'", petitionguid_low); sLog.outDebug("CMSG_PETITION_SHOW_SIGNATURES petition entry: '%u'", petitionguid_low);
WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8+8+4+1+signs*12)); WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8+8+4+1+signs*12));
data << petitionguid; // petition guid data << uint64(petitionguid); // petition guid
data << _player->GetGUID(); // owner guid data << uint64(_player->GetGUID()); // owner guid
data << petitionguid_low; // guild guid (in mangos always same as GUID_LOPART(petitionguid) data << uint32(petitionguid_low); // guild guid (in mangos always same as GUID_LOPART(petitionguid)
data << signs; // sign's count data << uint8(signs); // sign's count
for(uint8 i = 1; i <= signs; ++i) for(uint8 i = 1; i <= signs; ++i)
{ {
Field *fields2 = result->Fetch(); Field *fields2 = result->Fetch();
uint64 plguid = fields2[0].GetUInt64(); uint64 plguid = fields2[0].GetUInt64();
data << plguid; // Player GUID data << uint64(plguid); // Player GUID
data << (uint32)0; // there 0 ... data << uint32(0); // there 0 ...
result->NextRow(); result->NextRow();
} }
@ -404,12 +404,12 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
{ {
if(sObjectMgr.GetGuildByName(newname)) if(sObjectMgr.GetGuildByName(newname))
{ {
SendGuildCommandResult(GUILD_CREATE_S, newname, GUILD_NAME_EXISTS); SendGuildCommandResult(GUILD_CREATE_S, newname, ERR_GUILD_NAME_EXISTS_S);
return; return;
} }
if(sObjectMgr.IsReservedName(newname) || !ObjectMgr::IsValidCharterName(newname)) if(sObjectMgr.IsReservedName(newname) || !ObjectMgr::IsValidCharterName(newname))
{ {
SendGuildCommandResult(GUILD_CREATE_S, newname, GUILD_NAME_INVALID); SendGuildCommandResult(GUILD_CREATE_S, newname, ERR_GUILD_NAME_INVALID);
return; return;
} }
} }
@ -433,8 +433,9 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
db_newname.c_str(), GUID_LOPART(petitionguid)); db_newname.c_str(), GUID_LOPART(petitionguid));
sLog.outDebug("Petition (GUID: %u) renamed to '%s'", GUID_LOPART(petitionguid), newname.c_str()); sLog.outDebug("Petition (GUID: %u) renamed to '%s'", GUID_LOPART(petitionguid), newname.c_str());
WorldPacket data(MSG_PETITION_RENAME, (8+newname.size()+1)); WorldPacket data(MSG_PETITION_RENAME, (8+newname.size()+1));
data << petitionguid; data << uint64(petitionguid);
data << newname; data << newname;
SendPacket(&data); SendPacket(&data);
} }
@ -479,7 +480,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
if(type != 9) if(type != 9)
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED); SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
else else
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_NOT_ALLIED); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_NOT_ALLIED);
return; return;
} }
@ -487,7 +488,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
{ {
if(_player->getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL)) 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; return;
} }
@ -511,12 +512,12 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
{ {
if(_player->GetGuildId()) if(_player->GetGuildId())
{ {
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ALREADY_IN_GUILD); SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_IN_GUILD_S);
return; return;
} }
if(_player->GetGuildIdInvited()) if(_player->GetGuildIdInvited())
{ {
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ALREADY_INVITED_TO_GUILD); SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_INVITED_TO_GUILD_S);
return; return;
} }
} }
@ -532,9 +533,9 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
{ {
delete result; delete result;
WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4)); WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4));
data << petitionguid; data << uint64(petitionguid);
data << _player->GetGUID(); data << uint64(_player->GetGUID());
data << (uint32)PETITION_SIGN_ALREADY_SIGNED; data << uint32(PETITION_SIGN_ALREADY_SIGNED);
// close at signer side // close at signer side
SendPacket(&data); SendPacket(&data);
@ -550,9 +551,9 @@ 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()); 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)); WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4));
data << petitionguid; data << uint64(petitionguid);
data << _player->GetGUID(); data << uint64(_player->GetGUID());
data << (uint32)PETITION_SIGN_OK; data << uint32(PETITION_SIGN_OK);
// close at signer side // close at signer side
SendPacket(&data); SendPacket(&data);
@ -589,7 +590,7 @@ void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recv_data)
if(owner) // petition owner online if(owner) // petition owner online
{ {
WorldPacket data(MSG_PETITION_DECLINE, 8); WorldPacket data(MSG_PETITION_DECLINE, 8);
data << _player->GetGUID(); data << uint64(_player->GetGUID());
owner->GetSession()->SendPacket(&data); owner->GetSession()->SendPacket(&data);
} }
} }
@ -626,7 +627,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
if(type != 9) if(type != 9)
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED); SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
else else
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_NOT_ALLIED); SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_NOT_ALLIED);
return; return;
} }
@ -635,7 +636,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
if(player->getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL)) if(player->getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL))
{ {
// player is too low level to join an arena team // player is too low level to join an arena team
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; return;
} }
@ -660,13 +661,13 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
{ {
if(player->GetGuildId()) if(player->GetGuildId())
{ {
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ALREADY_IN_GUILD); SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_IN_GUILD_S);
return; return;
} }
if(player->GetGuildIdInvited()) if(player->GetGuildIdInvited())
{ {
SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ALREADY_INVITED_TO_GUILD); SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_INVITED_TO_GUILD_S);
return; return;
} }
} }
@ -677,18 +678,18 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
signs = (uint8)result->GetRowCount(); signs = (uint8)result->GetRowCount();
WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8+8+4+signs+signs*12)); WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8+8+4+signs+signs*12));
data << petitionguid; // petition guid data << uint64(petitionguid); // petition guid
data << _player->GetGUID(); // owner guid data << uint64(_player->GetGUID()); // owner guid
data << GUID_LOPART(petitionguid); // guild guid (in mangos always same as GUID_LOPART(petition guid) data << uint32(GUID_LOPART(petitionguid)); // guild guid (in mangos always same as GUID_LOPART(petition guid)
data << signs; // sign's count data << uint8(signs); // sign's count
for(uint8 i = 1; i <= signs; ++i) for(uint8 i = 1; i <= signs; ++i)
{ {
Field *fields2 = result->Fetch(); Field *fields2 = result->Fetch();
plguid = fields2[0].GetUInt64(); plguid = fields2[0].GetUInt64();
data << plguid; // Player GUID data << uint64(plguid); // Player GUID
data << (uint32)0; // there 0 ... data << uint32(0); // there 0 ...
result->NextRow(); result->NextRow();
} }
@ -734,7 +735,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
if(_player->GetGuildId()) if(_player->GetGuildId())
{ {
data.Initialize(SMSG_TURN_IN_PETITION_RESULTS, 4); data.Initialize(SMSG_TURN_IN_PETITION_RESULTS, 4);
data << (uint32)PETITION_TURN_ALREADY_IN_GUILD; // already in guild data << uint32(PETITION_TURN_ALREADY_IN_GUILD); // already in guild
_player->GetSession()->SendPacket(&data); _player->GetSession()->SendPacket(&data);
return; return;
} }
@ -775,7 +776,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
if(signs < count) if(signs < count)
{ {
data.Initialize(SMSG_TURN_IN_PETITION_RESULTS, 4); data.Initialize(SMSG_TURN_IN_PETITION_RESULTS, 4);
data << (uint32)PETITION_TURN_NEED_MORE_SIGNATURES; // need more signatures... data << uint32(PETITION_TURN_NEED_MORE_SIGNATURES); // need more signatures...
SendPacket(&data); SendPacket(&data);
delete result; delete result;
return; return;
@ -785,7 +786,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
{ {
if(sObjectMgr.GetGuildByName(name)) if(sObjectMgr.GetGuildByName(name))
{ {
SendGuildCommandResult(GUILD_CREATE_S, name, GUILD_NAME_EXISTS); SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_EXISTS_S);
delete result; delete result;
return; return;
} }
@ -876,7 +877,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
sLog.outDebug("TURN IN PETITION GUID %u", GUID_LOPART(petitionguid)); sLog.outDebug("TURN IN PETITION GUID %u", GUID_LOPART(petitionguid));
data.Initialize(SMSG_TURN_IN_PETITION_RESULTS, 4); data.Initialize(SMSG_TURN_IN_PETITION_RESULTS, 4);
data << (uint32)PETITION_TURN_OK; data << uint32(PETITION_TURN_OK);
SendPacket(&data); SendPacket(&data);
} }
@ -911,13 +912,13 @@ void WorldSession::SendPetitionShowList(uint64 guid)
count = 3; count = 3;
WorldPacket data(SMSG_PETITION_SHOWLIST, 8+1+4*6); WorldPacket data(SMSG_PETITION_SHOWLIST, 8+1+4*6);
data << guid; // npc guid data << uint64(guid); // npc guid
data << count; // count data << uint8(count); // count
if(count == 1) if(count == 1)
{ {
data << uint32(1); // index data << uint32(1); // index
data << uint32(GUILD_CHARTER); // charter entry data << uint32(GUILD_CHARTER); // charter entry
data << uint32(16161); // charter display id data << uint32(CHARTER_DISPLAY_ID); // charter display id
data << uint32(GUILD_CHARTER_COST); // charter cost data << uint32(GUILD_CHARTER_COST); // charter cost
data << uint32(0); // unknown data << uint32(0); // unknown
data << uint32(9); // required signs? data << uint32(9); // required signs?
@ -927,21 +928,21 @@ void WorldSession::SendPetitionShowList(uint64 guid)
// 2v2 // 2v2
data << uint32(1); // index data << uint32(1); // index
data << uint32(ARENA_TEAM_CHARTER_2v2); // charter entry data << uint32(ARENA_TEAM_CHARTER_2v2); // charter entry
data << uint32(16161); // charter display id data << uint32(CHARTER_DISPLAY_ID); // charter display id
data << uint32(ARENA_TEAM_CHARTER_2v2_COST); // charter cost data << uint32(ARENA_TEAM_CHARTER_2v2_COST); // charter cost
data << uint32(2); // unknown data << uint32(2); // unknown
data << uint32(2); // required signs? data << uint32(2); // required signs?
// 3v3 // 3v3
data << uint32(2); // index data << uint32(2); // index
data << uint32(ARENA_TEAM_CHARTER_3v3); // charter entry data << uint32(ARENA_TEAM_CHARTER_3v3); // charter entry
data << uint32(16161); // charter display id data << uint32(CHARTER_DISPLAY_ID); // charter display id
data << uint32(ARENA_TEAM_CHARTER_3v3_COST); // charter cost data << uint32(ARENA_TEAM_CHARTER_3v3_COST); // charter cost
data << uint32(3); // unknown data << uint32(3); // unknown
data << uint32(3); // required signs? data << uint32(3); // required signs?
// 5v5 // 5v5
data << uint32(3); // index data << uint32(3); // index
data << uint32(ARENA_TEAM_CHARTER_5v5); // charter entry data << uint32(ARENA_TEAM_CHARTER_5v5); // charter entry
data << uint32(16161); // charter display id data << uint32(CHARTER_DISPLAY_ID); // charter display id
data << uint32(ARENA_TEAM_CHARTER_5v5_COST); // charter cost data << uint32(ARENA_TEAM_CHARTER_5v5_COST); // charter cost
data << uint32(5); // unknown data << uint32(5); // unknown
data << uint32(5); // required signs? data << uint32(5); // required signs?
@ -950,7 +951,7 @@ void WorldSession::SendPetitionShowList(uint64 guid)
//{ //{
// data << uint32(i); // index // data << uint32(i); // index
// data << uint32(GUILD_CHARTER); // charter entry // data << uint32(GUILD_CHARTER); // charter entry
// data << uint32(16161); // charter display id // data << uint32(CHARTER_DISPLAY_ID); // charter display id
// data << uint32(GUILD_CHARTER_COST+i); // charter cost // data << uint32(GUILD_CHARTER_COST+i); // charter cost
// data << uint32(0); // unknown // data << uint32(0); // unknown
// data << uint32(9); // required signs? // data << uint32(9); // required signs?

View file

@ -386,12 +386,7 @@ void WorldSession::LogoutPlayer(bool Save)
guild->SetMemberStats(_player->GetGUID()); guild->SetMemberStats(_player->GetGUID());
guild->UpdateLogoutTime(_player->GetGUID()); guild->UpdateLogoutTime(_player->GetGUID());
WorldPacket data(SMSG_GUILD_EVENT, (1+1+12+8)); // name limited to 12 in character table. guild->BroadcastEvent(GE_SIGNED_OFF, _player->GetGUID(), 1, _player->GetName(), "", "");
data<<(uint8)GE_SIGNED_OFF;
data<<(uint8)1;
data<<_player->GetName();
data<<_player->GetGUID();
guild->BroadcastPacket(&data);
} }
///- Remove pet ///- Remove pet

View file

@ -243,7 +243,6 @@ class MANGOS_DLL_SPEC WorldSession
// Guild/Arena Team // Guild/Arena Team
void SendGuildCommandResult(uint32 typecmd, const std::string& str, uint32 cmdresult); 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 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 SendNotInArenaTeamPacket(uint8 type);
void SendPetitionShowList( uint64 guid ); void SendPetitionShowList( uint64 guid );
void SendSaveGuildEmblem( uint32 msg ); void SendSaveGuildEmblem( uint32 msg );

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "9352" #define REVISION_NR "9353"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__