Встроенные AMXX-плагины
YaPB поставляет два Pawn-плагина в виде исходников (.sma) в cfg/addons/amxmodx/scripting/ - а значит и в каждом релизном архиве. Компилируются самостоятельно через amxxpc.
| Плагин | Файл | Что делает |
|---|---|---|
| Bot Takeover | yapb_takeover.sma |
Позволяет мёртвому игроку взять управление ботом-тиммейтом (респавн на позиции бота с его инвентарём). По мотивам BotFeatures от Vaqtincha. |
| Chat AI | yapb_chat_ai.sma |
Заменяет/перехватывает чат ботов через OpenAI-совместимый chat-completions LLM и AmxxEasyHttp. |
Настройка модуля (yapb_amxx в modules.ini, yapb.inc в include/) описана на странице Скриптинг и нужна обоим.
Bot Takeover (yapb_takeover.sma) 1.0.0 нужен ReAPI
Заголовок раздела «Bot Takeover (yapb_takeover.sma) »Мёртвый наблюдатель нажимает клавишу, spectate’я бота-тиммейта -> игрок респавнится на позиции бота с его инвентарём, а бот тихо убирается. При рестарте раунда полезные стволы можно вернуть ботам (опция), корректно обрабатываются C4/дефьюзер/щит/VIP, а конфликтующий BotFeatures при нахождении ставится на паузу.
Зависимости
Заголовок раздела «Зависимости»| Компонент | Обязателен | Примечание |
|---|---|---|
yapb.inc / yapb_amxx |
Да | Нужен YaPB API 3.2+ (yb_api_at_least (3, 2)), проверяется через set_fail_state. Используются yb_is_user_bot, yb_get_bot_origin, yb_is_bot_alive, yb_is_bot_stale, yb_is_bot_simulating, yb_set_bot_simulation. |
ReAPI (<reapi>) |
Да | rg_* нативы (rg_round_respawn, rg_transfer_c4, rg_remove_all_items, …), HookChain (RG_CBasePlayer_Observer_Think, RG_RoundEnd, RG_CSGameRules_RestartRound, …), get_member/set_member. Нужны ReHLDS + ReGameDLL на сервере. |
fakemeta (<fakemeta>) |
Да | Переменные сущностей, EngFunc_TraceHull, форварды. |
hamsandwich (<hamsandwich>) |
Да | Ham_RemovePlayerItem / Ham_AddPlayerItem / Ham_Think для переноса инвентаря; прикрывает сущность player_weaponstrip, если есть. |
amxmodx, amxmisc |
Да | Стандартные инклуды. |
| Языковой файл | Да | cfg/addons/amxmodx/data/lang/yapb_takeover.txt -> скопировать в addons/amxmodx/data/lang/. Строки en + ru (register_dictionary ("yapb_takeover.txt")). |
Установка
Заголовок раздела «Установка»- Скопируйте
yapb_takeover.smaвaddons/amxmodx/scripting/, аyapb.incвaddons/amxmodx/scripting/include/. - Скопируйте
yapb_takeover.txtвaddons/amxmodx/data/lang/. - Скомпилируйте через
amxxpc->yapb_takeover.amxx->addons/amxmodx/plugins/. - Добавьте
yapb_takeover.amxxвaddons/amxmodx/configs/plugins.ini. - Смените карту / перезапустите. Конфиг сам создастся как
addons/amxmodx/configs/yapb_takeover.cfgчерезAutoExecConfig.
Как пользоваться
Заголовок раздела «Как пользоваться»-
Умрите, затем spectate’те бота-тиммейта от первого лица (
eye) или в свободной погоне (chase). -
Нажмите клавишу захвата. HUD-подсказка покажет имя бота:
Нажмите
N(nightvision). Этоyb_takeover_use_key 0. Текст подсказки -TAKEOVER_PROMPT_N.Выставьте
yb_takeover_use_key 1и нажмитеE(use). Текст подсказки -TAKEOVER_PROMPT_E. -
Вы респавнитесь на позиции бота с его здоровьем/бронёй/оружием/патронами/C4/дефьюзером/щитом, сохраняя скорость. Сущность бота удаляется.
-
Если место занято или раунд кончился посреди захвата - захват отменяется и всё откатывается (журнал инвентаря + VIP-статус + симуляция бота восстанавливаются).
Зеркало в скорборде, HUD-подсказки, анонсы в чате и реакции ботов - всё настраивается (см. ниже).
Квары (yapb_takeover.cfg)
Заголовок раздела «Квары (yapb_takeover.cfg)»| Квар | По умолч. | Смысл |
|---|---|---|
yb_takeover_enabled |
1 |
Главный выключатель. |
yb_takeover_use_key |
0 |
0 = клавиша N (nightvision), 1 = клавиша E (use) через хук observer think. |
yb_takeover_team_only |
1 |
Только боты своей команды. |
yb_takeover_eye |
1 |
Разрешить захват в режиме наблюдателя от первого лица. |
yb_takeover_chase |
1 |
Разрешить захват в свободной погоне. |
yb_takeover_max_uses |
0 |
Максимум захватов на игрока за раунд, 0 - без лимита. |
yb_takeover_allow_vip |
0 |
Разрешить брать VIP-ботов (as_ карты). VIP-флаг передаётся игроку. |
yb_takeover_back_items |
0 |
При рестарте раунда возвращать полезные стволы (primary/pistol) от игрока обратно боту. Полный рестарт (m_bCompleteReset) пропускает это. |
yb_takeover_chat |
1 |
Анонсировать захваты в командном чате (TAKEOVER_ANNOUNCE). |
yb_takeover_bot_chat |
1 |
Съеденный бот «реагирует» одной из фраз TAKEOVER_BOT_CHAT1..5. |
yb_takeover_hud |
1 |
Показывать подсказки наблюдателю в HUD. |
yb_takeover_scoreboard |
0 |
Зеркалить состояние захваченного бота (мёртв/жив + здоровье) в скорборд. |
yb_takeover_autoswitch |
0 |
После смерти автоматически spectate’тить случайного живого бота-тиммейта, чтобы быстрее захватить. |
yb_takeover_log |
0 |
Писать события в yapb_takeover.log (захват, отмена, откат, вкл/выкл симуляции). |
yb_takeover_stop_botfeatures |
1 |
Ставить на паузу legacy-плагин BotFeatures, если загружен (чтобы не было двойной обработки). Не bind_pcvar, читается один раз в plugin_cfg. |
Заметки владельцам серверов
Заголовок раздела «Заметки владельцам серверов»- Захват блокируется, если бот мёртв, stale, не симулируется, уже занят, превышен лимит на раунд или это запрещённый VIP.
- Гранаты в замахе, активное оружие, щит, C4, дефьюзер, броня, NVG, здоровье и модель - всё переносится или откатывается при ошибке, см.
transfer_inventory()/rollback_transfer()в исходнике. - Логи - в
addons/amxmodx/logs/yapb_takeover.logприyb_takeover_log 1.
Chat AI (yapb_chat_ai.sma) 2.2.0 нужен EasyHttp
Заголовок раздела «Chat AI (yapb_chat_ai.sma) »Перехватывает чат YaPB через yb_chat_pre / yb_chat_post и отвечает через OpenAI-совместимый POST /v1/chat/completions ({"choices":[{"message":{"content":"..."}}]}). Умеет адресованный чат живых, мёртвый чат, болтовню ботов, bot-to-bot диалоги, небольшую очередь запросов (глубина 8, приоритет - сообщениям людей), кулдаун на игрока и короткую память на бота (последние 3 хода).
Зависимости
Заголовок раздела «Зависимости»| Компонент | Обязателен | Примечание |
|---|---|---|
yapb.inc / yapb_amxx |
Да | Используются yb_bot_say (с force), yb_get_bot_chat / YB_CHAT_OFF, yb_is_user_bot, yb_is_bot_alive, yb_is_bot_stale, yb_get_bot_personality, yb_get_bot_difficulty, форварды yb_chat_pre / yb_chat_post. |
AmxxEasyHttp (модуль easy_http + <easy_http>) |
Да | От Next21Team (MIT). HTTP/HTTPS-клиент + встроенный JSON (EzHttpRequest, EzHttpOptions, ezhttp_post, ezhttp_parse_json_response, …). Ставится отдельно - скачайте из релизов AmxxEasyHttp (сборки Linux + Windows, свежий 1.5.0), скопируйте бинарники easy_http в addons/amxmodx/modules/ и включите easy_http в modules.ini. Под Linux нужен GLIBC 2.19+. |
| LLM-эндпоинт | Да | Любой сервер с POST {url}/v1/chat/completions: поля model, messages[], temperature, max_tokens, ответ в стиле OpenAI choices[0].message.content (запасной вариант - поле reply на верхнем уровне). |
amxmodx |
Да | Стандартный инклуд. |
Поток: yb_chat_pre блокирует оригинал (если yb_chat_ai_strict 0 и бота не нашлось - пропускает) -> плагин POST’ит system (из квара-промпта) + до 3 ходов истории бота + строку user с контекстом (карта, имена, команда, HP, броня, жив/мёртв, личность, сложность) -> on_ai_response чистит ответ (убирает управляющие символы, ", ;, обрезает до yb_chat_ai_reply_chars) -> yb_bot_say(bot, reply, team_only, true) -> опциональный ответный bot-to-bot ход.
Установка
Заголовок раздела «Установка»- Скачайте AmxxEasyHttp и включите модуль
easy_http: бинарник вaddons/amxmodx/modules/,easy_httpвmodules.ini,easy_http.inc+easy_http_json.incвscripting/include/. (Исходники и документация: Next21Team/AmxxEasyHttp.) - Скопируйте
yapb_chat_ai.smaвaddons/amxmodx/scripting/(вinclude/нужныyapb.inc+easy_http.inc). - Скомпилируйте через
amxxpc->yapb_chat_ai.amxx->addons/amxmodx/plugins/, добавьте вplugins.ini. - Укажите
yb_chat_ai_urlна ваш эндпоинт (по умолчаниюhttp://127.0.0.1:8080/v1/chat/completions), задайтеyb_chat_ai_model, при необходимостиyb_chat_ai_api_key. - Смените карту / перезапустите. Конфиг сам создастся как
addons/amxmodx/configs/yapb_chat_ai.cfgчерезAutoExecConfig.
Директорияcstrike/addons/amxmodx/
Директорияmodules/
- easy_http_i386.so / easy_http.dll # из релизов AmxxEasyHttp
Директорияconfigs/
- modules.ini # easy_http + yapb_amxx
- plugins.ini # yapb_chat_ai.amxx
- yapb_chat_ai.cfg # создаёт AutoExecConfig
Квары (yapb_chat_ai.cfg)
Заголовок раздела «Квары (yapb_chat_ai.cfg)»| Квар | По умолч. | Смысл |
|---|---|---|
yb_chat_ai_enabled |
1 |
Главный выключатель (при выкл. очередь сбрасывается). |
yb_chat_ai_debug |
0 |
Подробный трейс в yapb_chat_ai.log (дамп конфига, строки PRE/SEND/RESPONSE/QUEUE). |
yb_chat_ai_override_human |
1 |
Перехватывать сообщения людей и отвечать через ИИ (блокируется через PLUGIN_HANDLED). |
yb_chat_ai_override_bot |
0 |
Перехватывать болтовню живых ботов и отвечать через ИИ. При 0 живая болтовня вместо этого с вероятностью даёт диалоги в yb_chat_post. |
yb_chat_ai_override_dead |
1 |
Перехватывать мёртвый чат ботов (призрачные шутки) и отвечать через ИИ. |
yb_chat_ai_bot_talk |
1 |
Разрешить bot->bot болтовню/диалоги. |
yb_chat_ai_addressed |
1 |
Сообщения людей триггерят только с обращения <имя бота>[ :,;] <текст>. При 0 отвечает первый живой подходящий бот на что угодно. |
yb_chat_ai_bot_chance |
35 |
Шанс 0-100% для bot->bot ходов (путь yb_chat_post и followup’ы), проверка раз в окно 6с. |
yb_chat_ai_strict |
0 |
При 1 yb_chat_pre всегда блокирует оригинал, даже если бот не нашёлся; при 0 оригинал проходит при неудаче. |
yb_chat_ai_temperature |
0.8 |
Temperature LLM. |
yb_chat_ai_max_tokens |
512 |
Кламп 16-2048. |
yb_chat_ai_reply_chars |
160 |
Макс. длина ответа после чистки (0 - не обрезать). |
yb_chat_ai_cooldown |
3.0 |
Секунд между ИИ-ответами на одного живого отправителя (отрицательные = 0). |
yb_chat_ai_url |
http://127.0.0.1:8080/v1/chat/completions |
Эндпоинт (таймаут HTTP 20с, коннект 3с). |
yb_chat_ai_model |
local-model |
Поле model в JSON-теле. |
yb_chat_ai_api_key |
(пусто) | Если задан - шлёт Authorization: Bearer <key>. |
yb_chat_ai_prompt_human |
(cocky CS 1.6 bot …) | Системный промпт для ответов человеку. |
yb_chat_ai_prompt_bot |
(cocky … rivalry …) | Системный промпт для ответов боту. |
yb_chat_ai_prompt_dead |
(dead … ghost jokes …) | Системный промпт для мёртвого чата. |
yb_chat_ai_prompt_followup |
(continue … one more line …) | Системный промпт для followup-реплик. |