возможно ли перенести мод?

Ernest

Участник
Сообщения
232
Реакции
14
Возможно ли перенести мод

Zombie:Reloaded в кс2
и во сколько он выйдет как вы думайте?​

 

DarkerZ

Участник
Сообщения
425
Реакции
197
Так есть аналоги на других движках: cs2fixes(metamod), zombiesharp(cs#), zombiemodsharp:alpha(modsharp)
 

DENZEL519

Работаю через AI !
Сообщения
510
Реакции
331
@Fr4nch, @qubka
Делал через ИИ, конечно всё там не факт что работает, но возможно наработки от него помогут вам быстрее всё реализовать и портировать)) В корне архива cs2 есть файлы с описанием всего. (Открыть можно блокнотом их)

### Технические детали

- **Язык**: C# (.NET 8.0)
- **Платформа**: CounterStrikeSharp 1.0.25
- **Модулей**: 16
- **Cvars**: ~130
- **API методов**: 15+
- **Строк кода**: ~5000+


PS За основу брал самый нормальный Zombie:Reloaded который до сих пор обновляется ещё GitHub - srcdslab/sm-plugin-zombiereloaded: Zombie:Reloaded for SourceMod

PSS Обязательно прочитайте файл README.md

UPD 1 Изменения от 29.11.25 14:50 (Исправлены ошибки при компиляции.) - Архив обновлён.
В папке cs2\ZombieReloaded\bin\Release лежит скомпилированный плагин для Windows сервера. (Нет к сожалению у меня linux)


UPD 2 Изменения от 29.11.25 15:18 - Архив обновлён.

### 1. Система ChatMenu - ✅ ИСПРАВЛЕНО

**Проблема (решена):**
**Затронутые функции (исправлены):**
- ✅ `zmenu` - Главное меню (теперь работает через ChatMenu)
- ✅ `zclass` - Меню выбора класса (теперь работает через ChatMenu)
- ✅ Настройки игрока (теперь работает через ChatMenu)

**Файлы:**
- `ZombieReloaded/Modules/MenuModule.cs` - обновлен

UPD 3 Изменения от 29.11.25 15:35 - Архив обновлён.
Убраны все варнинги при компиляции!

C-подобный:
Сборка успешно завершена.
    Предупреждений: 0
    Ошибок: 0

Прошло времени 00:00:00.76
 

Вложения

  • cs2.7z
    89.2 КБ · Просмотры: 16
Последнее редактирование:

DarkerZ

Участник
Сообщения
425
Реакции
197
ну конечно нашли куда переносить зомби мод... нагрузка на сервер итак колосальная для кс2, в отличии от ксс, где сервер на 771 будет неплохо крутится. вот приложу скрин 1764418385807.png
Сообщения автоматически склеены:

Ну и я не говорю о тех плагинах, которые ещё сверху поставить надо, различные фиксы и customio
 
Последнее редактирование:

DENZEL519

Работаю через AI !
Сообщения
510
Реакции
331
ну конечно нашли куда переносить зомби мод... нагрузка на сервер итак колосальная для кс2, в отличии от ксс, где сервер на 771 будет неплохо крутится. вот приложу скринПосмотреть вложение 122893
Сообщения автоматически склеены:

Ну и я не говорю о тех плагинах, которые ещё сверху поставить надо, различные фиксы и customio
Т.ё. CounterStrikeSharp фигня?
А на что лучше переносить?
 
Последнее редактирование:

DarkerZ

Участник
Сообщения
425
Реакции
197
Т.ё. CounterStrikeSharp фигня?
А что что лучше переносить?
Хз, я на modsharp плагины переношу, т.к. все фиксы практически из коробки есть, но модулей пока перенесено совсем мало, даже админ панели, так таковой нету
 

DENZEL519

Работаю через AI !
Сообщения
510
Реакции
331
@DarkerZ, Вроде как компилируется без ошибок.

Zombie Reloaded для ModSharp (CS2)​


Полный порт популярного SourceMod плагина Zombie Reloaded для системы ModSharp на Counter-Strike 2.

📋 Описание​


Zombie Reloaded - это игровой мод для CS2, который превращает классический геймплей в режим выживания против зомби. Игроки делятся на две команды: зомби (заражают людей) и люди (выживают от зомби).

Оригинальный плагин: Greyscale, Richard Helgeby
Портирование на ModSharp: Текущая реализация

🏗️ Архитектура​


Проект построен на модульной архитектуре с четким разделением ответственности:

C-подобный:
ZombieReloaded (IModSharpModule)
├── Core Systems (Основные системы)
│   ├── ConfigManager - Управление конфигурацией
│   ├── TranslationManager - Локализация и переводы
│   ├── InfectionManager - Ядро системы инфекции
│   ├── PlayerClassManager - Управление классами игроков
│   ├── WeaponManager - Управление оружием
│   └── ModelManager - Управление моделями
│
├── Additional Modules (Дополнительные модули)
│   ├── KnockbackManager - Система отбрасывания
│   ├── RespawnManager - Система возрождения
│   ├── NapalmManager - Эффекты огня от гранат
│   ├── ZTeleManager - Система телепортации
│   ├── VisualEffectManager - Визуальные эффекты
│   ├── SoundEffectManager - Звуковые эффекты
│   ├── SpawnProtectManager - Защита при спавне
│   └── JumpBoostManager - Увеличение прыжка
│
└── Supporting Systems (Вспомогательные системы)
    ├── CommandManager - Управление командами
    ├── EventManager - Обработка игровых событий
    └── API - Публичный API для других плагинов

Принцип работы​


  • Инициализация (Init/PostInit): Все менеджеры создаются и инициализируются в правильном порядке
  • Загрузка конфигурации: Классы, оружие, модели загружаются из файлов конфигурации
  • Регистрация событий: Установка слушателей для игровых и клиентских событий
  • Работа в реальном времени: Обработка событий, применение атрибутов, звуки и эффекты

✅ Интегрированные системы​


1. Система конфигурации (ConfigManager)​


Принцип работы:
  • Управляет загрузкой всех конфигурационных файлов
  • Создает директории конфигурации при первом запуске
  • Путь к конфигурации:
    C-подобный:
    <root>/configs/zr/

Файлы конфигурации:
  • C-подобный:
    playerclasses.txt
    - классы игроков (зомби/люди)
  • C-подобный:
    weapons.txt
    - настройки оружия и рестрикты
  • C-подобный:
    models.txt
    - модели для игроков
  • C-подобный:
    downloads.txt
    - файлы для загрузки клиентам

2. Система переводов (TranslationManager)​


Принцип работы:
  • Загружает файлы переводов из
    C-подобный:
    translations/
  • Поддерживает множественные языки
  • Форматирует сообщения с параметрами

Методы:
  • C-подобный:
    Load()
    - загрузка переводов
  • C-подобный:
    PrintToChat(client, key, ...)
    - отправка переведенного сообщения в чат

3. Система инфекции (InfectionManager) - ЯДРО​


Принцип работы:
  • Отслеживает статус зомби/человека для каждого игрока через
    C-подобный:
    Dictionary<SteamID, bool>
  • Управляет иммунитетом от заражения
  • Интегрирован с другими системами для полной трансформации игрока

Процесс заражения (InfectClient):
  1. Проверка иммунитета и текущего статуса
  2. Установка статуса зомби
  3. Применение класса зомби через
    C-подобный:
    PlayerClassManager
  4. Создание визуальных эффектов (взрывы, энергия) через
    C-подобный:
    VisualEffectManager
  5. Воспроизведение звуков заражения через
    C-подобный:
    SoundEffectManager
  6. Удаление всего оружия
  7. Переключение команды на террористов (зомби)

Процесс гуманизации (HumanizeClient):
  1. Сброс статуса зомби
  2. Применение класса человека
  3. Остановка звуков зомби (стоны)
  4. Выдача оружия человеку

Методы:
  • C-подобный:
    IsClientInfected(client)
    - проверка статуса
  • C-подобный:
    InfectClient(client, attacker?)
    - заразить игрока
  • C-подобный:
    HumanizeClient(client)
    - сделать человеком
  • C-подобный:
    SetImmunity(client, duration)
    - установить иммунитет
  • C-подобный:
    HasImmunity(client)
    - проверить иммунитет

4. Система классов игроков (PlayerClassManager)​


Принцип работы:
  • Загружает классы из
    C-подобный:
    playerclasses.txt
    через
    C-подобный:
    PlayerClassConfigLoader
  • Хранит классы в словарях:
    C-подобный:
    _classesByIdentifier
    и
    C-подобный:
    _classes
  • Разделяет классы на зомби и людей
  • Применяет все атрибуты класса через
    C-подобный:
    ClassAttributeApplier

Структура класса (ClassAttributes):
  • C-подобный:
    Identifier
    - уникальный идентификатор
  • C-подобный:
    Name
    - отображаемое имя
  • C-подобный:
    Team
    - команда (Zombies/Humans)
  • C-подобный:
    Health
    - здоровье
  • C-подобный:
    Speed
    - модификатор скорости
  • C-подобный:
    ModelPath
    - путь к модели
  • C-подобный:
    AlphaInitial
    - начальная прозрачность (0-255)
  • C-подобный:
    OverlayPath
    - путь к оверлею
  • C-подобный:
    Fov
    - поле зрения
  • C-подобный:
    NightVision
    - ночное видение
  • И другие атрибуты

Применение атрибутов (ClassAttributeApplier):
  1. Здоровье:
    C-подобный:
    pawn.MaxHealth = classData.HealthInitial
  2. Модель:
    C-подобный:
    ModelManager.ApplyModel(client, modelPath)
  3. Скорость:
    C-подобный:
    IMovementService.SetSpeedModifier(speedMultiplier)
  4. Прозрачность:
    C-подобный:
    IBaseModelEntity.RenderMode = TransAlpha
    ,
    C-подобный:
    RenderColor
    с альфа-каналом
  5. FOV:
    C-подобный:
    ICameraService.FieldOfView
    и
    C-подобный:
    IPlayerController.DesiredFOV
  6. Ночное видение: Заглушка (требует API ModSharp)

Методы:
  • C-подобный:
    LoadClasses()
    - загрузка классов из конфига
  • C-подобный:
    GetClassData(identifier)
    - получить данные класса
  • C-подобный:
    FindClass(identifierOrName)
    - найти класс по имени или идентификатору (регистронезависимо)
  • C-подобный:
    SetClientClass(client, identifier)
    - установить класс игроку
  • C-подобный:
    GetClientClass(client)
    - получить текущий класс игрока
  • C-подобный:
    GetDefaultClass(team)
    - получить класс по умолчанию для команды

5. Система моделей (ModelManager)​


Принцип работы:
  • Загружает модели из
    C-подобный:
    models.txt
    через
    C-подобный:
    ModelConfigLoader
  • Предзагружает модели через
    C-подобный:
    PrecacheResource()
    перед использованием
  • Отслеживает предзагруженные модели в
    C-подобный:
    _precachedModels
  • Применяет модели к игрокам через
    C-подобный:
    SetModel()

Структура модели (ModelAttributes):
  • C-подобный:
    Path
    - путь к модели
  • C-подобный:
    Name
    - имя модели
  • C-подобный:
    Access
    - доступность (Public/Admin)
  • C-подобный:
    Team
    - команда (Zombies/Humans/Both)
  • C-подобный:
    Skin
    - индекс скина

Методы:
  • C-подобный:
    LoadModels()
    - загрузка из конфига
  • C-подобный:
    PrecacheModels()
    - предзагрузка всех моделей
  • C-подобный:
    PrecacheModel(modelPath)
    - предзагрузка одной модели
  • C-подобный:
    ApplyModel(client, modelPath, skinIndex)
    - применить модель
  • C-подобный:
    GetRandomModelForTeam(team)
    - получить случайную модель для команды

6. Система оружия (WeaponManager)​


Принцип работы:
  • Загружает данные оружия из
    C-подобный:
    weapons.txt
  • Управляет рестриктами на оружие
  • Контролирует выдачу оружия зомби и людям

Структура оружия (WeaponAttributes):
  • C-подобный:
    Name
    - имя оружия
  • C-подобный:
    Slot
    - слот оружия (Primary/Secondary/Knife/Grenade)
  • Рестрикты и ограничения

Методы:
  • C-подобный:
    LoadWeapons()
    - загрузка из конфига
  • C-подобный:
    GetWeaponData(name)
    - получить данные оружия
  • C-подобный:
    RemoveAllClientWeapons(client)
    - удалить все оружие
  • C-подобный:
    GiveDefaultZombieWeapons(client)
    - выдать оружие зомби по умолчанию

7. Система команд (CommandManager)​


Принцип работы:
  • Использует ModSharp API:
    C-подобный:
    IClientManager.InstallCommandCallback()
  • Команды автоматически получают префикс
    C-подобный:
    ms_
    в консоли
  • Работают триггеры в чате:
    C-подобный:
    .command
    ,
    C-подобный:
    /command
    ,
    C-подобный:
    !command
  • Обработчики возвращают
    C-подобный:
    ECommandAction
    (Stopped/Handled/Skipped)

Регистрация:
C#:
_clientManager.InstallCommandCallback("zr_class", OnClassCommand);

Административные команды:
  • C-подобный:
    zr_infect <target>
    - заразить игрока
  • C-подобный:
    zr_human <target>
    - сделать человеком
  • C-подобный:
    zr_respawn <target>
    - возродить игрока
  • C-подобный:
    zr_ztele_force <target>
    - принудительно телепортировать
  • C-подобный:
    zr_config_reload
    - перезагрузить конфиг
  • C-подобный:
    zr_config_reloadall
    - перезагрузить все конфиги

Игровые команды:
  • C-подобный:
    zr_class [name]
    - выбрать класс (без аргументов показывает меню)
  • C-подобный:
    zr_menu
    - показать главное меню
  • C-подобный:
    ztele
    - телепортироваться на спавн

Система меню:
Меню реализованы через чат-сообщения (ModSharp пока не поддерживает UI меню):
  • Главное меню:
    C-подобный:
    zr_menu
    - показывает доступные опции
  • Меню классов:
    C-подобный:
    zr_class
    - показывает доступные классы зомби и людей, помечает текущий класс

8. Система отбрасывания (KnockbackManager)​


Принцип работы:
  • Вычисляет вектор отбрасывания на основе позиции атакующего и жертвы
  • Применяет силу отбрасывания через модификацию скорости
  • Учитывает класс зомби и его атрибуты отбрасывания

Методы:
  • C-подобный:
    OnClientHurt(victim, attacker, ...)
    - обработка урона и применение отбрасывания

9. Система возрождения (RespawnManager)​


Принцип работы:
  • Управляет возрождением игроков после смерти
  • Отслеживает таймеры возрождения для каждого игрока
  • Применяет классы и эффекты при возрождении

Методы:
  • C-подобный:
    RespawnClient(client, condition)
    - возродить игрока

10. Система напалма (NapalmManager)​


Принцип работы:
  • Отслеживает гранаты, брошенные игроками
  • Создает зоны огня, которые наносят урон
  • Управляет таймерами горения для каждого игрока

11. Система телепортации (ZTeleManager)​


Принцип работы:
  • Находит точки спавна на карте
  • Телепортирует игрока на спавн с эффектами
  • Управляет задержкой и ограничениями на телепорт

Методы:
  • C-подобный:
    TeleportClient(client, force)
    - телепортировать игрока

12. Визуальные эффекты (VisualEffectManager)​


Принцип работы:
  • Использует ModSharp API:
    C-подобный:
    IModSharp.DispatchParticleEffect()
  • Создает взрывы, энергетические всплески, частицы
  • Использует
    C-подобный:
    Vector.DirectionToAngles()
    для преобразования направления

Методы:
  • C-подобный:
    CreateExplosion(origin, fireball, smoke, sparks)
    - создать взрыв
  • Использует
    C-подобный:
    DispatchParticleEffect()
    для создания частиц взрыва
  • C-подобный:
    CreateEnergySplash(origin, direction, explosive)
    - энергетический всплеск
  • Преобразует направление в углы через
    C-подобный:
    direction.DirectionToAngles()
  • C-подобный:
    CreateInfectionEffects(client)
    - эффекты при заражении
  • C-подобный:
    RemoveRagdoll(client)
    - удаление трупа (ragdoll)

Используемые API:
C#:
_modSharp.DispatchParticleEffect("particle_name", origin, angles, filter);
angles = direction.DirectionToAngles(); // Преобразование направления

13. Звуковые эффекты (SoundEffectManager)​


Принцип работы:
  • Использует ModSharp API:
    C-подобный:
    IPlayerPawn.EmitSound()
    для воспроизведения звуков
  • Предзагружает звуки через
    C-подобный:
    PrecacheResource()
    перед использованием
  • Управляет таймерами для периодических звуков (стоны зомби)

Типы звуков:
  • Moan (стоны): Периодические стоны зомби с настраиваемым интервалом
  • Pain (боль): Звуки при получении урона (с вероятностью)
  • Death (смерть): Звуки при смерти зомби
  • Scream (крик): Крик при заражении
  • Ambient (окружающие): Фоновые звуки

Методы:
  • C-подобный:
    PlayMoan(client)
    - воспроизвести стон
  • Предзагрузка:
    C-подобный:
    _modSharp.PrecacheResource(soundPath)
  • Воспроизведение:
    C-подобный:
    pawn.EmitSound(soundPath, volume)
  • C-подобный:
    StartMoaning(client)
    - начать периодические стоны (таймер)
  • C-подобный:
    StopMoaning(client)
    - остановить стоны
  • C-подобный:
    PlayPain(client)
    - звук боли
  • C-подобный:
    PlayDeath(client)
    - звук смерти
  • C-подобный:
    PlayScream(client)
    - крик заражения

Используемые API:
C#:
_modSharp.PrecacheResource(soundPath); // Предзагрузка
var pawn = client.GetPlayerController()?.GetPawn();
pawn?.EmitSound(soundPath, volume); // Воспроизведение всем
pawn?.EmitSoundClient(soundPath, volume); // Воспроизведение конкретному клиенту

14. Защита при спавне (SpawnProtectManager)​


Принцип работы:
  • Защищает игрока от урона сразу после спавна
  • Визуально показывает защиту через измененную прозрачность и скорость
  • Управляет таймером защиты для каждого игрока

Процесс:
  1. При спавне (
    C-подобный:
    OnClientSpawn
    ): запускается защита
  2. Устанавливается иммунитет в
    C-подобный:
    InfectionManager
  3. Применяются визуальные эффекты (прозрачность, скорость)
  4. Таймер обратного отсчета в чате
  5. При истечении: снятие защиты

Методы:
  • C-подобный:
    OnClientSpawn(client)
    - обработка спавна
  • C-подобный:
    OnClientDeath(client)
    - обработка смерти (снятие защиты)

15. Увеличение прыжка (JumpBoostManager)​


Принцип работы:
  • Модифицирует скорость прыжка на основе атрибутов класса
  • Отслеживает события прыжка через
    C-подобный:
    OnPlayerJump
  • Включает защиту от bunnyhop (быстрые прыжки подряд)

Процесс:
  1. Отслеживание события прыжка
  2. Получение атрибутов класса (множитель прыжка)
  3. Модификация вертикальной скорости через
    C-подобный:
    SetAbsVelocity()
  4. Защита от bunnyhop через отслеживание времени между прыжками

Методы:
  • C-подобный:
    OnPlayerJump(client)
    - обработка прыжка

16. Обработка событий (EventManager)​


Принцип работы:
  • Централизованная обработка всех игровых событий
  • Переадресация событий соответствующим менеджерам
  • Реализует
    C-подобный:
    IEventListener
    для получения событий

Обрабатываемые события:
  • C-подобный:
    player_spawn
    C-подобный:
    SpawnProtectManager
    ,
    C-подобный:
    RespawnManager
  • C-подобный:
    player_death
    C-подобный:
    InfectionManager
    ,
    C-подобный:
    RespawnManager
    ,
    C-подобный:
    VisualEffectManager
    ,
    C-подобный:
    SpawnProtectManager
  • C-подобный:
    player_hurt
    C-подобный:
    KnockbackManager
    ,
    C-подобный:
    NapalmManager
  • C-подобный:
    player_jump
    C-подобный:
    JumpBoostManager
  • C-подобный:
    round_start
    → Перезапуск систем
  • C-подобный:
    round_end
    → Очистка состояния

17. Публичный API (ZombieReloadedAPI)​


Принцип работы:
  • Предоставляет публичный интерфейс для других плагинов
  • Реализует
    C-подобный:
    IZombieReloadedAPI
  • Делегирует вызовы соответствующим менеджерам

Методы API:
  • C-подобный:
    IsClientInfected(client)
    - проверка статуса зомби
  • C-подобный:
    IsClientHuman(client)
    - проверка статуса человека
  • C-подобный:
    InfectClient(client, attacker?)
    - заразить
  • C-подобный:
    HumanizeClient(client)
    - гуманизировать
  • C-подобный:
    HasZombieSpawned()
    - проверка появления зомби
  • C-подобный:
    RespawnClient(client, condition)
    - возродить
  • C-подобный:
    TeleportClient(client, force)
    - телепортировать

🔧 Используемые API ModSharp​


Команды​

C#:
IClientManager.InstallCommandCallback(command, handler);
IClientManager.RemoveCommandCallback(command, handler);
// Обработчик: ECommandAction OnCommand(IGameClient client, StringCommand command)

Звуки​

C#:
IModSharp.PrecacheResource(soundPath);
IPlayerPawn.EmitSound(soundPath, volume);
IPlayerPawn.EmitSoundClient(soundPath, volume);
ISoundManager.StartSoundEvent(sound, entity, volume, filter);

Визуальные эффекты​

C#:
IModSharp.DispatchParticleEffect("particle_name", origin, angles, filter);
Vector.DirectionToAngles(); // Преобразование направления в углы

Предзагрузка​

C#:
IModSharp.PrecacheResource(resourcePath); // Звуки, модели, частицы

Таймеры​

C#:
Guid timerId = IModSharp.PushTimer(() => { }, interval, GameTimerFlags.Repeat);
IModSharp.StopTimer(timerId);

Чат​

C#:
IGameClient.SayChatMessage(teamOnly, message);
IModSharp.PrintToChatAll(message);
IModSharp.PrintToChat(team, message);

Игроки​

C#:
IPlayerPawn? pawn = client.GetPlayerController()?.GetPawn();
pawn?.SetModel(modelPath);
pawn?.SetSkin(skinIndex);
pawn?.EmitSound(soundPath);

Атрибуты игрока​

C#:
IBaseModelEntity.RenderMode = RenderMode.TransAlpha;
IBaseModelEntity.RenderColor = new Color32(r, g, b, alpha);
IMovementService.SetSpeedModifier(multiplier);
ICameraService.FieldOfView = fov;
IPlayerController.DesiredFOV = fov;

📁 Структура проекта​


C-подобный:
Sharp.Modules.ZombieReloaded/
├── src/
│   ├── ZombieReloaded.cs                 # Главный модуль
│   ├── Sharp.Modules.ZombieReloaded.csproj
│   │
│   ├── API/                              # Публичный API
│   │   └── ZombieReloadedAPI.cs
│   │
│   ├── Commands/                         # Система команд
│   │   └── CommandManager.cs
│   │
│   ├── Core/                             # Основные системы
│   │   ├── ConfigManager.cs
│   │   ├── InfectionManager.cs          # ЯДРО - система инфекции
│   │   ├── TranslationManager.cs
│   │   │
│   │   ├── PlayerClass/                  # Система классов
│   │   │   ├── PlayerClassManager.cs
│   │   │   ├── PlayerClassData.cs
│   │   │   ├── PlayerClassConfigLoader.cs
│   │   │   └── ClassAttributeApplier.cs
│   │   │
│   │   ├── Weapon/                       # Система оружия
│   │   │   ├── WeaponManager.cs
│   │   │   ├── WeaponData.cs
│   │   │   └── WeaponConfigLoader.cs
│   │   │
│   │   └── Model/                        # Система моделей
│   │       ├── ModelManager.cs
│   │       ├── ModelData.cs
│   │       └── ModelConfigLoader.cs
│   │
│   ├── Events/                           # Обработка событий
│   │   └── EventManager.cs
│   │
│   ├── Menus/                            # Система меню (чаты)
│   │   └── MenuManager.cs
│   │
│   └── Modules/                          # Дополнительные модули
│       ├── KnockbackManager.cs          # Отбрасывание
│       ├── RespawnManager.cs            # Возрождение
│       ├── NapalmManager.cs             # Напалм
│       ├── ZTeleManager.cs              # Телепортация
│       │
│       ├── JumpBoost/                   # Увеличение прыжка
│       │   └── JumpBoostManager.cs
│       │
│       ├── SpawnProtect/                # Защита при спавне
│       │   └── SpawnProtectManager.cs
│       │
│       ├── SoundEffects/                # Звуковые эффекты
│       │   └── SoundEffectManager.cs
│       │
│       └── VisualEffects/               # Визуальные эффекты
│           └── VisualEffectManager.cs
│
├── build.bat                             # Скрипт сборки (Windows)
├── build.sh                              # Скрипт сборки (Linux/Mac)
└── BUILD.md                              # Инструкция по сборке

🚀 Сборка проекта​


Требования​


  1. .NET SDK 10.0 или выше
  2. Скачать: Скачать .NET 10.0 (Linux, macOS, и Windows) | .NET
  3. Проверка:
    C-подобный:
    dotnet --version

Быстрая сборка​


Windows
Код:
cd ZombieReloaded/Sharp.Modules.ZombieReloaded
build.bat

Linux/Mac
Bash:
cd ZombieReloaded/Sharp.Modules.ZombieReloaded
./build.sh

Ручная сборка​


Bash:
cd ZombieReloaded/Sharp.Modules.ZombieReloaded/src
dotnet build Sharp.Modules.ZombieReloaded.csproj --configuration Release

Готовый DLL будет находиться в:
C-подобный:
.build/Sharp.Modules/ZombieReloaded/Release/ZombieReloaded.dll

📦 Установка​


  1. Скопируйте
    C-подобный:
    ZombieReloaded.dll
    в папку модулей ModSharp:
    C-подобный:
       <game root>/game/csgo/addons/modsharp/modules/
  2. Скопируйте конфигурационные файлы:
    C-подобный:
       <game root>/game/csgo/addons/modsharp/configs/zr/
    • C-подобный:
      playerclasses.txt
    • C-подобный:
      weapons.txt
    • C-подобный:
      models.txt
    • C-подобный:
      downloads.txt
  3. Скопируйте переводы:
    C-подобный:
       <game root>/game/csgo/addons/modsharp/translations/zombiereloaded/
  4. Перезапустите сервер или выполните hot reload модуля

🎮 Использование​


Команды для игроков​


  • C-подобный:
    zr_menu
    или
    C-подобный:
    .zr_menu
    - главное меню
  • C-подобный:
    zr_class
    или
    C-подобный:
    .zr_class
    - меню выбора классов
  • C-подобный:
    zr_class <имя_класса>
    - выбрать класс напрямую
  • C-подобный:
    ztele
    или
    C-подобный:
    .ztele
    - телепортироваться на спавн

В консоли команды работают с префиксом
C-подобный:
ms_
:
  • C-подобный:
    ms_zr_class
  • C-подобный:
    ms_ztele

Команды для администраторов​


  • C-подобный:
    zr_infect <target>
    - заразить игрока
  • C-подобный:
    zr_human <target>
    - сделать человеком
  • C-подобный:
    zr_respawn <target>
    - возродить игрока
  • C-подобный:
    zr_ztele_force <target>
    - принудительно телепортировать
  • C-подобный:
    zr_config_reload
    - перезагрузить конфиг
  • C-подобный:
    zr_config_reloadall
    - перезагрузить все конфиги

📝 Конфигурация​


playerclasses.txt​


Определяет классы игроков (зомби и люди) с их атрибутами:
  • Здоровье
  • Скорость
  • Модель
  • Прозрачность
  • FOV
  • Ночное видение
  • Оверлеи

weapons.txt​


Настройки оружия:
  • Рестрикты для зомби/людей
  • Ограничения по слотам
  • Настройки урона

models.txt​


Модели игроков:
  • Пути к моделям
  • Доступность (Public/Admin)
  • Команды (Zombies/Humans/Both)
  • Скины

🔄 Жизненный цикл модуля​


1. Инициализация (Init)​

C#:
// Создание всех менеджеров
_configManager = new ConfigManager(...);
_infectionManager = new InfectionManager(...);
// ...

2. Постинициализация (PostInit)​

C#:
// Загрузка конфигурации
_configManager.Load();
_translationManager.Load();

// Инициализация менеджеров с зависимостями
_playerClassManager.Init();
_playerClassManager.PostInit();

// Регистрация событий
_modSharp.InstallGameListener(this);
_clientManager.InstallClientListener(this);

// Регистрация команд
_commandManager.RegisterCommands();

3. Работа​

  • Обработка игровых событий через слушателей
  • Применение атрибутов классов
  • Воспроизведение звуков и эффектов
  • Управление таймерами

4. Завершение (Shutdown)​

C#:
// Удаление слушателей
_modSharp.RemoveGameListener(this);
_clientManager.RemoveClientListener(this);

// Отмена регистрации команд
_commandManager.UnregisterCommands();

// Завершение всех менеджеров
_infectionManager?.Shutdown();
// ...

🔌 Интеграция с ModSharp​


Используемые интерфейсы​


  • C-подобный:
    IModSharpModule
    - главный интерфейс модуля
  • C-подобный:
    IGameListener
    - слушатель игровых событий
  • C-подобный:
    IClientListener
    - слушатель клиентских событий
  • C-подобный:
    IModSharp
    - основной API ModSharp
  • C-подобный:
    IClientManager
    - управление клиентами
  • C-подобный:
    IEventManager
    - управление событиями
  • C-подобный:
    ISharedSystem
    - общая система ModSharp

Получение сервисов​


C#:
IModSharp modSharp = sharedSystem.GetModSharp();
IClientManager clientManager = sharedSystem.GetClientManager();
IEventManager eventManager = sharedSystem.GetEventManager();
ISoundManager soundManager = sharedSystem.GetSoundManager();
ILoggerFactory loggerFactory = sharedSystem.GetLoggerFactory();

🎯 Основные принципы работы​


1. Модульность​

Каждая система изолирована и имеет четко определенную ответственность. Менеджеры общаются через зависимости и события.

2. Зависимости​

Менеджеры инициализируются в правильном порядке:
  1. Базовые (Config, Translation)
  2. Основные (Infection, Weapon, PlayerClass, Model)
  3. Дополнительные (Knockback, Respawn, Napalm, ZTele)
  4. Эффекты (Visual, Sound)
  5. Защитные (SpawnProtect, JumpBoost)
  6. Системы (Command, Event, API)

3. События​

Централизованная обработка через
C-подобный:
IGameListener
и
C-подобный:
IClientListener
:
  • Игровые события (round_start, player_death, player_spawn)
  • Клиентские события (OnClientPutInServer, OnClientDisconnected)

4. Состояние​

Каждый менеджер хранит свое состояние в словарях по
C-подобный:
SteamID
:
  • C-подобный:
    Dictionary<SteamID, bool>
    - статусы зомби
  • C-подобный:
    Dictionary<SteamID, string>
    - выбранные классы
  • C-подобный:
    Dictionary<SteamID, Guid>
    - таймеры

🐛 Отладка​


Логирование​

Все менеджеры используют
C-подобный:
ILogger<T>
для логирования:
  • C-подобный:
    LogInformation
    - информационные сообщения
  • C-подобный:
    LogWarning
    - предупреждения
  • C-подобный:
    LogError
    - ошибки
  • C-подобный:
    LogDebug
    - отладочная информация

Проверка состояния​

C#:
// Проверка статуса зомби
bool isZombie = _infectionManager.IsClientInfected(client);

// Получение класса
string classId = _playerClassManager.GetClientClass(client);

📚 Дополнительная информация​


  • ModSharp Документация: Изучайте документацию для примеров
  • Примеры кода: Смотрите примеры использования API
  • API Reference: Изучайте интерфейсы ModSharp

Примеры использования API​


Заражение игрока
C#:
var api = sharedSystem.GetSharpModuleManager()
    .GetSharpModuleInterface<IZombieReloadedAPI>("ZombieReloaded");
   
if (api != null)
{
    api.InfectClient(client, attacker);
}

Проверка статуса
C#:
bool isZombie = api.IsClientInfected(client);
if (isZombie)
{
    // Логика для зомби
}

Воспроизведение звука
C#:
// Предзагрузка
_modSharp.PrecacheResource("sounds/zr/infection.mp3");

// Воспроизведение от игрока
var pawn = client.GetPlayerController()?.GetPawn();
pawn?.EmitSound("sounds/zr/infection.mp3", 1.0f);

Создание эффекта
C#:
var origin = pawn.GetAbsOrigin();
var angles = new Vector(0, 0, 0);
_modSharp.DispatchParticleEffect("explosion_fireball", origin, angles);

⚠️ Текущие ограничения и TODO​


Реализовано​

  • ✅ Базовая архитектура модуля
  • ✅ Система конфигурации
  • ✅ Система переводов
  • ✅ Ядро инфекции
  • ✅ Система классов игроков (все атрибуты)
  • ✅ Система моделей
  • ✅ Система оружия (загрузка)
  • ✅ Система команд (с меню)
  • ✅ Визуальные эффекты (частицы)
  • ✅ Звуковые эффекты (EmitSound)
  • ✅ Защита при спавне
  • ✅ Увеличение прыжка

В разработке​

  • ⏳ Полное применение рестриктов оружия
  • ⏳ Смена команд при заражении
  • ⏳ Полная реализация ragdoll removal

Требует API ModSharp​

  • ⏳ Ночное видение
  • ⏳ Оверлеи
  • ⏳ UI меню (сейчас используются чат-меню)

📄 Лицензия​


Оригинальный плагин: см. лицензию SourceMod плагина
Портирование: см. лицензию ModSharp

[HEADING=r]

Версия: 1.0.0
Для CS2 (ModSharp)
Статус: В активной разработке


C-подобный:
============================================
Building Zombie Reloaded for ModSharp
============================================

Checking .NET SDK...
10.0.100

Step 1: Restoring dependencies (including ModSharp.Sharp.Shared from NuGet)...
Восстановление завершено (0,3 с)

