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

Раунды с отсчётом

Построить короткую игровую сессию

Раунды с отсчётом
Иллюстрация к теме занятия

Цель урока

Создать один серверный цикл раундов и отображать время у всех игроков.

Подготовка

Выключи скрипт RoundStates урока 65 перед этим упражнением. ServerScriptService → Script RoundManager. StarterGui → ScreenGui → TextLabel RoundLabel → LocalScript.

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

  1. Запусти один RoundManager, проверь атрибуты игры.
  2. Добавь LocalScript в RoundLabel; следи за обновлением времени.
  3. Проверь двух игроков: время одинаковое для обоих.

Код Luau

В примерах с двумя скриптами помести части кода в указанные разные объекты.

-- Script RoundManager в ServerScriptService
local Players = game:GetService("Players")
while true do
    workspace:SetAttribute("RoundState", "Waiting")
    repeat task.wait(1) until #Players:GetPlayers() >= 1
    workspace:SetAttribute("RoundState", "Running")
    for seconds = 60, 0, -1 do
        workspace:SetAttribute("RoundSeconds", seconds)
        task.wait(1)
    end
    workspace:SetAttribute("RoundState", "Finished")
    task.wait(5)
end

-- Отдельный LocalScript в RoundLabel
local label = script.Parent
local function refresh()
    local state = workspace:GetAttribute("RoundState") or "Waiting"
    local timeLeft = workspace:GetAttribute("RoundSeconds") or 0
    label.Text = state .. ": " .. timeLeft
end
workspace:GetAttributeChangedSignal("RoundState"):Connect(refresh)
workspace:GetAttributeChangedSignal("RoundSeconds"):Connect(refresh)
refresh()

Проверяем результат

Оба игрока видят одно серверное время; после нуля наступает Finished.

Типичная ошибка

Убедись, что цикл RoundManager только один. Два цикла могут перезаписывать время.

Дополнительное задание

Измени таймер на 30 секунд и добавь цветное предупреждение при последних 10 секундах.

Перед публикацией: протестируй код в Roblox Studio с двумя игроками и добавь собственные скриншоты редактора.

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

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

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

Проверь себя

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

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

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

1. Что выведет print(3 - 1) в обратном отсчёте?
2. Где лучше хранить единый отсчёт раунда для всех игроков?
3. Как часто обновляется счётчик в цикле с task.wait(1)?
4. Что должно произойти, когда осталось 0 секунд?
5. Почему нельзя полагаться на таймер клиента при определении победителя?