Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

ServerModLoader by Staili

Русский | English

Version / Версия: 1.2.0
Plugin / Плагин: ServerModLoaderByStaili.dll
Hard dependency / Жёсткая зависимость: KrokMP
Nexus: nexusmods.com/scavprototype/mods/492
Releases: github.com/naduvaha/ServerModLoader/releases


Русский

Описание

Дополнение к мультиплеер-моду KrokoshaCasualtiesMP для Casualties Unknown.
При Join клиент может получить недостающие моды с хоста (DLL + Content и прочие файлы).
Nexus / GitHub CDN нет — только передача с хоста.
На сервер всегда пускает, даже если модов не хватает или хост без этого плагина.

Возможности

Синхронизация при Join

  • При Join хост шлёт папки модов; лимит на один мод — 5 GB (сырой размер / zip).
  • Передаётся вся папка: DLL, Content/, resources, аудио, xml, png и т.д.
  • Сохранение:
    BepInEx\plugins\SERVERCACHE\<хост>_<сервер>\
    
  • После полной передачи (все папки на диске проверены) — рестарт через Steam (+2 сек), затем автозаход в тот же лобби.
  • Если мод уже есть, но версия старше хоста — предупреждение по центру (RU/EN): возможны баги.
  • Если у хоста нет ServerModLoader или передача не удалась — клиент всё равно заходит на сервер (без зависания).

Очистка кеша и карантин

  • В браузере серверов KrokMP: Очистить кеш модов — меню удаления кешей.
  • Справа: Карантин — моды с угрозой / без Nexus whitelist; Одобрить или Удалить.
  • Карантин: BepInEx\plugins\SERVERCACHE\QUARANTINE\.

Защита

  • После скачивания: Nexus SHA256 whitelist → Windows Defender → онлайн hash-lookup (MalwareBazaar + ThreatFox).
  • Whitelist берётся из community metadata: nexusmods.json
  • Whitelist всегда включён: metadata недоступна → жёсткий блок; неизвестный SHA256 → диалог Довериться / Исключить (тихой установки нет).
  • Дальше всегда идут Defender и abuse.ch, в том числе для Nexus-trusted.
  • Для онлайн нужен бесплатный Auth-Key: https://auth.abuse.ch/ → вписать в Security.AbuseChAuthKey. Без ключа онлайн-шаг пропускается.
  • Пока в metadata мало хешей, unknown-моды потребуют явного «Довериться».

Зависимости

Обязательно BepInEx 5.4.x
Обязательно KrokoshaCasualtiesMP (KrokMP)

Для автораздачи модов плагин нужен и хосту, и клиенту. Без SML на хосте Join всё равно работает, просто моды сами не приедут.

Установка

  1. Установите BepInEx и KrokMP — https://www.nexusmods.com/scavprototype/mods/67
  2. Скопируйте ServerModLoaderByStaili.dll в:
    Casualties Unknown\BepInEx\plugins\
    
  3. В логе должно быть:
    [Info : ServerModLoaderByStaili] ServerModLoader by Staili loaded.
    

Конфиг

Ключ По умолчанию Значение
Sync.AutoSyncOnJoin true Пытаться тянуть моды с хоста при Join
Sync.AutoRelaunch true Рестарт через Steam после успешной передачи
Sync.AutoRejoinAfterRelaunch true После рестарта снова зайти в тот же лобби
Security.NexusWhitelistUrl github raw nexusmods.json
Security.WhitelistCacheHours 12 Кеш metadata (часы)
Security.WhitelistFetchTimeoutSeconds 12 Таймаут загрузки whitelist
Security.ScanWithWindowsDefender true Локальный скан через Defender
Security.AbuseChAuthKey (пусто) Бесплатный ключ с https://auth.abuse.ch/
Security.BlockIfScanUnavailable false Блокировать мод при ошибке скана/whitelist (таймаут всегда skip)
Security.ScanTimeoutSeconds 120 Таймаут Defender (сек)
Security.OnlineScanTimeoutSeconds 10 Таймаут онлайн-lookup (сек)

Заметки

  • Список модов KrokMP — это GUID плагинов, не имена.
  • Лишний SERVERCACHE может мешать Enforce на других серверах — очищайте кеш.
  • KrokMP / этот лоадер / QoL не считаются «модамы хоста» для скачивания.
  • Для максимальной: BlockIfScanUnavailable = true (не принимать файлы без успешного скана).

Содержимое релиза

Файл Описание
ServerModLoaderByStaili.dll Плагин (Release = obfuscated) — в BepInEx\plugins\
README.md Эта инструкция

English

About

An add-on for KrokoshaCasualtiesMP for Casualties Unknown.
On Join, the client can pull missing mods from the host (DLL + Content and other files).
No Nexus / GitHub CDN — host transfer only.
Always allows join, even if mods are missing or the host lacks this plugin.

Features

Sync on Join

  • If the host has ServerModLoader and mods the client lacks — on Join the host streams full mod folders during connect.
  • Per-mod size limit: 5 GB (raw / zip).
  • Full folder: DLL, Content/, resources, audio, xml, png, etc.
  • Saved under:
    BepInEx\plugins\SERVERCACHE\<host>_<server>\
    
  • After a full transfer (all folders verified on disk) — Steam relaunch (+2s), then auto-rejoin the same lobby.
  • If a mod is already installed but older than the host — centered warning (RU/EN): bugs may occur.
  • If the host has no ServerModLoader or the transfer fails — the client still joins (no hang).

Clear cache and quarantine

  • KrokMP server browser: Clear mod cache — delete server caches.
  • Next to it: Quarantine — threat / non-whitelist mods; Approve or Delete.
  • Stored under BepInEx\plugins\SERVERCACHE\QUARANTINE\.

Protection

  • After host-pull: Nexus SHA256 whitelist → Windows Defender → online hash lookup (MalwareBazaar + ThreatFox).
  • Whitelist from community metadata: nexusmods.json
  • Whitelist is always on: metadata unavailable → hard block; unknown SHA256 → Trust / Exclude prompt (no silent install).
  • Defender and abuse.ch always run, including for Nexus-trusted DLLs.
  • Online needs a free Auth-Key from https://auth.abuse.ch/ → put it in Security.AbuseChAuthKey. Empty key = online step skipped.
  • While metadata has few hashes, unknown mods require an explicit Trust click.

Dependencies

Required BepInEx 5.4.x
Required KrokoshaCasualtiesMP (KrokMP)

For auto-share, both host and client need this plugin. Without SML on the host, Join still works — mods just won’t be sent.

Install

  1. Install BepInEx + KrokMP — https://www.nexusmods.com/scavprototype/mods/67
  2. Drop ServerModLoaderByStaili.dll into:
    Casualties Unknown\BepInEx\plugins\
    
  3. Log should show:
    [Info : ServerModLoaderByStaili] ServerModLoader by Staili loaded.
    

Config

Key Default Meaning
Sync.AutoSyncOnJoin true Try to pull mods from the host on Join
Sync.AutoRelaunch true Steam relaunch after a successful transfer
Sync.AutoRejoinAfterRelaunch true After relaunch, join the same Steam lobby again
Security.NexusWhitelistUrl github raw nexusmods.json
Security.WhitelistCacheHours 12 Metadata cache lifetime (hours)
Security.WhitelistFetchTimeoutSeconds 12 Whitelist fetch timeout
Security.ScanWithWindowsDefender true Local Defender scan
Security.AbuseChAuthKey (empty) Free key from https://auth.abuse.ch/
Security.BlockIfScanUnavailable false Reject on scan/whitelist error (timeouts always skip)
Security.ScanTimeoutSeconds 120 Defender timeout (seconds)
Security.OnlineScanTimeoutSeconds 10 Online lookup timeout (seconds)

Notes

  • KrokMP modlists are BepInPlugin GUIDs, not display names.
  • Leftover SERVERCACHE can break Enforce on other servers — use Clear cache.
  • KrokMP / this loader / QoL are never treated as downloadable “host mods”.
  • For stricter: BlockIfScanUnavailable = true (do not keep files without a successful scan).

Release contents

File Description
ServerModLoaderByStaili.dll Plugin (Release = obfuscated) — into BepInEx\plugins\
README.md This readme