Полная логика работы AutoTeamBalance v3.0
1. Когда срабатывает баланс
Проверка происходит в конце каждого раунда (с задержкой 3 сек). Баланс срабатывает если:
| Условие |
Значение |
Пример |
| Разница игроков |
≥ 2 и > 1 |
CT 7 vs T 4 |
| Серия побед |
≥ 3 подряд |
CT выиграли 3 раунда |
| Разница счёта |
≥ 3 |
Счёт 5-2 |
| Соотношение сил |
> 1.5 |
Force CT 15000 vs T 10000 |
Кулдаун: минимум 2 раунда между балансами.
2. Направление переноса
Если численный дисбаланс (разница > 1):
→ Из БОЛЬШЕЙ команды в меньшую
Иначе если разница счёта:
→ Из ВЫИГРЫВАЮЩЕЙ команды в проигрывающую
Иначе (равный счёт):
→ Из команды с БОЛЬШЕЙ силой в слабую
3. Сколько игроков переносить
При численном дисбалансе:
Переносов = (разница + 1) / 2, минимум 2, максимум 4
Пример: 8 vs 4 = разница 4 → (4+1)/2 = 2 переноса
При разнице счёта:
| Разница счёта |
Переносов |
| 3-4 |
2 |
| 5-7 |
3 |
| 8+ |
4 |
4. Выбор кандидатов для переноса
Порядок переносов:
- Первый перенос → выбирается СИЛЬНЫЙ игрок (максимальный Force)
- Последующие → выбираются СРЕДНИЕ игроки (ближе к целевому Force)
Кого НЕ переносят:
- Админы с иммунитетом (флаг
i)
- Недавно перенесённые (< 120 сек или < 2 раундов назад)
- Кто уже переносился 3 раза за карту
- Некалиброванные (если включена защита)
Приоритет: мёртвые игроки (+5000 к скору для сильных, +1000 для средних)
5. Остановка переносов
Цикл переносов останавливается если:
- Команды сравнялись по численности (
from ≤ to)
- Силы сбалансированы (ratio между 0.7 и 1.4)
- Нет подходящих кандидатов
- Достигнут максимум переносов (4)
6. Расчёт силы игрока (Force)
Force = EffectiveSkill + SessionBonus
EffectiveSkill = Skill из БД
+ VIP бонус (если VIP): Skill × 1.2 + 200
SessionBonus = (K/D - 1.0) × 100
Пример: K/D 2.0 → +100
Пример: K/D 0.5 → -50
Если 0 смертей: +50 за каждый килл
7. Пример работы
Ситуация: CT 8 - T 8, счёт 7-0 в пользу CT
1. Триггер: Score diff 7 >= 3 ✓
2. Направление: CT выигрывает → кидаем из CT в T
3. Количество: Разница 7 → 3 переноса
4. Выбор:
- Перенос #0: СИЛЬНЫЙ игрок из CT (Force 2500) → T
- Перенос #1: СРЕДНИЙ игрок (Force 1200) → T
- Перенос #2: СРЕДНИЙ игрок (Force 900) → T
5. Проверка: CT 5 vs T 11? Стоп, from < to
Реально: CT 5 vs T 8 (если было 8-8 изначально)
6. Итог: перенесли 3 игрока
7. Следующий баланс: через 2 раунда
8. Настройки (CVars)
| CVar |
Значение |
Описание |
atb_enabled |
1 |
Вкл/выкл |
atb_minplayers |
4 |
Мин. игроков для баланса |
atb_protect_top |
0 |
Защита топ N (0 = никого) |
atb_protect_time |
120 |
Защита после переноса (сек) |
atb_protect_rounds |
2 |
Защита раундов после переноса |
atb_max_switches |
3 |
Макс переносов за карту |
atb_balance_cooldown |
2 |
Раундов между балансами |
atb_max_score_diff |
3 |
Триггер по разнице счёта |
atb_max_winstreak |
3 |
Триггер по серии побед |
atb_immunity |
1 |
Админ иммунитет |