Нейросеть для Lua и Roblox: как писать скрипты на Luau с ИИ

Модель без подсказки может спутать Lua с Luau и предложить устаревший API Roblox. Показываем, как формулировать задачу, проверять код и подключить агента к проекту.

6 мин · · разработка · IDE

Нейросеть для программирования на Lua удобна тем, что скрипты обычно короткие и проверяются быстро. Но у Roblox есть свой диалект, Luau, свои сервисы и разделение на сервер и клиент, и модель, которой об этом не сказали, пишет код «вообще на Lua»: он выглядит правдоподобно и не работает в Studio. Ниже: как ставить задачу, на что обращать внимание при проверке, как подключить агента к проекту и сколько это стоит.

Lua и Luau: что нужно сообщить модели

Roblox использует Luau, язык на основе Lua 5.1 с собственными расширениями: необязательные аннотации типов, цикл for ... in по таблице без вызова pairs, библиотека task. Поэтому начните каждую сессию с одной вводной фразы: «Пишем на Luau для Roblox Studio, не на стандартном Lua». Без неё модель может предложить функции, которых в Roblox нет (например, чтение файлов через io), или стиль из других Lua-окружений.

Вторая вещь, которую стоит сообщать: где живёт скрипт. В Roblox это принципиально:

  • Script выполняется на сервере (обычно в ServerScriptService);
  • LocalScript выполняется на клиенте игрока;
  • ModuleScript — общий модуль, который подключается через require.

Клиенту доверять нельзя, поэтому проверки и начисление очков должны быть на сервере, а клиент лишь отправляет запросы через RemoteEvent. Если не указать тип скрипта, модель легко положит награду за действие в LocalScript, и игрок сможет её подделать.

Шаблон задачи

Рабочая формулировка включает пять пунктов: что нужно, где лежит скрипт, какие объекты уже есть в иерархии, ограничения и формат ответа.

bash
Пиши на Luau для Roblox Studio. Нужен серверный Script в ServerScriptService.
Задача: при заходе игрока создать в нём папку leaderstats со счётчиком Coins.
Ограничения: используй game:GetService, task.wait вместо wait, не используй
устаревшие функции. Верни один блок кода и список объектов, которые я должен
создать в Explorer вручную.

Последняя строка важна: модель не видит ваш Explorer, и если скрипт ссылается на workspace.Door, пока такого объекта нет, вы получите ошибку в окне Output. Пусть она явно перечисляет всё, что должно существовать.

Пример результата, который стоит ожидать:

bash
local Players = game:GetService("Players")

