aboutsummaryrefslogtreecommitdiff
path: root/src/game/Guild.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Guild.cpp')
-rw-r--r--src/game/Guild.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/game/Guild.cpp b/src/game/Guild.cpp
index cec6507eb7c..bbf8c278ace 100644
--- a/src/game/Guild.cpp
+++ b/src/game/Guild.cpp
@@ -363,6 +363,21 @@ bool Guild::FillPlayerData(uint64 guid, MemberSlot* memslot)
}
else
{
+ PCachePlayerInfo pInfo = objmgr.GetPlayerInfoFromCache(GUID_LOPART(guid));
+ if(pInfo)
+ {
+ plName = pInfo->sPlayerName;
+ plClass = pInfo->unClass;
+ if(plClass<CLASS_WARRIOR||plClass>=MAX_CLASSES) // can be at broken `class` field
+ {
+ sLog.outError("Player (GUID: %u) has a broken data in field `characters`.`class`.",GUID_LOPART(guid));
+ return false;
+ }
+ plLevel = pInfo->unLevel;
+ plZone = Player::GetZoneIdFromDB(guid);
+ }
+ else
+ {
if(!objmgr.GetPlayerNameByGUID(guid, plName)) // player doesn't exist
return false;
@@ -386,6 +401,7 @@ bool Guild::FillPlayerData(uint64 guid, MemberSlot* memslot)
delete result;
}
+ }
memslot->name = plName;
memslot->level = plLevel;