diff options
6 files changed, 187 insertions, 38 deletions
diff --git a/sql/updates/auth_char/2011_03_18_0_characters_game_event_misc.sql b/sql/updates/auth_char/2011_03_18_0_characters_game_event_misc.sql new file mode 100644 index 00000000000..cc2772a31ac --- /dev/null +++ b/sql/updates/auth_char/2011_03_18_0_characters_game_event_misc.sql @@ -0,0 +1,19 @@ +-- Create temporary table that holds the entry conversion data. (See corresponding world db update) +CREATE TABLE `game_event_temp` ( + `entryOld` TINYINT(3) UNSIGNED NOT NULL, + `entryNew` TINYINT(3) UNSIGNED NOT NULL +) ENGINE=INNODB DEFAULT CHARSET=utf8; + +-- Renumbered entry data +INSERT INTO `game_event_temp` (`entryOld`,`entryNew`) VALUES +(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12),(13,13),(14,14),(15,15),(16,16),(17,17),(18,18),(19,19),(20,20),(21,21),(22,22), +(23,23),(26,24),(27,25),(28,26),(29,27),(30,28),(31,29),(32,30),(33,31),(34,32),(35,33),(36,34),(37,35),(38,36),(39,37),(40,38),(41,39),(42,40),(43,41),(44,42), +(45,43),(46,44),(47,45),(48,46),(49,47),(50,48),(51,49),(52,50),(53,51),(54,52),(124,53),(125,54),(126,55),(127,56),(128,57),(129,58),(130,59),(131,60); + +-- Update game_event_save +UPDATE `game_event_save`, `game_event_temp` SET `game_event_save`.`event_id` = `game_event_temp`.`entryNew` WHERE `game_event_save`.`event_id` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_save` CHANGE `event_id` `eventEntry` TINYINT(3) UNSIGNED NOT NULL; + +-- Update game_event_condition_save +UPDATE `game_event_condition_save`, `game_event_temp` SET `game_event_condition_save`.`event_id` = `game_event_temp`.`entryNew` WHERE `game_event_condition_save`.`event_id` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_condition_save` CHANGE `event_id` `eventEntry` TINYINT(3) UNSIGNED NOT NULL; diff --git a/sql/updates/world/2011_03_18_0_world_game_event_misc.sql b/sql/updates/world/2011_03_18_0_world_game_event_misc.sql new file mode 100644 index 00000000000..3856bb0c3db --- /dev/null +++ b/sql/updates/world/2011_03_18_0_world_game_event_misc.sql @@ -0,0 +1,93 @@ +-- Create temporary table that holds the entry conversion data. (Generating numbers by index and autoincrement is not used because +-- we need the same numbers to update the characters db and need to do that without cross db queries +CREATE TABLE `game_event_temp` ( + `entryOld` TINYINT(3) UNSIGNED NOT NULL, + `entryNew` TINYINT(3) UNSIGNED NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- Renumbered entry data +INSERT INTO `game_event_temp` (`entryOld`,`entryNew`) VALUES +(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12),(13,13),(14,14),(15,15),(16,16),(17,17),(18,18),(19,19),(20,20),(21,21),(22,22), +(23,23),(26,24),(27,25),(28,26),(29,27),(30,28),(31,29),(32,30),(33,31),(34,32),(35,33),(36,34),(37,35),(38,36),(39,37),(40,38),(41,39),(42,40),(43,41),(44,42), +(45,43),(46,44),(47,45),(48,46),(49,47),(50,48),(51,49),(52,50),(53,51),(54,52),(124,53),(125,54),(126,55),(127,56),(128,57),(129,58),(130,59),(131,60); + +-- Update game_event +ALTER TABLE `game_event` DROP PRIMARY KEY; +UPDATE `game_event`, `game_event_temp` SET `game_event`.`entry` = `game_event_temp`.`entryNew` WHERE `game_event`.`entry` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event` +CHANGE `entry` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event', +ADD PRIMARY KEY (`eventEntry`); + +-- Update game_event_battleground_holiday +ALTER TABLE `game_event_battleground_holiday` DROP PRIMARY KEY; +UPDATE `game_event_battleground_holiday`, `game_event_temp` SET `game_event_battleground_holiday`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_battleground_holiday`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_battleground_holiday` +CHANGE `event` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event' FIRST, +ADD PRIMARY KEY (`eventEntry`); + +-- Update game_event_condition +ALTER TABLE `game_event_condition` DROP PRIMARY KEY; +UPDATE `game_event_condition`, `game_event_temp` SET `game_event_condition`.`event_id` = `game_event_temp`.`entryNew` WHERE `game_event_condition`.`event_id` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_condition` +CHANGE `event_id` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event' FIRST, +ADD PRIMARY KEY (`eventEntry`, `condition_id`); + +-- Update game_event_creature +UPDATE `game_event_creature`, `game_event_temp` SET `game_event_creature`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_creature`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_creature` CHANGE `event` `eventEntry` TINYINT(3) NOT NULL COMMENT 'Entry of the game event. Put negative entry to remove during event.' FIRST; + +-- Update game_event_creature_quest +UPDATE `game_event_creature_quest`, `game_event_temp` SET `game_event_creature_quest`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_creature_quest`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_creature_quest` CHANGE `event` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event.' FIRST; + +-- Update game_event_gameobject +UPDATE `game_event_gameobject`, `game_event_temp` SET `game_event_gameobject`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_gameobject`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_gameobject` CHANGE `event` `eventEntry` TINYINT(3) NOT NULL COMMENT 'Entry of the game event. Put negative entry to remove during event.' FIRST; + +-- Update game_event_gameobject_quest +ALTER TABLE `game_event_gameobject_quest` DROP PRIMARY KEY; +UPDATE `game_event_gameobject_quest`, `game_event_temp` SET `game_event_gameobject_quest`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_gameobject_quest`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_gameobject_quest` +CHANGE `event` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event' FIRST, +ADD PRIMARY KEY (`id`, `quest`, `eventEntry`); + +-- Update game_event_model_equip +UPDATE `game_event_model_equip`, `game_event_temp` SET `game_event_model_equip`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_model_equip`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_model_equip` CHANGE `event` `eventEntry` TINYINT(3) NOT NULL COMMENT 'Entry of the game event.' FIRST; + +-- Update game_event_npc_vendor +UPDATE `game_event_npc_vendor`, `game_event_temp` SET `game_event_npc_vendor`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_npc_vendor`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_npc_vendor` CHANGE `event` `eventEntry` TINYINT(3) NOT NULL COMMENT 'Entry of the game event.' FIRST; + +-- Update game_event_npcflag +ALTER TABLE `game_event_npcflag` DROP PRIMARY KEY; +UPDATE `game_event_npcflag`, `game_event_temp` SET `game_event_npcflag`.`event_id` = `game_event_temp`.`entryNew` WHERE `game_event_npcflag`.`event_id` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_npcflag` +CHANGE `event_id` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event' FIRST, +ADD PRIMARY KEY (`guid`, `eventEntry`); + +-- Update game_event_pool +UPDATE `game_event_pool`, `game_event_temp` SET `game_event_pool`.`event` = `game_event_temp`.`entryNew` WHERE `game_event_pool`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_pool` CHANGE `event` `eventEntry` TINYINT(3) NOT NULL COMMENT 'Entry of the game event. Put negative entry to remove during event.' FIRST; + +-- Update game_event_prerequisite +ALTER TABLE `game_event_prerequisite` DROP PRIMARY KEY; +UPDATE `game_event_prerequisite`, `game_event_temp` SET `game_event_prerequisite`.`event_id` = `game_event_temp`.`entryNew` WHERE `game_event_prerequisite`.`event_id` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_prerequisite` +CHANGE `event_id` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event' FIRST, +ADD PRIMARY KEY (`eventEntry`, `prerequisite_event`); + +-- Update game_event_quest_condition +UPDATE `game_event_quest_condition`, `game_event_temp` SET `game_event_quest_condition`.`event_id` = `game_event_temp`.`entryNew` WHERE `game_event_quest_condition`.`event_id` = `game_event_temp`.`entryOld`; +ALTER TABLE `game_event_quest_condition` CHANGE `event_id` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event.' FIRST; + +-- Update season_linked_event +ALTER TABLE `season_linked_event` DROP PRIMARY KEY; +UPDATE `season_linked_event`, `game_event_temp` SET `season_linked_event`.`event` = `game_event_temp`.`entryNew` WHERE `season_linked_event`.`event` = `game_event_temp`.`entryOld`; +ALTER TABLE season_linked_event +RENAME TO `game_event_arena_seasons`, +CHANGE `event` `eventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Entry of the game event' FIRST, +CHANGE `season` `season` TINYINT(3) UNSIGNED NOT NULL COMMENT 'Arena season number'; + +-- Remove temporary table +DROP TABLE `game_event_temp`; diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index f4b73ace3e3..79fab6bf3e3 100755 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -183,9 +183,16 @@ void GameEventMgr::StopEvent(uint16 event_id, bool overwrite) std::map<uint32 /*condition id*/, GameEventFinishCondition>::iterator itr; for (itr = mGameEvent[event_id].conditions.begin(); itr != mGameEvent[event_id].conditions.end(); ++itr) itr->second.done = 0; + SQLTransaction trans = CharacterDatabase.BeginTransaction(); - trans->PAppend("DELETE FROM game_event_save WHERE event_id = '%u'",event_id); - trans->PAppend("DELETE FROM game_event_condition_save WHERE event_id = '%u'",event_id); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE); + stmt->setUInt8(0, event_id); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_SAVE); + stmt->setUInt8(0, event_id); + trans->Append(stmt); + CharacterDatabase.CommitTransaction(trans); } } @@ -196,7 +203,7 @@ void GameEventMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - QueryResult result = WorldDatabase.Query("SELECT entry,UNIX_TIMESTAMP(start_time),UNIX_TIMESTAMP(end_time),occurence,length,holiday,description,world_event FROM game_event"); + QueryResult result = WorldDatabase.Query("SELECT eventEntry,UNIX_TIMESTAMP(start_time),UNIX_TIMESTAMP(end_time),occurence,length,holiday,description,world_event FROM game_event"); if (!result) { mGameEvent.clear(); @@ -213,7 +220,7 @@ void GameEventMgr::LoadFromDB() uint16 event_id = fields[0].GetUInt16(); if (event_id == 0) { - sLog->outErrorDb("`game_event` game event id (%i) is reserved and can't be used.",event_id); + sLog->outErrorDb("`game_event` game event entry 0 is reserved and can't be used."); continue; } @@ -259,7 +266,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 - QueryResult result = CharacterDatabase.Query("SELECT event_id, state, next_start FROM game_event_save"); + QueryResult result = CharacterDatabase.Query("SELECT eventEntry, state, next_start FROM game_event_save"); if (!result) { @@ -277,7 +284,7 @@ void GameEventMgr::LoadFromDB() if (event_id >= mGameEvent.size()) { - sLog->outErrorDb("`game_event_save` game event id (%i) is out of range compared to max event id in `game_event`", event_id); + sLog->outErrorDb("`game_event_save` game event entry (%i) is out of range compared to max event entry in `game_event`", event_id); continue; } @@ -305,7 +312,7 @@ void GameEventMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - QueryResult result = WorldDatabase.Query("SELECT event_id, prerequisite_event FROM game_event_prerequisite"); + QueryResult result = WorldDatabase.Query("SELECT eventEntry, prerequisite_event FROM game_event_prerequisite"); if (!result) { sLog->outString(">> Loaded 0 game event prerequisites in game events. DB table `game_event_prerequisite` is empty."); @@ -356,8 +363,8 @@ void GameEventMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - // 1 2 - QueryResult result = WorldDatabase.Query("SELECT creature.guid, game_event_creature.event FROM creature" + // 1 2 + QueryResult result = WorldDatabase.Query("SELECT creature.guid, game_event_creature.eventEntry FROM creature" " JOIN game_event_creature ON creature.guid = game_event_creature.guid"); if (!result) @@ -399,9 +406,9 @@ void GameEventMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - // 1 2 - QueryResult result = WorldDatabase.Query("SELECT gameobject.guid, game_event_gameobject.event " - "FROM gameobject JOIN game_event_gameobject ON gameobject.guid=game_event_gameobject.guid"); + // 1 2 + QueryResult result = WorldDatabase.Query("SELECT gameobject.guid, game_event_gameobject.eventEntry FROM gameobject" + " JOIN game_event_gameobject ON gameobject.guid=game_event_gameobject.guid"); if (!result) { @@ -443,7 +450,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 3 - QueryResult result = WorldDatabase.Query("SELECT creature.guid, game_event_model_equip.event, game_event_model_equip.modelid, game_event_model_equip.equipment_id " + QueryResult result = WorldDatabase.Query("SELECT creature.guid, game_event_model_equip.eventEntry, game_event_model_equip.modelid, game_event_model_equip.equipment_id " "FROM creature JOIN game_event_model_equip ON creature.guid=game_event_model_equip.guid"); if (!result) @@ -500,7 +507,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 - QueryResult result = WorldDatabase.Query("SELECT id, quest, event FROM game_event_creature_quest"); + QueryResult result = WorldDatabase.Query("SELECT id, quest, eventEntry FROM game_event_creature_quest"); if (!result) { @@ -541,7 +548,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 - QueryResult result = WorldDatabase.Query("SELECT id, quest, event FROM game_event_gameobject_quest"); + QueryResult result = WorldDatabase.Query("SELECT id, quest, eventEntry FROM game_event_gameobject_quest"); if (!result) { @@ -582,7 +589,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 3 - QueryResult result = WorldDatabase.Query("SELECT quest, event_id, condition_id, num FROM game_event_quest_condition"); + QueryResult result = WorldDatabase.Query("SELECT quest, eventEntry, condition_id, num FROM game_event_quest_condition"); if (!result) { @@ -625,7 +632,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 3 4 - QueryResult result = WorldDatabase.Query("SELECT event_id, condition_id, req_num, max_world_state_field, done_world_state_field FROM game_event_condition"); + QueryResult result = WorldDatabase.Query("SELECT eventEntry, condition_id, req_num, max_world_state_field, done_world_state_field FROM game_event_condition"); if (!result) { @@ -667,7 +674,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 - QueryResult result = CharacterDatabase.Query("SELECT event_id, condition_id, done FROM game_event_condition_save"); + QueryResult result = CharacterDatabase.Query("SELECT eventEntry, condition_id, done FROM game_event_condition_save"); if (!result) { @@ -715,7 +722,7 @@ void GameEventMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 0 1 2 - QueryResult result = WorldDatabase.Query("SELECT guid, event_id, npcflag FROM game_event_npcflag"); + QueryResult result = WorldDatabase.Query("SELECT guid, eventEntry, npcflag FROM game_event_npcflag"); if (!result) { @@ -754,8 +761,8 @@ void GameEventMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - // 0 1 2 3 4 5 - QueryResult result = WorldDatabase.Query("SELECT event, guid, item, maxcount, incrtime, ExtendedCost FROM game_event_npc_vendor ORDER BY guid, slot ASC"); + // 0 1 2 3 4 5 + QueryResult result = WorldDatabase.Query("SELECT eventEntry, guid, item, maxcount, incrtime, ExtendedCost FROM game_event_npc_vendor ORDER BY guid, slot ASC"); if (!result) { @@ -820,8 +827,8 @@ void GameEventMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - // 0 1 - QueryResult result = WorldDatabase.Query("SELECT event, bgflag FROM game_event_battleground_holiday"); + // 0 1 + QueryResult result = WorldDatabase.Query("SELECT eventEntry, bgflag FROM game_event_battleground_holiday"); if (!result) { @@ -858,8 +865,8 @@ void GameEventMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - // 1 2 - QueryResult result = WorldDatabase.Query("SELECT pool_template.entry, game_event_pool.event FROM pool_template" + // 1 2 + QueryResult result = WorldDatabase.Query("SELECT pool_template.entry, game_event_pool.eventEntry FROM pool_template" " JOIN game_event_pool ON pool_template.entry = game_event_pool.pool_entry"); if (!result) @@ -923,7 +930,7 @@ uint32 GameEventMgr::GetNPCFlag(Creature * cr) void GameEventMgr::Initialize() { - QueryResult result = WorldDatabase.Query("SELECT MAX(entry) FROM game_event"); + QueryResult result = WorldDatabase.Query("SELECT MAX(eventEntry) FROM game_event"); if (result) { Field *fields = result->Fetch(); @@ -956,7 +963,7 @@ uint32 GameEventMgr::StartSystem() // return the next void GameEventMgr::StartArenaSeason() { - QueryResult result = WorldDatabase.PQuery("SELECT event FROM season_linked_event WHERE season = '%i'",sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID)); + QueryResult result = WorldDatabase.PQuery("SELECT eventEntry FROM game_event_arena_seasons WHERE season = '%i'",sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID)); if (!result) { @@ -1521,8 +1528,17 @@ void GameEventMgr::HandleQuestComplete(uint32 quest_id) citr->second.done = citr->second.reqNum; // save the change to db SQLTransaction trans = CharacterDatabase.BeginTransaction(); - trans->PAppend("DELETE FROM game_event_condition_save WHERE event_id = '%u' AND condition_id = '%u'",event_id,condition); - trans->PAppend("INSERT INTO game_event_condition_save (event_id, condition_id, done) VALUES (%u,%u,%f)",event_id,condition,citr->second.done); + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_CONDITION_SAVE); + stmt->setUInt8(0, event_id); + stmt->setUInt32(1, condition); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_GAME_EVENT_CONDITION_SAVE); + stmt->setUInt8(0, event_id); + stmt->setUInt32(1, condition); + stmt->setFloat(2, citr->second.done); + trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); // check if all conditions are met, if so, update the event state if (CheckOneGameEventConditions(event_id)) @@ -1557,11 +1573,16 @@ bool GameEventMgr::CheckOneGameEventConditions(uint16 event_id) void GameEventMgr::SaveWorldEventStateToDB(uint16 event_id) { SQLTransaction trans = CharacterDatabase.BeginTransaction(); - trans->PAppend("DELETE FROM game_event_save WHERE event_id = '%u'",event_id); - if (mGameEvent[event_id].nextstart) - trans->PAppend("INSERT INTO game_event_save (event_id, state, next_start) VALUES ('%u','%u', "UI64FMTD")",event_id,mGameEvent[event_id].state,(uint64)(mGameEvent[event_id].nextstart)); - else - trans->PAppend("INSERT INTO game_event_save (event_id, state, next_start) VALUES ('%u','%u','0')",event_id,mGameEvent[event_id].state); + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_SAVE); + stmt->setUInt8(0, event_id); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_GAME_EVENT_SAVE); + stmt->setUInt8(0, event_id); + stmt->setUInt8(1, mGameEvent[event_id].state); + stmt->setUInt32(2, mGameEvent[event_id].nextstart ? uint32(mGameEvent[event_id].nextstart) : 0); + trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index b12319f6564..a995e828fda 100755 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1423,8 +1423,8 @@ void ObjectMgr::LoadCreatures() QueryResult result = WorldDatabase.Query("SELECT creature.guid, id, map, modelid," // 4 5 6 7 8 9 10 11 "equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, spawndist, currentwaypoint," - // 12 13 14 15 16 17 18 19 - "curhealth, curmana, DeathState, MovementType, spawnMask, phaseMask, event, pool_entry," + // 12 13 14 15 16 17 18 19 + "curhealth, curmana, DeathState, MovementType, spawnMask, phaseMask, eventEntry, pool_entry," // 20 21 22 "creature.npcflag, creature.unit_flags, creature.dynamicflags " "FROM creature LEFT OUTER JOIN game_event_creature ON creature.guid = game_event_creature.guid " @@ -1786,8 +1786,8 @@ void ObjectMgr::LoadGameobjects() // 0 1 2 3 4 5 6 QueryResult result = WorldDatabase.Query("SELECT gameobject.guid, id, map, position_x, position_y, position_z, orientation," - // 7 8 9 10 11 12 13 14 15 16 17 - "rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, spawnMask, phaseMask, event, pool_entry " + // 7 8 9 10 11 12 13 14 15 16 17 + "rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, spawnMask, phaseMask, eventEntry, pool_entry " "FROM gameobject LEFT OUTER JOIN game_event_gameobject ON gameobject.guid = game_event_gameobject.guid " "LEFT OUTER JOIN pool_gameobject ON gameobject.guid = pool_gameobject.guid"); diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 98db2e51dfa..f42d5b3062e 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -273,6 +273,15 @@ bool CharacterDatabaseConnection::Open() PREPARE_STATEMENT(CHAR_ADD_INSTANCE_SAVE, "INSERT INTO instance (id,map,resettime,difficulty,completedEncounters,data) VALUES (?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC) PREPARE_STATEMENT(CHAR_UPDATE_INSTANCE_DATA, "UPDATE instance SET completedEncounters=?, data=? WHERE id=?", CONNECTION_ASYNC) + // Game event saves + PREPARE_STATEMENT(CHAR_DEL_GAME_EVENT_SAVE, "DELETE FROM game_event_save WHERE eventEntry = ?", CONNECTION_ASYNC) + PREPARE_STATEMENT(CHAR_ADD_GAME_EVENT_SAVE, "INSERT INTO game_event_save (eventEntry, state, next_start) VALUES (?, ? , ?)", CONNECTION_ASYNC) + + // Game event condition saves + PREPARE_STATEMENT(CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE, "DELETE FROM game_event_condition_save WHERE eventEntry = ?", CONNECTION_ASYNC) + PREPARE_STATEMENT(CHAR_DEL_GAME_EVENT_CONDITION_SAVE, "DELETE FROM game_event_condition_save WHERE eventEntry = ? AND condition_id = ?", CONNECTION_ASYNC) + PREPARE_STATEMENT(CHAR_ADD_GAME_EVENT_CONDITION_SAVE, "INSERT INTO game_event_condition_save (eventEntry, condition_id, done) VALUES (?, ?, ?)", CONNECTION_ASYNC) + for (PreparedStatementMap::const_iterator itr = m_queries.begin(); itr != m_queries.end(); ++itr) PrepareStatement(itr->first, itr->second.first, itr->second.second); diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 8fc1c9a38e9..9abc7a65b68 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -228,6 +228,13 @@ enum CharacterDatabaseStatements CHAR_ADD_INSTANCE_SAVE, CHAR_UPDATE_INSTANCE_DATA, + CHAR_DEL_GAME_EVENT_SAVE, + CHAR_ADD_GAME_EVENT_SAVE, + + CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE, + CHAR_DEL_GAME_EVENT_CONDITION_SAVE, + CHAR_ADD_GAME_EVENT_CONDITION_SAVE, + MAX_CHARACTERDATABASE_STATEMENTS, }; |