Чтобы проверить бесплатную модель Roblox на вирусы, вставляйте её только в копию проекта, сразу отключайте Scripts, раскрывайте всё дерево в Explorer и просматривайте каждый LuaSourceContainer. Удаляйте непонятный код, неожиданные RemoteEvent, загрузчики через require() и сетевые вызовы, которые не нужны функции модели.
Toolbox содержит материалы Roblox и сообщества. Модель может включать не только Parts и MeshParts, но и Scripts, LocalScripts, ModuleScripts, звуки, интерфейс и удалённые события. Само наличие Script не доказывает вредоносность: дверь или автомобиль действительно требуют логики. Опасность начинается там, где код скрыт в глубокой вложенности, маскируется похожими именами или выполняет действия, которые не относятся к назначению модели.
Сохраните копию place и посмотрите автора, описание и состав.
Disable Scripts, раскройте Explorer и найдите все скрипты.
Тест с Output, сетью и чистым сравнением изменений.

Бесплатные модели Roblox и вирусы: быстрый аудит скриптов
Первый шаг не читает Source и ничего не удаляет. Команда перечисляет все Script, LocalScript и ModuleScript внутри выбранной модели. Запустите её в Command Bar, предварительно выделив модель в Explorer. Список помогает заметить код внутри декоративной детали, вложенного аксессуара или папки с нейтральным названием.
local Selection = game:GetService("Selection")
local selected = Selection:Get()
for _, root in selected do
print("Checking:", root:GetFullName())
for _, item in root:GetDescendants() do
if item:IsA("LuaSourceContainer") then
-- Выводим точный путь каждого найденного скрипта
warn(item.ClassName, item:GetFullName())
end
end
end- Для чистой декорации: список пуст
- Для функциональной модели: видны точные пути всех скриптов
Откройте каждый найденный файл. Сопоставьте его с обещанной функцией модели. Скрипт двери может менять CFrame, слушать ProximityPrompt и воспроизводить звук. Ему не нужен загрузчик чужого модуля, создание десятков объектов в ServerScriptService или отправка данных по HTTP. Если вы не можете объяснить участок кода, оставьте скрипт выключенным и замените его своей простой реализацией.
Сигналы риска в модели
| Элемент | Что означает | Что делать |
|---|---|---|
| require с числовым asset id | Код загружается извне | Проверить источник или удалить |
| GetDescendants + массовое изменение | Широкое влияние на игру | Понять точную цель цикла |
| HttpService без нужной функции | Внешняя сеть | Отключить и выяснить адрес |
| Скрипт в декоративной детали | Код не соответствует назначению | Удалить или переписать |
| Похожие системные имена | Попытка спрятаться | Сравнить дерево до и после |
Проверка по одному ключевому слову не гарантирует безопасность. Код можно разбить на строки, перенести в ModuleScript или загрузить позже. Нужен аудит поведения и границ: что создаётся, что удаляется, какие сервисы используются и куда передаются данные. Чем важнее проект, тем полезнее переносить только геометрию, материалы и разрешённые ассеты в чистую модель без исходных скриптов.

Практика: аудит модели из Toolbox через Command Bar
Возьмите любую бесплатную модель из Toolbox и проведите по ней полный аудит в отдельной копии place. Соберите список всех LuaSourceContainer скриптом из статьи и вынесите решение по каждому: оставить, переписать или удалить. Успех, когда в итоговой модели не осталось ни одной строки кода, которую вы не можете объяснить своими словами.
- Копия place. Сохраните проект под отдельным именем через Save As и дальше работайте только в этой копии. Play не нажимайте: до аудита чужой код не должен получить ни одного запуска.
- Вставка и Disable Scripts. Вставьте модель из Toolbox и сразу отключите её скрипты, оставив их выключенными до конца проверки. В Explorer модель появится одним узлом, раскройте его целиком вместе с вложенными папками и аксессуарами.
- Список LuaSourceContainer. Выделите модель в Explorer и выполните в Command Bar обход GetDescendants с проверкой IsA("LuaSourceContainer"). В Output появятся ClassName и полный путь каждого скрипта: у чистой декорации список останется пустым.
- Чтение Source по путям. Откройте каждый путь из Output и сверьте код с обещанной функцией модели. Ищите require с числовым asset id, обращения к HttpService, массовые циклы по GetDescendants и объекты, которые создаются в ServerScriptService.
- Чистая пересборка модели. Перенесите в новую пустую модель только Parts, MeshParts, материалы и звуки, а логику напишите сами: дверь двигает CFrame по ProximityPrompt. Запустите тест и убедитесь, что Output пуст, а сетевых вызовов нет.
Включите скрипты исходной модели обратно в этой же копии place и запустите игру. В Output станут видны предупреждения про require, созданные из ниоткуда объекты и появившиеся RemoteEvent. Затем удалите только верхний Script и повторите обход дерева: вложенный ModuleScript и RemoteEvent останутся на месте, и именно поэтому модель продолжает работать после такого удаления. Копию place после опыта выбросьте.
Оформите обход по LuaSourceContainer как плагин Studio или сохранённую команду, чтобы прогонять его на каждой новой модели за один клик. Добавьте в чек-лист автора ассета, права и повторную проверку через месяц: владелец может обновить модель уже после вашего аудита. Если внутри есть Tool, отдельно сверьте выдачу оружия со своей схемой и убедитесь, что дубликаты в рюкзаке не появляются.
Частые ошибки и почему они появляются
Высокий рейтинг и популярность уменьшают неопределённость, но не заменяют проверку. Владелец ассета мог обновить модель, а скрипт мог иметь слишком широкие возможности без злого умысла. Ещё одна ошибка: удалить видимый Script, но оставить вложенный ModuleScript или RemoteEvent. Третья: проверять прямо в единственной версии проекта.
Сначала используйте Disable Scripts и изучите дерево. Не давайте неизвестному коду первый запуск.
Проверьте LocalScript, ModuleScript, плагины, RemoteEvent и неожиданные контейнеры во всей иерархии.
Сложный нечитаемый код в простой модели не является признаком качества. Выберите прозрачную альтернативу.
Самопроверка
Любой Script в модели из Toolbox является вирусом?
Script внутри модели сам по себе не признак вируса: дверь, машина и оружие без кода не работают. Смотреть надо на совпадение поведения кода с назначением модели. Тревожный знак другой: скрипт лежит в декоративной детали, обращается к сети или подгружает чужой модуль.
Зачем отключать скрипты сразу после вставки модели?
Отключённые скрипты не выполнятся до того, как вы их прочитаете и примете решение. Первый же запуск неизвестного кода успевает создать RemoteEvent, изменить объекты по всему дереву или подтянуть внешний модуль. Аудит на выключенных скриптах ничем не хуже: Source читается точно так же.
Что означает require с числовым asset id в скрипте модели?
require с числовым asset id подгружает код из внешнего ассета, который вам не принадлежит. Содержимое такого ассета владелец может поменять в любой момент, уже после вашей проверки. Если функции модели внешний модуль не нужен, строку удаляют вместе со скриптом.
Где безопасно тестировать чужую модель Roblox?
Тестируйте в отдельной копии place без боевых данных, настроек и связи с опубликованным местом. Тогда любые изменения дерева и созданные объекты остаются в песочнице. В рабочий проект модель попадает только после того, как вы её пересобрали и проверили.
Достаточно ли удалить видимый Script, чтобы очистить модель?
Удаления видимого Script обычно мало: рядом остаются LocalScript, ModuleScript, RemoteEvent и папки с нейтральными именами. Проверяйте всю иерархию через GetDescendants, а не один верхний уровень модели. Пустой список LuaSourceContainer - единственное надёжное подтверждение, что кода в модели нет.
Спасает ли высокий рейтинг модели в Toolbox?
Высокий рейтинг и много установок снижают неопределённость, но не заменяют просмотр кода. Владелец мог обновить ассет уже после того, как модель набрала оценки. К тому же скрипт бывает написан со слишком широкими возможностями без злого умысла и всё равно ломает игру.
Что делать дальше
Сделайте чек-лист обязательной частью импорта: автор, права, копия проекта, отключение скриптов, дерево, Source, Output и повторный тест. Навык чтения функций и таблиц можно развить на курсе Lua. Если модель содержит Tool, сравните её со схемой из статьи про выдачу оружия. Если после импорта появились красные сообщения, используйте разбор ошибок Roblox Studio.
