This commit is contained in:
tomrus88 2009-08-28 19:14:16 +04:00
parent 0f5380a385
commit 94fdc7e37e
3 changed files with 208 additions and 282 deletions

View file

@ -54,12 +54,11 @@ void WorldSession::HandleArenaTeamQueryOpcode(WorldPacket & recv_data)
uint32 ArenaTeamId; uint32 ArenaTeamId;
recv_data >> ArenaTeamId; recv_data >> ArenaTeamId;
ArenaTeam *arenateam = objmgr.GetArenaTeamById(ArenaTeamId); if(ArenaTeam *arenateam = objmgr.GetArenaTeamById(ArenaTeamId))
if(!arenateam) // arena team not found {
return;
arenateam->Query(this); arenateam->Query(this);
arenateam->Stats(this); arenateam->Stats(this);
}
} }
void WorldSession::HandleArenaTeamRosterOpcode(WorldPacket & recv_data) void WorldSession::HandleArenaTeamRosterOpcode(WorldPacket & recv_data)
@ -69,10 +68,7 @@ void WorldSession::HandleArenaTeamRosterOpcode(WorldPacket & recv_data)
uint32 ArenaTeamId; // arena team id uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId; recv_data >> ArenaTeamId;
ArenaTeam *arenateam = objmgr.GetArenaTeamById(ArenaTeamId); if(ArenaTeam *arenateam = objmgr.GetArenaTeamById(ArenaTeamId))
if(!arenateam)
return;
arenateam->Roster(this); arenateam->Roster(this);
} }
@ -203,12 +199,14 @@ void WorldSession::HandleArenaTeamLeaveOpcode(WorldPacket & recv_data)
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId); ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
if(!at) if(!at)
return; return;
if(_player->GetGUID() == at->GetCaptain() && at->GetMembersSize() > 1) if(_player->GetGUID() == at->GetCaptain() && at->GetMembersSize() > 1)
{ {
// check for correctness // check for correctness
SendArenaTeamCommandResult(ERR_ARENA_TEAM_QUIT_S, "", "", ERR_ARENA_TEAM_LEADER_LEAVE_S); SendArenaTeamCommandResult(ERR_ARENA_TEAM_QUIT_S, "", "", ERR_ARENA_TEAM_LEADER_LEAVE_S);
return; return;
} }
// arena team has only one member (=captain) // arena team has only one member (=captain)
if(_player->GetGUID() == at->GetCaptain()) if(_player->GetGUID() == at->GetCaptain())
{ {
@ -235,18 +233,17 @@ void WorldSession::HandleArenaTeamDisbandOpcode(WorldPacket & recv_data)
uint32 ArenaTeamId; // arena team id uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId; recv_data >> ArenaTeamId;
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId); if(ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId))
if(!at) {
return;
if(at->GetCaptain() != _player->GetGUID()) if(at->GetCaptain() != _player->GetGUID())
return; return;
if (at->IsFighting()) if(at->IsFighting())
return; return;
at->Disband(this); at->Disband(this);
delete at; delete at;
}
} }
void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket & recv_data) void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket & recv_data)

View file

@ -29,36 +29,32 @@
void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_QUERY");
uint32 guildId; uint32 guildId;
Guild *guild;
//sLog.outDebug("WORLD: Received CMSG_GUILD_QUERY");
recvPacket >> guildId; recvPacket >> guildId;
guild = objmgr.GetGuildById(guildId); if(Guild *guild = objmgr.GetGuildById(guildId))
if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); guild->Query(this);
return; return;
} }
guild->Query(this); SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
} }
void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_CREATE");
std::string gname; std::string gname;
//sLog.outDebug("WORLD: Received CMSG_GUILD_CREATE");
recvPacket >> gname; recvPacket >> gname;
if(GetPlayer()->GetGuildId()) if(GetPlayer()->GetGuildId()) // already in guild
return; return;
Guild *guild = new Guild; Guild *guild = new Guild;
if(!guild->Create(GetPlayer(),gname)) if(!guild->Create(GetPlayer(), gname))
{ {
delete guild; delete guild;
return; return;
@ -69,10 +65,9 @@ void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_INVITE");
std::string Invitedname, plname; std::string Invitedname, plname;
//sLog.outDebug("WORLD: Received CMSG_GUILD_INVITE");
Player * player = NULL; Player * player = NULL;
recvPacket >> Invitedname; recvPacket >> Invitedname;
@ -135,15 +130,14 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
data << guild->GetName(); data << guild->GetName();
player->GetSession()->SendPacket(&data); player->GetSession()->SendPacket(&data);
//sLog.outDebug("WORLD: Sent (SMSG_GUILD_INVITE)"); sLog.outDebug("WORLD: Sent (SMSG_GUILD_INVITE)");
} }
void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_REMOVE");
std::string plName; std::string plName;
//sLog.outDebug("WORLD: Received CMSG_GUILD_REMOVE");
recvPacket >> plName; recvPacket >> plName;
if(!normalizePlayerName(plName)) if(!normalizePlayerName(plName))
@ -200,7 +194,7 @@ void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
Guild *guild; Guild *guild;
Player *player = GetPlayer(); Player *player = GetPlayer();
//sLog.outDebug("WORLD: Received CMSG_GUILD_ACCEPT"); sLog.outDebug("WORLD: Received CMSG_GUILD_ACCEPT");
guild = objmgr.GetGuildById(player->GetGuildIdInvited()); guild = objmgr.GetGuildById(player->GetGuildIdInvited());
if(!guild || player->GetGuildId()) if(!guild || player->GetGuildId())
@ -221,12 +215,12 @@ void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
data << player->GetName(); data << player->GetName();
guild->BroadcastPacket(&data); guild->BroadcastPacket(&data);
//sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)"); sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
} }
void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/)
{ {
//sLog.outDebug("WORLD: Received CMSG_GUILD_DECLINE"); sLog.outDebug("WORLD: Received CMSG_GUILD_DECLINE");
GetPlayer()->SetGuildIdInvited(0); GetPlayer()->SetGuildIdInvited(0);
GetPlayer()->SetInGuild(0); GetPlayer()->SetInGuild(0);
@ -234,10 +228,9 @@ void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/)
{ {
Guild *guild; sLog.outDebug("WORLD: Received CMSG_GUILD_INFO");
//sLog.outDebug("WORLD: Received CMSG_GUILD_INFO");
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
@ -257,21 +250,17 @@ void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildRosterOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildRosterOpcode(WorldPacket& /*recvPacket*/)
{ {
//sLog.outDebug("WORLD: Received CMSG_GUILD_ROSTER"); sLog.outDebug("WORLD: Received CMSG_GUILD_ROSTER");
Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild)
return;
if(Guild* guild = objmgr.GetGuildById(_player->GetGuildId()))
guild->Roster(this); guild->Roster(this);
} }
void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_PROMOTE");
std::string plName; std::string plName;
//sLog.outDebug("WORLD: Received CMSG_GUILD_PROMOTE");
recvPacket >> plName; recvPacket >> plName;
if(!normalizePlayerName(plName)) if(!normalizePlayerName(plName))
@ -330,10 +319,9 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_DEMOTE");
std::string plName; std::string plName;
//sLog.outDebug("WORLD: Received CMSG_GUILD_DEMOTE");
recvPacket >> plName; recvPacket >> plName;
if(!normalizePlayerName(plName)) if(!normalizePlayerName(plName))
@ -399,17 +387,15 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
{ {
std::string plName; sLog.outDebug("WORLD: Received CMSG_GUILD_LEAVE");
Guild *guild;
//sLog.outDebug("WORLD: Received CMSG_GUILD_LEAVE"); Guild *guild = objmgr.GetGuildById(_player->GetGuildId());
guild = objmgr.GetGuildById(_player->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", 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, "", GUILD_LEADER_LEAVE);
@ -422,8 +408,6 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
return; return;
} }
plName = _player->GetName();
guild->DelMember(_player->GetGUID()); guild->DelMember(_player->GetGUID());
// Put record into guildlog // Put record into guildlog
guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetGUIDLow(), 0, 0); guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetGUIDLow(), 0, 0);
@ -431,27 +415,25 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
WorldPacket data(SMSG_GUILD_EVENT, (2+10)); // guess size WorldPacket data(SMSG_GUILD_EVENT, (2+10)); // guess size
data << (uint8)GE_LEFT; data << (uint8)GE_LEFT;
data << (uint8)1; // strings count data << (uint8)1; // strings count
data << plName; data << _player->GetName();
guild->BroadcastPacket(&data); guild->BroadcastPacket(&data);
//sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)"); 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(), GUILD_PLAYER_NO_MORE_IN_GUILD);
} }
void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
{ {
std::string name; sLog.outDebug("WORLD: Received CMSG_GUILD_DISBAND");
Guild *guild;
//sLog.outDebug("WORLD: Received CMSG_GUILD_DISBAND"); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", 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, "", GUILD_PERMISSIONS);
@ -460,23 +442,22 @@ void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
guild->Disband(); guild->Disband();
//sLog.outDebug("WORLD: Guild Sucefully Disbanded"); sLog.outDebug("WORLD: Guild Successfully Disbanded");
} }
void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_LEADER");
std::string name; std::string name;
Player *oldLeader = GetPlayer();
Guild *guild;
//sLog.outDebug("WORLD: Received CMSG_GUILD_LEADER");
recvPacket >> name; recvPacket >> name;
Player *oldLeader = GetPlayer();
if(!normalizePlayerName(name)) if(!normalizePlayerName(name))
return; return;
guild = objmgr.GetGuildById(oldLeader->GetGuildId()); Guild *guild = objmgr.GetGuildById(oldLeader->GetGuildId());
if (!guild) if (!guild)
{ {
@ -509,17 +490,21 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
data << name.c_str(); data << name.c_str();
guild->BroadcastPacket(&data); guild->BroadcastPacket(&data);
//sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)"); sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
} }
void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
{ {
Guild *guild; sLog.outDebug("WORLD: Received CMSG_GUILD_MOTD");
std::string MOTD; std::string MOTD;
//sLog.outDebug("WORLD: Received CMSG_GUILD_MOTD"); if(!recvPacket.empty())
recvPacket >> MOTD;
else
MOTD = "";
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
@ -531,11 +516,6 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
return; return;
} }
if(!recvPacket.empty())
recvPacket >> MOTD;
else
MOTD = "";
guild->SetMOTD(MOTD); guild->SetMOTD(MOTD);
WorldPacket data(SMSG_GUILD_EVENT, (2+MOTD.size()+1)); WorldPacket data(SMSG_GUILD_EVENT, (2+MOTD.size()+1));
@ -544,15 +524,14 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
data << MOTD; data << MOTD;
guild->BroadcastPacket(&data); guild->BroadcastPacket(&data);
//sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)"); sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)");
} }
void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE");
std::string name,PNOTE; std::string name,PNOTE;
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE");
recvPacket >> name; recvPacket >> name;
if(!normalizePlayerName(name)) if(!normalizePlayerName(name))
@ -589,10 +568,9 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
{ {
sLog.outDebug("WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE");
std::string plName, OFFNOTE; std::string plName, OFFNOTE;
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE");
recvPacket >> plName; recvPacket >> plName;
if (!normalizePlayerName(plName)) if (!normalizePlayerName(plName))
@ -628,23 +606,19 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
{ {
//recvPacket.hexlike();
Guild *guild;
std::string rankname; std::string rankname;
uint32 rankId; uint32 rankId;
uint32 rights, MoneyPerDay; uint32 rights, MoneyPerDay;
//sLog.outDebug("WORLD: Received CMSG_GUILD_RANK"); sLog.outDebug("WORLD: Received CMSG_GUILD_RANK");
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
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, "", 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
@ -683,12 +657,12 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
{ {
Guild *guild; sLog.outDebug("WORLD: Received CMSG_GUILD_ADD_RANK");
std::string rankname; std::string rankname;
recvPacket >> rankname;
//sLog.outDebug("WORLD: Received CMSG_GUILD_ADD_RANK"); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD);
@ -704,8 +678,6 @@ void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
if(guild->GetRanksSize() >= GUILD_RANKS_MAX_COUNT) // client not let create more 10 than ranks if(guild->GetRanksSize() >= GUILD_RANKS_MAX_COUNT) // client not let create more 10 than ranks
return; return;
recvPacket >> rankname;
guild->CreateRank(rankname, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK); guild->CreateRank(rankname, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK);
guild->Query(this); guild->Query(this);
@ -714,18 +686,14 @@ void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/) void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/)
{ {
Guild *guild; sLog.outDebug("WORLD: Received CMSG_GUILD_DEL_RANK");
std::string rankname;
//sLog.outDebug("WORLD: Received CMSG_GUILD_DEL_RANK"); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); SendGuildCommandResult(GUILD_CREATE_S, "", 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, "", GUILD_PERMISSIONS);
@ -746,15 +714,14 @@ void WorldSession::SendGuildCommandResult(uint32 typecmd, const std::string& str
data << cmdresult; data << cmdresult;
SendPacket(&data); SendPacket(&data);
//sLog.outDebug("WORLD: Sent (SMSG_GUILD_COMMAND_RESULT)"); sLog.outDebug("WORLD: Sent (SMSG_GUILD_COMMAND_RESULT)");
} }
void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
{ {
//sLog.outDebug("WORLD: Received CMSG_GUILD_INFO_TEXT"); sLog.outDebug("WORLD: Received CMSG_GUILD_INFO_TEXT");
std::string GINFO; std::string GINFO;
recvPacket >> GINFO; recvPacket >> GINFO;
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
@ -775,17 +742,13 @@ void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket) void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket)
{ {
//sLog.outDebug("WORLD: Received MSG_SAVE_GUILD_EMBLEM"); sLog.outDebug("WORLD: Received MSG_SAVE_GUILD_EMBLEM");
uint64 vendorGuid; uint64 vendorGuid;
uint32 EmblemStyle, EmblemColor, BorderStyle, BorderColor, BackgroundColor;
uint32 EmblemStyle;
uint32 EmblemColor;
uint32 BorderStyle;
uint32 BorderColor;
uint32 BackgroundColor;
recvPacket >> vendorGuid; recvPacket >> vendorGuid;
recvPacket >> EmblemStyle >> EmblemColor >> BorderStyle >> BorderColor >> BackgroundColor;
Creature *pCreature = GetPlayer()->GetNPCIfCanInteractWith(vendorGuid,UNIT_NPC_FLAG_TABARDDESIGNER); Creature *pCreature = GetPlayer()->GetNPCIfCanInteractWith(vendorGuid,UNIT_NPC_FLAG_TABARDDESIGNER);
if (!pCreature) if (!pCreature)
@ -800,12 +763,6 @@ void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket)
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED)) if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH); GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
recvPacket >> EmblemStyle;
recvPacket >> EmblemColor;
recvPacket >> BorderStyle;
recvPacket >> BorderColor;
recvPacket >> BackgroundColor;
Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); Guild *guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild) if(!guild)
{ {
@ -841,16 +798,9 @@ void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */)
{ {
// empty // empty
sLog.outDebug("WORLD: Received (MSG_GUILD_EVENT_LOG_QUERY)"); sLog.outDebug("WORLD: Received (MSG_GUILD_EVENT_LOG_QUERY)");
//recvPacket.hexlike();
uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0)
return;
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
if(uint32 GuildId = GetPlayer()->GetGuildId())
if(Guild *pGuild = objmgr.GetGuildById(GuildId))
pGuild->DisplayGuildEventLog(this); pGuild->DisplayGuildEventLog(this);
} }
@ -859,16 +809,9 @@ void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */)
void WorldSession::HandleGuildBankMoneyWithdrawn( WorldPacket & /* recv_data */ ) void WorldSession::HandleGuildBankMoneyWithdrawn( WorldPacket & /* recv_data */ )
{ {
sLog.outDebug("WORLD: Received (MSG_GUILD_BANK_MONEY_WITHDRAWN)"); sLog.outDebug("WORLD: Received (MSG_GUILD_BANK_MONEY_WITHDRAWN)");
//recv_data.hexlike();
uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0)
return;
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
if(uint32 GuildId = GetPlayer()->GetGuildId())
if(Guild *pGuild = objmgr.GetGuildById(GuildId))
pGuild->SendMoneyInfo(this, GetPlayer()->GetGUIDLow()); pGuild->SendMoneyInfo(this, GetPlayer()->GetGUIDLow());
} }
@ -876,14 +819,10 @@ void WorldSession::HandleGuildPermissions( WorldPacket& /* recv_data */ )
{ {
sLog.outDebug("WORLD: Received (MSG_GUILD_PERMISSIONS)"); sLog.outDebug("WORLD: Received (MSG_GUILD_PERMISSIONS)");
uint32 GuildId = GetPlayer()->GetGuildId(); if(uint32 GuildId = GetPlayer()->GetGuildId())
if (GuildId == 0) {
return; if(Guild *pGuild = objmgr.GetGuildById(GuildId))
{
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
uint32 rankId = GetPlayer()->GetRank(); uint32 rankId = GetPlayer()->GetRank();
WorldPacket data(MSG_GUILD_PERMISSIONS, 4*15+1); WorldPacket data(MSG_GUILD_PERMISSIONS, 4*15+1);
@ -900,12 +839,15 @@ void WorldSession::HandleGuildPermissions( WorldPacket& /* recv_data */ )
} }
SendPacket(&data); SendPacket(&data);
sLog.outDebug("WORLD: Sent (MSG_GUILD_PERMISSIONS)"); sLog.outDebug("WORLD: Sent (MSG_GUILD_PERMISSIONS)");
}
}
} }
/* Called when clicking on Guild bank gameobject */ /* Called when clicking on Guild bank gameobject */
void WorldSession::HandleGuildBankerActivate( WorldPacket & recv_data ) void WorldSession::HandleGuildBankerActivate( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANKER_ACTIVATE)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANKER_ACTIVATE)");
uint64 GoGuid; uint64 GoGuid;
uint8 unk; uint8 unk;
recv_data >> GoGuid >> unk; recv_data >> GoGuid >> unk;
@ -929,31 +871,31 @@ void WorldSession::HandleGuildBankerActivate( WorldPacket & recv_data )
void WorldSession::HandleGuildBankQueryTab( WorldPacket & recv_data ) void WorldSession::HandleGuildBankQueryTab( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_QUERY_TAB)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_QUERY_TAB)");
uint64 GoGuid; uint64 GoGuid;
uint8 TabId,unk1; uint8 TabId, unk1;
recv_data >> GoGuid >> TabId >> unk1; recv_data >> GoGuid >> TabId >> unk1;
if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK)) if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
return; return;
uint32 GuildId = GetPlayer()->GetGuildId(); if(uint32 GuildId = GetPlayer()->GetGuildId())
if (GuildId == 0) {
return; if(Guild *pGuild = objmgr.GetGuildById(GuildId))
{
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
// Let's update the amount of gold the player can withdraw before displaying the content // Let's update the amount of gold the player can withdraw before displaying the content
// This is usefull if money withdraw right has changed // This is useful if money withdraw right has changed
pGuild->SendMoneyInfo(this, GetPlayer()->GetGUIDLow()); pGuild->SendMoneyInfo(this, GetPlayer()->GetGUIDLow());
pGuild->DisplayGuildBankContent(this, TabId); pGuild->DisplayGuildBankContent(this, TabId);
}
}
} }
void WorldSession::HandleGuildBankDepositMoney( WorldPacket & recv_data ) void WorldSession::HandleGuildBankDepositMoney( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_DEPOSIT_MONEY)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_DEPOSIT_MONEY)");
uint64 GoGuid; uint64 GoGuid;
uint32 money; uint32 money;
recv_data >> GoGuid >> money; recv_data >> GoGuid >> money;
@ -964,17 +906,13 @@ void WorldSession::HandleGuildBankDepositMoney( WorldPacket & recv_data )
if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK)) if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
return; return;
uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0)
return;
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
if (GetPlayer()->GetMoney() < money) if (GetPlayer()->GetMoney() < money)
return; return;
if(uint32 GuildId = GetPlayer()->GetGuildId())
{
if(Guild *pGuild = objmgr.GetGuildById(GuildId))
{
CharacterDatabase.BeginTransaction(); CharacterDatabase.BeginTransaction();
pGuild->SetBankMoney(pGuild->GetGuildBankMoney()+money); pGuild->SetBankMoney(pGuild->GetGuildBankMoney()+money);
@ -996,11 +934,14 @@ void WorldSession::HandleGuildBankDepositMoney( WorldPacket & recv_data )
pGuild->DisplayGuildBankTabsInfo(this); pGuild->DisplayGuildBankTabsInfo(this);
pGuild->DisplayGuildBankContent(this, 0); pGuild->DisplayGuildBankContent(this, 0);
pGuild->DisplayGuildBankMoneyUpdate(); pGuild->DisplayGuildBankMoneyUpdate();
}
}
} }
void WorldSession::HandleGuildBankWithdrawMoney( WorldPacket & recv_data ) void WorldSession::HandleGuildBankWithdrawMoney( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_WITHDRAW_MONEY)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_WITHDRAW_MONEY)");
uint64 GoGuid; uint64 GoGuid;
uint32 money; uint32 money;
recv_data >> GoGuid >> money; recv_data >> GoGuid >> money;
@ -1050,7 +991,6 @@ void WorldSession::HandleGuildBankWithdrawMoney( WorldPacket & recv_data )
void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data ) void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_SWAP_ITEMS)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_SWAP_ITEMS)");
//recv_data.hexlike();
uint64 GoGuid; uint64 GoGuid;
uint8 BankToBank; uint8 BankToBank;
@ -1112,27 +1052,21 @@ void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK)) if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
return; return;
uint32 GuildId = GetPlayer()->GetGuildId(); if(uint32 GuildId = GetPlayer()->GetGuildId())
if (GuildId == 0) {
return; if(Guild *pGuild = objmgr.GetGuildById(GuildId))
{
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
Player *pl = GetPlayer();
// Bank <-> Bank // Bank <-> Bank
if (BankToBank) if (BankToBank)
{ {
pGuild->SwapItems(pl, BankTab, BankTabSlot, BankTabDst, BankTabSlotDst, SplitedAmount); pGuild->SwapItems(_player, BankTab, BankTabSlot, BankTabDst, BankTabSlotDst, SplitedAmount);
return; return;
} }
// Player <-> Bank // Player <-> Bank
// allow work with inventory only // allow work with inventory only
if(!Player::IsInventoryPos(PlayerBag,PlayerSlot) && !(PlayerBag == NULL_BAG && PlayerSlot == NULL_SLOT) ) if(!Player::IsInventoryPos(PlayerBag, PlayerSlot) && !(PlayerBag == NULL_BAG && PlayerSlot == NULL_SLOT) )
{ {
_player->SendEquipError( EQUIP_ERR_NONE, NULL, NULL ); _player->SendEquipError( EQUIP_ERR_NONE, NULL, NULL );
return; return;
@ -1140,15 +1074,17 @@ void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
// BankToChar swap or char to bank remaining // BankToChar swap or char to bank remaining
if (ToChar) // Bank -> Char cases if (ToChar) // Bank -> Char cases
pGuild->MoveFromBankToChar(pl, BankTab, BankTabSlot, PlayerBag, PlayerSlot, SplitedAmount); pGuild->MoveFromBankToChar(_player, BankTab, BankTabSlot, PlayerBag, PlayerSlot, SplitedAmount);
else // Char -> Bank cases else // Char -> Bank cases
pGuild->MoveFromCharToBank(pl, PlayerBag, PlayerSlot, BankTab, BankTabSlot, SplitedAmount); pGuild->MoveFromCharToBank(_player, PlayerBag, PlayerSlot, BankTab, BankTabSlot, SplitedAmount);
}
}
} }
void WorldSession::HandleGuildBankBuyTab( WorldPacket & recv_data ) void WorldSession::HandleGuildBankBuyTab( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_BUY_TAB)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_BUY_TAB)");
//recv_data.hexlike();
uint64 GoGuid; uint64 GoGuid;
uint8 TabId; uint8 TabId;
@ -1175,7 +1111,7 @@ void WorldSession::HandleGuildBankBuyTab( WorldPacket & recv_data )
if (TabId != pGuild->GetPurchasedTabs()) // m_PurchasedTabs = 0 when buying Tab 0, that is why this check can be made if (TabId != pGuild->GetPurchasedTabs()) // m_PurchasedTabs = 0 when buying Tab 0, that is why this check can be made
{ {
sLog.outError("Error: trying to buy a tab non contigous to owned ones"); sLog.outError("Error: trying to buy a tab non contiguous to owned ones");
return; return;
} }
@ -1194,7 +1130,7 @@ void WorldSession::HandleGuildBankBuyTab( WorldPacket & recv_data )
void WorldSession::HandleGuildBankUpdateTab( WorldPacket & recv_data ) void WorldSession::HandleGuildBankUpdateTab( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_UPDATE_TAB)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_UPDATE_TAB)");
//recv_data.hexlike();
uint64 GoGuid; uint64 GoGuid;
uint8 TabId; uint8 TabId;
std::string Name; std::string Name;
@ -1214,34 +1150,26 @@ void WorldSession::HandleGuildBankUpdateTab( WorldPacket & recv_data )
if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK)) if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
return; return;
uint32 GuildId = GetPlayer()->GetGuildId(); if(uint32 GuildId = GetPlayer()->GetGuildId())
if (GuildId==0) {
return; if(Guild *pGuild = objmgr.GetGuildById(GuildId))
{
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
pGuild->SetGuildBankTabInfo(TabId, Name, IconIndex); pGuild->SetGuildBankTabInfo(TabId, Name, IconIndex);
pGuild->DisplayGuildBankTabsInfo(this); pGuild->DisplayGuildBankTabsInfo(this);
pGuild->DisplayGuildBankContent(this, TabId); pGuild->DisplayGuildBankContent(this, TabId);
}
}
} }
void WorldSession::HandleGuildBankLogQuery( WorldPacket & recv_data ) void WorldSession::HandleGuildBankLogQuery( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (MSG_GUILD_BANK_LOG_QUERY)"); sLog.outDebug("WORLD: Received (MSG_GUILD_BANK_LOG_QUERY)");
uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0)
return;
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
uint8 TabId; uint8 TabId;
recv_data >> TabId; recv_data >> TabId;
if(uint32 GuildId = GetPlayer()->GetGuildId())
if(Guild *pGuild = objmgr.GetGuildById(GuildId))
pGuild->DisplayGuildBankLogs(this, TabId); pGuild->DisplayGuildBankLogs(this, TabId);
} }
@ -1249,36 +1177,25 @@ void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recv_data)
{ {
sLog.outDebug("WORLD: Received MSG_QUERY_GUILD_BANK_TEXT"); sLog.outDebug("WORLD: Received MSG_QUERY_GUILD_BANK_TEXT");
uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0)
return;
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
uint8 TabId; uint8 TabId;
recv_data >> TabId; recv_data >> TabId;
if(uint32 GuildId = GetPlayer()->GetGuildId())
if(Guild *pGuild = objmgr.GetGuildById(GuildId))
pGuild->SendGuildBankTabText(this, TabId); pGuild->SendGuildBankTabText(this, TabId);
} }
void WorldSession::HandleSetGuildBankTabText(WorldPacket &recv_data) void WorldSession::HandleSetGuildBankTabText(WorldPacket &recv_data)
{ {
sLog.outDebug("WORLD: Received CMSG_SET_GUILD_BANK_TEXT"); sLog.outDebug("WORLD: Received CMSG_SET_GUILD_BANK_TEXT");
uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0)
return;
Guild *pGuild = objmgr.GetGuildById(GuildId);
if(!pGuild)
return;
uint8 TabId; uint8 TabId;
std::string Text; std::string Text;
recv_data >> TabId; recv_data >> TabId;
recv_data >> Text; recv_data >> Text;
if(uint32 GuildId = GetPlayer()->GetGuildId())
if(Guild *pGuild = objmgr.GetGuildById(GuildId))
pGuild->SetGuildBankTabText(TabId, Text); pGuild->SetGuildBankTabText(TabId, Text);
} }