local function onPlayerAdded(player: Player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Value = 0
	coins.Parent = stats

	stats.Parent = player
end

Players.PlayerAdded:Connect(onPlayerAdded)

for _, player in Players:GetPlayers() do
	task.spawn(onPlayerAdded, player)
end

Цикл в конце нужен для игроков, которые уже вошли до запуска скрипта; если модель его пропустила, попросите добавить.

Что проверять в коде от модели

  1. Устаревший API. Функции wait() и spawn() заменены на task.wait() и task.spawn(); о современных вариантах напомните в промпте.
  2. Доверие клиенту. Всё, что влияет на экономику или данные игрока, должно проверяться в серверном обработчике OnServerEvent.
  3. Сохранение данных. Вызовы DataStoreService могут завершаться ошибкой, поэтому их оборачивают в pcall; если модель вызывает их без защиты, попросите исправить.
  4. Утечки соединений. Подписки :Connect на объекты, которые удаляются, нужно отключать.
  5. Несуществующие свойства и методы. Модели иногда придумывают свойства. Сверьтесь с документацией Roblox (Creator Hub) для каждого незнакомого API.

Проверка в Studio: запустите игру, откройте окно Output и посмотрите на ошибки. Для проверки логики на сервере и клиенте удобно запускать тест с несколькими игроками. Если у вас есть тесты в проекте, дайте агенту команду их запускать; для линтинга и форматирования Luau существуют сторонние инструменты вроде Selene и StyLua, но их подключение и флаги сверяйте по их документации.

Как подключить агента к проекту Roblox

Скрипты в Studio живут внутри файла места, а агенты вроде Cursor или Claude Code работают с файлами на диске. Мост между ними — синхронизация: популярный вариант — инструмент Rojo, который хранит скрипты в виде файлов .lua или .luau и синхронизирует их со Studio. Настройка Rojo выходит за рамки статьи, смотрите его документацию. Если не хотите ничего настраивать, работайте в чате: копируйте скрипт в запрос и вставляйте ответ в Studio.

Для Cursor с собственным ключом: в настройках моделей укажите ключ fetch_... и адрес https://api.zukko.pro/v1 в поле переопределения base URL для OpenAI, затем добавьте модель. Имя модели берите из таблицы в документации Zukko по Cursor: Cursor не даёт завести модель с именем, которое уже знает, поэтому для части моделей там есть отдельные имена (например, cursor-sonnet-5), а у остальных, вроде gpt-6.1-sol, работает обычное имя. В официальной справке Cursor о своих ключах эта настройка сейчас не описана, а доступность своих ключей зависит от тарифа, поэтому сверяйтесь с актуальной версией Cursor. Типичные проблемы с пропавшими моделями разобраны в статье Cursor не видит модели. Правила проекта удобно держать в файле правил Cursor, туда же стоит записать «Luau, не Lua; task.wait; серверная проверка».

Часто спрашивают, можно ли подключить ключ Gemini API к Roblox Studio. У Roblox Studio есть собственный встроенный ассистент; поддерживает ли он подключение стороннего ключа и какого именно, мы не знаем, актуальное смотрите в документации Roblox. Надёжный путь — внешний редактор или чат, где ключ и адрес задаёте вы.

Какую модель брать и сколько это стоит

Качество кода на Luau мы не сравниваем: выбирайте по цене и контексту и проверяйте на своих скриптах. Для таких задач запрос небольшой. Допустим, 8 000 входных токенов (задача плюс соседние скрипты) и 1 500 выходных. Цены Zukko на 18 октября 2026 за 1M токенов, без кэша:

МодельВход / выход, $ФормулаОдин запрос, $
deepseek-v4.1-flash0.013 / 0.0380,008 × 0,013 + 0,0015 × 0,0380.00016
gpt-6.1-sol0.27 / 1.320,008 × 0,27 + 0,0015 × 1,320.00414
claude-sonnet-5-50.4 / 20,008 × 0,4 + 0,0015 × 20.0062

Сто таких запросов за вечер на claude-sonnet-5-5 обойдутся в 100 × 0,0062 = $0.62. Агент, который сам ходит по проекту, расходует больше, потому что отправляет накопленную историю на каждом шаге; как это считается, написано в статье про стоимость агентной сессии. Чтобы не удивиться счёту, поставьте на ключ дневной лимит, как в статье про лимит на ключ. Актуальные цены доступны через GET https://api.zukko.pro/v1/models.

Частые вопросы

Какая нейросеть лучше для Lua?

Ответа «лучше всех» нет, и мы его не даём. Сравните две-три модели на своих типовых задачах: возьмите три-пять скриптов, которые вам реально нужны, и посмотрите, сколько правок требуется каждому результату. Ориентируйтесь на цену и индекс силы из каталога.

Нужен ли Cursor для Roblox?

Нет. Он удобен, если вы синхронизируете проект с диском через Rojo или аналог. Без этого достаточно чата в браузере или API: код вы вставляете в Studio вручную.

Можно ли доверять скрипту, который написала модель?

Только после проверки в Studio. Особенно проверяйте серверную сторону (RemoteEvent), работу с DataStore и обращения к несуществующим объектам.

Как оплатить API из России?

Доступ из России идёт через шлюз, оплата СБП (платёжная страница добавляет комиссию 8,5% сверху), картой MasterCard или криптой.

Чтобы попробовать, создайте ключ в кабинете и подключите его в чат или редактор по примеру выше.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.

Нейросеть для программирования на Lua и Roblox · Zukko