Core/Globals: Use std::string rather than char* to pass script names around.
(cherry picked from commit b7b49fe35f87e83813466cb302ff17381792e607) Conflicts: src/server/game/Battlegrounds/BattlegroundMgr.cpp src/server/game/Globals/ObjectMgr.cpp
This commit is contained in:
1 parent
23153c8bf1
commit
3a3a6bbfd2
9 files changed
+31
-24
No files matched your search
@@ -2344,7 +2344,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);
|
||||
|
||||
@@ -549,7 +549,7 @@ void BattlegroundMgr::LoadBattlegroundTemplates()
|
||||
float dist = fields[9].GetFloat();
|
||||
bgTemplate.MaxStartDistSq = dist * dist;
|
||||
bgTemplate.Weight = fields[10].GetUInt8();
|
||||
bgTemplate.ScriptId = sObjectMgr->GetScriptId(fields[11].GetCString());
|
||||
bgTemplate.ScriptId = sObjectMgr->GetScriptId(fields[11].GetString());
|
||||
bgTemplate.BattlemasterEntry = bl;
|
||||
|
||||
if (bgTemplate.MaxPlayersPerTeam == 0 || bgTemplate.MinPlayersPerTeam > bgTemplate.MaxPlayersPerTeam)
|
||||
|
||||
@@ -967,7 +967,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);
|
||||
|
||||
@@ -503,7 +503,7 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
|
||||
creatureTemplate.RegenHealth = fields[71].GetBool();
|
||||
creatureTemplate.MechanicImmuneMask = fields[72].GetUInt32();
|
||||
creatureTemplate.flags_extra = fields[73].GetUInt32();
|
||||
creatureTemplate.ScriptID = GetScriptId(fields[74].GetCString());
|
||||
creatureTemplate.ScriptID = GetScriptId(fields[74].GetString());
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadCreatureTemplateAddons()
|
||||
@@ -2405,7 +2405,7 @@ void ObjectMgr::LoadItemTemplates()
|
||||
itemTemplate.Duration = fields[129].GetUInt32();
|
||||
itemTemplate.ItemLimitCategory = uint32(fields[130].GetInt16());
|
||||
itemTemplate.HolidayId = fields[131].GetUInt32();
|
||||
itemTemplate.ScriptId = sObjectMgr->GetScriptId(fields[132].GetCString());
|
||||
itemTemplate.ScriptId = sObjectMgr->GetScriptId(fields[132].GetString());
|
||||
itemTemplate.DisenchantID = fields[133].GetUInt32();
|
||||
itemTemplate.FoodType = uint32(fields[134].GetUInt8());
|
||||
itemTemplate.MinMoneyLoot = fields[135].GetUInt32();
|
||||
@@ -5103,8 +5103,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)
|
||||
@@ -5116,18 +5116,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, spellId);
|
||||
TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) does not exist.", scriptName.c_str(), spellId);
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -5140,7 +5140,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)));
|
||||
}
|
||||
@@ -5178,7 +5178,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)
|
||||
@@ -5314,7 +5314,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;
|
||||
|
||||
@@ -5779,8 +5779,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)
|
||||
@@ -6637,7 +6637,7 @@ void ObjectMgr::LoadGameObjectTemplate()
|
||||
got.raw.data[i] = fields[10 + i].GetInt32(); // data1 and data6 can be -1
|
||||
|
||||
got.AIName = fields[34].GetString();
|
||||
got.ScriptId = GetScriptId(fields[35].GetCString());
|
||||
got.ScriptId = GetScriptId(fields[35].GetString());
|
||||
|
||||
// Checks
|
||||
|
||||
@@ -8585,11 +8585,18 @@ 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);
|
||||
|
||||
@@ -1270,8 +1270,8 @@ class ObjectMgr
|
||||
bool IsVendorItemValid(uint32 vendor_entry, uint32 item, int32 maxcount, uint32 ptime, uint32 ExtendedCost, 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
|
||||
{
|
||||
|
||||
@@ -3177,7 +3177,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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -131,7 +131,7 @@ void LoadWeatherData()
|
||||
}
|
||||
}
|
||||
|
||||
wzc.ScriptId = sObjectMgr->GetScriptId(fields[13].GetCString());
|
||||
wzc.ScriptId = sObjectMgr->GetScriptId(fields[13].GetString());
|
||||
|
||||
++count;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user