Сборка успешно выполнено через 0,6 с

Step 2: Building Zombie Reloaded (Release configuration)...
Восстановление завершено (0,3 с)
  Sharp.Modules.ZombieReloaded net10.0 успешно выполнено (0,5 с) → ..\..\CS2_ZM_modsharp\.build\Sharp.Modules\ZombieReloaded\Release\net10.0\ZombieReloaded.dll

Сборка успешно выполнено через 1,2 с

============================================
Build successful!
============================================

DLL location: ..\..\..\.build\Sharp.Modules\ZombieReloaded\Release\net10.0\ZombieReloaded.dll

Copy this DLL to your ModSharp modules folder:
  <game root>\game\csgo\addons\modsharp\modules\

Вот тут | CS2_ZM_modsharp\ZombieReloaded\Sharp.Modules.ZombieReloaded | вы найдёте файлы для быстрой компиляции.

build.bat​

  • Удален шаг сборки Sharp.Shared из папки modsharp-public-master
  • Оставлены только восстановление зависимостей из NuGet и сборка проекта
  • Добавлено сообщение о необходимости интернет-соединения для загрузки пакетов

build.sh​

  • Аналогично упрощен для Linux/macOS
  • Удалена зависимость от локальной сборки

Преимущества​

  • Использует официальный NuGet-пакет ModSharp.Sharp.Shared
  • Автоматически получает последнюю версию из NuGet
  • Упрощен процесс сборки

Требования​

  • Интернет-соединение для загрузки пакетов из NuGet при первой сборке
  • .NET SDK 10.0 или выше
Теперь проект можно собирать, просто запустив build.bat или build.sh — зависимости будут загружены автоматически из NuGet.
 

Вложения

  • CS2_ZM_modsharp.7z
    1.2 МБ · Просмотры: 11
Последнее редактирование:

Ernest

Участник
Сообщения
232
Реакции
14
@DarkerZ, Вроде как компилируется без ошибок.

Zombie Reloaded для ModSharp (CS2)​


Полный порт популярного SourceMod плагина Zombie Reloaded для системы ModSharp на Counter-Strike 2.

📋 Описание​


Zombie Reloaded - это игровой мод для CS2, который превращает классический геймплей в режим выживания против зомби. Игроки делятся на две команды: зомби (заражают людей) и люди (выживают от зомби).

Оригинальный плагин: Greyscale, Richard Helgeby
Портирование на ModSharp: Текущая реализация

🏗️ Архитектура​


Проект построен на модульной архитектуре с четким разделением ответственности:

C-подобный:
ZombieReloaded (IModSharpModule)
├── Core Systems (Основные системы)
│   ├── ConfigManager - Управление конфигурацией
│   ├── TranslationManager - Локализация и переводы
│   ├── InfectionManager - Ядро системы инфекции
│   ├── PlayerClassManager - Управление классами игроков
│   ├── WeaponManager - Управление оружием
│   └── ModelManager - Управление моделями
│
├── Additional Modules (Дополнительные модули)
│   ├── KnockbackManager - Система отбрасывания
│   ├── RespawnManager - Система возрождения
│   ├── NapalmManager - Эффекты огня от гранат
│   ├── ZTeleManager - Система телепортации
│   ├── VisualEffectManager - Визуальные эффекты
│   ├── SoundEffectManager - Звуковые эффекты
│   ├── SpawnProtectManager - Защита при спавне
│   └── JumpBoostManager - Увеличение прыжка
│
└── Supporting Systems (Вспомогательные системы)
    ├── CommandManager - Управление командами
    ├── EventManager - Обработка игровых событий
    └── API - Публичный API для других плагинов

Принцип работы​


  • Инициализация (Init/PostInit): Все менеджеры создаются и инициализируются в правильном порядке
  • Загрузка конфигурации: Классы, оружие, модели загружаются из файлов конфигурации
  • Регистрация событий: Установка слушателей для игровых и клиентских событий
  • Работа в реальном времени: Обработка событий, применение атрибутов, звуки и эффекты

✅ Интегрированные системы​


1. Система конфигурации (ConfigManager)​


Принцип работы:
  • Управляет загрузкой всех конфигурационных файлов
  • Создает директории конфигурации при первом запуске
  • Путь к конфигурации:
    C-подобный:
    <root>/configs/zr/

Файлы конфигурации:
  • C-подобный:
    playerclasses.txt
    - классы игроков (зомби/люди)
  • C-подобный:
    weapons.txt
    - настройки оружия и рестрикты
  • C-подобный:
    models.txt
    - модели для игроков
  • C-подобный:
    downloads.txt
    - файлы для загрузки клиентам

2. Система переводов (TranslationManager)​


Принцип работы:
  • Загружает файлы переводов из
    C-подобный:
    translations/
  • Поддерживает множественные языки
  • Форматирует сообщения с параметрами

Методы:
  • C-подобный:
    Load()
    - загрузка переводов
  • C-подобный:
    PrintToChat(client, key, ...)
    - отправка переведенного сообщения в чат

3. Система инфекции (InfectionManager) - ЯДРО​


Принцип работы:
  • Отслеживает статус зомби/человека для каждого игрока через
    C-подобный:
    Dictionary<SteamID, bool>
  • Управляет иммунитетом от заражения
  • Интегрирован с другими системами для полной трансформации игрока

Процесс заражения (InfectClient):
  1. Проверка иммунитета и текущего статуса
  2. Установка статуса зомби
  3. Применение класса зомби через
    C-подобный:
    PlayerClassManager
  4. Создание визуальных эффектов (взрывы, энергия) через
    C-подобный:
    VisualEffectManager
  5. Воспроизведение звуков заражения через
    C-подобный:
    SoundEffectManager
  6. Удаление всего оружия
  7. Переключение команды на террористов (зомби)

Процесс гуманизации (HumanizeClient):
  1. Сброс статуса зомби
  2. Применение класса человека
  3. Остановка звуков зомби (стоны)
  4. Выдача оружия человеку

Методы:
  • C-подобный:
    IsClientInfected(client)
    - проверка статуса
  • C-подобный:
    InfectClient(client, attacker?)
    - заразить игрока
  • C-подобный:
    HumanizeClient(client)
    - сделать человеком
  • C-подобный:
    SetImmunity(client, duration)
    - установить иммунитет
  • C-подобный:
    HasImmunity(client)
    - проверить иммунитет

4. Система классов игроков (PlayerClassManager)​


Принцип работы:
  • Загружает классы из
    C-подобный:
    playerclasses.txt
    через
    C-подобный:
    PlayerClassConfigLoader
  • Хранит классы в словарях:
    C-подобный:
    _classesByIdentifier
    и
    C-подобный:
    _classes
  • Разделяет классы на зомби и людей
  • Применяет все атрибуты класса через
    C-подобный:
    ClassAttributeApplier

Структура класса (ClassAttributes):
  • C-подобный:
    Identifier
    - уникальный идентификатор
  • C-подобный:
    Name
    - отображаемое имя
  • C-подобный:
    Team
    - команда (Zombies/Humans)
  • C-подобный:
    Health
    - здоровье
  • C-подобный:
    Speed
    - модификатор скорости
  • C-подобный:
    ModelPath
    - путь к модели
  • C-подобный:
    AlphaInitial
    - начальная прозрачность (0-255)
  • C-подобный:
    OverlayPath
    - путь к оверлею
  • C-подобный:
    Fov
    - поле зрения
  • C-подобный:
    NightVision
    - ночное видение
  • И другие атрибуты

Применение атрибутов (ClassAttributeApplier):
  1. Здоровье:
    C-подобный:
    pawn.MaxHealth = classData.HealthInitial
  2. Модель:
    C-подобный:
    ModelManager.ApplyModel(client, modelPath)
  3. Скорость:
    C-подобный:
    IMovementService.SetSpeedModifier(speedMultiplier)
  4. Прозрачность:
    C-подобный:
    IBaseModelEntity.RenderMode = TransAlpha
    ,
    C-подобный:
    RenderColor
    с альфа-каналом
  5. FOV:
    C-подобный:
    ICameraService.FieldOfView
    и
    C-подобный:
    IPlayerController.DesiredFOV
  6. Ночное видение: Заглушка (требует API ModSharp)

Методы:
  • C-подобный:
    LoadClasses()
    - загрузка классов из конфига
  • C-подобный:
    GetClassData(identifier)
    - получить данные класса
  • C-подобный:
    FindClass(identifierOrName)
    - найти класс по имени или идентификатору (регистронезависимо)
  • C-подобный:
    SetClientClass(client, identifier)
    - установить класс игроку
  • C-подобный:
    GetClientClass(client)
    - получить текущий класс игрока
  • C-подобный:
    GetDefaultClass(team)
    - получить класс по умолчанию для команды

5. Система моделей (ModelManager)​


Принцип работы:
  • Загружает модели из
    C-подобный:
    models.txt
    через
    C-подобный:
    ModelConfigLoader
  • Предзагружает модели через
    C-подобный:
    PrecacheResource()
    перед использованием
  • Отслеживает предзагруженные модели в
    C-подобный:
    _precachedModels
  • Применяет модели к игрокам через
    C-подобный:
    SetModel()

Структура модели (ModelAttributes):
  • C-подобный:
    Path
    - путь к модели
  • C-подобный:
    Name
    - имя модели
  • C-подобный:
    Access
    - доступность (Public/Admin)
  • C-подобный:
    Team
    - команда (Zombies/Humans/Both)
  • C-подобный:
    Skin
    - индекс скина

Методы:
  • C-подобный:
    LoadModels()
    - загрузка из конфига
  • C-подобный:
    PrecacheModels()
    - предзагрузка всех моделей
  • C-подобный:
    PrecacheModel(modelPath)
    - предзагрузка одной модели
  • C-подобный:
    ApplyModel(client, modelPath, skinIndex)
    - применить модель
  • C-подобный:
    GetRandomModelForTeam(team)
    - получить случайную модель для команды

6. Система оружия (WeaponManager)​


Принцип работы:
  • Загружает данные оружия из
    C-подобный:
    weapons.txt
  • Управляет рестриктами на оружие
  • Контролирует выдачу оружия зомби и людям

Структура оружия (WeaponAttributes):
  • C-подобный:
    Name
    - имя оружия
  • C-подобный:
    Slot
    - слот оружия (Primary/Secondary/Knife/Grenade)
  • Рестрикты и ограничения

Методы:
  • C-подобный:
    LoadWeapons()
    - загрузка из конфига
  • C-подобный:
    GetWeaponData(name)
    - получить данные оружия
  • C-подобный:
    RemoveAllClientWeapons(client)
    - удалить все оружие
  • C-подобный:
    GiveDefaultZombieWeapons(client)
    - выдать оружие зомби по умолчанию

7. Система команд (CommandManager)​


Принцип работы:
  • Использует ModSharp API:
    C-подобный:
    IClientManager.InstallCommandCallback()
  • Команды автоматически получают префикс
    C-подобный:
    ms_
    в консоли
  • Работают триггеры в чате:
    C-подобный:
    .command
    ,
    C-подобный:
    /command
    ,
    C-подобный:
    !command
  • Обработчики возвращают
    C-подобный:
    ECommandAction
    (Stopped/Handled/Skipped)

Регистрация:
C#:
_clientManager.InstallCommandCallback("zr_class", OnClassCommand);

Административные команды:
  • C-подобный:
    zr_infect <target>
    - заразить игрока
  • C-подобный:
    zr_human <target>
    - сделать человеком
  • C-подобный:
    zr_respawn <target>
    - возродить игрока
  • C-подобный:
    zr_ztele_force <target>
    - принудительно телепортировать
  • C-подобный:
    zr_config_reload
    - перезагрузить конфиг
  • C-подобный:
    zr_config_reloadall
    - перезагрузить все конфиги

Игровые команды:
  • C-подобный:
    zr_class [name]
    - выбрать класс (без аргументов показывает меню)
  • C-подобный:
    zr_menu
    - показать главное меню
  • C-подобный:
    ztele
    - телепортироваться на спавн

Система меню:
Меню реализованы через чат-сообщения (ModSharp пока не поддерживает UI меню):
  • Главное меню:
    C-подобный:
    zr_menu
    - показывает доступные опции
  • Меню классов:
    C-подобный:
    zr_class
    - показывает доступные классы зомби и людей, помечает текущий класс

8. Система отбрасывания (KnockbackManager)​


Принцип работы:
  • Вычисляет вектор отбрасывания на основе позиции атакующего и жертвы
  • Применяет силу отбрасывания через модификацию скорости
  • Учитывает класс зомби и его атрибуты отбрасывания

Методы:
  • C-подобный:
    OnClientHurt(victim, attacker, ...)
    - обработка урона и применение отбрасывания

9. Система возрождения (RespawnManager)​


Принцип работы:
  • Управляет возрождением игроков после смерти
  • Отслеживает таймеры возрождения для каждого игрока
  • Применяет классы и эффекты при возрождении

Методы:
  • C-подобный:
    RespawnClient(client, condition)
    - возродить игрока

10. Система напалма (NapalmManager)​


Принцип работы:
  • Отслеживает гранаты, брошенные игроками
  • Создает зоны огня, которые наносят урон
  • Управляет таймерами горения для каждого игрока

11. Система телепортации (ZTeleManager)​


Принцип работы:
  • Находит точки спавна на карте
  • Телепортирует игрока на спавн с эффектами
  • Управляет задержкой и ограничениями на телепорт

Методы:
  • C-подобный:
    TeleportClient(client, force)
    - телепортировать игрока

12. Визуальные эффекты (VisualEffectManager)​


Принцип работы:
  • Использует ModSharp API:
    C-подобный:
    IModSharp.DispatchParticleEffect()
  • Создает взрывы, энергетические всплески, частицы
  • Использует
    C-подобный:
    Vector.DirectionToAngles()
    для преобразования направления

Методы:
  • C-подобный:
    CreateExplosion(origin, fireball, smoke, sparks)
    - создать взрыв
  • Использует
    C-подобный:
    DispatchParticleEffect()
    для создания частиц взрыва
  • C-подобный:
    CreateEnergySplash(origin, direction, explosive)
    - энергетический всплеск
  • Преобразует направление в углы через
    C-подобный:
    direction.DirectionToAngles()
  • C-подобный:
    CreateInfectionEffects(client)
    - эффекты при заражении
  • C-подобный:
    RemoveRagdoll(client)
    - удаление трупа (ragdoll)

Используемые API:
C#:
_modSharp.DispatchParticleEffect("particle_name", origin, angles, filter);
angles = direction.DirectionToAngles(); // Преобразование направления

13. Звуковые эффекты (SoundEffectManager)​


Принцип работы:
  • Использует ModSharp API:
    C-подобный:
    IPlayerPawn.EmitSound()
    для воспроизведения звуков
  • Предзагружает звуки через
    C-подобный:
    PrecacheResource()
    перед использованием
  • Управляет таймерами для периодических звуков (стоны зомби)

Типы звуков:
  • Moan (стоны): Периодические стоны зомби с настраиваемым интервалом
  • Pain (боль): Звуки при получении урона (с вероятностью)
  • Death (смерть): Звуки при смерти зомби
  • Scream (крик): Крик при заражении
  • Ambient (окружающие): Фоновые звуки

Методы:
  • C-подобный:
    PlayMoan(client)
    - воспроизвести стон
  • Предзагрузка:
    C-подобный:
    _modSharp.PrecacheResource(soundPath)
  • Воспроизведение:
    C-подобный:
    pawn.EmitSound(soundPath, volume)
  • C-подобный:
    StartMoaning(client)
    - начать периодические стоны (таймер)
  • C-подобный:
    StopMoaning(client)
    - остановить стоны
  • C-подобный:
    PlayPain(client)
    - звук боли
  • C-подобный:
    PlayDeath(client)
    - звук смерти
  • C-подобный:
    PlayScream(client)
    - крик заражения

Используемые API:
C#:
_modSharp.PrecacheResource(soundPath); // Предзагрузка
var pawn = client.GetPlayerController()?.GetPawn();
pawn?.EmitSound(soundPath, volume); // Воспроизведение всем
pawn?.EmitSoundClient(soundPath, volume); // Воспроизведение конкретному клиенту

14. Защита при спавне (SpawnProtectManager)​


Принцип работы:
  • Защищает игрока от урона сразу после спавна
  • Визуально показывает защиту через измененную прозрачность и скорость
  • Управляет таймером защиты для каждого игрока

Процесс:
  1. При спавне (
    C-подобный:
    OnClientSpawn
    ): запускается защита
  2. Устанавливается иммунитет в
    C-подобный:
    InfectionManager
  3. Применяются визуальные эффекты (прозрачность, скорость)
  4. Таймер обратного отсчета в чате
  5. При истечении: снятие защиты

Методы:
  • C-подобный:
    OnClientSpawn(client)
    - обработка спавна
  • C-подобный:
    OnClientDeath(client)
    - обработка смерти (снятие защиты)

15. Увеличение прыжка (JumpBoostManager)​


Принцип работы:
  • Модифицирует скорость прыжка на основе атрибутов класса
  • Отслеживает события прыжка через
    C-подобный:
    OnPlayerJump
  • Включает защиту от bunnyhop (быстрые прыжки подряд)

