Fix traductions FR serveur-wide : reparer m_availableDbcLocaleMask
Le masque des locales disponibles etait initialise a 0 et JAMAIS renseigne (cablage perdu dans ce fork custom) -> World::GetAvailableDbcLocale() retombait toujours sur enUS -> GetSessionDbcLocale() forcait enUS -> les hotfix de broadcast_text (dialogues PNJ, corps de gossip) etaient pousses en ANGLAIS par-dessus les donnees FR natives du client. Fix : DB2Manager::LoadStores expose le masque reel des locales (fichiers disque + locales chargees depuis la base hotfix quand DB2.Hotfix.LoadAllLocales est actif, broadcast_text_locale faisant foi), branche dans World apres LoadStores. Necessite aussi DB2.Hotfix.LoadAllLocales=1 dans worldserver.conf. Valide en jeu : tous les dialogues PNJ de l Ile Vagabonde passent en francais. Portee : serveur entier (tout texte resolu via le systeme de hotfix).
This commit is contained in:
@@ -1341,6 +1341,26 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Masque des locales reellement disponibles (fichiers disque + locales chargees
|
||||
// depuis la base hotfix quand DB2.Hotfix.LoadAllLocales est actif). Sans ca,
|
||||
// m_availableDbcLocaleMask restait a 0 -> GetSessionDbcLocale forcait enUS et les
|
||||
// hotfix de broadcast_text etaient pousses en anglais par-dessus les donnees FR
|
||||
// du client. [fix Sylvania]
|
||||
availableDb2Locales |= (1 << LOCALE_enUS);
|
||||
if (sConfigMgr->GetBoolDefault("DB2.Hotfix.LoadAllLocales", false))
|
||||
{
|
||||
if (QueryResult localesResult = HotfixDatabase.Query("SELECT DISTINCT locale FROM broadcast_text_locale"))
|
||||
{
|
||||
do
|
||||
{
|
||||
LocaleConstant lc = GetLocaleByName((*localesResult)[0].GetString());
|
||||
if (lc != LOCALE_none)
|
||||
availableDb2Locales |= (1 << lc);
|
||||
} while (localesResult->NextRow());
|
||||
}
|
||||
}
|
||||
_availableLocalesMask = availableDb2Locales;
|
||||
|
||||
TC_LOG_INFO("server.loading", ">> Initialized " SZFMTD " DB2 data stores in %u ms", _stores.size(), GetMSTimeDiffToNow(oldMSTime));
|
||||
}
|
||||
|
||||
|
||||
@@ -292,6 +292,8 @@ public:
|
||||
static DB2Manager& Instance();
|
||||
|
||||
void LoadStores(std::string const& dataPath, uint32 defaultLocale);
|
||||
uint32 GetAvailableLocalesMask() const { return _availableLocalesMask; }
|
||||
uint32 _availableLocalesMask = (1 << LOCALE_enUS);
|
||||
DB2StorageBase const* GetStorage(uint32 type) const;
|
||||
|
||||
void LoadHotfixData();
|
||||
|
||||
@@ -1835,6 +1835,7 @@ void World::SetInitialWorldSettings()
|
||||
TC_LOG_INFO("server.loading", "Initialize data stores...");
|
||||
///- Load DB2s
|
||||
sDB2Manager.LoadStores(m_dataPath, m_defaultDbcLocale);
|
||||
m_availableDbcLocaleMask = sDB2Manager.GetAvailableLocalesMask(); // [fix Sylvania] cf DB2Stores
|
||||
TC_LOG_INFO("misc", "Loading hotfix blobs...");
|
||||
sDB2Manager.LoadHotfixBlob();
|
||||
TC_LOG_INFO("misc", "Loading hotfix info...");
|
||||
|
||||
Reference in New Issue
Block a user