Документация · актуальный клиент
Luau VM
Вкладка Luau VM запускает Luau в отдельной виртуальной машине Arctic. Код выполняется в клиенте, а не внутри Roblox. Игровая сцена доступна через внешний API; скрипты, рассчитанные на выполнение непосредственно в Roblox, могут требовать адаптации.
Luau VM запускает код, который вы вставили в редактор клиента, и даёт доступ к HTTP, файлам, вводу и памяти процесса. «Мои скрипты» на сайте — отдельная облачная библиотека с ограниченным arctic.* API. Сохранение в ней не переносит скрипт во вкладку Luau VM. Для облачных модулей есть отдельная справка.
Быстрый старт
- Запустите актуальный клиент, подключитесь к игре Roblox и дождитесь загрузки сцены.
- Откройте вкладку Luau VM в меню Arctic и вставьте код в редактор.
- Нажмите Run in VM или Ctrl + Enter. Статус и строки
print/warnпоявятся под редактором.
local Players = game:GetService("Players")
local me = Players.LocalPlayer
print(game.PlaceId, me.Name)
local marker = Drawing.new("Circle")
marker.Radius = 8
marker.Color = Color3.fromRGB(255, 80, 80)
function on_update()
local character = me.Character
local root = character and character:FindFirstChild("HumanoidRootPart")
if not root then
marker.Visible = false
return
end
local point, visible = WorldToScreen(root.Position)
marker.Position = point
marker.Visible = visible
end
on_update() необязательна. Если она определена, клиент вызывает её примерно раз в 100 мс. Следующий запуск заменяет текущий скрипт и его объекты Drawing. При смене игровой сцены запустите скрипт повторно.
Доступный API
| Раздел | Функции и свойства |
|---|---|
| Luau | Стандартные библиотеки Luau, типы Luau, loadstring/load, typeof, tick, identifyexecutor, base64encode, base64decode. |
| Игра | game, workspace, game:GetService(), game.PlaceId. У объектов: Name, ClassName, Parent, GetChildren(), GetDescendants(), FindFirstChild(), WaitForChild(), IsA(), GetFullName() и другие методы поиска. |
| Игроки | Players.LocalPlayer, Players:GetPlayers(), Player.Character, Player.DisplayName. |
| Свойства сцены | Workspace.CurrentCamera, Camera.FieldOfView/ViewportSize, Model.PrimaryPart, BasePart.Position/Size/Velocity/AssemblyLinearVelocity/CanCollide/Transparency/Color, Humanoid.Health/MaxHealth/WalkSpeed/JumpPower/JumpHeight. |
| Типы и отрисовка | Vector2.new, Vector3.new, Color3.new/fromRGB, Drawing.new("Line" | "Square" | "Circle" | "Text"), WorldToScreen(). У Drawing доступны координаты, размер, цвет, прозрачность, толщина, текст и Remove(). |
| Ввод | isrbxactive, iskeypressed, keypress/keyrelease, функции мыши mouse1*/mouse2*, mousemoveabs/mousemoverel, mousescroll, setclipboard. |
| HTTP и JSON | httpget, httppost, game:HttpGet()/HttpPost(), HttpService:JSONEncode()/JSONDecode()/GenerateGUID(). |
| Файлы | writefile, appendfile, readfile, isfile, isfolder, makefolder, listfiles, delfile, delfolder. Пути относятся к каталогу workspace рядом с клиентом. |
| Память и время | getbase, memory_read(type, address), memory_write(type, address, value), wait(seconds), task.wait(seconds). |
Примеры
Игроки и объекты
local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
local character = player.Character
if character then
print(player.Name, character:GetFullName())
end
end
Файл настроек
local HttpService = game:GetService("HttpService")
writefile("my-script/settings.json", HttpService:JSONEncode({enabled = true}))
local settings = HttpService:JSONDecode(readfile("my-script/settings.json"))
print(settings.enabled)Этот пример пишет в локальный workspace клиента. Он не синхронизируется с профилем на сайте.
Ограничения и совместимость
- Исходник до 128 КБ, память VM до 8 МБ, объекты Drawing — до 256 на запуск. Время выполнения ограничено; слишком долгий вызов остановится с ошибкой.
- HTTP работает только по HTTPS, запрос и ответ — до 128 КБ. При ошибке функции возвращают
nil, сообщение. Третий аргументHttpPost— MIME-тип; произвольные заголовки пока не поддерживаются. - Файлы ограничены каталогом
workspaceи расширениями.txt,.lua,.luau,.json,.cfg,.dat,.ini. Запись за вызов — до 128 КБ, чтение — до 1 МБ. - Для записи доступны
BasePart.Position,Size,Velocity,AssemblyLinearVelocity,CanCollide,TransparencyиHumanoid.WalkSpeed,JumpPower,JumpHeight. Остальные перечисленные свойства читаются. - API не включает
getgc/setgc, декомпиляцию,requireигровых модулей,CFrameи события Roblox. Скрипт Roblox-экзекьютора не обязательно заработает без изменений.
memory_read и memory_write работают с процессом Roblox и принимают типы int, byte, float, double, uintptr_t, string. Неудачное чтение возвращает nil, неудачная запись вызывает ошибку. Строки памяти ограничены 1024 байтами чтения и 1023 байтами записи. WaitForChild ждёт не больше 30 секунд.
Luau VM может обращаться к сети, файлам, вводу и памяти Roblox. Проверяйте исходник перед запуском чужого кода. Скрипты из облачной библиотеки запускаются в другом, ограниченном режиме.