Процесс:
  1. Отслеживание события прыжка
  2. Получение атрибутов класса (множитель прыжка)
  3. Модификация вертикальной скорости через
    C-подобный:
    SetAbsVelocity()
  4. Защита от bunnyhop через отслеживание времени между прыжками

Методы:
  • C-подобный:
    OnPlayerJump(client)
    - обработка прыжка

16. Обработка событий (EventManager)​


Принцип работы:
  • Централизованная обработка всех игровых событий
  • Переадресация событий соответствующим менеджерам
  • Реализует
    C-подобный:
    IEventListener
    для получения событий

Обрабатываемые события:
  • C-подобный:
    player_spawn
    C-подобный:
    SpawnProtectManager
    ,
    C-подобный:
    RespawnManager
  • C-подобный:
    player_death
    C-подобный:
    InfectionManager
    ,
    C-подобный:
    RespawnManager
    ,
    C-подобный:
    VisualEffectManager
    ,
    C-подобный:
    SpawnProtectManager
  • C-подобный:
    player_hurt
    C-подобный:
    KnockbackManager
    ,
    C-подобный:
    NapalmManager
  • C-подобный:
    player_jump
    C-подобный:
    JumpBoostManager
  • C-подобный:
    round_start
    → Перезапуск систем
  • C-подобный:
    round_end
    → Очистка состояния

17. Публичный API (ZombieReloadedAPI)​


Принцип работы:
  • Предоставляет публичный интерфейс для других плагинов
  • Реализует
    C-подобный:
    IZombieReloadedAPI
  • Делегирует вызовы соответствующим менеджерам

Методы API:
  • C-подобный:
    IsClientInfected(client)
    - проверка статуса зомби
  • C-подобный:
    IsClientHuman(client)
    - проверка статуса человека
  • C-подобный:
    InfectClient(client, attacker?)
    - заразить
  • C-подобный:
    HumanizeClient(client)
    - гуманизировать
  • C-подобный:
    HasZombieSpawned()
    - проверка появления зомби
  • C-подобный:
    RespawnClient(client, condition)
    - возродить
  • C-подобный:
    TeleportClient(client, force)
    - телепортировать

🔧 Используемые API ModSharp​


Команды​

C#:
IClientManager.InstallCommandCallback(command, handler);
IClientManager.RemoveCommandCallback(command, handler);
// Обработчик: ECommandAction OnCommand(IGameClient client, StringCommand command)

Звуки​

C#:
IModSharp.PrecacheResource(soundPath);
IPlayerPawn.EmitSound(soundPath, volume);
IPlayerPawn.EmitSoundClient(soundPath, volume);
ISoundManager.StartSoundEvent(sound, entity, volume, filter);

Визуальные эффекты​

C#:
IModSharp.DispatchParticleEffect("particle_name", origin, angles, filter);
Vector.DirectionToAngles(); // Преобразование направления в углы

Предзагрузка​

C#:
IModSharp.PrecacheResource(resourcePath); // Звуки, модели, частицы

Таймеры​

C#:
Guid timerId = IModSharp.PushTimer(() => { }, interval, GameTimerFlags.Repeat);
IModSharp.StopTimer(timerId);

Чат​

C#:
IGameClient.SayChatMessage(teamOnly, message);
IModSharp.PrintToChatAll(message);
IModSharp.PrintToChat(team, message);

Игроки​

C#:
IPlayerPawn? pawn = client.GetPlayerController()?.GetPawn();
pawn?.SetModel(modelPath);
pawn?.SetSkin(skinIndex);
pawn?.EmitSound(soundPath);

Атрибуты игрока​

C#:
IBaseModelEntity.RenderMode = RenderMode.TransAlpha;
IBaseModelEntity.RenderColor = new Color32(r, g, b, alpha);
IMovementService.SetSpeedModifier(multiplier);
ICameraService.FieldOfView = fov;
IPlayerController.DesiredFOV = fov;

📁 Структура проекта​


C-подобный:
Sharp.Modules.ZombieReloaded/
├── src/
│   ├── ZombieReloaded.cs                 # Главный модуль
│   ├── Sharp.Modules.ZombieReloaded.csproj
│   │
│   ├── API/                              # Публичный API
│   │   └── ZombieReloadedAPI.cs
│   │
│   ├── Commands/                         # Система команд
│   │   └── CommandManager.cs
│   │
│   ├── Core/                             # Основные системы
│   │   ├── ConfigManager.cs
│   │   ├── InfectionManager.cs          # ЯДРО - система инфекции
│   │   ├── TranslationManager.cs
│   │   │
│   │   ├── PlayerClass/                  # Система классов
│   │   │   ├── PlayerClassManager.cs
│   │   │   ├── PlayerClassData.cs
│   │   │   ├── PlayerClassConfigLoader.cs
│   │   │   └── ClassAttributeApplier.cs
│   │   │
│   │   ├── Weapon/                       # Система оружия
│   │   │   ├── WeaponManager.cs
│   │   │   ├── WeaponData.cs
│   │   │   └── WeaponConfigLoader.cs
│   │   │
│   │   └── Model/                        # Система моделей
│   │       ├── ModelManager.cs
│   │       ├── ModelData.cs
│   │       └── ModelConfigLoader.cs
│   │
│   ├── Events/                           # Обработка событий
│   │   └── EventManager.cs
│   │
│   ├── Menus/                            # Система меню (чаты)
│   │   └── MenuManager.cs
│   │
│   └── Modules/                          # Дополнительные модули
│       ├── KnockbackManager.cs          # Отбрасывание
│       ├── RespawnManager.cs            # Возрождение
│       ├── NapalmManager.cs             # Напалм
│       ├── ZTeleManager.cs              # Телепортация
│       │
│       ├── JumpBoost/                   # Увеличение прыжка
│       │   └── JumpBoostManager.cs
│       │
│       ├── SpawnProtect/                # Защита при спавне
│       │   └── SpawnProtectManager.cs
│       │
│       ├── SoundEffects/                # Звуковые эффекты
│       │   └── SoundEffectManager.cs
│       │
│       └── VisualEffects/               # Визуальные эффекты
│           └── VisualEffectManager.cs
│
├── build.bat                             # Скрипт сборки (Windows)
├── build.sh                              # Скрипт сборки (Linux/Mac)
└── BUILD.md                              # Инструкция по сборке

🚀 Сборка проекта​


Требования​


  1. .NET SDK 10.0 или выше
  2. Скачать: Скачать .NET 10.0 (Linux, macOS, и Windows) | .NET
  3. Проверка:
    C-подобный:
    dotnet --version

Быстрая сборка​


Windows
Код:
cd ZombieReloaded/Sharp.Modules.ZombieReloaded
build.bat

Linux/Mac
Bash:
cd ZombieReloaded/Sharp.Modules.ZombieReloaded
./build.sh

Ручная сборка​


Bash:
cd ZombieReloaded/Sharp.Modules.ZombieReloaded/src
dotnet build Sharp.Modules.ZombieReloaded.csproj --configuration Release

Готовый DLL будет находиться в:
C-подобный:
.build/Sharp.Modules/ZombieReloaded/Release/ZombieReloaded.dll

📦 Установка​


  1. Скопируйте
    C-подобный:
    ZombieReloaded.dll
    в папку модулей ModSharp:
    C-подобный:
       <game root>/game/csgo/addons/modsharp/modules/
  2. Скопируйте конфигурационные файлы:
    C-подобный:
       <game root>/game/csgo/addons/modsharp/configs/zr/
    • C-подобный:
      playerclasses.txt
    • C-подобный:
      weapons.txt
    • C-подобный:
      models.txt
    • C-подобный:
      downloads.txt
  3. Скопируйте переводы:
    C-подобный:
       <game root>/game/csgo/addons/modsharp/translations/zombiereloaded/
  4. Перезапустите сервер или выполните hot reload модуля

🎮 Использование​


Команды для игроков​


  • C-подобный:
    zr_menu
    или
    C-подобный:
    .zr_menu
    - главное меню
  • C-подобный:
    zr_class
    или
    C-подобный:
    .zr_class
    - меню выбора классов
  • C-подобный:
    zr_class <имя_класса>
    - выбрать класс напрямую
  • C-подобный:
    ztele
    или
    C-подобный:
    .ztele
    - телепортироваться на спавн

В консоли команды работают с префиксом
C-подобный:
ms_
:
  • C-подобный:
    ms_zr_class
  • C-подобный:
    ms_ztele

Команды для администраторов​


  • C-подобный:
    zr_infect <target>
    - заразить игрока
  • C-подобный:
    zr_human <target>
    - сделать человеком
  • C-подобный:
    zr_respawn <target>
    - возродить игрока
  • C-подобный:
    zr_ztele_force <target>
    - принудительно телепортировать
  • C-подобный:
    zr_config_reload
    - перезагрузить конфиг
  • C-подобный:
    zr_config_reloadall
    - перезагрузить все конфиги

