7RG
Участник
- Сообщения
- 44
- Реакции
- 12
Всем привет.
Решил завершить работу с игровыми серверами, поэтому хочу выложить здесь свои наработки — возможно, кому-то они будут полезны.
В этой теме будут плагины двух типов:
Если будут вопросы по какому-то плагину — пишите в теме, по возможности отвечу.
Плагин который работает с чатом. CM color say
Плагин показа хп на головой HP Bars
Плагин для SHOP. Плагин масок ,шляп . shop equipments
Плагин для SHOP. Монетки из игроков shop coins
Плагин для Shop . Плагин MEdkit (Medic)
Плагин показа статистики [OS][LVL]ShowStatsV34
Плагин записи демок игрокам
Плагин звуков при убийстве quake sound
Решил завершить работу с игровыми серверами, поэтому хочу выложить здесь свои наработки — возможно, кому-то они будут полезны.
В этой теме будут плагины двух типов:
- полностью написанные мной с нуля;
- публичные плагины, которые я дорабатывал и адаптировал под свой сервер.
Если будут вопросы по какому-то плагину — пишите в теме, по возможности отвечу.
Плагин который работает с чатом. CM color say
Что изменено в моей версии CM_ColoredSay
В сравнении с оригинальным плагином добавил и переработал следующее:- Добавлена интеграция с VIP Core:
- отдельный пункт в VIP-меню: «Настройки чата»;
- регистрация/снятие VIP-фичи при загрузке/выгрузке плагина.
- Добавлены персональные VIP-настройки (с сохранением в cookies):
- свой префикс;
- цвет префикса;
- цвет ника;
- цвет текста сообщения.
- Реализовано VIP-меню настройки чата:
- выбор префикса из пресетов;
- ввод своего префикса через чат (с лимитом по длине);
- сброс префикса;
- меню выбора цветов и градиента.
- Добавлена поддержка градиентного префикса (для пользователей ClientMod):
- градиенты берутся из конфига;
- корректная покраска по UTF-8 символам.
- Расширен конфиг colored_say.ini:
- vip
- admin_vip
- prefix_presets
- colors_clientmod
- colors_css34
- gradient
- Переработан приоритет прав/групп при выборе шаблона:
- отдельная логика для admin_vip (админ + VIP);
- корректный выбор между admins, vip, players, персональным SteamID-блоком.
- Добавлена кастомизация формата VIP-префикса через:
- custom_prefix_format
- плейсхолдеры {base} и {custom}.
- Улучшен вывод сообщения отправителю и остальным игрокам:
- аккуратный self-вывод;
- правка {teamcolor} для совместимости обычного чата.
- Проверка мута/гага доработана:
- используется MaterialAdmin native (MAGetClientMuteType) при наличии;
- выводятся информативные сообщения о блокировке чата.
- Улучшена очистка/сброс данных игрока при выходе:
- префикс, цвета, состояния меню, ввод префикса.
- Добавлены вспомогательные возможности для других плагинов:
- ColoredSay_OnFormattingPrefix (forward);
- ColoredSay_SkipMessage (native) сохранён и используется как раньше.
Плагин показа хп на головой HP Bars
- Логика показа полностью переработана:
- Было: полоска только над последним врагом, которому ты нанес урон.
- Стало: полоски обновляются системно для всех подходящих целей (враги, а в FFA — все игроки).
- Добавлена поддержка режимов отображения:
- обычный режим: только по противникам;
- FFA-режим: показ по всем игрокам.
- Проверка FFA через cssdm_ffa_mode, fallback через mp_friendlyfire.
- Архитектура сущностей изменена:
- Было: 1 env_sprite + material_modify_control на игрока (смена кадра у одной текстуры).
- Стало: матрица viewer -> target (g_iSprite[MAX][MAX]), отдельный спрайт для каждой пары наблюдатель/цель.
- Изменен способ визуализации HP:
- Было: одна текстура hpbar5s.vmt, кадр менялся через StartAnimSequence.
- Стало: отдельные материалы 5..100 (materials/animated/hp/*.vmt), выбор материала по текущему HP.
- Ресурсы и загрузка переработаны:
- Было: в downloads добавлялось 2 файла (hpbar5s.vmt/.vtf).
- Стало: цикл по всем материалам HP + автодобавление соответствующих .vtf, если файл существует; также PrecacheModel.
- Добавлены новые события и циклы обновления:
- player_spawn, player_death, round_start, player_hurt;
- глобальный таймер обновления UPDATE_TIME = 0.2;
- отложенные обновления после спавна и старта раунда.
- Убрана старая модель таймеров на клиента:
- Было: hpbar2_time, Timers[], TimerRepeats[], авто-скрытие по времени.
- Стало: постоянная актуализация и пересоздание/удаление по состоянию игры (без hpbar2_time).
- Добавлены отладочные команды:
- sm_hpdebug — включает/выключает debug;
- sm_hpstatus — показывает текущий статус (FFA/debug).
- Улучшена производительность/чистота:
- кэш последнего материала g_sLastMaterial (не пересоздает бар без изменений);
- аккуратное удаление баров при смерти/дисконнекте/новом раунде;
- SDKHook_SetTransmit оставляет видимость только владельцу полоски.
Плагин для SHOP. Плагин масок ,шляп . shop equipments
Проблема, судя по всему, проявлялась только на CS:S v34:
если на игроке была надета маска, то при наблюдении за ним от первого лица маска отображалась, а от второго лица — нет.
В этой версии плагина это поведение исправлено: логика отображения маски для наблюдателей скорректирована, и теперь она работает корректно в режимах наблюдения.
если на игроке была надета маска, то при наблюдении за ним от первого лица маска отображалась, а от второго лица — нет.
В этой версии плагина это поведение исправлено: логика отображения маски для наблюдателей скорректирована, и теперь она работает корректно в режимах наблюдения.
Плагин для SHOP. Монетки из игроков shop coins
- Спавнит монетку на месте смерти игрока.
- Живой игрок подбирает монетку в радиусе sm_coin_range.
- За подбор выдает кредиты Shop в диапазоне sm_coin_credits_min..sm_coin_credits_max.
- Для VIP есть переключаемый бонус x2 к монетам (CoinDrop_X2_Bonus).
- Монетки вращаются, имеют время жизни и удаляются в начале нового раунда.
- Есть глобальный forward: ShopCoins_OnCreditsPickup(client, credits, vipX2).
Команды
- sm_spawncoin — тестовый спавн монеты под ногами админа (ADMFLAG_SLAY).
CVar'Ы
- sm_coin_enable — вкл/выкл плагин.
- sm_coin_teamkill — спавнить монету при тимкилле.
- sm_coin_lifetime — время жизни монеты.
- sm_coin_credits_min — минимум кредитов.
- sm_coin_credits_max — максимум кредитов.
- sm_coin_range — радиус подбора.
- sm_coin_pickup_chat — сообщения в чат:
- 0 — никогда,
- 1 — только без ClientMod,
- 2 — всегда.
Зависимости (инклуды)
- sourcemod
- sdktools
- shop
- vip_core
- clientmod (опционально по native CM_GetClientModAuth)
Особенности логики
- Монета не спавнится при самоубийстве (attacker == victim).
- При sm_coin_teamkill 0 монета не выпадет за тимкилл.
- Если min > max, значения автоматически меняются местами.
- VIP x2 применяется только если фича включена у VIP-игрока
- Плагин работает в связке с [OS][LVL]ShowStatsV34.
При подборе монеты shop_coins вызывает forward: ShopCoins_OnCreditsPickup(client, credits, vip2x).
[OS][LVL]ShowStatsV34 принимает это событие и выводит в HUD временное уведомление о получении монет:- (+N) — обычный подбор;
- (+N) 2x — если у игрока сработал VIP-бонус x2.
- Логика отображения:
- сумма подбора сохраняется на ~3 секунды;
- затем автоматически очищается таймером;
- в HUD всегда показывается текущий баланс монет, а при подборе дополнительно показывается прирост.
- Таким образом, shop_coins отвечает за дроп/подбор и начисление кредитов, а [OS][LVL]ShowStatsV34 — за визуализацию результата в статистике игрока.
Плагин для Shop . Плагин MEdkit (Medic)
- Это Shop-аптечка для CSSDM/FFA с ограничением использований за жизнь (sm_shop_medkit_per_life).
- Есть команды: sm_medic и sm_medkit.
- Поддержан режим лечения:
- SET — выставить HP в значение;
- ADD — добавить HP (если sm_shop_medkit_health задан как +N).
- Есть лимит максимального HP: sm_shop_medkit_max_health.
- Добавлена VIP-фича Medkit_X2_PerLife (toggle) — по сути “2 аптечки за жизнь” для VIP.
- Есть расширенное меню покупки в магазине:
- выбор количества (bulk buy),
- подтверждение покупки,
- продажа предмета,
- локализованные фразы из shop_medkit.phrases.txt.
- Аптечка сбрасывается на каждом player_spawn (счётчик использований за жизнь обнуляется).
- Плагин адаптирован под FFA/CSSDM (это видно и по названию, и по логике per-life).
Плагин показа статистики [OS][LVL]ShowStatsV34
- Добавлена интеграция с Shop (отображение текущего баланса монет в HUD).
- Добавлена поддержка shop_coins через ShopCoins_OnCreditsPickup(...).
- При подборе монет теперь показывается временная прибавка в HUD: (+N), а для VIP — (+N) 2x.
- Доработан вывод статистики: цветовые акценты для KDR, HS и монет.
- Исправлен расчёт KDR (без деления на ноль при deaths = 0).
- Логика показа расширена: HUD работает корректно и для живого игрока, и при наблюдении за целью.
- Добавлена корректная очистка временных данных подбора монет таймером.
- Обновлён/кастомизирован список названий рангов.
Плагин записи демок игрокам
- На событие player_activate плагин запускает таймер и отправляет клиенту команду:
- stop; record Surf_DM_<ник>
- Если игрок ещё не полностью в игре, делаются повторные попытки старта (до 15 раз).
- На завершении карты отправляется stop для корректного завершения записи.
- Имя файла демки формируется из ника игрока, опасные символы заменяются на _.
Особенности
- Запись создаётся на стороне клиента (в папке с игрой у игрока).
- Боты игнорируются.
- В лог сервера пишется факт запуска команды записи
- Убрана система нескольких sound set'ов (MAX_NUM_SETS, QuakeSetsList.cfg, выбор Standard/Female и т.д.).
- Вместо этого используется один конфиг: configs/quake/standard.cfg.
- Добавлена поддержка нескольких звуков на одно событие:
- для каждого события можно задавать список (sounds) и выбирать режим random/последовательный.
- добавлены лимиты MAX_SOUNDS_PER_EVENT, MAX_ROUNDPLAY_SOUNDS.
- Изменен формат чтения конфига:
- поддержка нового блока sounds { ... },
- оставлена обратная совместимость со старым sound, sound1..soundN.
- Упрощена логика движков:
- в стандарте были ветки под CSS/CSGO/TF2/DODS/HL2DM,
- у вас фактически оставлен сценарий под CSS (хуки round_start, round_freeze_end, player_death).
- Добавлен учёт CSSDM FFA(cssdm_ffa_mode):
- тимкилл в FFA не считается обычным teamkill-событием.
- Меню настроек переделано:
- добавлен алиас !qs,
- в cookie/menu теперь режим звука по сути вкл/выкл (а не выбор набора сетов).
- Тексты и описание переведены/кастомизированы на русский:
- cvar-описания,
- announce-сообщение,
- center-тексты килл-событий.
- Загрузка звуков изменена:
- добавлена единая функция CacheSoundIfExists,
- логирование отсутствующих файлов через LogError.
- Немного изменена валидация/границы для cookie и sm_quakesoundsv3_sound под новую упрощённую модель.
Вложения
-
colored say.zip17.1 КБ · Просмотры: 41
-
HP bar 3.zip56 КБ · Просмотры: 27
-
shop_equipments.sp25.4 КБ · Просмотры: 27
-
Shop Coins.zip213.9 КБ · Просмотры: 25
-
shop medic.zip5.6 КБ · Просмотры: 21
-
[OS][LVL]ShowStatsV34.sp8.6 КБ · Просмотры: 26
-
auto_demo.sp4.2 КБ · Просмотры: 21
-
quakesoundsv3.sp40.8 КБ · Просмотры: 5
Последнее редактирование: