mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 01:37:00 +00:00
[11880] Ensure that db saved values and values in memory are in sync
This fixes db-errors for npcs with random movement added with .npc add command. Patch inspired by NoFantasy and MasterTomas
This commit is contained in:
parent
eca3586d74
commit
71bdb8e5b6
2 changed files with 19 additions and 19 deletions
|
|
@ -1092,6 +1092,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
|
|||
// data->guid = guid don't must be update at save
|
||||
data.id = GetEntry();
|
||||
data.mapid = mapid;
|
||||
data.spawnMask = spawnMask;
|
||||
data.phaseMask = phaseMask;
|
||||
data.modelid_override = displayId;
|
||||
data.equipmentId = GetEquipmentId();
|
||||
|
|
@ -1109,7 +1110,6 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
|
|||
// prevent add data integrity problems
|
||||
data.movementType = !m_respawnradius && GetDefaultMovementType()==RANDOM_MOTION_TYPE
|
||||
? IDLE_MOTION_TYPE : GetDefaultMovementType();
|
||||
data.spawnMask = spawnMask;
|
||||
|
||||
// updated in DB
|
||||
WorldDatabase.BeginTransaction();
|
||||
|
|
@ -1119,23 +1119,23 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
|
|||
std::ostringstream ss;
|
||||
ss << "INSERT INTO creature VALUES ("
|
||||
<< GetGUIDLow() << ","
|
||||
<< GetEntry() << ","
|
||||
<< mapid <<","
|
||||
<< uint32(spawnMask) << "," // cast to prevent save as symbol
|
||||
<< uint16(GetPhaseMask()) << "," // prevent out of range error
|
||||
<< displayId <<","
|
||||
<< GetEquipmentId() <<","
|
||||
<< GetPositionX() << ","
|
||||
<< GetPositionY() << ","
|
||||
<< GetPositionZ() << ","
|
||||
<< GetOrientation() << ","
|
||||
<< m_respawnDelay << "," //respawn time
|
||||
<< (float) m_respawnradius << "," //spawn distance (float)
|
||||
<< (uint32) (0) << "," //currentwaypoint
|
||||
<< GetHealth() << "," //curhealth
|
||||
<< GetPower(POWER_MANA) << "," //curmana
|
||||
<< (m_isDeadByDefault ? 1 : 0) << "," //is_dead
|
||||
<< GetDefaultMovementType() << ")"; //default movement generator type
|
||||
<< data.id << ","
|
||||
<< data.mapid <<","
|
||||
<< uint32(data.spawnMask) << "," // cast to prevent save as symbol
|
||||
<< uint16(data.phaseMask) << "," // prevent out of range error
|
||||
<< data.modelid_override <<","
|
||||
<< data.equipmentId <<","
|
||||
<< data.posX << ","
|
||||
<< data.posY << ","
|
||||
<< data.posZ << ","
|
||||
<< data.orientation << ","
|
||||
<< data.spawntimesecs << "," //respawn time
|
||||
<< (float) data.spawndist << "," //spawn distance (float)
|
||||
<< data.currentwaypoint << "," //currentwaypoint
|
||||
<< data.curhealth << "," //curhealth
|
||||
<< data.curmana << "," //curmana
|
||||
<< (data.is_dead ? 1 : 0) << "," //is_dead
|
||||
<< data.movementType << ")"; //default movement generator type
|
||||
|
||||
WorldDatabase.PExecuteLog("%s", ss.str().c_str());
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue