From c2b0bcbd6c8155812857523681cd787059cd9bf9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 3 Feb 2011 22:20:40 +0100 Subject: Core/Instances: Implemented DungeonEncounter.dbc for creating completed encounters mask to use in packets Core/Dungeon Finder: Implemented new way of giving random dungeon rewards, linked to DungeonEncounter.dbc --- src/server/game/Instances/InstanceSaveMgr.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/server/game/Instances/InstanceSaveMgr.cpp') diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index 4c2f8117ba7..ad385a7334d 100755 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -165,20 +165,27 @@ void InstanceSave::SaveToDB() { // save instance data too std::string data; + uint32 completedEncounters = 0; - Map *map = sMapMgr->FindMap(GetMapId(),m_instanceid); + Map *map = sMapMgr->FindMap(GetMapId(), m_instanceid); if (map) { ASSERT(map->IsDungeon()); - if (InstanceScript *iData = ((InstanceMap*)map)->GetInstanceScript()) + if (InstanceScript *instanceScript = ((InstanceMap*)map)->GetInstanceScript()) { - data = iData->GetSaveData(); - if (!data.empty()) - CharacterDatabase.escape_string(data); + data = instanceScript->GetSaveData(); + completedEncounters = instanceScript->GetCompletedEncounterMask(); } } - CharacterDatabase.PExecute("INSERT INTO instance VALUES ('%u', '%u', '%u', '%u', '%s')", m_instanceid, GetMapId(), (uint32)GetResetTimeForDB(), GetDifficulty(), data.c_str()); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_INSTANCE_SAVE); + stmt->setUInt32(0, m_instanceid); + stmt->setUInt16(1, GetMapId()); + stmt->setUInt32(2, uint32(GetResetTimeForDB())); + stmt->setUInt8(3, uint8(GetDifficulty())); + stmt->setUInt32(4, completedEncounters); + stmt->setString(5, data); + CharacterDatabase.Execute(stmt); } time_t InstanceSave::GetResetTimeForDB() -- cgit v1.2.3