| Версия | Дата выпуска | Скачивания | Оценка | |
|---|---|---|---|---|
| 1.3.4 | Ядро и Модули | 74 | 0.00 звёзд 0 оценок | Скачать | |
| 1.3.3 | 21 | 0.00 звёзд 0 оценок | Скачать | |
| 1.3.2 | 239 | 0.00 звёзд 0 оценок | Скачать | |
| 1.3.0 | 175 | 0.00 звёзд 0 оценок | Скачать | |
| 1.2.7 | 171 | 5.00 звёзд 1 оценок | Скачать | |
| 1.2.6 | 69 | 0.00 звёзд 0 оценок | Скачать | |
| 1.2.5 | 60 | 0.00 звёзд 0 оценок | Скачать | |
| 1.2.4 | 76 | 0.00 звёзд 0 оценок | Скачать |
----------------------------------------------------------------------------------------------------------FAKECLIENTSFIX - МОДУЛЬНАЯ ВЕРСИЯ 1.3.4
Модульная архитектура плагина для управления фейковыми клиентами (ботами) на сервере SourceMod.
═══════════════════════════════════════════════════════════════
СТРУКТУРА
Core плагин
• FakeClientsFix_Core.sp - Основной плагин, содержит базовую логику подключения/отключения ботов и работу с именами
Модули
• FakeClientsFix_NameChange.sp - Модуль смены имен ботов по таймеру
• FakeClientsFix_PlayerCheck.sp - Модуль проверки количества игроков и автоматического удаления ботов
• FakeClientsFix_Threshold.sp - Модуль работы с порогами реальных игроков
API
• include/FakeClientsFix.inc - Инклюд с API для создания своих модулей
Примеры
• FakeClientsFix_Example.sp - Пример создания своего модуля
═══════════════════════════════════════════════════════════════
УСТАНОВКА
1. Скомпилируйте все файлы:
•- обязателенC-подобный:FakeClientsFix_Core.sp
• Модули по желанию (можно использовать все или только нужные)
2. Скопируйте скомпилированныефайлы вC-подобный:.smxC-подобный:addons/sourcemod/plugins/
3. Убедитесь что файлсуществует и содержит имена для ботовC-подобный:configs/fakeclients.txt
═══════════════════════════════════════════════════════════════
СОЗДАНИЕ СВОЕГО МОДУЛЯ
1. Скопируйтеи переименуйтеC-подобный:FakeClientsFix_Example.sp
2. Подключите инклюд:
C-подобный:#include <FakeClientsFix>
3. Используйте Forward'ы для отслеживания событий:
C-подобный:public void FakeClientsFix_OnBotConnected(int client, const char[] name) { // Ваш код }
4. Используйте Native функции для работы с ботами:
C-подобный:int botCount = FakeClientsFix_GetBotCount(); ArrayList names = FakeClientsFix_GetNamesArray();
═══════════════════════════════════════════════════════════════
CONVAR'Ы
Core
•- Количество фейковых клиентов (по умолчанию: 10)C-подобный:sm_fakeclients_players
•- Задержка перед добавлением ботов после смены карты (по умолчанию: 15.0)C-подобный:sm_fakeclients_delay
•- Интервал между подключением ботов (по умолчанию: 8.0)C-подобный:sm_fakeclients_connect_interval
NameChange модуль
•- Интервал смены имен ботов в спектаторах (0 = отключено)C-подобный:sm_fakeclients_namechange_interval_spec
•- Интервал смены имен играющих ботов (0 = отключено)C-подобный:sm_fakeclients_namechange_interval_playing
PlayerCheck модуль
•- Максимальное количество реальных игроков, при превышении которого удаляются все боты (0 = отключено)C-подобный:sm_fakeclients_maxplayers
Threshold модуль
•- Порог реальных игроков, после которого боты начинают уступать места (0 = отключено)C-подобный:sm_fakeclients_threshold
═══════════════════════════════════════════════════════════════
ПРИМЕЧАНИЯ
• Core плагин обязателен для работы всех модулей
• Модули можно включать/отключать независимо друг от друга
• Все модули используют общий API через инклюд
• Можно создавать свои модули используя API
═══════════════════════════════════════════════════════════════
Авторы:
• DENZEL519&AI
• LouLoubizou
• Grey83
----------------------------------------------------------------------------------------------------------FAKECLIENTSFIX API - ОПИСАНИЕ ФУНКЦИЙ
Версия: 1.3.4
═══════════════════════════════════════════════════════════════
FORWARD'Ы (СОБЫТИЯ)
Назначение: Вызывается когда бот успешно подключенC-подобный:FakeClientsFix_OnBotConnected(int client, const char[] name)
Параметры:
• client - Индекс бота
• name - Имя бота
Назначение: Вызывается когда бот отключилсяC-подобный:FakeClientsFix_OnBotDisconnected(int client, const char[] name)
Параметры:
• client - Индекс бота
• name - Имя бота (возвращается в массив)
Назначение: Вызывается перед созданием бота (можно изменить имя)C-подобный:FakeClientsFix_OnBotPreConnect(char[] name, int maxlen)
Параметры:
• name - Имя для бота (можно изменить)
• maxlen - Максимальная длина имени
Возвращает: Plugin_Continue - продолжить, Plugin_Handled - пропустить создание
Назначение: Вызывается после создания бота, но до установки командыC-подобный:FakeClientsFix_OnBotPostConnect(int client)
Параметры:
• client - Индекс бота
Возвращает: Plugin_Continue - продолжить, Plugin_Handled - пропустить установку команды
Назначение: Вызывается при проверке необходимости удаления ботовC-подобный:FakeClientsFix_OnCheckRemoveBots(int realPlayers, int totalPlayers, int botCount)
Параметры:
• realPlayers - Количество реальных игроков
• totalPlayers - Общее количество игроков
• botCount - Количество ботов
Назначение: Вызывается при попытке переименовать ботаC-подобный:FakeClientsFix_OnBotRename(int client, char[] newName, int maxlen)
Параметры:
• client - Индекс бота
• newName - Новое имя (можно изменить)
• maxlen - Максимальная длина имени
Возвращает: Plugin_Continue - продолжить, Plugin_Handled - пропустить переименование
═══════════════════════════════════════════════════════════════
NATIVE ФУНКЦИИ (API)
Назначение: Получить массив имен ботовC-подобный:FakeClientsFix_GetNamesArray()
Возвращает: Handle к ArrayList с именами (не удалять!)
Назначение: Получить количество подключенных ботовC-подобный:FakeClientsFix_GetConnectedBots()
Возвращает: Количество подключенных ботов
Назначение: Получить максимальное количество ботовC-подобный:FakeClientsFix_GetMaxBots()
Возвращает: Максимальное количество ботов
Назначение: Получить количество реальных игроковC-подобный:FakeClientsFix_GetRealPlayers()
Возвращает: Количество реальных игроков
Назначение: Получить общее количество игроков (реальные + боты)C-подобный:FakeClientsFix_GetTotalPlayers()
Возвращает: Общее количество игроков
Назначение: Получить количество ботовC-подобный:FakeClientsFix_GetBotCount()
Возвращает: Количество ботов
Назначение: Проверить является ли клиент валидным ботомC-подобный:FakeClientsFix_IsValidBot(int client)
Параметры:
• client - Индекс клиента
Возвращает: true если валидный бот, false иначе
Назначение: Получить случайное имя из массиваC-подобный:FakeClientsFix_GetRandomName(char[] buffer, int maxlen, bool remove = true)
Параметры:
• buffer - Буфер для имени
• maxlen - Максимальная длина буфера
• remove - Удалить имя из массива после получения (по умолчанию: true)
Возвращает: true если имя получено, false если массив пуст
Назначение: Вернуть имя в массивC-подобный:FakeClientsFix_ReturnName(const char[] name)
Параметры:
• name - Имя для возврата
Возвращает: true если имя добавлено
Назначение: Создать бота с именемC-подобный:FakeClientsFix_CreateBot(const char[] name)
Параметры:
• name - Имя для бота
Возвращает: Индекс бота или 0 при ошибке
Назначение: Удалить ботаC-подобный:FakeClientsFix_RemoveBot(int client, const char[] reason = "Освобождаем слот")
Параметры:
• client - Индекс бота
• reason - Причина удаления (по умолчанию: "Освобождаем слот")
Возвращает: true если бот удален
Назначение: Переименовать ботаC-подобный:FakeClientsFix_RenameBot(int client, const char[] newName)
Параметры:
• client - Индекс бота
• newName - Новое имя
Возвращает: true если бот переименован
Назначение: Получить список всех ботовC-подобный:FakeClientsFix_GetBotList(int[] clients, int maxlen)
Параметры:
• clients - Массив для индексов ботов
• maxlen - Максимальный размер массива
Возвращает: Количество найденных ботов
Назначение: Получить список ботов в командеC-подобный:FakeClientsFix_GetBotsInTeam(int team, int[] clients, int maxlen)
Параметры:
• team - Команда (1 = Spectator, 2 = T, 3 = CT)
• clients - Массив для индексов ботов
• maxlen - Максимальный размер массива
Возвращает: Количество найденных ботов
Доп модули тут
Что нового:
• Автоматическая очистка слотов - при 61+ игроках боты из спектаторов автоматически удаляются, чтобы освободить место для реальных игроков
• Улучшена работа с порогом - теперь при превышении порога удаляется несколько ботов сразу, а не один
• Проверка каждые 2 секунды - плагин постоянно проверяет количество игроков и автоматически удаляет ботов при необходимости
• При 62-64 игроках - удаляется по 2 бота из спектаторов за раз
• Остановка создания ботов при 60+ игроках - раньше боты создавались до полного заполнения сервера
• При отключении бота - проверяется, не заполнен ли сервер (62+), перед попыткой переподключения
Итог: Плагин стал умнее освобождать слоты для реальных игроков при заполнении сервера
PS Спасибо Sammit92 за наводки на баги.
Обновление:
- Боты подключаются не сразу, а с заданным интервалом (настраивается через sm_fakeclients_connect_interval).
- Задержка перед началом подключения после смены карты регулируется параметром sm_fakeclients_delay.
Мониторинги не увидят что это боты, так как они подключаются не все сразу в одно время.
C-подобный:// Интервал смены имен фейковых клиентов, которые играют (в секундах, 0 = отключено) // - // Default: "0.0" // Minimum: "0.000000" // Maximum: "3600.000000" sm_fakeclients_namechange_interval_playing "0.0" // Интервал смены имен фейковых клиентов в режиме наблюдателя (в секундах, 0 = отключено) // - // Default: "0.0" // Minimum: "0.000000" // Maximum: "3600.000000" sm_fakeclients_namechange_interval_spec "0.0"
Новый квар.
C-подобный:// Интервал смены имен фейковых клиентов (в секундах, 0 = отключено) // - // Default: "30.0" // Minimum: "0.000000" // Maximum: "3600.000000" sm_fakeclients_namechange_interval "0"
Не забудьте удалить старый конфиг.
Огромное спасибо Grey83 за то, что указал на ошибки.