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->guid = guid don't must be update at save
|
||||||
data.id = GetEntry();
|
data.id = GetEntry();
|
||||||
data.mapid = mapid;
|
data.mapid = mapid;
|
||||||
|
data.spawnMask = spawnMask;
|
||||||
data.phaseMask = phaseMask;
|
data.phaseMask = phaseMask;
|
||||||
data.modelid_override = displayId;
|
data.modelid_override = displayId;
|
||||||
data.equipmentId = GetEquipmentId();
|
data.equipmentId = GetEquipmentId();
|
||||||
|
|
@ -1109,7 +1110,6 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
|
||||||
// prevent add data integrity problems
|
// prevent add data integrity problems
|
||||||
data.movementType = !m_respawnradius && GetDefaultMovementType()==RANDOM_MOTION_TYPE
|
data.movementType = !m_respawnradius && GetDefaultMovementType()==RANDOM_MOTION_TYPE
|
||||||
? IDLE_MOTION_TYPE : GetDefaultMovementType();
|
? IDLE_MOTION_TYPE : GetDefaultMovementType();
|
||||||
data.spawnMask = spawnMask;
|
|
||||||
|
|
||||||
// updated in DB
|
// updated in DB
|
||||||
WorldDatabase.BeginTransaction();
|
WorldDatabase.BeginTransaction();
|
||||||
|
|
@ -1119,23 +1119,23 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
|
||||||
std::ostringstream ss;
|
std::ostringstream ss;
|
||||||
ss << "INSERT INTO creature VALUES ("
|
ss << "INSERT INTO creature VALUES ("
|
||||||
<< GetGUIDLow() << ","
|
<< GetGUIDLow() << ","
|
||||||
<< GetEntry() << ","
|
<< data.id << ","
|
||||||
<< mapid <<","
|
<< data.mapid <<","
|
||||||
<< uint32(spawnMask) << "," // cast to prevent save as symbol
|
<< uint32(data.spawnMask) << "," // cast to prevent save as symbol
|
||||||
<< uint16(GetPhaseMask()) << "," // prevent out of range error
|
<< uint16(data.phaseMask) << "," // prevent out of range error
|
||||||
<< displayId <<","
|
<< data.modelid_override <<","
|
||||||
<< GetEquipmentId() <<","
|
<< data.equipmentId <<","
|
||||||
<< GetPositionX() << ","
|
<< data.posX << ","
|
||||||
<< GetPositionY() << ","
|
<< data.posY << ","
|
||||||
<< GetPositionZ() << ","
|
<< data.posZ << ","
|
||||||
<< GetOrientation() << ","
|
<< data.orientation << ","
|
||||||
<< m_respawnDelay << "," //respawn time
|
<< data.spawntimesecs << "," //respawn time
|
||||||
<< (float) m_respawnradius << "," //spawn distance (float)
|
<< (float) data.spawndist << "," //spawn distance (float)
|
||||||
<< (uint32) (0) << "," //currentwaypoint
|
<< data.currentwaypoint << "," //currentwaypoint
|
||||||
<< GetHealth() << "," //curhealth
|
<< data.curhealth << "," //curhealth
|
||||||
<< GetPower(POWER_MANA) << "," //curmana
|
<< data.curmana << "," //curmana
|
||||||
<< (m_isDeadByDefault ? 1 : 0) << "," //is_dead
|
<< (data.is_dead ? 1 : 0) << "," //is_dead
|
||||||
<< GetDefaultMovementType() << ")"; //default movement generator type
|
<< data.movementType << ")"; //default movement generator type
|
||||||
|
|
||||||
WorldDatabase.PExecuteLog("%s", ss.str().c_str());
|
WorldDatabase.PExecuteLog("%s", ss.str().c_str());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11879"
|
#define REVISION_NR "11880"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue