Цель урока
Выдавать достижение за первый финиш только после серверной проверки.
Подготовка
Workspace → Part FinishPad (Anchored=true). ServerScriptService → Script FinishAchievement. Для реальной игры сначала подключи проверку полного маршрута.
Пошаговая работа
- Создай FinishPad и Script на сервере.
- Коснись площадки дважды.
- Проверь атрибут FirstFinish у игрока.
Код Luau
В примерах с двумя скриптами помести части кода в указанные разные объекты.
local Players = game:GetService("Players")
local finish = workspace:WaitForChild("FinishPad")
finish.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
local player = character and Players:GetPlayerFromCharacter(character)
if not player or player:GetAttribute("FirstFinish") then return end
-- Для настоящей трассы здесь нужна проверка пройденных точек.
player:SetAttribute("FirstFinish", true)
print(player.Name .. " получил учебное достижение")
end)Проверяем результат
FirstFinish становится true только один раз за сессию.
Типичная ошибка
Это учебный пример: без проверки этапов игрок может добраться до FinishPad обходным путём.
Дополнительное задание
После урока 71 используй его проверку маршрута перед выдачей достижения.
Перед публикацией: протестируй код в Roblox Studio с двумя игроками и добавь собственные скриншоты редактора.
