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

Случайный приз

Понять контролируемую случайность

Случайный приз
Иллюстрация к теме занятия

Цель урока

Разыграй один из трёх призов, не доверяя выбор клиенту.

Подготовка в Explorer

Part PrizeStand → ProximityPrompt → Script; призы в виде сообщений Output

Пошаговая практика

  1. Создай объекты, соблюдая имена из схемы подготовки.
  2. Добавь обычный Script в указанный объект и вставь код.
  3. Нажми Play, открой Output и проверь поведение в одиночной игре.
  4. Проверь повторное взаимодействие и исправь ошибки в именах или структуре.

Пример Luau

local stand = script.Parent
local prompt = stand:WaitForChild("ProximityPrompt")
local random = Random.new()
local busyByPlayer = {}
local prizes = {"Золотая звезда", "Синий кристалл", "Серебряный ключ"}

prompt.Triggered:Connect(function(player)
    if busyByPlayer[player] then return end
    busyByPlayer[player] = true
    local index = random:NextInteger(1, #prizes)
    print(player.Name .. " получил приз: " .. prizes[index])
    task.delay(3, function()
        busyByPlayer[player] = nil
    end)
end)

Что должно получиться

При взаимодействии сервер выбирает одну из трёх строк и выводит результат в Output. Настоящая выдача предмета — отдельная задача.

Если не работает

Output доступен при тестировании в Studio, но сам по себе не показывает награду игроку на экране.

Задание со звёздочкой

Создай ScreenGui и RemoteEvent для сообщения о призе; сам выбор оставь на сервере.

Покажи преподавателю

Продемонстрируй механику в Play, объясни, какая часть кода запускает действие, и покажи Output без ошибок.

Материал перед публикацией нуждается в проверке в Roblox Studio и учебных скриншотах.

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

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

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

Проверь себя

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

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

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

1. Как выбрать случайную награду из списка prizeList?
2. Где нужно определять фактическую награду в многопользовательской игре?
3. Почему кнопку получения приза нужно ограничивать по частоте?
4. Что произойдёт, если обратиться к элементу списка за пределами его длины?
5. Как убедиться, что все призы могут выпадать?