View file

@ -1466,6 +1466,12 @@ bool ObjectMgr::GetPlayerNameByGUID(const uint64 &guid, std::string &name) const
uint32 ObjectMgr::GetPlayerTeamByGUID(const uint64 &guid) const uint32 ObjectMgr::GetPlayerTeamByGUID(const uint64 &guid) const
{ {
// prevent DB access for online player
if(Player* player = GetPlayer(guid))
{
return Player::TeamForRace(player->getRace());
}
QueryResult *result = CharacterDatabase.PQuery("SELECT race FROM characters WHERE guid = '%u'", GUID_LOPART(guid)); QueryResult *result = CharacterDatabase.PQuery("SELECT race FROM characters WHERE guid = '%u'", GUID_LOPART(guid));
if(result) if(result)
@ -1480,6 +1486,12 @@ uint32 ObjectMgr::GetPlayerTeamByGUID(const uint64 &guid) const
uint32 ObjectMgr::GetPlayerAccountIdByGUID(const uint64 &guid) const uint32 ObjectMgr::GetPlayerAccountIdByGUID(const uint64 &guid) const
{ {
// prevent DB access for online player
if(Player* player = GetPlayer(guid))
{
return player->GetSession()->GetAccountId();
}
QueryResult *result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE guid = '%u'", GUID_LOPART(guid)); QueryResult *result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE guid = '%u'", GUID_LOPART(guid));
if(result) if(result)
{ {