Завдання 11: Leaderstats та Стіна-пропуск 🪙🚪

На уроці ми навчилися створювати лідерборд (рахунок) та додавати бали при збиранні монет. Тепер використаємо ці бали з користю! Твоє завдання — створити стіну на фініші лабіринту, яка відкриється тільки тоді, коли гравець збере певну кількість монет.

🛠️ План роботи: Фінішні двері

Що потрібно зробити:

  • Перешкода: Створи великий Part (стіну), який повністю перекриває вихід із твого лабіринту або перехід на наступний рівень. Не забудь увімкнути Anchored.
  • Екран з інформацією: Додай всередину стіни скрипт, назви його DisplayScript, і встав туди шаблонний код, наведений нижче. Цей скрипт автоматично створить текст на стіні і буде показувати, скільки монет залишилося зібрати.
  • 💡 Шаблон коду:
    local wall = script.Parent
    local requiredCoins = 20 -- Скільки монет потрібно зібрати
    
    -- 1. Створення екрана та тексту на стіні
    local surfaceGui = Instance.new("SurfaceGui")
    surfaceGui.Face = Enum.NormalId.Front -- Якщо текст з іншого боку, зміни Front на Back, Left або Right
    surfaceGui.Parent = wall
    
    local textLabel = Instance.new("TextLabel")
    textLabel.Size = UDim2.new(1, 0, 1, 0)
    textLabel.BackgroundTransparency = 1
    textLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
    textLabel.TextScaled = true
    textLabel.Font = Enum.Font.FredokaOne
    textLabel.Text = "Збери " .. requiredCoins .. " монет!"
    textLabel.Parent = surfaceGui
    
    -- 2. Оновлення тексту при дотику гравця
    wall.Touched:Connect(function(hit)
        local character = hit.Parent
        local player = game.Players:FindFirstChild(character.Name)
        
        if player then
            -- УВАГА: Якщо твоя змінна лідерборду називається не "score", зміни слово нижче!
            local currentCoins = player.leaderstats.score.Value 
            
            if currentCoins < requiredCoins then
                local leftToCollect = requiredCoins - currentCoins
                textLabel.Text = "Залишилося: " .. leftToCollect
            end
        end
    end)
  • Скрипт перепустки: Створи другий (новий) скрипт у цій самій стіні. Тобі потрібно самостійно написати логіку: при дотику перевірити, чи має гравець 20 монет (або іншу кількість, яку ти вибереш). Якщо монет достатньо — стіна має бути знищена.

    💡 Підказки для самостійного скрипта

    Відкривай кроки по черзі, якщо не знаєш, що писати далі.

    1. Початок скрипта

    Тобі потрібна подія дотику. Створи змінну для стіни (script.Parent) та напиши конструкцію Touched:Connect(function(otherPart). Далі знайди гравця через otherPart.Parent та game.Players:FindFirstChild(...), як ми робили на уроці.

    2. Доступ до рахунку (Leaderstats)

    Коли ти знайшов гравця та перевірив його наявність (if player then), звернися до його монет. Шлях такий: player.leaderstats.ТВОЯ_НАЗВА_СТАТИСТИКИ.Value. Можеш зберегти це в окрему змінну.

    3. Перевірка умови

    Використай розгалуження. Напиши: ЯКЩО монети гравця більше або дорівнює (>=) 20, ТОДІ...

    4. Відкриття проходу

    Всередині блоку if напиши команду, яка знищить стіну (команда :Destroy() для твоєї змінної стіни). Готово!

Відеоінструкція


🎮 Перевір себе: Термінологія Leaderstats

У програмуванні одна неправильна літера може зламати весь код! Збери з літер правильні назви команд та властивостей, які ми використовуємо для створення рахунку.

📲
Як здати завдання:
1️⃣ Зроби відео, де ти підходиш до стіни без монет (вона пише залишок), а потім збираєш 20 монет, підходиш знову — і стіна зникає.
2️⃣ Обов'язково зроби скріншоти результату в міні-іграх.
Відправ фото у наш Telegram-чат.