diff --git a/core/smn_lang.cpp b/core/smn_lang.cpp index d4d6101d..54248abe 100644 --- a/core/smn_lang.cpp +++ b/core/smn_lang.cpp @@ -41,8 +41,16 @@ static cell_t sm_LoadTranslations(IPluginContext *pCtx, const cell_t *params) return 1; } +static cell_t sm_SetGlobalTransTarget(IPluginContext *pContext, const cell_t *params) +{ + g_SourceMod.SetGlobalTarget(params[1]); + + return 1; +} + REGISTER_NATIVES(langNativeS) { {"LoadTranslations", sm_LoadTranslations}, + {"SetGlobalTransTarget", sm_SetGlobalTransTarget}, {NULL, NULL}, }; diff --git a/plugins/include/halflife.inc b/plugins/include/halflife.inc index aea2abf2..99b2378a 100644 --- a/plugins/include/halflife.inc +++ b/plugins/include/halflife.inc @@ -231,12 +231,12 @@ stock PrintToChatAll(const String:format[], any:...) new maxClients = GetMaxClients(); decl String:buffer[192]; - VFormat(buffer, sizeof(buffer), format, 2); - for (new i = 1; i <= maxClients; i++) { if (IsClientInGame(i)) { + SetGlobalTransTarget(i); + VFormat(buffer, sizeof(buffer), format, 2); PrintToChat(i, "%s", buffer); } } diff --git a/plugins/include/lang.inc b/plugins/include/lang.inc index f1d5b5df..09f82e5b 100644 --- a/plugins/include/lang.inc +++ b/plugins/include/lang.inc @@ -28,3 +28,14 @@ * @noreturn */ native LoadTranslations(const String:file[]); + +/** + * Sets the global language target. This is useful for creating functions + * that will be compatible with the %t format specifier. Note that invalid + * indexes can be specified but the error will occur during translation, + * not during this function call. + * + * @param client Client index or LANG_SERVER. + * @noreturn + */ +native SetGlobalTransTarget(client);