Remove hardcoded language team names

This commit is contained in:
OciXCrom 2018-08-26 21:16:14 +02:00
parent 761cf035b3
commit 3979d80ad8
2 changed files with 32 additions and 40 deletions

View File

@ -38,16 +38,14 @@ enum TargetexTeams
{ {
TARGETEX_E_CODE[5], TARGETEX_E_CODE[5],
TARGETEX_E_NAME[10], TARGETEX_E_NAME[10],
TARGETEX_E_SUFFIX[6], TARGETEX_E_LEN
TARGETEX_E_LEN,
TARGETEX_E_LEN_PLUS_ONE,
} }
static const Targetex_Teams[][TargetexTeams] = static const Targetex_Teams[][TargetexTeams] =
{ {
{ "t", "TERRORIST", "_T" }, { "ct", "CT" },
{ "ct", "CT", "_CT" }, { "t", "TERRORIST" },
{ "spec", "SPECTATOR", "_SPEC" } { "spec", "SPECTATOR" }
} }
/** /**
@ -81,9 +79,6 @@ static const Targetex_Teams[][TargetexTeams] =
* except the admin that used the command. * except the admin that used the command.
* @note The "name" argument is used to store the matched client's name * @note The "name" argument is used to store the matched client's name
* or one of the translations found in the targetex.txt dictionary. * or one of the translations found in the targetex.txt dictionary.
* If only one client is matched, the "name" argument will be equal
* to the matched client's name, otherwise it will contain a translated
* string which you can directly add in your message by using %s.
* *
* @param id Client index of admin performing an action * @param id Client index of admin performing an action
* @param arg Target pattern * @param arg Target pattern
@ -113,10 +108,7 @@ stock cmd_targetex(id, const arg[], players[MAX_PLAYERS], name[], len, TargetexF
register_dictionary("targetex.txt") register_dictionary("targetex.txt")
for(new i; i < sizeof(Targetex_Teams); i++) for(new i; i < sizeof(Targetex_Teams); i++)
{
Targetex_Teams[i][TARGETEX_E_LEN] = strlen(Targetex_Teams[i][TARGETEX_E_CODE]); Targetex_Teams[i][TARGETEX_E_LEN] = strlen(Targetex_Teams[i][TARGETEX_E_CODE]);
Targetex_Teams[i][TARGETEX_E_LEN_PLUS_ONE] = Targetex_Teams[i][TARGETEX_E_LEN] + 1;
}
for(new i; i < sizeof(TargetEx_GroupArguments); i++) for(new i; i < sizeof(TargetEx_GroupArguments); i++)
TargetEx_ArgLens[i] = strlen(TargetEx_GroupArguments[i]); TargetEx_ArgLens[i] = strlen(TargetEx_GroupArguments[i]);
@ -137,7 +129,7 @@ stock cmd_targetex(id, const arg[], players[MAX_PLAYERS], name[], len, TargetexF
} }
else if(bExceptMe) else if(bExceptMe)
{ {
console_print(id, "%L", id, "TARGETEX_NO_EXCEPT", arg); console_print(id, "%L", id, "TARGETEX_NO_EXCLUDE", arg[2]);
return 0; return 0;
} }
@ -152,25 +144,29 @@ stock cmd_targetex(id, const arg[], players[MAX_PLAYERS], name[], len, TargetexF
if(flags & TARGETEX_NO_BOTS) if(flags & TARGETEX_NO_BOTS)
iMatchingFlags |= GetPlayers_ExcludeBots|GetPlayers_ExcludeHLTV; iMatchingFlags |= GetPlayers_ExcludeBots|GetPlayers_ExcludeHLTV;
new szLangKey[32], szSuffix[6], iArgLen = strlen(arg); new szLangKey[32], szSuffix[6], iArgLen = strlen(arg)
new iArgLen2 = iArgLen - (bExceptMe ? 1 : 0); new iArgLen2 = iArgLen - (bExceptMe ? 1 : 0);
for(new i; i < sizeof(Targetex_Teams); i++) for(new i; i < sizeof(Targetex_Teams); i++)
{ {
if(equal(arg[iArgLen - Targetex_Teams[i][TARGETEX_E_LEN]], Targetex_Teams[i][TARGETEX_E_CODE])) if(equal(arg[iArgLen - Targetex_Teams[i][TARGETEX_E_LEN]], Targetex_Teams[i][TARGETEX_E_CODE]))
{ {
szSuffix = "_TEAM";
iMatchingFlags |= GetPlayers_MatchTeam; iMatchingFlags |= GetPlayers_MatchTeam;
copy(szSuffix, charsmax(szSuffix), Targetex_Teams[i][TARGETEX_E_SUFFIX]);
copy(szMatchingString, charsmax(szMatchingString), Targetex_Teams[i][TARGETEX_E_NAME]); copy(szMatchingString, charsmax(szMatchingString), Targetex_Teams[i][TARGETEX_E_NAME]);
if(iArgLen2 == Targetex_Teams[i][TARGETEX_E_LEN_PLUS_ONE]) if(iArgLen2 == Targetex_Teams[i][TARGETEX_E_LEN] + 1)
{ {
copy(szLangKey, charsmax(szLangKey), "TARGETEX_ARG_ALL"); copy(szLangKey, charsmax(szLangKey), "TARGETEX_ARG_ALL");
get_players_ex(iPlayers, iPnum, iMatchingFlags, szMatchingString); get_players_ex(iPlayers, iPnum, iMatchingFlags, szMatchingString);
}
break;
}
}
if(szLangKey[0])
goto @AFTER_ARGS; goto @AFTER_ARGS;
}
}
}
if(equal(arg[iStartArg], "aim", 3)) if(equal(arg[iStartArg], "aim", 3))
{ {
@ -278,16 +274,19 @@ stock cmd_targetex(id, const arg[], players[MAX_PLAYERS], name[], len, TargetexF
switch(iMatchedPlayers) switch(iMatchedPlayers)
{ {
case 0: console_print(id, "%L", id, "TARGETEX_NO_MATCHES") case 0: console_print(id, "%L", id, "TARGETEX_NO_MATCHES");
case 1: get_user_name(players[0], name, len); case 1: get_user_name(players[0], name, len);
default: default:
{ {
if(szSuffix[0]) if(szSuffix[0])
{
add(szLangKey, charsmax(szLangKey), szSuffix); add(szLangKey, charsmax(szLangKey), szSuffix);
formatex(name, len, "%L", LANG_PLAYER, szLangKey, szMatchingString);
}
else formatex(name, len, "%L", LANG_PLAYER, szLangKey);
if(bExceptMe) if(bExceptMe)
formatex(name, len, "%L %L", LANG_PLAYER, szLangKey, LANG_PLAYER, "TARGETEX_EXCEPT_HIMSELF"); add(name, len, fmt(" %L", LANG_PLAYER, "TARGETEX_EXCEPT_HIMSELF"));
else formatex(name, len, "%L", LANG_PLAYER, szLangKey);
} }
} }
@ -313,6 +312,12 @@ stock cmd_targetex(id, const arg[], players[MAX_PLAYERS], name[], len, TargetexF
if(players[0]) if(players[0])
{ {
if(flags & TARGETEX_NO_ALIVE && is_user_alive(players[0]))
{
console_print(id, "%L", id, "TARGETEX_NO_ALIVE");
return 0;
}
get_user_name(players[0], name, len); get_user_name(players[0], name, len);
return 1; return 1;
} }

View File

@ -1,39 +1,26 @@
[en] [en]
TARGETEX_NO_SELF = This command cannot be used on yourself.
TARGETEX_NO_GROUPS = This command cannot be used on groups of players. TARGETEX_NO_GROUPS = This command cannot be used on groups of players.
TARGETEX_NO_BOTS = This command cannot be used on bots. TARGETEX_NO_BOTS = This command cannot be used on bots.
TARGETEX_NO_ALIVE = Alive players cannot be targeted with this command. TARGETEX_NO_ALIVE = Alive players cannot be targeted with this command.
TARGETEX_NO_DEAD = Dead players cannot be targeted with this command. TARGETEX_NO_DEAD = Dead players cannot be targeted with this command.
TARGETEX_NO_MATCHES = No players were found matching your criteria. TARGETEX_NO_MATCHES = No players were found matching your criteria.
TARGETEX_NO_EXCEPT = You cannot exclude yourself when using @%s. TARGETEX_NO_EXCLUDE = You cannot exclude yourself when using @%s
TARGETEX_EXCEPT_HIMSELF = except him TARGETEX_EXCEPT_HIMSELF = except him
TARGETEX_ARG_ALL = all players TARGETEX_ARG_ALL = all players
TARGETEX_ARG_ALL_CT = all counter-terrorists TARGETEX_ARG_ALL_TEAM = all players in team %s
TARGETEX_ARG_ALL_T = all terrorists
TARGETEX_ARG_ALL_SPEC = all spectators
TARGETEX_ARG_ALIVE = alive players TARGETEX_ARG_ALIVE = alive players
TARGETEX_ARG_ALIVE_CT = alive counter-terrorists TARGETEX_ARG_ALIVE_TEAM = alive players in team %s
TARGETEX_ARG_ALIVE_T = alive terrorists
TARGETEX_ARG_ALIVE_SPEC = alive spectators
TARGETEX_ARG_BOTS = all bots TARGETEX_ARG_BOTS = all bots
TARGETEX_ARG_BOTS_CT = all CT bots TARGETEX_ARG_BOTS_TEAM = all bots in team %s
TARGETEX_ARG_BOTS_T = all T bots
TARGETEX_ARG_BOTS_SPEC = all SPEC bots
TARGETEX_ARG_DEAD = dead players TARGETEX_ARG_DEAD = dead players
TARGETEX_ARG_DEAD_CT = dead counter-terrorists TARGETEX_ARG_DEAD_TEAM = dead players in team %s
TARGETEX_ARG_DEAD_T = dead terrorists
TARGETEX_ARG_DEAD_SPEC = dead spectators
TARGETEX_ARG_HUMANS = all humans TARGETEX_ARG_HUMANS = all humans
TARGETEX_ARG_HUMANS_CT = all CT humans TARGETEX_ARG_HUMANS_TEAM = all humans in team %s
TARGETEX_ARG_HUMANS_T = all T humans
TARGETEX_ARG_HUMANS_SPEC = all SPEC humans
TARGETEX_ARG_VIEW = all players in his view TARGETEX_ARG_VIEW = all players in his view
TARGETEX_ARG_VIEW_CT = all CTs in his view TARGETEX_ARG_VIEW_TEAM = all %s players in his view
TARGETEX_ARG_VIEW_T = all Ts in his view
TARGETEX_ARG_VIEW_SPEC = all SPECs in his view