Add OnClientLanguageChanged() forward (#1597)

This commit is contained in:
Vladimir 2021-10-25 21:45:24 +03:00 committed by GitHub
parent a343410793
commit 79d594aca3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 52 additions and 25 deletions

View File

@ -196,6 +196,7 @@ void PlayerManager::OnSourceModAllInitialized()
m_clcommandkv_post = forwardsys->CreateForward("OnClientCommandKeyValues_Post", ET_Ignore, 2, NULL, Param_Cell, Param_Cell); m_clcommandkv_post = forwardsys->CreateForward("OnClientCommandKeyValues_Post", ET_Ignore, 2, NULL, Param_Cell, Param_Cell);
m_clinfochanged = forwardsys->CreateForward("OnClientSettingsChanged", ET_Ignore, 1, p2); m_clinfochanged = forwardsys->CreateForward("OnClientSettingsChanged", ET_Ignore, 1, p2);
m_clauth = forwardsys->CreateForward("OnClientAuthorized", ET_Ignore, 2, NULL, Param_Cell, Param_String); m_clauth = forwardsys->CreateForward("OnClientAuthorized", ET_Ignore, 2, NULL, Param_Cell, Param_String);
m_cllang = forwardsys->CreateForward("OnClientLanguageChanged", ET_Ignore, 2, NULL, Param_Cell, Param_Cell);
m_onActivate = forwardsys->CreateForward("OnServerLoad", ET_Ignore, 0, NULL); m_onActivate = forwardsys->CreateForward("OnServerLoad", ET_Ignore, 0, NULL);
m_onActivate2 = forwardsys->CreateForward("OnMapStart", ET_Ignore, 0, NULL); m_onActivate2 = forwardsys->CreateForward("OnMapStart", ET_Ignore, 0, NULL);
@ -246,6 +247,7 @@ void PlayerManager::OnSourceModShutdown()
forwardsys->ReleaseForward(m_clcommandkv_post); forwardsys->ReleaseForward(m_clcommandkv_post);
forwardsys->ReleaseForward(m_clinfochanged); forwardsys->ReleaseForward(m_clinfochanged);
forwardsys->ReleaseForward(m_clauth); forwardsys->ReleaseForward(m_clauth);
forwardsys->ReleaseForward(m_cllang);
forwardsys->ReleaseForward(m_onActivate); forwardsys->ReleaseForward(m_onActivate);
forwardsys->ReleaseForward(m_onActivate2); forwardsys->ReleaseForward(m_onActivate2);
@ -520,6 +522,8 @@ bool PlayerManager::OnClientConnect(edict_t *pEntity, const char *pszName, const
{ {
unsigned int langid; unsigned int langid;
pPlayer->m_LangId = (translator->GetLanguageByName(name, &langid)) ? langid : translator->GetServerLanguage(); pPlayer->m_LangId = (translator->GetLanguageByName(name, &langid)) ? langid : translator->GetServerLanguage();
OnClientLanguageChanged(client, pPlayer->m_LangId);
} else { } else {
pPlayer->m_LangId = translator->GetServerLanguage(); pPlayer->m_LangId = translator->GetServerLanguage();
} }
@ -1415,6 +1419,13 @@ void PlayerManager::OnClientSettingsChanged(edict_t *pEntity)
} }
} }
void PlayerManager::OnClientLanguageChanged(int client, unsigned int language)
{
m_cllang->PushCell(client);
m_cllang->PushCell(language);
m_cllang->Execute(NULL);
}
int PlayerManager::GetMaxClients() int PlayerManager::GetMaxClients()
{ {
return m_maxClients; return m_maxClients;
@ -2022,7 +2033,9 @@ bool PlayerManager::HandleConVarQuery(QueryCvarCookie_t cookie, int client, EQue
if (m_Players[i].m_LanguageCookie == cookie) if (m_Players[i].m_LanguageCookie == cookie)
{ {
unsigned int langid; unsigned int langid;
m_Players[i].m_LangId = (translator->GetLanguageByName(cvarValue, &langid)) ? langid : translator->GetServerLanguage(); unsigned int new_langid = (translator->GetLanguageByName(cvarValue, &langid)) ? langid : translator->GetServerLanguage();
m_Players[i].m_LangId = new_langid;
OnClientLanguageChanged(i, new_langid);
return true; return true;
} }
@ -2618,7 +2631,11 @@ unsigned int CPlayer::GetLanguageId()
void CPlayer::SetLanguageId(unsigned int id) void CPlayer::SetLanguageId(unsigned int id)
{ {
m_LangId = id; if(m_LangId != id)
{
m_LangId = id;
g_Players.OnClientLanguageChanged(m_iIndex, id);
}
} }
int CPlayer::GetUserId() int CPlayer::GetUserId()

View File

@ -192,6 +192,7 @@ public:
#endif #endif
void OnClientSettingsChanged(edict_t *pEntity); void OnClientSettingsChanged(edict_t *pEntity);
//void OnClientSettingsChanged_Pre(edict_t *pEntity); //void OnClientSettingsChanged_Pre(edict_t *pEntity);
void OnClientLanguageChanged(int client, unsigned int language);
void OnServerHibernationUpdate(bool bHibernating); void OnServerHibernationUpdate(bool bHibernating);
void OnClientPrintf(edict_t *pEdict, const char *szMsg); void OnClientPrintf(edict_t *pEdict, const char *szMsg);
void OnPrintfFrameAction(unsigned int serial); void OnPrintfFrameAction(unsigned int serial);
@ -253,6 +254,7 @@ private:
IForward *m_clcommandkv_post; IForward *m_clcommandkv_post;
IForward *m_clinfochanged; IForward *m_clinfochanged;
IForward *m_clauth; IForward *m_clauth;
IForward *m_cllang;
IForward *m_onActivate; IForward *m_onActivate;
IForward *m_onActivate2; IForward *m_onActivate2;
CPlayer *m_Players; CPlayer *m_Players;

View File

@ -225,6 +225,14 @@ forward void OnClientPostAdminFilter(int client);
*/ */
forward void OnClientPostAdminCheck(int client); forward void OnClientPostAdminCheck(int client);
/**
* Called when the language was received from the player.
*
* @param client Client index.
* @param language Language number.
*/
forward void OnClientLanguageChanged(int client, int language);
/** /**
* This function is deprecated. Use the MaxClients variable instead. * This function is deprecated. Use the MaxClients variable instead.
* *