Skip to content

Этого Linter'а в Химках видал! Деревянными YAML'ами торгует! - #171

Open
CQuarian-dev wants to merge 3 commits into
Lua-Frontier:masterfrom
CQuarian-dev:loadgrid_lenient
Open

CQuarian-dev wants to merge 3 commits into
Lua-Frontier:masterfrom
CQuarian-dev:loadgrid_lenient

Conversation

@CQuarian-dev

@CQuarian-dev CQuarian-dev commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

О пулл-реквесте

Ну тут просто вкраце. Новая команда для маппинга и отладки, может нет смысла даже мерджить.

  • Команда loadgrid_lenient - Загрузка грида из другого билда (LuaWorld (sector-frontier-14), SS14 от wizden, Radiant и т.п.), даже если в файле есть прототипы сущностей которых нет в Монолит-билде (!!КРОМЕ ТАЙЛОВ!!).
  • loadgrid_lenient <MapID> <Path> [x y] [rotation] [storeUids] - аргументы как у loadgrid.
  • Отсутствующие прототипы подменяются заглушкой на время загрузки; содержимое их контейнеров
    и прикреплённые объекты выкладываются рядом (или в тот же контейнер), затем заглушки удаляются.
  • В консоль выводится список пропущенных прототипов и количество удалённых/спасённых сущностей.

-- Работа системы идёт так:

  • Собирает список. Команда читает файл грида и записывает прототипы, которых нет в билде.
  • Сначала она подменяет, а не удаляет прототипы. Во время загрузки каждый такой объект создаётся как пустая заглушка. Сразу их удалять нельзя т.к. вместе с этим удалились бы вещи внутри, например оружие в ящике.
  • Спасает содержимое. После загрузки вещи из заглушек выкладываются рядом.
  • Удаляет заглушки.
  • Очищает список, чтобы он не повлиял на другие загрузки.

Обоснование / Баланс

Я просто устал каждый раз просить ИИшку чистить грид от отсутствующих прототипов.

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

Историю повторения КЛИЕНТСАЙД выдачи антагов самому себе как на станции Мёртвого Космоса не получим

  • Только сервер, без клиентской части и сетевых сообщений.
  • Требует у админа флаг MAPPING - тот же, что у loadgrid.
  • Файл читается через тот же загрузчик (userdata/ресурсы), пути с .. запрещены.
  • Подмена прототипов действует только на время одной загрузки и сразу очищается.
  • Существующий код не менялся: ни loadgrid, ни миграции, ни движок.

Как протестировать

Загрузить через loadgrid_lenient любой грид с другого билда.

Медиа

Uz1gW26h50i6VwOOG7Qb+ZntKIybJOww.mp4

Требования

Критические изменения

  • Система подключается к общему событию загрузки карт, после MapMigrationSystem и HolidaySystem. Пока команду никто не вызывает, она ничего не делает. Во время вызова подмена действует и на вложенные загрузки, если грид сам что-то грузит, но только для прототипов, которых в билде и так нет.
    P.s. понятным языком: Команда подключается к общему процессу загрузки карт, но работает только во время своего вызова, обычная загрузка карт и гридов не меняется.

Журнал изменений

🆑

  • add: Для мапперов: Новая команда loadgrid_lenient для загрузки гридов (шаттлов и станций) с других билдов, даже при наличие отсутствующих прототипов.

@CQuarian-dev

Copy link
Copy Markdown
Contributor Author

Ну вообще полезная вещь, но тайлы не трогал ибо харам и страшно

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants