diff --git a/core/logic/Translator.cpp b/core/logic/Translator.cpp index 5106b269..e68016b8 100644 --- a/core/logic/Translator.cpp +++ b/core/logic/Translator.cpp @@ -750,6 +750,12 @@ void Translator::OnSourceModAllInitialized() { AddLanguage("en", "English"); + const char* lang = smcore.GetCoreConfigValue("ServerLang"); + if (lang) + { + strncpy(m_InitialLang, lang, sizeof(m_InitialLang)); + } + g_pCorePhrases = CreatePhraseCollection(); g_pCorePhrases->AddPhraseFile("core.phrases"); diff --git a/core/logic/intercom.h b/core/logic/intercom.h index 4e007881..d2c968d0 100644 --- a/core/logic/intercom.h +++ b/core/logic/intercom.h @@ -42,7 +42,7 @@ using namespace SourceMod; * Add 1 to the RHS of this expression to bump the intercom file * This is to prevent mismatching core/logic binaries */ -#define SM_LOGIC_MAGIC (0x0F47C0DE - 16) +#define SM_LOGIC_MAGIC (0x0F47C0DE - 17) #if defined SM_LOGIC class IVEngineServer @@ -115,6 +115,7 @@ struct sm_core_t const char * (*GetGameDescription)(); const char * (*GetSourceEngineName)(); bool (*SymbolsAreHidden)(); + const char * (*GetCoreConfigValue)(const char*); /* Data */ ServerGlobals *serverGlobals; void * serverFactory; diff --git a/core/logic_bridge.cpp b/core/logic_bridge.cpp index bd44e32f..4904be13 100644 --- a/core/logic_bridge.cpp +++ b/core/logic_bridge.cpp @@ -49,6 +49,7 @@ #include "PlayerManager.h" #include "AdminCache.h" #include "HalfLife2.h" +#include "CoreConfig.h" #if defined _WIN32 #define MATCHMAKINGDS_SUFFIX "" @@ -176,6 +177,11 @@ static bool symbols_are_hidden() #endif } +static const char* get_core_config_value(const char* key) +{ + return g_CoreConfig.GetCoreConfigValue(key); +} + static ServerGlobals serverGlobals; static sm_core_t core_bridge = @@ -209,6 +215,7 @@ static sm_core_t core_bridge = get_game_description, get_source_engine_name, symbols_are_hidden, + get_core_config_value, &serverGlobals };