CFT (Захват флага) - CSS Исправление багов и очень нужна помощь)

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,064
Реакции
267
Это уже рабочая версия или еще тест?
Кто нибудь ставил?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,605
Реакции
5,096
@HooLIGUN, последняя версия должна быть вполне себе рабочей.
Разве что красивостей типа поддержки переводов не везде реализовано (местами есть жёстко прописаные строки в коде).
 

DENZEL519

Работаю через AI !
Сообщения
510
Реакции
331
@Grey83, Ну мне кажется ты уже можешь оформить свою версию плагина в категории плагины. Так как ты переделал всю систему и весь код, так что это теперь твой плагин)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,605
Реакции
5,096
@DENZEL519, чтобы выложить нормально нужно код причесать и желательно потестить нормально с живыми игроками.
 

Аластар

GunGameGuru
Сообщения
352
Реакции
79
@Grey83, я готов тестить, пиши. Вспомню молодость)
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,605
Реакции
5,096
@Аластар, так можно тестить то, что уже выложено: основное уже всё выполнено, осталось только добавить переводы некоторых строк и почистить исходник от лишнего, если такое будет.
 

DENZEL519

Работаю через AI !
Сообщения
510
Реакции
331

Grey83

Что то не обновляет данный плагин (На sm 1.10 его версия не компилилась)
Ошибка была:
sourcemod-1.10.0-git6524-windows\addons\sourcemod\scripting\CTF alpha7_16.09.2025.sp(391) : error 017: undefined symbol "GetFilePermissions"
Решил закинуть его в ии, и по его запросам доделать.

Исправления в плагине CTF alpha8_29.11.2025​


1. Файл: CTF alpha8_29.11.2025.sp​


1.1. Исправлены строки в функции MovePosition()

  • Строка 358: Заменён хардкод русского текста на ключ перевода
    C-подобный:
      Было: PrintToChat(client, "%tДля установки позиции вы должны быть живы", "Chat_Prefix");
      Стало: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_MustBeAlive");
  • Строка 364: Заменён хардкод русского текста на ключ перевода
    C-подобный:
      Было: PrintToChat(client, "%tДля установки позиции вы должны стоять на земле", "Chat_Prefix");
      Стало: PrintToChat(client, "%t%t", "Chat_Prefix", "Chat_MustBeOnGround");
  • Строка 374: Заменён хардкод русского текста на ключ перевода
    C-подобный:
      Было: PrintToChatAll("%tПозиция %s была изменена админом!", "Chat_Prefix", POS_NAME[type]);
      Стало: PrintToChatAll("%t%t", "Chat_Prefix", "Chat_PositionChanged", MENU_ITEM[type]);

1.2. Исправлена функция SetFlagPosition()

  • Строка 1214: Заменён хардкод "террористов"/"спецназа" на ключи переводов
    C-подобный:
      Было: 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
    C-подобный:
      Было: GetClientAbsOrigin(client, fPos[flagTeam]);
      Стало: GetClientAbsOrigin(client, fPos[flagTeam+2]);
  • Удалён неиспользуемый код (переменная buffer)

1.3. Исправлена функция SetBasePosition()

  • Строка 1206: Заменены "TeamT"/"TeamCT" на ключи переводов
    C-подобный:
      Было: 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" на ключи переводов
    C-подобный:
      Было: 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" на ключи переводов
    C-подобный:
      Было: 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):
    C-подобный:
      - 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):
    C-подобный:
      /*
      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. Добавлены новые ключи переводов

C-подобный:
"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. Плагин готов к использованию и может быть легко переведён на другие языки путём добавления соответствующих записей в файл переводов.

PS Все права принадлежат его создателю @Grey83!
 

Вложения

  • CTF alpha8_29.11.2025.7z
    56.2 КБ · Просмотры: 3
  • CTF alpha8_29.11.2025.smx
    24.1 КБ · Просмотры: 3
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,605
Реакции
5,096
(На sm 1.10 его версия не компилилась)
в 1.10 нет такой функции, потому и агрилось.
Можно было убрать эту проверку и просто каждый раз выставлять права
Сообщения автоматически склеены:

Строка 1207: Исправлена ошибка с индексацией массива fPos
там разве была ошибка?
если была, то на что влияла хоть?
Сообщения автоматически склеены:

Теперь все сообщения в чате поддерживают многоязычность через систему переводов SourceMod.
это планировалось исправлять после проверки работоспособности и было не в приоритете =)

Кстати, так никто и не отписался насколько хорошо работает плагин. Я что мог проверить с ботами, то проверил.
 

DENZEL519

Работаю через AI !
Сообщения
510
Реакции
331
Кстати, так никто и не отписался насколько хорошо работает плагин. Я что мог проверить с ботами, то проверил.
А так всегда😔 Я так и подумал что ты выложил версию, а комментов в том что там не так, или так, нет к сожалению.
в 1.10 нет такой функции, потому и агрилось.
Странно, в 11 тоже не компилилось(
там разве была ошибка?
если была, то на что влияла хоть?
C-подобный:
Ошибка была. Разбор:
Структура массива fPos:
fPos[0] = P_BaseT (база террористов)
fPos[1] = P_BaseCT (база спецназа)
fPos[2] = P_FlagT (флаг террористов)
fPos[3] = P_FlagCT (флаг спецназа)
Проблема на строке 1214:
   GetClientAbsOrigin(client, fPos[flagTeam]);
Здесь flagTeam может быть T_T (0) или T_CT (1), но для флагов нужны индексы P_FlagT (2) и P_FlagCT (3).
Последствия:
При установке позиции флага террористов (T_T = 0) запись шла в fPos[0] (база террористов) вместо fPos[2] (флаг террористов).
При установке позиции флага спецназа (T_CT = 1) запись шла в fPos[1] (база спецназа) вместо fPos[3] (флаг спецназа).
Это перезаписывало позиции баз и ломало логику флагов.
Подтверждение:
На строке 1223 используется MoveProp(flagTeam+2), что корректно: для T_T (0) → P_FlagT (2), для T_CT (1) → P_FlagCT (3).
Исправление: заменить fPos[flagTeam] на fPos[flagTeam + 2] на строках 1214 и 1217.
 
Сверху Снизу