Plugin / Плагин: ModikDialog.dll
Releases: github.com/naduvaha/ModikDialog/releases
Hard dependency / Жёсткая зависимость: BepInEx 5 · llama-server + GGUF-модель (~2 ГБ, вручную)
Optional / Опционально: QoL.Unknown — вкладка Mods, кнопка GIT
Not required / Не нужен: KrokMP — работает в одиночной игре / демо
LLM-диалоги торговцев для Casualties Unknown Demo. При правом клике на торговца
открывается меню из трёх кнопок: Общаться / Торговать / Уйти. «Общаться» ведёт в
разговор, где вопросы игрока, ответы торговца и подсказки действий генерируются
локальной моделью Qwen2.5-3B-Instruct через llama-server (llama.cpp).
LLM-driven trader dialogues for Casualties Unknown Demo. Right-click a trader to
open a 3-button menu: Talk / Trade / Leave. The Talk branch uses a local
Qwen2.5-3B-Instruct model served by llama-server (llama.cpp).
🇷🇺 Зависимости
| Обязательно | BepInEx 5.4.x |
| Обязательно | llama.cpp (llama-server.exe + DLL) |
| Обязательно | Qwen2.5-3B-Instruct GGUF (~2 ГБ) |
| Обязательно | CPU 4+ ядер (AVX2), ~2.5 ГБ на диске |
| Опционально | QoL.Unknown — вкладка Mods, кнопка GIT |
| Не нужен | KrokMP / мультиплеер — мод для одиночной игры |
| Скачивание | GitHub Releases |
🇷🇺 Установка
- Casualties Unknown Demo с BepInEx 5 (
winhttp.dllрядом сCasualtiesUnknown.exe). - ~2 ГБ на модель + ~50 МБ на
llama-server. - CPU 4+ ядер (AVX2). Модель работает без GPU.
Мод ничего не качает сам. Всё положить руками:
plugins/
ModikDialog/
ModikDialog.dll
models/
qwen2.5-3b-instruct-q4_k_m.gguf ← сам GGUF (~2 ГБ)
llama/ ← распакованный релиз llama.cpp
llama-server.exe
llama.dll
ggml.dll
ggml-base.dll
ggml-cpu-*.dll ← любые ggml-cpu-*.dll что были в архиве
(и остальные .dll из архива llama.cpp)
llama-server.exe ищется в таком порядке:
models/llama/llama-server.exemodels/llama-server.exellama-server.exeрядом сModikDialog.dll
Модель ищется в:
models/<ModelFile>(по имени из конфига)- рядом с
ModikDialog.dll
Если что-то не нашлось — в BepInEx\LogOutput.log появится строка вида
llama-server.exe not found. Expected in one of: со списком путей.
- llama.cpp (только
llama-server.exeи его DLL нужны): https://github.com/ggml-org/llama.cpp/releases →llama-<ver>-bin-win-cpu-x64.zip. Распакуй всё содержимое архива вplugins/ModikDialog/models/llama/. - Qwen2.5-3B-Instruct Q4_K_M (~2 ГБ):
https://huggingface.co/Qwen/Qwen2.5-3B-Instruct-GGUF/blob/main/qwen2.5-3b-instruct-q4_k_m.gguf
Положить в
plugins/ModikDialog/models/.
Основной конфиг — plugins/ModikDialog/models/settings.conf. Открой в блокноте,
поправь строки, сохрани, перезапусти игру. Файл лежит рядом с моделью, поэтому
удобно менять и модель, и настройки в одном месте.
Язык (ru/en) не настраивается — определяется автоматически по языку игры
(Locale.currentLangName, с фолбэком на язык системы).
Строки с # — комментарии. Пустое поле = значение из запасного конфига
BepInEx\config\ModikDialogByStaili.cfg.
Профили: Fast (слабый ПК), Balanced (по умолчанию), Quality (мощный ПК).
По умолчанию уже стоит режим экономии: CPU-only, без лишнего вормапа и веб-UI, ответ и меню — одним запросом, кнопки-вопросы из готового списка.
Попробуй по порядку:
Profile = FastThreads= число физических ядер (не логических)MaxReplyTokens = 60ContextSize = 768- Модель полегче — Qwen2.5-1.5B
в
models/, имя — вModel
- Мод перехватывает
TraderScript.OnUse(правый клик по торговцу) и вместо штатного окна бартера показывает свою панель слева. - Клик по «Общаться» запускает разговорный режим: LLM видит репутацию, товары
торговца, предмет в руке игрока, состояние и генерирует приветствие; кнопки-вопросы
либо тоже сгенерированы (если
LlmMenuLabels=true), либо из статического пула. - Клик по вопросу → LLM генерирует ответ торговца (и, опционально, новый список вопросов).
- Клик по «Торговать» возвращает управление игре — открывается штатное окно бартера.
🇬🇧 Requirements (EN)
| Required | BepInEx 5.4.x |
| Required | llama.cpp (llama-server.exe + DLLs) |
| Required | Qwen2.5-3B-Instruct GGUF (~2 GB) |
| Required | CPU 4+ cores (AVX2), ~2.5 GB disk |
| Optional | QoL.Unknown — Mods tab, GIT button |
| Not required | KrokMP / multiplayer — single-player mod |
| Downloads | GitHub Releases |
🇬🇧 Installation (EN)
- Casualties Unknown Demo with BepInEx 5.
- ~2 GB disk for the model + ~50 MB for
llama-server. - CPU 4+ cores (AVX2). Runs on CPU, no GPU required.
The mod does not download anything. Drop files yourself:
plugins/
ModikDialog/
ModikDialog.dll
models/
qwen2.5-3b-instruct-q4_k_m.gguf
llama/
llama-server.exe
llama.dll, ggml.dll, ggml-base.dll, ggml-cpu-*.dll ...
Search order:
llama-server.exe:models/llama/, thenmodels/, then plugin root.- Model:
models/<ModelFile>, then plugin root.
- llama.cpp Windows CPU build:
https://github.com/ggml-org/llama.cpp/releases →
llama-<ver>-bin-win-cpu-x64.zip. Extract everything intoplugins/ModikDialog/models/llama/. - Model:
https://huggingface.co/Qwen/Qwen2.5-3B-Instruct-GGUF/blob/main/qwen2.5-3b-instruct-q4_k_m.gguf
Place into
plugins/ModikDialog/models/.
Primary config: plugins/ModikDialog/models/settings.conf (edit in Notepad,
restart game). It sits next to the model, so the model and its settings are in one place.
Language (ru/en) is not configurable — auto-detected from the game
(Locale.currentLangName, falling back to the system language).
Lines starting with # are comments. Empty fields fall back to
BepInEx\config\ModikDialogByStaili.cfg.
Profiles: Fast (weak PC), Balanced (default), Quality (powerful PC).
Defaults already save resources: CPU-only, no warmup/web UI, reply + menu in one request, question buttons from a static list.
Try in order:
Profile = FastThreads= physical core count (not logical)MaxReplyTokens = 60ContextSize = 768- Lighter model — Qwen2.5-1.5B
in
models/, set the name inModel
- Patches
TraderScript.OnUse(right-click). Shows a 3-button side panel: Talk / Trade / Leave. - Talk mode: LLM sees rep, stock, held item, player state → generates a greeting.
Question buttons are either LLM-generated (
LlmMenuLabels=true) or from a static pool. - Each question click → LLM emits reply (and optionally new menu).
- Trade mode calls the vanilla trade UI.
Right-click trader
│
▼
[Harmony prefix: TraderScript.OnUse]
│
▼
[TraderMenu] ─── "Торговать" ───▶ vanilla OnUse (game handles trade)
│
│ "Общаться"
▼
[DialogueController]
│ (system prompt: persona + rep + stock + held item + player state)
▼
[LlmClient] ──HTTP──▶ [llama-server.exe] ──▶ Qwen2.5-3B-Instruct.gguf
│
▼
reply (+ optional menu JSON)
│
▼
[ResponseSanitizer] → [SpeechBubble queue] + rebuild menu buttons
- Model: Qwen2.5-3B-Instruct — Apache 2.0 (Alibaba Qwen team).
- Runtime: llama.cpp — MIT (Georgi Gerganov & contributors).
- Style reference: the game's built-in
CasualtiesUnknownImmersion.TraderDialogmod.