mirror of
https://github.com/mangosfour/server.git
synced 2025-12-17 16:37:00 +00:00
Further reduce of DB access in guild handlers.
This commit is contained in:
parent
cdb2c08e3f
commit
4957d9f335
2 changed files with 27 additions and 76 deletions
|
|
@ -325,6 +325,10 @@ class Guild
|
||||||
return ((GetRankRights(rankId) & right) != GR_RIGHT_EMPTY) ? true : false;
|
return ((GetRankRights(rankId) & right) != GR_RIGHT_EMPTY) ? true : false;
|
||||||
}
|
}
|
||||||
int32 GetRank(uint32 LowGuid);
|
int32 GetRank(uint32 LowGuid);
|
||||||
|
bool IsMember(uint32 LowGuid)
|
||||||
|
{
|
||||||
|
return (members.find(LowGuid) != members.end());
|
||||||
|
}
|
||||||
|
|
||||||
void Roster(WorldSession *session);
|
void Roster(WorldSession *session);
|
||||||
void Query(WorldSession *session);
|
void Query(WorldSession *session);
|
||||||
|
|
|
||||||
|
|
@ -150,10 +150,6 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||||
CHECK_PACKET_SIZE(recvPacket, 1);
|
CHECK_PACKET_SIZE(recvPacket, 1);
|
||||||
|
|
||||||
std::string plName;
|
std::string plName;
|
||||||
uint64 plGuid;
|
|
||||||
uint32 plGuildId;
|
|
||||||
Guild *guild;
|
|
||||||
Player *player;
|
|
||||||
|
|
||||||
//sLog.outDebug("WORLD: Received CMSG_GUILD_REMOVE");
|
//sLog.outDebug("WORLD: Received CMSG_GUILD_REMOVE");
|
||||||
|
|
||||||
|
|
@ -162,7 +158,7 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||||
if(!normalizePlayerName(plName))
|
if(!normalizePlayerName(plName))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
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);
|
||||||
|
|
@ -175,17 +171,7 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = ObjectAccessor::Instance().FindPlayerByName(plName.c_str());
|
uint64 plGuid = objmgr.GetPlayerGUIDByName(plName);
|
||||||
if(player)
|
|
||||||
{
|
|
||||||
plGuid = player->GetGUID();
|
|
||||||
plGuildId = player->GetGuildId();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
plGuid = objmgr.GetPlayerGUIDByName(plName);
|
|
||||||
plGuildId = Player::GetGuildIdFromDB(plGuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!plGuid)
|
if(!plGuid)
|
||||||
{
|
{
|
||||||
|
|
@ -199,7 +185,7 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GetPlayer()->GetGuildId() != plGuildId)
|
if(!guild->IsMember(GUID_LOPART(plGuid)))
|
||||||
{
|
{
|
||||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||||
return;
|
return;
|
||||||
|
|
@ -484,9 +470,6 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
|
||||||
CHECK_PACKET_SIZE(recvPacket, 1);
|
CHECK_PACKET_SIZE(recvPacket, 1);
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
Player *newLeader;
|
|
||||||
uint64 newLeaderGUID;
|
|
||||||
uint32 newLeaderGuild;
|
|
||||||
Player *oldLeader = GetPlayer();
|
Player *oldLeader = GetPlayer();
|
||||||
Guild *guild;
|
Guild *guild;
|
||||||
|
|
||||||
|
|
@ -511,24 +494,14 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
newLeader = ObjectAccessor::Instance().FindPlayerByName(name.c_str());
|
uint64 newLeaderGUID = objmgr.GetPlayerGUIDByName(name);
|
||||||
if(newLeader)
|
|
||||||
{
|
|
||||||
newLeaderGUID = newLeader->GetGUID();
|
|
||||||
newLeaderGuild = newLeader->GetGuildId();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
newLeaderGUID = objmgr.GetPlayerGUIDByName(name);
|
|
||||||
newLeaderGuild = Player::GetGuildIdFromDB(newLeaderGUID);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!newLeaderGUID)
|
if (!newLeaderGUID)
|
||||||
{
|
{
|
||||||
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND);
|
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(oldLeader->GetGuildId() != newLeaderGuild)
|
if (!guild->IsMember(GUID_LOPART(newLeaderGUID)))
|
||||||
{
|
{
|
||||||
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S);
|
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||||
return;
|
return;
|
||||||
|
|
@ -586,10 +559,6 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
|
||||||
{
|
{
|
||||||
CHECK_PACKET_SIZE(recvPacket, 1);
|
CHECK_PACKET_SIZE(recvPacket, 1);
|
||||||
|
|
||||||
Guild *guild;
|
|
||||||
Player *player;
|
|
||||||
uint64 plGuid;
|
|
||||||
uint32 plGuildId;
|
|
||||||
std::string name,PNOTE;
|
std::string name,PNOTE;
|
||||||
|
|
||||||
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE");
|
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE");
|
||||||
|
|
@ -599,7 +568,7 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
|
||||||
if(!normalizePlayerName(name))
|
if(!normalizePlayerName(name))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||||
|
|
||||||
if (!guild)
|
if (!guild)
|
||||||
{
|
{
|
||||||
|
|
@ -613,24 +582,15 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = ObjectAccessor::Instance().FindPlayerByName(name.c_str());
|
uint64 plGuid = objmgr.GetPlayerGUIDByName(name);
|
||||||
if(player)
|
|
||||||
{
|
|
||||||
plGuid = player->GetGUID();
|
|
||||||
plGuildId = player->GetGuildId();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
plGuid = objmgr.GetPlayerGUIDByName(name);
|
|
||||||
plGuildId = Player::GetGuildIdFromDB(plGuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!plGuid)
|
if (!plGuid)
|
||||||
{
|
{
|
||||||
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND);
|
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if(GetPlayer()->GetGuildId() != plGuildId)
|
|
||||||
|
if (!guild->IsMember(GUID_LOPART(plGuid)))
|
||||||
{
|
{
|
||||||
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S);
|
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||||
return;
|
return;
|
||||||
|
|
@ -646,10 +606,6 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
|
||||||
{
|
{
|
||||||
CHECK_PACKET_SIZE(recvPacket, 1);
|
CHECK_PACKET_SIZE(recvPacket, 1);
|
||||||
|
|
||||||
Guild *guild;
|
|
||||||
Player *player;
|
|
||||||
uint64 plGuid;
|
|
||||||
uint32 plGuildId;
|
|
||||||
std::string plName, OFFNOTE;
|
std::string plName, OFFNOTE;
|
||||||
|
|
||||||
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE");
|
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE");
|
||||||
|
|
@ -659,7 +615,7 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
|
||||||
if (!normalizePlayerName(plName))
|
if (!normalizePlayerName(plName))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId());
|
||||||
|
|
||||||
if (!guild)
|
if (!guild)
|
||||||
{
|
{
|
||||||
|
|
@ -672,24 +628,15 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = ObjectAccessor::Instance().FindPlayerByName(plName.c_str());
|
uint64 plGuid = objmgr.GetPlayerGUIDByName(plName);
|
||||||
if(player)
|
|
||||||
{
|
|
||||||
plGuid = player->GetGUID();
|
|
||||||
plGuildId = player->GetGuildId();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
plGuid = objmgr.GetPlayerGUIDByName(plName);
|
|
||||||
plGuildId = Player::GetGuildIdFromDB(plGuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!plGuid)
|
if (!plGuid)
|
||||||
{
|
{
|
||||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND);
|
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if(GetPlayer()->GetGuildId() != plGuildId)
|
|
||||||
|
if (!guild->IsMember(GUID_LOPART(plGuid)))
|
||||||
{
|
{
|
||||||
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue