← Все практические скрипты
Игровая экономика · Продвинутый · 30 мин

Магазин: купить ускорение за монеты

Покупка ускорения по E — первый шаг к игровой экономике.

Иллюстрация: Магазин: купить ускорение за монеты
🎯 Что получится

Если у игрока 5 монет, магазин списывает их и ускоряет персонажа на 10 секунд. Покупки не сохраняются.

1. Подготовьте объект

Где разместить: Script внутри Part с именем SpeedShop; внутри него ProximityPrompt

Создайте Part ShopPart, добавьте ProximityPrompt и обычный Script. Вставьте код в Script. В игре должна быть одна система leaderstats.Coins, например из практики «Сохранение монет».
Игрок подходит к магазину, нажимает E и платит 5 монет за ускорение на 10 секунд. Повторная покупка во время действия бонуса запрещена.
Если другие скрипты управляют скоростью, рекомендуется единый контроллер эффектов. Этот пример не перезаписывает скорость, изменённую другой механикой после покупки.

2. Вставьте код

Script
-- Script внутри ShopPart с ProximityPrompt
local shop = script.Parent
local prompt = shop:WaitForChild("ProximityPrompt")
local PRICE = 5
local BOOST_SPEED = 36
local DURATION = 10
local active = {}

prompt.Triggered:Connect(function(player)
    local character = player.Character
    local humanoid = character and character:FindFirstChildOfClass("Humanoid")
    local stats = player:FindFirstChild("leaderstats")
    local coins = stats and stats:FindFirstChild("Coins")
    if not humanoid or humanoid.Health <= 0 or not coins or coins.Value < PRICE or active[player] then return end
    active[player] = true
    coins.Value -= PRICE
    local previous = humanoid.WalkSpeed
    humanoid.WalkSpeed = BOOST_SPEED
    task.delay(DURATION, function()
        -- Не стираем скорость, установленную другой игровой механикой.
        if humanoid.Parent and humanoid.Health > 0 and math.abs(humanoid.WalkSpeed - BOOST_SPEED) < 0.01 then
            humanoid.WalkSpeed = previous
        end
        active[player] = nil
    end)
end)
game:GetService("Players").PlayerRemoving:Connect(function(player)
    active[player] = nil
end)

3. Проверьте в игре

Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.

Ваш прогресс

Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.

Если объединяете несколько скриптов

Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.

⭐ Три шага к собственной игре
1. Повторите и измените

Измените PRICE на 3.

2. Улучшите

Измените BOOST_SPEED на 40.

3. Придумайте своё

Разместите две торговые точки и придумайте разные цены на ускорение.

4. Проверьте себя

Что нужно проверить перед покупкой ускорения?

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

Если покупка не происходит, проверьте ProximityPrompt, наличие leaderstats.Coins и минимум 5 монет. Если скорость после бонуса не вернулась, другая механика изменила WalkSpeed — код специально не перезаписывает её значение.