diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp index 5a179055..2df4d4a2 100644 --- a/core/PlayerManager.cpp +++ b/core/PlayerManager.cpp @@ -412,6 +412,21 @@ bool PlayerManager::OnClientConnect(edict_t *pEntity, const char *pszName, const int client = IndexOfEdict(pEntity); CPlayer *pPlayer = &m_Players[client]; + pPlayer->Initialize(pszName, pszAddress, pEntity); + + /* Get the client's language */ + if (m_QueryLang) + { + const char *name; + if (!pPlayer->IsFakeClient() && (name=engine->GetClientConVarValue(client, "cl_language"))) + { + unsigned int langid; + pPlayer->m_LangId = (translator->GetLanguageByName(name, &langid)) ? langid : translator->GetServerLanguage(); + } else { + pPlayer->m_LangId = translator->GetServerLanguage(); + } + } + List::iterator iter; IClientListener *pListener = NULL; for (iter=m_hooks.begin(); iter!=m_hooks.end(); iter++) @@ -425,7 +440,6 @@ bool PlayerManager::OnClientConnect(edict_t *pEntity, const char *pszName, const cell_t res = 1; - pPlayer->Initialize(pszName, pszAddress, pEntity); m_clconnect->PushCell(client); m_clconnect->PushStringEx(reject, maxrejectlen, SM_PARAM_STRING_UTF8 | SM_PARAM_STRING_COPY, SM_PARAM_COPYBACK); m_clconnect->PushCell(maxrejectlen); @@ -547,19 +561,6 @@ void PlayerManager::OnClientPutInServer(edict_t *pEntity, const char *playername pPlayer->m_Info = playerinfo->GetPlayerInfo(pEntity); } - /* Get the client's language */ - if (m_QueryLang) - { - const char *name; - if (!pPlayer->IsFakeClient() && (name=engine->GetClientConVarValue(client, "cl_language"))) - { - unsigned int langid; - pPlayer->m_LangId = (translator->GetLanguageByName(name, &langid)) ? langid : translator->GetServerLanguage(); - } else { - pPlayer->m_LangId = translator->GetServerLanguage(); - } - } - pPlayer->Connect(); m_PlayerCount++; diff --git a/core/logic/smn_lang.cpp b/core/logic/smn_lang.cpp index 3d309893..074cb1a1 100644 --- a/core/logic/smn_lang.cpp +++ b/core/logic/smn_lang.cpp @@ -108,7 +108,7 @@ static cell_t sm_SetClientLanguage(IPluginContext *pContext, const cell_t *param { IGamePlayer *player = playerhelpers->GetGamePlayer(params[1]); - if (!player || !player->IsInGame()) + if (!player || !player->IsConnected()) { return pContext->ThrowNativeError("Invalid client index %d", params[1]); } diff --git a/plugins/include/lang.inc b/plugins/include/lang.inc index 61b98ada..1931a5f5 100644 --- a/plugins/include/lang.inc +++ b/plugins/include/lang.inc @@ -63,7 +63,7 @@ native SetGlobalTransTarget(client); * * @param client Client index. * @return Language number client is using. - * @error Invalid client index or client not in game. + * @error Invalid client index or client not connected. */ native GetClientLanguage(client); @@ -100,7 +100,7 @@ native GetLanguageInfo(language, String:code[]="", codeLen=0, String:name[]="", * @param client Client index. * @param language Language number. * @noreturn - * @error Invalid client index or client not in game. + * @error Invalid client index or client not connected. */ native SetClientLanguage(client, language);