Кирпичи фан-сообщество Roblox

ГлавнаяRoblox Studio → Три полезных скрипта на Lua для новичка

Окно редактора скриптов над изометрической площадкой

Три полезных скрипта на Lua для новичка

Roblox Studio Luau 5 минут код

Скрипты в Roblox пишут на Luau — это Lua с типами и оптимизациями от платформы. Ниже три коротких примера, которые закрывают половину задач первого плейса: смертельное препятствие, счёт в таблице лидеров и телепорт между точками. Их можно скопировать целиком и подставить свои значения.

Куда класть скрипты

  • Script в ServerScriptService — код работает на сервере, видит всех игроков, подходит для правил игры и начисления очков.
  • Script внутри детали в Workspace — код привязан к конкретному объекту: кнопке, ловушке, платформе.
  • LocalScript в StarterPlayerScripts или StarterGui — выполняется на устройстве игрока: интерфейс, камера, управление.

Перепутанное место — причина большинства «скрипт не работает». Серверный код в StarterGui не запустится, а LocalScript внутри детали в Workspace — тоже нет.

1. Смертельное препятствие

Классический килбрик: касание детали обнуляет здоровье. Положите Script внутрь детали.

local part = script.Parent

part.Touched:Connect(function(hit)
    local humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
        humanoid.Health = 0
    end
end)

FindFirstChildWhichIsA("Humanoid") нужен, чтобы скрипт срабатывал именно на персонажа, а не на любую упавшую деталь.

2. Счётчик в таблице лидеров

Папка с именем leaderstats внутри игрока автоматически показывается в списке справа. Скрипт кладут в ServerScriptService.

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
    local stats = Instance.new("Folder")
    stats.Name = "leaderstats"
    stats.Parent = player

    local coins = Instance.new("IntValue")
    coins.Name = "Монеты"
    coins.Value = 0
    coins.Parent = stats
end)

Чтобы начислить монеты, достаточно найти это значение и изменить его: player.leaderstats["Монеты"].Value += 10.

Значение в leaderstats живёт только до выхода игрока с сервера. Чтобы прогресс сохранялся между сессиями, понадобится DataStoreService — это следующая тема после того, как разберётесь с этими тремя примерами.

3. Телепорт между двумя площадками

Наступил на одну платформу — оказался у другой. Скрипт кладут внутрь первой детали, вторую называют TargetPad и оставляют в Workspace.

local pad = script.Parent
local target = workspace:WaitForChild("TargetPad")
local busy = false

pad.Touched:Connect(function(hit)
    if busy then return end

    local root = hit.Parent:FindFirstChild("HumanoidRootPart")
    if not root then return end

    busy = true
    root.CFrame = target.CFrame + Vector3.new(0, 5, 0)
    task.wait(1)
    busy = false
end)

Переменная busy здесь обязательна: без неё событие Touched срабатывает десятки раз подряд, и персонажа начинает трясти между площадками. Смещение Vector3.new(0, 5, 0) поднимает игрока над платформой, чтобы он не застрял внутри неё.

Как искать ошибки

  • Окно Output (вкладка View) показывает ошибки красным и номер строки.
  • print("сюда дошло") в подозрительном месте — самый быстрый способ понять, выполняется код или нет.
  • Опечатка в имени объекта — причина ошибки чаще, чем сама логика. Имена чувствительны к регистру.