📝 Конфигурация​


playerclasses.txt​


Определяет классы игроков (зомби и люди) с их атрибутами:
  • Здоровье
  • Скорость
  • Модель
  • Прозрачность
  • FOV
  • Ночное видение
  • Оверлеи

weapons.txt​


Настройки оружия:
  • Рестрикты для зомби/людей
  • Ограничения по слотам
  • Настройки урона

models.txt​


Модели игроков:
  • Пути к моделям
  • Доступность (Public/Admin)
  • Команды (Zombies/Humans/Both)
  • Скины

🔄 Жизненный цикл модуля​


1. Инициализация (Init)​

C#:
// Создание всех менеджеров
_configManager = new ConfigManager(...);
_infectionManager = new InfectionManager(...);
// ...

2. Постинициализация (PostInit)​

C#:
// Загрузка конфигурации
_configManager.Load();
_translationManager.Load();

// Инициализация менеджеров с зависимостями
_playerClassManager.Init();
_playerClassManager.PostInit();

// Регистрация событий
_modSharp.InstallGameListener(this);
_clientManager.InstallClientListener(this);

// Регистрация команд
_commandManager.RegisterCommands();

3. Работа​

  • Обработка игровых событий через слушателей
  • Применение атрибутов классов
  • Воспроизведение звуков и эффектов
  • Управление таймерами

4. Завершение (Shutdown)​

C#:
// Удаление слушателей
_modSharp.RemoveGameListener(this);
_clientManager.RemoveClientListener(this);

// Отмена регистрации команд
_commandManager.UnregisterCommands();

// Завершение всех менеджеров
_infectionManager?.Shutdown();
// ...

🔌 Интеграция с ModSharp​


Используемые интерфейсы​


  • C-подобный:
    IModSharpModule
    - главный интерфейс модуля
  • C-подобный:
    IGameListener
    - слушатель игровых событий
  • C-подобный:
    IClientListener
    - слушатель клиентских событий
  • C-подобный:
    IModSharp
    - основной API ModSharp
  • C-подобный:
    IClientManager
    - управление клиентами
  • C-подобный:
    IEventManager
    - управление событиями
  • C-подобный:
    ISharedSystem
    - общая система ModSharp

Получение сервисов​


C#:
IModSharp modSharp = sharedSystem.GetModSharp();
IClientManager clientManager = sharedSystem.GetClientManager();
IEventManager eventManager = sharedSystem.GetEventManager();
ISoundManager soundManager = sharedSystem.GetSoundManager();
ILoggerFactory loggerFactory = sharedSystem.GetLoggerFactory();

🎯 Основные принципы работы​


1. Модульность​

Каждая система изолирована и имеет четко определенную ответственность. Менеджеры общаются через зависимости и события.

2. Зависимости​

Менеджеры инициализируются в правильном порядке:
  1. Базовые (Config, Translation)
  2. Основные (Infection, Weapon, PlayerClass, Model)
  3. Дополнительные (Knockback, Respawn, Napalm, ZTele)
  4. Эффекты (Visual, Sound)
  5. Защитные (SpawnProtect, JumpBoost)
  6. Системы (Command, Event, API)

3. События​

Централизованная обработка через
C-подобный:
IGameListener
и
C-подобный:
IClientListener
:
  • Игровые события (round_start, player_death, player_spawn)
  • Клиентские события (OnClientPutInServer, OnClientDisconnected)

4. Состояние​

Каждый менеджер хранит свое состояние в словарях по
C-подобный:
SteamID
:
  • C-подобный:
    Dictionary<SteamID, bool>
    - статусы зомби
  • C-подобный:
    Dictionary<SteamID, string>
    - выбранные классы
  • C-подобный:
    Dictionary<SteamID, Guid>
    - таймеры

🐛 Отладка​


Логирование​

Все менеджеры используют
C-подобный:
ILogger<T>
для логирования:
  • C-подобный:
    LogInformation
    - информационные сообщения
  • C-подобный:
    LogWarning
    - предупреждения
  • C-подобный:
    LogError
    - ошибки
  • C-подобный:
    LogDebug
    - отладочная информация

Проверка состояния​

C#:
// Проверка статуса зомби
bool isZombie = _infectionManager.IsClientInfected(client);

// Получение класса
string classId = _playerClassManager.GetClientClass(client);

📚 Дополнительная информация​


  • ModSharp Документация: Изучайте документацию для примеров
  • Примеры кода: Смотрите примеры использования API
  • API Reference: Изучайте интерфейсы ModSharp

Примеры использования API​


Заражение игрока
C#:
var api = sharedSystem.GetSharpModuleManager()
    .GetSharpModuleInterface<IZombieReloadedAPI>("ZombieReloaded");
 
if (api != null)
{
    api.InfectClient(client, attacker);
}

Проверка статуса
C#:
bool isZombie = api.IsClientInfected(client);
if (isZombie)
{
    // Логика для зомби
}

Воспроизведение звука
C#:
// Предзагрузка
_modSharp.PrecacheResource("sounds/zr/infection.mp3");

// Воспроизведение от игрока
var pawn = client.GetPlayerController()?.GetPawn();
pawn?.EmitSound("sounds/zr/infection.mp3", 1.0f);

Создание эффекта
C#:
var origin = pawn.GetAbsOrigin();
var angles = new Vector(0, 0, 0);
_modSharp.DispatchParticleEffect("explosion_fireball", origin, angles);

⚠️ Текущие ограничения и TODO​


Реализовано​

  • ✅ Базовая архитектура модуля
  • ✅ Система конфигурации
  • ✅ Система переводов
  • ✅ Ядро инфекции
  • ✅ Система классов игроков (все атрибуты)
  • ✅ Система моделей
  • ✅ Система оружия (загрузка)
  • ✅ Система команд (с меню)
  • ✅ Визуальные эффекты (частицы)
  • ✅ Звуковые эффекты (EmitSound)
  • ✅ Защита при спавне
  • ✅ Увеличение прыжка

В разработке​

  • ⏳ Полное применение рестриктов оружия
  • ⏳ Смена команд при заражении
  • ⏳ Полная реализация ragdoll removal

Требует API ModSharp​

  • ⏳ Ночное видение
  • ⏳ Оверлеи
  • ⏳ UI меню (сейчас используются чат-меню)

📄 Лицензия​


Оригинальный плагин: см. лицензию SourceMod плагина
Портирование: см. лицензию ModSharp

[HEADING=r]

Версия: 1.0.0
Для CS2 (ModSharp)
Статус:
В активной разработке


C-подобный:
============================================
Building Zombie Reloaded for ModSharp
============================================

Checking .NET SDK...
10.0.100

Step 1: Restoring dependencies (including ModSharp.Sharp.Shared from NuGet)...
Восстановление завершено (0,3 с)

Сборка успешно выполнено через 0,6 с

Step 2: Building Zombie Reloaded (Release configuration)...
Восстановление завершено (0,3 с)
  Sharp.Modules.ZombieReloaded net10.0 успешно выполнено (0,5 с) → ..\..\CS2_ZM_modsharp\.build\Sharp.Modules\ZombieReloaded\Release\net10.0\ZombieReloaded.dll

Сборка успешно выполнено через 1,2 с

============================================
Build successful!
============================================

DLL location: ..\..\..\.build\Sharp.Modules\ZombieReloaded\Release\net10.0\ZombieReloaded.dll

Copy this DLL to your ModSharp modules folder:
  <game root>\game\csgo\addons\modsharp\modules\

Вот тут | CS2_ZM_modsharp\ZombieReloaded\Sharp.Modules.ZombieReloaded | вы найдёте файлы для быстрой компиляции.

build.bat​

  • Удален шаг сборки Sharp.Shared из папки modsharp-public-master
  • Оставлены только восстановление зависимостей из NuGet и сборка проекта
  • Добавлено сообщение о необходимости интернет-соединения для загрузки пакетов

build.sh​

  • Аналогично упрощен для Linux/macOS
  • Удалена зависимость от локальной сборки

Преимущества​

  • Использует официальный NuGet-пакет ModSharp.Sharp.Shared
  • Автоматически получает последнюю версию из NuGet
  • Упрощен процесс сборки

Требования​

  • Интернет-соединение для загрузки пакетов из NuGet при первой сборке
  • .NET SDK 10.0 или выше
Теперь проект можно собирать, просто запустив build.bat или build.sh — зависимости будут загружены автоматически из NuGet.
не фига себе только остается узнать работает ли сам мод на кс 2? или много фиксов сделать нужно
 
Последнее редактирование:

Ernest

Участник
Сообщения
232
Реакции
14
так и не понял как проверить )) времени особо нету если кто-то проверил черканите!
 
Сверху Снизу