Core/Player: Correct gender by modelid and avoid saving character with wrong gender
Closes #396 Author is MitchesD, Kittnz and Shauren
This commit is contained in:
@@ -25861,7 +25861,7 @@ void Player::_SaveCharacter(bool create, SQLTransaction& trans)
|
|||||||
stmt->setString(index++, GetName());
|
stmt->setString(index++, GetName());
|
||||||
stmt->setUInt8(index++, getRace(true));
|
stmt->setUInt8(index++, getRace(true));
|
||||||
stmt->setUInt8(index++, getClass());
|
stmt->setUInt8(index++, getClass());
|
||||||
stmt->setUInt8(index++, getGender());
|
stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
|
||||||
stmt->setUInt8(index++, getLevel());
|
stmt->setUInt8(index++, getLevel());
|
||||||
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
|
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
|
||||||
stmt->setUInt32(index++, GetMoney());
|
stmt->setUInt32(index++, GetMoney());
|
||||||
@@ -25966,7 +25966,7 @@ void Player::_SaveCharacter(bool create, SQLTransaction& trans)
|
|||||||
stmt->setString(index++, GetName());
|
stmt->setString(index++, GetName());
|
||||||
stmt->setUInt8(index++, getRace(true));
|
stmt->setUInt8(index++, getRace(true));
|
||||||
stmt->setUInt8(index++, getClass());
|
stmt->setUInt8(index++, getClass());
|
||||||
stmt->setUInt8(index++, getGender());
|
stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
|
||||||
stmt->setUInt8(index++, getLevel());
|
stmt->setUInt8(index++, getLevel());
|
||||||
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
|
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
|
||||||
stmt->setUInt32(index++, GetMoney());
|
stmt->setUInt32(index++, GetMoney());
|
||||||
|
|||||||
@@ -15404,6 +15404,9 @@ bool Unit::IsPolymorphed() const
|
|||||||
void Unit::SetDisplayId(uint32 modelId)
|
void Unit::SetDisplayId(uint32 modelId)
|
||||||
{
|
{
|
||||||
SetUInt32Value(UNIT_FIELD_DISPLAYID, modelId);
|
SetUInt32Value(UNIT_FIELD_DISPLAYID, modelId);
|
||||||
|
// Set Gender by modelId
|
||||||
|
if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId))
|
||||||
|
SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::RestoreDisplayId()
|
void Unit::RestoreDisplayId()
|
||||||
|
|||||||
Reference in New Issue
Block a user