aboutsummaryrefslogtreecommitdiff
path: root/src/game/Guild.cpp
diff options
context:
space:
mode:
authorKingPin <none@none>2008-10-21 12:43:24 -0500
committerKingPin <none@none>2008-10-21 12:43:24 -0500
commited94fdb8bc88ed204df805ad292da5c1e2018dde (patch)
tree40a71c55053d3ccd480eba879dc916fc304f9067 /src/game/Guild.cpp
parentd0325e253616e855df37a2d23414ff6b93db93bf (diff)
[svn] * Added some player info cache to the core. Thanx to Rognar for patch, visaglis for testing and bugging me to add it.
--HG-- branch : trunk
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;