Игры

Почему в GMod Metrostroi исчезают детали поезда после спавна

В Garry's Mod с модом Metrostroi детали поезда (салон, двери, фары) пропадают после загрузки из-за ошибок Lua, конфликтов аддонов или отсутствующих моделей. Диагностика консоли, чек-лист исправлений и профилактика для gmod metrostroi.

В Garry’s Mod с модом Metrostroi: почему после прогрузки спавненного поезда (любого) исчезают все детали кроме кузова? Во время загрузки (2-6 секунд) поезд выглядит нормально, но затем появляется ошибка скриптов Metrostroi, и остаётся только кузов без салона, дверей, фар, кабины и других элементов.

В gmod metrostroi это обычно происходит из‑за сбоя серверного Lua при инициализации дочерних сущностей вагона: если не найдены модели/материалы, есть конфликт аддонов или несовпадение версий, Metrostroi не создаёт или удаляет салон, двери, фары и т.д., оставляя только внешний корпус. Сначала визуально всё есть (предиктивный рендер), спустя 2–6 секунд срабатывает ошибка скрипта — смотрите клиентскую и серверную консоль, отключайте сторонние аддоны и синхронизируйте контент/версию мода между сервером и клиентами.


Содержание


Почему в gmod metrostroi исчезают детали поезда

Короткий технический смысл — Metrostroi представляет поезд не как один монолитный проп, а как набор сущностей: «корпус» + дочерние сущности (салон/интерьер, двери, фары, кабина, тележки, системы освещения и т.д.). Инициализация этих дочерних сущностей выполняется серверным Lua-кодом сразу после спавна. Если в процессе инициализации происходит ошибка (nil‑значение, отсутствие модели, конфликт хука и т.п.), мод часто выполняет очистку или просто не создаёт части — в результате остаётся только внешний кузов, который мог быть отрисован клиентом заранее.

Типичные причины такого поведения:

  • Отсутствующие модели/материалы/звуки (не смонтированы HL2/CS:S или клиент не скачал нужный контент). Это частая причина: код ожидает наличие моделей, а их нет — дальше падает инициализация. См. пример зависимостей в обсуждениях по теме Facepunch issue.
  • Конфликт с другими аддонами: некоторые аддоны переопределяют функции создания сущностей, метатаблицы или меняют глобальные переменные — Metrostroi «чувствителен» к таким вмешательствам и легко ломается при конфликте, как отмечают игроки в сообществе reddit.
  • Несовпадение версий сервера и клиента (разные сборки Metrostroi или наборы поездов).
  • Неполная установка/повреждённые файлы (удалённые lua-файлы, дубликаты аддона в папке addons).
  • Карта или конфигурация маршрутов не соответствует тому, как мод ожидает инициализировать поезда (редкие случаи на кастомных картах).

Понять, что именно пошло не так, можно по тексту ошибки в консоли — чаще всего там будет трассировка Lua с указанием файла/строки, что даёт направление для исправления.


Как диагностировать ошибку Metrostroi в Garry’s Mod (метрострой гаррис мод)

Руководство по диагностике, шаг за шагом.

  1. Повторите проблему и сразу смотрите консоль клиента и сервера. Откройте консоль (~) в клиенте и терминал сервера. Ошибка проявляется через 2–6 секунд — именно в этот момент ищите traceback.
  2. Скопируйте полную трассировку (включая строки вида “lua/…: attempt to index local … (a nil value)” или сообщения про “Model not found”). Эти строки — ключ.
  3. Ищите подсказки:
  • есть ли в ошибке путь к model/material (models/…)? — значит, отсутствует модель/контент;
  • есть ли “attempt to index” или “bad argument” в файле metrostroi — значит, Lua не получил нужный объект;
  • есть ли упоминание стороннего аддона в трассировке — возможен конфликт.
  1. Проверьте серверные логи: garrysmod/logs/*.txt (последние записи) — там часто дублируется трассировка.
  2. Отладочный приём: сразу после спавна выполните простую проверку сущностей вокруг поезда (сервер): перечислите дочерние сущности или попробуйте ent:GetChildren()/ents.FindByClass("gmod_train") (только если вы умеете работать с Lua). Это даст понять, созданы ли под‑сущности вообще.

Если будете публиковать запрос на помощь, приложите: полную трассировку (клиент + сервер), список подписок Workshop, версию Metrostroi и карту — это экономит часы объяснений.

(По реальным обсуждениям проблем с конфликтами смотрите пример в сообществе reddit и пример зависимости моделей в GitHub issue.)


Чек‑лист быстрых исправлений (самые вероятные причины)

Проверьте пункты по порядку — часто 1–3 решают проблему:

    1. Синхронизируйте контент: убедитесь, что и сервер, и клиент подписаны на одни и те же Workshop‑предметы Metrostroi и наборы поездов; перезапустите GMod.
    1. Проверка на отсутствующие модели: при спавне в консоли ищите “Model not found” — если есть, установите нужный контент (смонтируйте CS:S/HL2 или подпишитесь на пакет моделей).
    1. Тест в «чистой» сборке: запустите GMod только с Metrostroi (отключите все остальные аддоны) и попробуйте спавн — исчезают ли детали? Если нет, значит конфликт.
    1. Обновление/переустановка: удалите старую папку Metrostroi, подпишитесь заново на workshop‑версию и перезапустите сервер/клиент. Иногда остаются дубликаты в папке addons — удалите лишние.
    1. Проверка версий: сервер и клиент должны иметь одинаковую версию мода и наборов поездов. Несовпадение — частая причина сетевых ошибок.
    1. FastDL / Workshop download: на сервере убедитесь, что клиенты действительно скачивают все файлы (не прерывается загрузка на клиенте).
    1. Отключите подозрительные аддоны: PAC3, сторонние системы транспорта, heavy‑hook моды — те, что влияют на сущности или глобальные хуки.
    1. Попробуйте другой map: на стандартной карте (например, gm_flatgrass) — если проблема уходит, виновата карта/конфигурация маршрутов.

Эти шаги часто решают проблему без глубокого погружения в Lua.


Глубокая отладка: что смотреть в консолях и логах

Если быстрые исправления не помогли, действуйте так:

  • Сохраните полные логи: клиентская консоль + серверная консоль (файлы в garrysmod/logs). Без полного текста трассировки помощь малоэффективна.
  • Найдите в трассировке конкретный файл и строку в папке metrostroi (например: garrysmod/addons/metrostroi/lua/…:123). Откройте этот файл и посмотрите, какая переменная оказывается nil. Иногда очевидно, какая зависимость не была загружена.
  • Вставьте отладочные выводы (print/MsgN) вокруг проблемного участка, чтобы понять последовательность инициализации. Можно временно добавить проверки типа:
lua
if not SomeVar then
 print("Metrostroi DEBUG: SomeVar is nil here", debug.traceback())
end
  • Проверьте, кто вызывает Remove(): поиском по репозиторию metrostroi найдите вызовы :Remove() — возможно, есть условная очистка при ошибке.
  • Если владеете Lua — оберните подозрительные вызовы в pcall и логируйте ошибки, чтобы локализовать источник исключения.
  • Если трассировка указывает на сторонний мод — временно удалите его и проверьте. Конфликты часто проявляются в виде неожиданного стека вызовов.

Если вам неудобно править файлы — достаточно скопировать трассировку и приложить её в багрепорт; разработчики или сообщество быстрее дадут точный ответ.


Совместимость модов и профилактика

Несколько практических правил, чтобы проблема не повторялась:

  • Держите на сервере Workshop‑коллекцию с Metrostroi + всеми поездами и добавками; раздавайте её игрокам через Steam Workshop.
  • Не ставьте несколько копий Metrostroi (ручная установка + workshop) — это вызывает дублирование классов.
  • Тестируйте новые аддоны на отдельном тест‑сервере перед деплоем на основной.
  • Обновления: обновляйте Metrostroi и наборы поездов одновременно; после апдейта устраняйте старые остатки в addons/data.
  • Для популярных публичных серверов — используйте FastDL или правильную конфигурацию Workshop‑коллекции, чтобы все клиенты имели одинаковый набор файлов.

Эти простые практики убирают 80% проблем, связанных с исчезновением частей поезда.


Куда жаловаться и какие логи прикладывать

Если ничего не помогает — запросите помощь у разработчиков/сообщества.

Что приложить в багрепорт (чем полнее — тем быстрее ответ):

  • Полный текст клиентской и серверной консоли (traceback) во время ошибки;
  • Версия сервера GMod, версия Metrostroi и идентификаторы Workshop‑предметов;
  • Список активных аддонов (workshop IDs или имена папок в addons);
  • Карта, на которой воспроизводится баг; шаги для воспроизведения; время и скрин/видео по возможности.

Куда отправлять:

  • Сообщество r/gmod — обсуждения похожих проблем: reddit
  • Issue tracker/форумы (ищите официальный репозиторий Metrostroi или тему на Workshop); в качестве примера проблем с моделями смотрите GitHub issue.
  • Если у вас собственный сервер — спросите на вашем хостинге/форуме о настройках FastDL/Workshop.

Источники

  1. https://www.reddit.com/r/gmod/comments/1i16h6o/metrostroi_mod_minsk_metro_maxwell_cat_included/
  2. https://github.com/Facepunch/garrysmod-issues/issues/6372
  3. https://gamemonitoring.ru/garrys-mod/servers/5797160
  4. https://otosection.com/garrys-mod-metrostroi-tutorial-how-to-start-all-train-types/

Заключение

Коротко: в gmod metrostroi исчезновение всех деталей кроме кузова почти всегда связано с падением серверного Lua при инициализации дочерних сущностей — чаще из‑за отсутствующих моделей/материалов, конфликтов аддонов или несинхронизированных версий. Начните с просмотра консоли (клиент/сервер), попробуйте чистую сборку (только Metrostroi) и синхронизируйте контент через Workshop/FastDL; если не получится — соберите логи и опубликуйте их в сообществе или issue‑трекере для детальной помощи.

Авторы
Проверено модерацией
Модерация
Почему в GMod Metrostroi исчезают детали поезда после спавна