diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/BattlegroundMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 36 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 4 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 2 | ||||
-rw-r--r-- | src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Weather/WeatherMgr.cpp | 2 |
9 files changed, 30 insertions, 24 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 04fbc45e709..4f1bae9eccd 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -3132,7 +3132,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData() if (dataType != ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT) TC_LOG_ERROR("sql.sql", "Table `achievement_criteria_data` has ScriptName set for non-scripted data type (Entry: %u, type %u), useless data.", criteria_id, dataType); else - scriptId = sObjectMgr->GetScriptId(scriptName.c_str()); + scriptId = sObjectMgr->GetScriptId(scriptName); } AchievementCriteriaData data(dataType, fields[2].GetUInt32(), fields[3].GetUInt32(), scriptId); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 74a9ac32b1b..afa6403cc22 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -502,7 +502,7 @@ void BattlegroundMgr::LoadBattlegroundTemplates() float dist = fields[7].GetFloat(); bgTemplate.MaxStartDistSq = dist * dist; bgTemplate.Weight = fields[8].GetUInt8(); - bgTemplate.ScriptId = sObjectMgr->GetScriptId(fields[9].GetCString()); + bgTemplate.ScriptId = sObjectMgr->GetScriptId(fields[9].GetString()); bgTemplate.BattlemasterEntry = bl; if (bgTemplate.MaxPlayersPerTeam == 0 || bgTemplate.MinPlayersPerTeam > bgTemplate.MaxPlayersPerTeam) diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index ede1dfca9e1..84830e07eed 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -996,7 +996,7 @@ void ConditionMgr::LoadConditions(bool isReload) cond->NegativeCondition = fields[10].GetBool(); cond->ErrorType = fields[11].GetUInt32(); cond->ErrorTextId = fields[12].GetUInt32(); - cond->ScriptId = sObjectMgr->GetScriptId(fields[13].GetCString()); + cond->ScriptId = sObjectMgr->GetScriptId(fields[13].GetString()); if (iConditionTypeOrReference >= 0) cond->ConditionType = ConditionTypes(iConditionTypeOrReference); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 3e418f08880..b650cef7a7f 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -524,7 +524,7 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields) creatureTemplate.RegenHealth = fields[74].GetBool(); creatureTemplate.MechanicImmuneMask = fields[75].GetUInt32(); creatureTemplate.flags_extra = fields[76].GetUInt32(); - creatureTemplate.ScriptID = GetScriptId(fields[77].GetCString()); + creatureTemplate.ScriptID = GetScriptId(fields[77].GetString()); } void ObjectMgr::LoadCreatureTemplateAddons() @@ -2733,7 +2733,7 @@ void ObjectMgr::LoadItemScriptNames() continue; } - _itemTemplateStore[itemId].ScriptId = GetScriptId(fields[1].GetCString()); + _itemTemplateStore[itemId].ScriptId = GetScriptId(fields[1].GetString()); ++count; } while (result->NextRow()); } @@ -4935,8 +4935,8 @@ void ObjectMgr::LoadSpellScriptNames() Field* fields = result->Fetch(); - int32 spellId = fields[0].GetInt32(); - char const* scriptName = fields[1].GetCString(); + int32 spellId = fields[0].GetInt32(); + std::string const scriptName = fields[1].GetString(); bool allRanks = false; if (spellId < 0) @@ -4948,18 +4948,18 @@ void ObjectMgr::LoadSpellScriptNames() SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId); if (!spellInfo) { - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) does not exist.", scriptName, fields[0].GetInt32()); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) does not exist.", scriptName.c_str(), fields[0].GetInt32()); continue; } if (allRanks) { if (!spellInfo->IsRanked()) - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) has no ranks of spell.", scriptName, fields[0].GetInt32()); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) has no ranks of spell.", scriptName.c_str(), fields[0].GetInt32()); if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId)) { - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is not first rank of spell.", scriptName, fields[0].GetInt32()); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is not first rank of spell.", scriptName.c_str(), fields[0].GetInt32()); continue; } while (spellInfo) @@ -4971,7 +4971,7 @@ void ObjectMgr::LoadSpellScriptNames() else { if (spellInfo->IsRanked()) - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is ranked spell. Perhaps not all ranks are assigned to this script.", scriptName, spellId); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is ranked spell. Perhaps not all ranks are assigned to this script.", scriptName.c_str(), spellId); _spellScriptsStore.insert(SpellScriptsContainer::value_type(spellInfo->Id, GetScriptId(scriptName))); } @@ -5009,7 +5009,7 @@ void ObjectMgr::ValidateSpellScripts() bool valid = true; if (!spellScript && !auraScript) { - TC_LOG_ERROR("scripts", "Functions GetSpellScript() and GetAuraScript() of script `%s` do not return objects - script skipped", GetScriptName(sitr->second->second)); + TC_LOG_ERROR("scripts", "Functions GetSpellScript() and GetAuraScript() of script `%s` do not return objects - script skipped", GetScriptName(sitr->second->second).c_str()); valid = false; } if (spellScript) @@ -5149,7 +5149,7 @@ void ObjectMgr::LoadInstanceTemplate() instanceTemplate.AllowMount = fields[3].GetBool(); instanceTemplate.Parent = uint32(fields[1].GetUInt16()); - instanceTemplate.ScriptId = sObjectMgr->GetScriptId(fields[2].GetCString()); + instanceTemplate.ScriptId = sObjectMgr->GetScriptId(fields[2].GetString()); _instanceTemplateStore[mapID] = instanceTemplate; @@ -5641,8 +5641,8 @@ void ObjectMgr::LoadAreaTriggerScripts() { Field* fields = result->Fetch(); - uint32 triggerId = fields[0].GetUInt32(); - char const* scriptName = fields[1].GetCString(); + uint32 triggerId = fields[0].GetUInt32(); + std::string const scriptName = fields[1].GetString(); AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(triggerId); if (!atEntry) @@ -6533,7 +6533,7 @@ void ObjectMgr::LoadGameObjectTemplate() got.unkInt32 = fields[43].GetInt32(); got.AIName = fields[44].GetString(); - got.ScriptId = GetScriptId(fields[45].GetCString()); + got.ScriptId = GetScriptId(fields[45].GetString()); // Checks @@ -8527,11 +8527,17 @@ void ObjectMgr::LoadScriptNames() TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " ScriptNames in %u ms", _scriptNamesStore.size(), GetMSTimeDiffToNow(oldMSTime)); } -uint32 ObjectMgr::GetScriptId(char const* name) +std::string const& ObjectMgr::GetScriptName(uint32 id) const +{ + static std::string const empty = ""; + return id < _scriptNamesStore.size() ? _scriptNamesStore[id] : empty; +} + +uint32 ObjectMgr::GetScriptId(std::string const& name) { // use binary search to find the script name in the sorted vector // assume "" is the first element - if (!name) + if (name.empty()) return 0; ScriptNameContainer::const_iterator itr = std::lower_bound(_scriptNamesStore.begin(), _scriptNamesStore.end(), name); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index c6f155dbff5..6b3712e0b92 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1273,8 +1273,8 @@ class ObjectMgr bool IsVendorItemValid(uint32 vendor_entry, uint32 id, int32 maxcount, uint32 ptime, uint32 ExtendedCost, uint8 type, Player* player = NULL, std::set<uint32>* skip_vendors = NULL, uint32 ORnpcflag = 0) const; void LoadScriptNames(); - char const* GetScriptName(uint32 id) const { return id < _scriptNamesStore.size() ? _scriptNamesStore[id].c_str() : ""; } - uint32 GetScriptId(char const* name); + std::string const& GetScriptName(uint32 id) const; + uint32 GetScriptId(std::string const& name); SpellClickInfoMapBounds GetSpellClickInfoMapBounds(uint32 creature_id) const { diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 12ce3e1d13a..e2ae3e3b63a 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3213,7 +3213,7 @@ void InstanceMap::CreateInstanceData(bool load) i_data->SetCompletedEncountersMask(fields[1].GetUInt32()); if (!data.empty()) { - TC_LOG_DEBUG("maps", "Loading instance data for `%s` with id %u", sObjectMgr->GetScriptName(i_script_id), i_InstanceId); + TC_LOG_DEBUG("maps", "Loading instance data for `%s` with id %u", sObjectMgr->GetScriptName(i_script_id).c_str(), i_InstanceId); i_data->Load(data.c_str()); } } diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp index b07d21436b2..65b9f67342a 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp @@ -71,7 +71,7 @@ void OutdoorPvPMgr::InitOutdoorPvP() OutdoorPvPData* data = new OutdoorPvPData(); OutdoorPvPTypes realTypeId = OutdoorPvPTypes(typeId); data->TypeId = realTypeId; - data->ScriptId = sObjectMgr->GetScriptId(fields[1].GetCString()); + data->ScriptId = sObjectMgr->GetScriptId(fields[1].GetString()); m_OutdoorPvPDatas[realTypeId] = data; ++count; diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 301a25fa6a4..e12d6a137c6 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -129,7 +129,7 @@ class ScriptRegistry { // Get an ID for the script. An ID only exists if it's a script that is assigned in the database // through a script name (or similar). - uint32 id = sObjectMgr->GetScriptId(script->GetName().c_str()); + uint32 id = sObjectMgr->GetScriptId(script->GetName()); if (id) { // Try to find an existing script. diff --git a/src/server/game/Weather/WeatherMgr.cpp b/src/server/game/Weather/WeatherMgr.cpp index 8ab122a82bb..f80e2977b1e 100644 --- a/src/server/game/Weather/WeatherMgr.cpp +++ b/src/server/game/Weather/WeatherMgr.cpp @@ -132,7 +132,7 @@ void LoadWeatherData() } } - wzc.ScriptId = sObjectMgr->GetScriptId(fields[13].GetCString()); + wzc.ScriptId = sObjectMgr->GetScriptId(fields[13].GetString()); ++count; } |