Урок Roblox StudioЗанятие 5 / 8

Система достижений

Награждать за проверяемое действие

Система достижений
Иллюстрация к теме занятия

Цель урока

Выдавать достижение за первый финиш только после серверной проверки.

Подготовка

Workspace → Part FinishPad (Anchored=true). ServerScriptService → Script FinishAchievement. Для реальной игры сначала подключи проверку полного маршрута.

Пошаговая работа

  1. Создай FinishPad и Script на сервере.
  2. Коснись площадки дважды.
  3. Проверь атрибут 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 с двумя игроками и добавь собственные скриншоты редактора.

Проверь свою работу

Перед тестом убедись, что ты выполнил практику самостоятельно.

Эти отметки — личная памятка, они не влияют на звёзды.

Проверь себя

Ответь на вопросы урока. Успешный тест даёт одну звезду в личном кабинете.

⭐ Проверь свои знания

5 вопросов по теме урока. За 4 правильных ответа получишь звезду. Повторные попытки разрешены.

1. Что означает достижение «Первый финиш»?
2. Что делать перед повторной выдачей достижения?
3. Кто должен подтверждать достижение за прохождение?
4. Два игрока достигли финиша. Как обрабатывать достижения?
5. Почему Touched может потребовать защиты от повторных срабатываний?