[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.
Author: VladimirMangos
--HG--
branch : trunk
This commit is contained in:
+7
-5
@@ -14382,9 +14382,11 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
|
|||||||
|
|
||||||
// overwrite some data fields
|
// overwrite some data fields
|
||||||
uint32 bytes0 = GetUInt32Value(UNIT_FIELD_BYTES_0) & 0xFF000000;
|
uint32 bytes0 = GetUInt32Value(UNIT_FIELD_BYTES_0) & 0xFF000000;
|
||||||
bytes0 |= fields[4].GetUInt8();
|
bytes0 |= fields[4].GetUInt8(); // race
|
||||||
bytes0 |= fields[5].GetUInt8() << 8;
|
bytes0 |= fields[5].GetUInt8() << 8; // class
|
||||||
bytes0 |= fields[6].GetUInt8() << 16;
|
bytes0 |= fields[6].GetUInt8() << 16; // gender
|
||||||
|
SetUInt32Value(UNIT_FIELD_BYTES_0, bytes0);
|
||||||
|
|
||||||
SetUInt32Value(UNIT_FIELD_LEVEL, fields[7].GetUInt8());
|
SetUInt32Value(UNIT_FIELD_LEVEL, fields[7].GetUInt8());
|
||||||
SetUInt32Value(PLAYER_XP, fields[8].GetUInt32());
|
SetUInt32Value(PLAYER_XP, fields[8].GetUInt32());
|
||||||
SetUInt32Value(PLAYER_FIELD_COINAGE, fields[9].GetUInt32());
|
SetUInt32Value(PLAYER_FIELD_COINAGE, fields[9].GetUInt32());
|
||||||
@@ -14687,7 +14689,7 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
|
|||||||
//speed collect rest bonus in offline, in logout, in tavern, city (section/in hour)
|
//speed collect rest bonus in offline, in logout, in tavern, city (section/in hour)
|
||||||
float bubble1 = 0.125;
|
float bubble1 = 0.125;
|
||||||
|
|
||||||
if((int32)fields[23].GetUInt32() > 0)
|
if(time_diff > 0)
|
||||||
{
|
{
|
||||||
float bubble = fields[24].GetUInt32() > 0
|
float bubble = fields[24].GetUInt32() > 0
|
||||||
? bubble1*sWorld.getRate(RATE_REST_OFFLINE_IN_TAVERN_OR_CITY)
|
? bubble1*sWorld.getRate(RATE_REST_OFFLINE_IN_TAVERN_OR_CITY)
|
||||||
@@ -14711,7 +14713,7 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
|
|||||||
|
|
||||||
m_taxi.LoadTaxiMask( fields[18].GetString() ); // must be before InitTaxiNodesForLevel
|
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();
|
m_stableSlots = fields[33].GetUInt32();
|
||||||
if(m_stableSlots > MAX_PET_STABLES)
|
if(m_stableSlots > MAX_PET_STABLES)
|
||||||
|
|||||||
+2
-2
@@ -2068,8 +2068,8 @@ void World::ScriptsProcess()
|
|||||||
sLog.outError("SCRIPT_COMMAND_MOVE_TO call for non-creature (TypeId: %u), skipping.",source->GetTypeId());
|
sLog.outError("SCRIPT_COMMAND_MOVE_TO call for non-creature (TypeId: %u), skipping.",source->GetTypeId());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
((Unit *)source)->SendMonsterMoveWithSpeed(step.script->x, step.script->y, step.script->z, step.script->datalong2 );
|
((Creature*)source)->SendMonsterMoveWithSpeed(step.script->x, step.script->y, step.script->z, step.script->datalong2 );
|
||||||
((Unit *)source)->GetMap()->CreatureRelocation(((Creature *)source), step.script->x, step.script->y, step.script->z, 0);
|
((Creature*)source)->GetMap()->CreatureRelocation(((Creature*)source), step.script->x, step.script->y, step.script->z, 0);
|
||||||
break;
|
break;
|
||||||
case SCRIPT_COMMAND_FLAG_SET:
|
case SCRIPT_COMMAND_FLAG_SET:
|
||||||
if(!source)
|
if(!source)
|
||||||
|
|||||||
Reference in New Issue
Block a user