Fake Clients Fix

Fake Clients Fix 1.3.4 | Ядро и Модули

Версия Дата выпуска Скачивания Оценка  
1.3.4 | Ядро и Модули 74 0.00 звёзд 0 оценок Скачать
1.3.3 21 0.00 звёзд 0 оценок Скачать
1.3.2 239 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-подобный:
.smx
файлы в
C-подобный:
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

C-подобный:
sm_fakeclients_players
- Количество фейковых клиентов (по умолчанию: 10)
C-подобный:
sm_fakeclients_delay
- Задержка перед добавлением ботов после смены карты (по умолчанию: 15.0)
C-подобный:
sm_fakeclients_connect_interval
- Интервал между подключением ботов (по умолчанию: 8.0)

NameChange модуль
C-подобный:
sm_fakeclients_namechange_interval_spec
- Интервал смены имен ботов в спектаторах (0 = отключено)
C-подобный:
sm_fakeclients_namechange_interval_playing
- Интервал смены имен играющих ботов (0 = отключено)

PlayerCheck модуль
C-подобный:
sm_fakeclients_maxplayers
- Максимальное количество реальных игроков, при превышении которого удаляются все боты (0 = отключено)

Threshold модуль
C-подобный:
sm_fakeclients_threshold
- Порог реальных игроков, после которого боты начинают уступать места (0 = отключено)

═══════════════════════════════════════════════════════════════

ПРИМЕЧАНИЯ

• 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 за то, что указал на ошибки.
  • Мне нравится
Реакции: Аластар
Сверху Снизу