mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
[7841] Fixed: Prevent loading maps/vmaps when building enum.
Signed-off-by: AlexDereka <dereka.alex@gmail.com>
This commit is contained in:
parent
53699e1aa3
commit
b7f09eb37c
3 changed files with 25 additions and 21 deletions
|
|
@ -159,8 +159,8 @@ void WorldSession::HandleCharEnumOpcode( WorldPacket & /*recv_data*/ )
|
||||||
// ------- Query Without Declined Names --------
|
// ------- Query Without Declined Names --------
|
||||||
// 0 1 2 3 4 5 6 7 8
|
// 0 1 2 3 4 5 6 7 8
|
||||||
"SELECT characters.guid, characters.data, characters.name, characters.position_x, characters.position_y, characters.position_z, characters.map, characters.totaltime, characters.leveltime, "
|
"SELECT characters.guid, characters.data, characters.name, characters.position_x, characters.position_y, characters.position_z, characters.map, characters.totaltime, characters.leveltime, "
|
||||||
// 9 10 11 12 13
|
// 9 10 11 12 13 14
|
||||||
"characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, guild_member.guildid "
|
"characters.at_login, characters.zone, character_pet.entry, character_pet.modelid, character_pet.level, guild_member.guildid "
|
||||||
"FROM characters LEFT JOIN character_pet ON characters.guid=character_pet.owner AND character_pet.slot='%u' "
|
"FROM characters LEFT JOIN character_pet ON characters.guid=character_pet.owner AND character_pet.slot='%u' "
|
||||||
"LEFT JOIN guild_member ON characters.guid = guild_member.guid "
|
"LEFT JOIN guild_member ON characters.guid = guild_member.guid "
|
||||||
"WHERE characters.account = '%u' ORDER BY characters.guid"
|
"WHERE characters.account = '%u' ORDER BY characters.guid"
|
||||||
|
|
@ -168,8 +168,8 @@ void WorldSession::HandleCharEnumOpcode( WorldPacket & /*recv_data*/ )
|
||||||
// --------- Query With Declined Names ---------
|
// --------- Query With Declined Names ---------
|
||||||
// 0 1 2 3 4 5 6 7 8
|
// 0 1 2 3 4 5 6 7 8
|
||||||
"SELECT characters.guid, characters.data, characters.name, characters.position_x, characters.position_y, characters.position_z, characters.map, characters.totaltime, characters.leveltime, "
|
"SELECT characters.guid, characters.data, characters.name, characters.position_x, characters.position_y, characters.position_z, characters.map, characters.totaltime, characters.leveltime, "
|
||||||
// 9 10 11 12 13 14
|
// 9 10 11 12 13 14 15
|
||||||
"characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, guild_member.guildid, character_declinedname.genitive "
|
"characters.at_login, characters.zone, character_pet.entry, character_pet.modelid, character_pet.level, guild_member.guildid, character_declinedname.genitive "
|
||||||
"FROM characters LEFT JOIN character_pet ON characters.guid = character_pet.owner AND character_pet.slot='%u' "
|
"FROM characters LEFT JOIN character_pet ON characters.guid = character_pet.owner AND character_pet.slot='%u' "
|
||||||
"LEFT JOIN character_declinedname ON characters.guid = character_declinedname.guid "
|
"LEFT JOIN character_declinedname ON characters.guid = character_declinedname.guid "
|
||||||
"LEFT JOIN guild_member ON characters.guid = guild_member.guid "
|
"LEFT JOIN guild_member ON characters.guid = guild_member.guid "
|
||||||
|
|
|
||||||
|
|
@ -1424,8 +1424,8 @@ void Player::BuildEnumData( QueryResult * result, WorldPacket * p_data )
|
||||||
|
|
||||||
*p_data << uint8(getLevel()); // player level
|
*p_data << uint8(getLevel()); // player level
|
||||||
// do not use GetMap! it will spawn a new instance since the bound instances are not loaded
|
// do not use GetMap! it will spawn a new instance since the bound instances are not loaded
|
||||||
uint32 zoneId = MapManager::Instance().GetZoneId(GetMapId(), GetPositionX(),GetPositionY(),GetPositionZ());
|
uint32 zoneId = fields[10].GetUInt32();
|
||||||
sLog.outDebug("Player::BuildEnumData: m:%u, x:%f, y:%f, z:%f zone:%u", GetMapId(), GetPositionX(), GetPositionY(), GetPositionZ(), zoneId);
|
sLog.outDebug("Player::BuildEnumData: map:%u, x:%f, y:%f, z:%f zone:%u", GetMapId(), GetPositionX(), GetPositionY(), GetPositionZ(), zoneId);
|
||||||
*p_data << uint32(zoneId);
|
*p_data << uint32(zoneId);
|
||||||
*p_data << uint32(GetMapId());
|
*p_data << uint32(GetMapId());
|
||||||
|
|
||||||
|
|
@ -1434,7 +1434,7 @@ void Player::BuildEnumData( QueryResult * result, WorldPacket * p_data )
|
||||||
*p_data << GetPositionZ();
|
*p_data << GetPositionZ();
|
||||||
|
|
||||||
// guild id
|
// guild id
|
||||||
*p_data << (result ? fields[13].GetUInt32() : 0);
|
*p_data << uint32(fields[14].GetUInt32());
|
||||||
|
|
||||||
uint32 char_flags = 0;
|
uint32 char_flags = 0;
|
||||||
if(HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM))
|
if(HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM))
|
||||||
|
|
@ -1447,7 +1447,7 @@ void Player::BuildEnumData( QueryResult * result, WorldPacket * p_data )
|
||||||
char_flags |= CHARACTER_FLAG_RENAME;
|
char_flags |= CHARACTER_FLAG_RENAME;
|
||||||
if(sWorld.getConfig(CONFIG_DECLINED_NAMES_USED))
|
if(sWorld.getConfig(CONFIG_DECLINED_NAMES_USED))
|
||||||
{
|
{
|
||||||
if(!fields[14].GetCppString().empty())
|
if(!fields[15].GetCppString().empty())
|
||||||
char_flags |= CHARACTER_FLAG_DECLINED;
|
char_flags |= CHARACTER_FLAG_DECLINED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1467,12 +1467,12 @@ void Player::BuildEnumData( QueryResult * result, WorldPacket * p_data )
|
||||||
// show pet at selection character in character list only for non-ghost character
|
// show pet at selection character in character list only for non-ghost character
|
||||||
if (result && isAlive() && (pClass == CLASS_WARLOCK || pClass == CLASS_HUNTER || pClass == CLASS_DEATH_KNIGHT))
|
if (result && isAlive() && (pClass == CLASS_WARLOCK || pClass == CLASS_HUNTER || pClass == CLASS_DEATH_KNIGHT))
|
||||||
{
|
{
|
||||||
uint32 entry = fields[10].GetUInt32();
|
uint32 entry = fields[11].GetUInt32();
|
||||||
CreatureInfo const* cInfo = sCreatureStorage.LookupEntry<CreatureInfo>(entry);
|
CreatureInfo const* cInfo = sCreatureStorage.LookupEntry<CreatureInfo>(entry);
|
||||||
if(cInfo)
|
if(cInfo)
|
||||||
{
|
{
|
||||||
petDisplayId = fields[11].GetUInt32();
|
petDisplayId = fields[12].GetUInt32();
|
||||||
petLevel = fields[12].GetUInt32();
|
petLevel = fields[13].GetUInt32();
|
||||||
petFamily = cInfo->family;
|
petFamily = cInfo->family;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -13681,20 +13681,23 @@ void Player::SendQuestUpdateAddCreatureOrGo( Quest const* pQuest, uint64 guid, u
|
||||||
bool Player::MinimalLoadFromDB( QueryResult *result, uint32 guid )
|
bool Player::MinimalLoadFromDB( QueryResult *result, uint32 guid )
|
||||||
{
|
{
|
||||||
bool delete_result = true;
|
bool delete_result = true;
|
||||||
if(!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
// 0 1 2 3 4 5 6 7 8 9
|
// 0 1 2 3 4 5 6 7 8 9 10
|
||||||
result = CharacterDatabase.PQuery("SELECT guid, data, name, position_x, position_y, position_z, map, totaltime, leveltime, at_login FROM characters WHERE guid = '%u'",guid);
|
result = CharacterDatabase.PQuery("SELECT guid, data, name, position_x, position_y, position_z, map, totaltime, leveltime, at_login, zone FROM characters WHERE guid = '%u'",guid);
|
||||||
if(!result) return false;
|
if (!result)
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
else delete_result = false;
|
else
|
||||||
|
delete_result = false;
|
||||||
|
|
||||||
Field *fields = result->Fetch();
|
Field *fields = result->Fetch();
|
||||||
|
|
||||||
if(!LoadValues( fields[1].GetString()))
|
if (!LoadValues( fields[1].GetString()))
|
||||||
{
|
{
|
||||||
sLog.outError("Player #%d have broken data in `data` field. Can't be loaded for character list.",GUID_LOPART(guid));
|
sLog.outError("Player #%d have broken data in `data` field. Can't be loaded for character list.",GUID_LOPART(guid));
|
||||||
if(delete_result) delete result;
|
if (delete_result)
|
||||||
|
delete result;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -13717,12 +13720,13 @@ bool Player::MinimalLoadFromDB( QueryResult *result, uint32 guid )
|
||||||
|
|
||||||
_LoadBoundInstances();*/
|
_LoadBoundInstances();*/
|
||||||
|
|
||||||
if (delete_result) delete result;
|
if (delete_result)
|
||||||
|
delete result;
|
||||||
|
|
||||||
for (int i = 0; i < PLAYER_SLOTS_COUNT; ++i)
|
for (int i = 0; i < PLAYER_SLOTS_COUNT; ++i)
|
||||||
m_items[i] = NULL;
|
m_items[i] = NULL;
|
||||||
|
|
||||||
if( HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST) )
|
if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST))
|
||||||
m_deathState = DEAD;
|
m_deathState = DEAD;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7840"
|
#define REVISION_NR "7841"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue