From 0428b3654bf7dd704e3336c7fb82d133cd4a14de Mon Sep 17 00:00:00 2001 From: Niko Marmeladkov Date: Fri, 23 Oct 2026 17:08:15 +0300 Subject: [PATCH] =?UTF-8?q?fs=20pack:=20=D0=BA=D0=BE=D0=BF=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20gameinfo.txt=20=E2=80=94=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=80=D0=BA=D0=B5=D1=80=20=D1=83=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tier::paths::detect признаёт корень ассетов по garrysmod_dir.vpk или garrysmod/gameinfo.txt. В минимальном наборе нет ни VPK, ни gameinfo, поэтому клиент с --assets отвечал «ассеты Garry's Mod не найдены», хотя все файлы на месте. Теперь fs pack пишет gameinfo.txt из VFS, и распакованный APK-набор загружается без полной установки. --- crates/client/src/pack.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/client/src/pack.rs b/crates/client/src/pack.rs index fd345a6..6f50e76 100644 --- a/crates/client/src/pack.rs +++ b/crates/client/src/pack.rs @@ -67,6 +67,15 @@ pub fn pack(assets: Option, map: &str, out: &Path) -> anyhow::Result<() std::fs::write(&map_dest, &map_bytes)?; total += map_bytes.len(); + // Маркер установки: `tier::paths::detect` узнаёт корень по gameinfo.txt + // (или dir-VPK). Без него клиент с `--assets ` отвечает «не найдены». + if let Ok(info) = vfs.read("gameinfo.txt") { + std::fs::write(root.join("gameinfo.txt"), &info)?; + total += info.len(); + } else { + tracing::warn!("gameinfo.txt не найден в VFS — маркер установки не записан"); + } + tracing::info!( files = paths.len() + 1, bytes = total,