diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-04-03 17:41:48 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-04-03 17:41:48 +0200 |
commit | 5526e14bcf1efe7a4b1f96760a1816d2e0e1c1b9 (patch) | |
tree | 48900b85a41907a03a3dbb95583e9c4adc9d26f3 /src | |
parent | abe4d59526fe0e7d5a96810d44c7d17fd0d0afbd (diff) |
Core/Entities: Fixed saving spawn difficulties to db for .npc add and .gob add (and other commands that modify creature/gameobject spawns table)
Diffstat (limited to 'src')
-rw-r--r-- | src/common/Utilities/Util.h | 17 | ||||
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/game/DataStores/GameTables.cpp | 1 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Corpse/Corpse.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Pet/Pet.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceScript.h | 1 | ||||
-rw-r--r-- | src/server/game/Phasing/PhasingHandler.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Warden/Warden.cpp | 9 |
15 files changed, 44 insertions, 29 deletions
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h index 448612f340d..e47be23c95a 100644 --- a/src/common/Utilities/Util.h +++ b/src/common/Utilities/Util.h @@ -21,7 +21,6 @@ #include "Define.h" #include "Errors.h" #include <string> -#include <sstream> #include <vector> class TC_COMMON_API Tokenizer @@ -303,22 +302,6 @@ TC_COMMON_API void HexStrToByteArray(std::string const& str, uint8* out, bool re TC_COMMON_API bool StringToBool(std::string const& str); TC_COMMON_API float DegToRad(float degrees); -template<class Container> -std::string StringJoin(Container const& c, std::string delimiter) -{ - if (c.empty()) - return ""; - - std::ostringstream os; - auto itr = c.begin(); - os << *itr++; - - for (; itr != c.end(); ++itr) - os << delimiter << *itr; - - return os.str(); -} - // simple class for not-modifyable list template <typename T> class HookList final diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 2d546a16909..77ed2075a33 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -33,6 +33,7 @@ #include "ObjectMgr.h" #include "World.h" #include "WorldSession.h" +#include <sstream> struct VisibleAchievementCheck { diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 72605d8bef6..0013e198828 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -36,6 +36,7 @@ #include "World.h" #include "WorldPacket.h" #include "WorldSession.h" +#include <sstream> #include <vector> enum eAuctionHouse diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp index 9f151174b33..8340bef7ca0 100644 --- a/src/server/game/DataStores/GameTables.cpp +++ b/src/server/game/DataStores/GameTables.cpp @@ -22,6 +22,7 @@ #include "Util.h" #include <boost/filesystem/path.hpp> #include <fstream> +#include <sstream> GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable; GameTable<GtArtifactKnowledgeMultiplierEntry> sArtifactKnowledgeMultiplierGameTable; diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index a74ccf8be7b..8413803a646 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -38,6 +38,7 @@ #include "SocialMgr.h" #include "World.h" #include "WorldSession.h" +#include <sstream> namespace lfg { diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index 6b983fd56f1..60b36d96b64 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -27,6 +27,7 @@ #include "Player.h" #include "UpdateData.h" #include "World.h" +#include <sstream> Corpse::Corpse(CorpseType type) : WorldObject(type != CORPSE_BONES), m_type(type) { diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c86f015895f..7f975625c50 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -53,6 +53,7 @@ #include "World.h" #include "WorldPacket.h" #include <G3D/g3dmath.h> +#include <sstream> bool VendorItem::IsGoldRequired(ItemTemplate const* pProto) const { @@ -1313,7 +1314,20 @@ void Creature::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiffic stmt->setUInt64(index++, m_spawnId); stmt->setUInt32(index++, GetEntry()); stmt->setUInt16(index++, uint16(mapid)); - stmt->setString(index++, StringJoin(data.spawnDifficulties, ",")); + stmt->setString(index++, [&data]() -> std::string + { + if (data.spawnDifficulties.empty()) + return ""; + + std::ostringstream os; + auto itr = data.spawnDifficulties.begin(); + os << int32(*itr++); + + for (; itr != data.spawnDifficulties.end(); ++itr) + os << ',' << int32(*itr); + + return os.str(); + }()); stmt->setUInt32(index++, data.phaseId); stmt->setUInt32(index++, data.phaseGroup); stmt->setUInt32(index++, displayId); diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 80312590101..6ff7cd66cd4 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -45,6 +45,7 @@ #include "Transport.h" #include "World.h" #include <G3D/Quat.h> +#include <sstream> void GameObjectTemplate::InitializeQueryData() { @@ -1029,7 +1030,20 @@ void GameObject::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiff stmt->setUInt64(index++, m_spawnId); stmt->setUInt32(index++, GetEntry()); stmt->setUInt16(index++, uint16(mapid)); - stmt->setString(index++, StringJoin(data.spawnDifficulties, ",")); + stmt->setString(index++, [&data]() -> std::string + { + if (data.spawnDifficulties.empty()) + return ""; + + std::ostringstream os; + auto itr = data.spawnDifficulties.begin(); + os << int32(*itr++); + + for (; itr != data.spawnDifficulties.end(); ++itr) + os << ',' << int32(*itr); + + return os.str(); + }()); stmt->setUInt32(index++, data.phaseId); stmt->setUInt32(index++, data.phaseGroup); stmt->setFloat(index++, GetPositionX()); diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index af324c8616a..8124c2d9eed 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -42,6 +42,7 @@ #include "UpdateData.h" #include "World.h" #include "WorldSession.h" +#include <sstream> Item* NewItemOrBag(ItemTemplate const* proto) { diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 7d888ea1381..7563289b480 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -36,6 +36,7 @@ #include "Util.h" #include "World.h" #include "WorldSession.h" +#include <sstream> #define PET_XP_FACTOR 0.05f diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index ea3ea2d0d6a..bfc3bfbedc4 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -62,6 +62,7 @@ #include "SystemPackets.h" #include "Util.h" #include "World.h" +#include <sstream> class LoginQueryHolder : public CharacterDatabaseQueryHolder { diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index b84e1ccdbed..0fc37d470ec 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -23,6 +23,7 @@ #include <map> #include <memory> #include <set> +#include <sstream> #define OUT_SAVE_INST_DATA TC_LOG_DEBUG("scripts", "Saving Instance Data for Instance %s (Map %d, Instance Id %d)", instance->GetMapName(), instance->GetId(), instance->GetInstanceId()) #define OUT_SAVE_INST_DATA_COMPLETE TC_LOG_DEBUG("scripts", "Saving Instance Data for Instance %s (Map %d, Instance Id %d) completed.", instance->GetMapName(), instance->GetId(), instance->GetInstanceId()) diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp index 97889f13ec0..eb582ca0de9 100644 --- a/src/server/game/Phasing/PhasingHandler.cpp +++ b/src/server/game/Phasing/PhasingHandler.cpp @@ -28,6 +28,7 @@ #include "PhaseShift.h" #include "Player.h" #include "SpellAuraEffects.h" +#include <sstream> namespace { diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 5719c541406..92a039344a5 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -579,8 +579,5 @@ void Quest::AddQuestLevelToTitle(std::string& title, int32 level) { // Adds the quest level to the front of the quest title // example: [13] Westfall Stew - - std::stringstream questTitlePretty; - questTitlePretty << "[" << level << "] " << title; - title = questTitlePretty.str(); + title = Trinity::StringFormat("[%d] %s", level, title); } diff --git a/src/server/game/Warden/Warden.cpp b/src/server/game/Warden/Warden.cpp index 7fdc45d1235..e3ddf6a2e74 100644 --- a/src/server/game/Warden/Warden.cpp +++ b/src/server/game/Warden/Warden.cpp @@ -201,17 +201,14 @@ std::string Warden::Penalty(WardenCheck* check /*= NULL*/) break; case WARDEN_ACTION_BAN: { - std::stringstream duration; - duration << sWorld->getIntConfig(CONFIG_WARDEN_CLIENT_BAN_DURATION) << "s"; std::string accountName; AccountMgr::GetName(_session->GetAccountId(), accountName); - std::stringstream banReason; - banReason << "Warden Anticheat Violation"; + std::string banReason = "Warden Anticheat Violation"; // Check can be NULL, for example if the client sent a wrong signature in the warden packet (CHECKSUM FAIL) if (check) - banReason << ": " << check->Comment << " (CheckId: " << check->CheckId << ")"; + banReason += Trinity::StringFormat(": %s (CheckId: %u", check->Comment, uint32(check->CheckId)); - sWorld->BanAccount(BAN_ACCOUNT, accountName, duration.str(), banReason.str(),"Server"); + sWorld->BanAccount(BAN_ACCOUNT, accountName, Trinity::StringFormat("%ds", sWorld->getIntConfig(CONFIG_WARDEN_CLIENT_BAN_DURATION)), banReason, "Server"); return "Ban"; } |