Случайный бонус: скорость, прыжок или лечение
Один объект выдаёт случайное усиление при касании.
Игрок получает случайное лечение, ускорение на 8 секунд или высокий прыжок на 8 секунд. Для каждого игрока действует собственная перезарядка.
1. Подготовьте объект
Где разместить: Обычный Script в ServerScriptService
Создайте Part BonusPart, включите Anchored и CanTouch, добавьте обычный Script и вставьте код.
При касании игрок получает один случайный бонус: лечение (+40 здоровья), скорость (+12 на 8 секунд) или высоту прыжка (+8 на 8 секунд). Повторное получение — через 10 секунд для каждого игрока.
Скрипт старается не отменять эффекты других скриптов, но при объединении нескольких бонусов лучше создать единый контроллер характеристик персонажа.
2. Вставьте код
-- Script внутри BonusPart (Part): случайный бонус
local Players = game:GetService("Players")
local part = script.Parent
local COOLDOWN = 10
local DURATION = 8
local active = {}
local rng = Random.new()
part.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
local player = character and Players:GetPlayerFromCharacter(character)
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not player or not humanoid or humanoid.Health <= 0 then return end
local now = os.clock()
if (active[player] or 0) > now then return end
active[player] = now + COOLDOWN
local choice = rng:NextInteger(1, 3)
if choice == 1 then
humanoid.Health = math.min(humanoid.MaxHealth, humanoid.Health + 40)
elseif choice == 2 then
local previous = humanoid.WalkSpeed
local boosted = previous + 12
humanoid.WalkSpeed = boosted
task.delay(DURATION, function()
if humanoid.Parent and math.abs(humanoid.WalkSpeed - boosted) < 0.01 then
humanoid.WalkSpeed = previous
end
end)
else
-- Сохраняем прежний способ прыжка и не отменяем чужие изменения.
local previousMode = humanoid.UseJumpPower
local previousHeight = humanoid.JumpHeight
local boosted = previousHeight + 8
humanoid.UseJumpPower = false
humanoid.JumpHeight = boosted
task.delay(DURATION, function()
if humanoid.Parent and not humanoid.UseJumpPower and math.abs(humanoid.JumpHeight - boosted) < 0.01 then
humanoid.JumpHeight = previousHeight
humanoid.UseJumpPower = previousMode
end
end)
end
end)
Players.PlayerRemoving:Connect(function(player) active[player] = nil end)3. Проверьте в игре
Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.
Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.
Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.
Измените COOLDOWN на 5 секунд.
Создайте три бонуса и задайте каждому свой цвет.
Постройте арену с бонусами и препятствиями: кто быстрее пройдёт дистанцию?
4. Проверьте себя
Какой бонус может случайно выпасть игроку?
Если эффект не срабатывает, проверьте CanTouch, тип Script и наличие Humanoid. Бонус выбирается случайно: иногда это лечение, которое не видно при полном здоровье. Если скорость или прыжок после бонуса не восстановились, возможно, другой скрипт изменил эти свойства.