[8078] Fixed typos in character data loading after recently added new field.

* Really use race/class/gender fields instead `data` field values.
* Load extra flags (gm mode onm gm fly mode, gm invisibility and etc) from proper field.

NOTE: recommedned reset characters.extra_flags field to 0 for all characters.
It can be corrupted in time login/logout before this fix.
This commit is contained in:
VladimirMangos 2009-06-26 04:01:31 +04:00
parent 21a6a26386
commit 2719ae2efa
3 changed files with 14 additions and 6 deletions

View file

@ -13942,9 +13942,11 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
// overwrite some data fields
uint32 bytes0 = GetUInt32Value(UNIT_FIELD_BYTES_0) & 0xFF000000;
bytes0 |= fields[4].GetUInt8();
bytes0 |= fields[5].GetUInt8() << 8;
bytes0 |= fields[6].GetUInt8() << 16;
bytes0 |= fields[4].GetUInt8(); // race
bytes0 |= fields[5].GetUInt8() << 8; // class
bytes0 |= fields[6].GetUInt8() << 16; // gender
SetUInt32Value(UNIT_FIELD_BYTES_0, bytes0);
SetUInt32Value(UNIT_FIELD_LEVEL, fields[7].GetUInt8());
SetUInt32Value(PLAYER_XP, fields[8].GetUInt32());
SetUInt32Value(PLAYER_FIELD_COINAGE, fields[9].GetUInt32());
@ -14205,7 +14207,7 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
//speed collect rest bonus in offline, in logout, in tavern, city (section/in hour)
float bubble1 = 0.125;
if((int32)fields[23].GetUInt32() > 0)
if(time_diff > 0)
{
float bubble = fields[24].GetUInt32() > 0
? bubble1*sWorld.getRate(RATE_REST_OFFLINE_IN_TAVERN_OR_CITY)
@ -14229,7 +14231,7 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
m_taxi.LoadTaxiMask( fields[18].GetString() ); // must be before InitTaxiNodesForLevel
uint32 extraflags = fields[25].GetUInt32();
uint32 extraflags = fields[32].GetUInt32();
m_stableSlots = fields[33].GetUInt32();
if(m_stableSlots > MAX_PET_STABLES)
@ -20332,4 +20334,9 @@ void Player::BuildTeleportAckMsg( WorldPacket *data, float x, float y, float z,
*data << z;
*data << ang;
*data << uint32(0);
}
bool Player::HasMovementFlag( MovementFlags f ) const
{
return m_movementInfo.HasMovementFlag(f);
}