Исправления в плагине CTF alpha8_29.11.2025
1. Файл: CTF alpha8_29.11.2025.sp
1.1. Исправлены строки в функции MovePosition()
- Строка 358: Заменён хардкод русского текста на ключ перевода
Было: PrintToChat(client, "%tДля установки позиции вы должны быть живы", "Chat_Prefix");
Стало: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_MustBeAlive");
- Строка 364: Заменён хардкод русского текста на ключ перевода
Было: PrintToChat(client, "%tДля установки позиции вы должны стоять на земле", "Chat_Prefix");
Стало: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_MustBeOnGround");
- Строка 374: Заменён хардкод русского текста на ключ перевода
Было: PrintToChatAll("%tПозиция %s была изменена админом!", "Chat_Prefix", POS_NAME[type]);
Стало: PrintToChatAll("%t%t", "Chat_Prefix", "Chat_PositionChanged", MENU_ITEM[type]);
1.2. Исправлена функция SetFlagPosition()
- Строка 1214: Заменён хардкод "террористов"/"спецназа" на ключи переводов
Было: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_FlagSet", flagTeam == T_T ? "террористов" : "спецназа");
Стало: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_FlagSet", flagTeam == T_T ? "Chat_TeamT" : "Chat_TeamCT");
- Строка 1207: Исправлена ошибка с индексацией массива fPos
Было: GetClientAbsOrigin(client, fPos[flagTeam]);
Стало: GetClientAbsOrigin(client, fPos[flagTeam+2]);
- Удалён неиспользуемый код (переменная buffer)
1.3. Исправлена функция SetBasePosition()
- Строка 1206: Заменены "TeamT"/"TeamCT" на ключи переводов
Было: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_BaseSet", team == T_T ? "TeamT" : "TeamCT");
Стало: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_BaseSet", team == T_T ? "Chat_TeamT" : "Chat_TeamCT");
- Строка 1207: Заменены "TeamT"/"TeamCT" на ключи переводов
Было: PrintToChatAll("%t%t", "Chat_Prefix", "Chat_BaseMoved", team == T_T ? "TeamT" : "TeamCT");
Стало: PrintToChatAll("%t%t", "Chat_Prefix", "Chat_BaseMoved", team == T_T ? "Chat_TeamT" : "Chat_TeamCT");
- Строка 1209: Заменены "TeamT"/"TeamCT" на ключи переводов
Было: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_BaseSaved", team == T_T ? "TeamT" : "TeamCT");
Стало: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_BaseSaved", team == T_T ? "Chat_TeamT" : "Chat_TeamCT");
1.4. Удалён неиспользуемый код
- Удалены неиспользуемые функции (строки 1175-1197):
- public Action Cmd_SetTFlag(int client, int args)
- public Action Cmd_SetCTFlag(int client, int args)
- public Action Cmd_SetTBase(int client, int args)
- public Action Cmd_SetCTBase(int client, int args)
Примечание: Эти функции не были зарегистрированы как команды, поэтому были удалены
- Удалён закомментированный блок кода (строки 778-785):
/*
void ReadPositionVector(KeyValues kv, int type, float def[3])
{
kv.GetVector(POS_NAME[type], fPos[type], INVALID_POS);
// если координаты не заданы, то используем центр зоны закупки команды
if(fPos[type][2] == INVALID_POS[2]) fPos[type] = def;
}
*/
2. Файл: capturetheflag.phrases.txt
2.1. Добавлены новые ключи переводов
"Chat_PositionChanged"
{
"#format" "{1:t}"
"en" "The position of {1} was changed by administrator!"
"ru" "Позиция {1} была изменена админом!"
}
"Chat_MustBeAlive"
{
"en" "You must be alive to set a position."
"ru" "Для установки позиции вы должны быть живы."
}
"Chat_MustBeOnGround"
{
"en" "You must be on the ground to set a position."
"ru" "Для установки позиции вы должны стоять на земле."
}
Итого
- Все текстовые сообщения в чате теперь используют систему переводов
- Исправлена ошибка с индексацией массива в SetFlagPosition()
- Удалён неиспользуемый код (4 функции и 1 закомментированный блок)
- Добавлено 3 новых ключа перевода с поддержкой английского и русского языков
- Код очищен от лишних комментариев и неиспользуемых элементов
Результат
Теперь
все сообщения в чате поддерживают многоязычность через систему переводов SourceMod. Плагин готов к использованию и может быть легко переведён на другие языки путём добавления соответствующих записей в файл переводов.