Index: src/game/Guild.cpp =================================================================== --- src/game/Guild.cpp (revision 4867) +++ src/game/Guild.cpp (working copy) @@ -310,6 +310,11 @@ memslot->Class = plClass; memslot->zoneId = plZone; + // FIXME: not correct for offline players + // but don't want to add another query just for this + // it will be updated next time the character goes offline anyway + memslot->logout_time = (uint64)time(NULL); + return(true); } @@ -327,6 +332,7 @@ itr->name = pl->GetName(); itr->level = pl->getLevel(); itr->Class = pl->getClass(); + itr->logout_time = (uint64)time(NULL); } } } @@ -671,14 +677,6 @@ } else { - uint64 logout_time = 0; - QueryResult *result = CharacterDatabase.PQuery("SELECT `logout_time` FROM `character` WHERE `guid`='%u'", GUID_LOPART(itr->guid)); - if(result) - { - logout_time = (*result)[0].GetUInt64(); - delete result; - } - data << itr->guid; data << (uint8)0; data << itr->name; @@ -686,7 +684,7 @@ data << itr->level; data << itr->Class; data << itr->zoneId; - data << (float(time(NULL)-logout_time) / DAY); + data << (float(time(NULL)-itr->logout_time) / DAY); data << itr->Pnote; data << itr->OFFnote; } Index: src/game/Guild.h =================================================================== --- src/game/Guild.h (revision 4867) +++ src/game/Guild.h (working copy) @@ -128,11 +128,14 @@ struct MemberSlot { uint64 guid; - std::string name; + uint64 logout_time; + std::string name; + std::string Pnote; + std::string OFFnote; uint32 RankId; - uint8 level,Class; uint32 zoneId; - std::string Pnote, OFFnote; + uint8 level; + uint8 Class; }; struct RankInfo