Roblox · Обби · урок 5
Длинную полосу никто не пройдёт с начала после каждой ошибки. Чекпоинты запоминают этап, а таблица по Tab показывает, кто дальше всех.
Синим — что добавляем на этом уроке.
Workspace └─ Checkpoints (Folder) ├─ 0 (Part) — старт └─ 1, 2, 3… (Part) — чекпоинты по порядку ServerScriptService └─ Checkpoints (Script)
Где: ServerScriptService · Script
Зачем: Этапы игроков и появление на чекпоинте.
-- сервис игроков
local Players = game:GetService("Players")
-- папка с чекпоинтами 0, 1, 2…
local checkpoints = workspace:WaitForChild("Checkpoints")
-- игрок зашёл
Players.PlayerAdded:Connect(function(player)
-- таблица по Tab
local leaderstats = Instance.new("Folder")
-- имя строго такое
leaderstats.Name = "leaderstats"
-- в игрока
leaderstats.Parent = player
-- номер этапа
local stage = Instance.new("IntValue")
-- столбец «Stage»
stage.Name = "Stage"
-- в таблицу
stage.Parent = leaderstats
-- персонаж появился (и после каждой смерти)
player.CharacterAdded:Connect(function(character)
-- Humanoid персонажа
local humanoid = character:WaitForChild("Humanoid")
-- ждём, пока персонаж соберётся
character:WaitForChild("HumanoidRootPart")
-- чекпоинт текущего этапа
local point = checkpoints:FindFirstChild(tostring(stage.Value))
-- нашёлся
if point then
-- даём Roblox закончить появление на SpawnLocation
task.wait(0.1)
-- ставим над чекпоинтом
character:PivotTo(point.CFrame + Vector3.new(0, 3, 0))
-- конец проверки
end
-- персонаж чего-то коснулся
humanoid.Touched:Connect(function(hit)
-- это следующий по номеру чекпоинт
if hit.Parent == checkpoints and tonumber(hit.Name) == stage.Value + 1 then
-- этап пройден
stage.Value += 1
-- конец проверки
end
-- конец функции
end)
-- конец функции
end)
-- конец функции
end)Запусти Play (или Run) и убедись: