Случайные усиления без конфликтов
Одна площадка случайно даёт скорость, прыжок или уменьшение на 12 секунд.
Площадка случайно выбирает один из трёх бонусов, не сбрасывая другие эффекты.
1. Подготовьте объект
Где разместить: ServerScriptService: StatsController и MysteryPadServer; Workspace: MysteryPad (Part).
ServerScriptService StatsController (ModuleScript из практики 91) MysteryPadServer (Script) Workspace MysteryPad (Part)
- Установите StatsController из практики 91.
- В Workspace создайте Anchored Part MysteryPad. Включите CanTouch.
- В ServerScriptService создайте Script MysteryPadServer и вставьте код.
- Запустите Play, наступите на платформу несколько раз с паузами. Выпадет случайное усиление.
- Для изменения размера требуется R15. На R6 бонус уменьшения не изменит масштаб.
- Проверьте, что бонусы SpeedPad и MysteryPad действуют вместе и истекают независимо.
- Для двух игроков эффекты должны выпадать независимо.
2. Вставьте код
-- Script: ServerScriptService/MysteryPadServer
local Players = game:GetService("Players")
local Controller = require(script.Parent:WaitForChild("StatsController"))
local pad = workspace:WaitForChild("MysteryPad")
local rng = Random.new()
local lastTouch = {}
local choices = {
{name = "Скорость", effect = {speed = 1.6}},
{name = "Прыжок", effect = {jump = 1.7}},
{name = "Уменьшение", effect = {size = 0.7}},
}
pad.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 now - (lastTouch[player] or -100) < 3 then return end
lastTouch[player] = now
local choice = choices[rng:NextInteger(1, #choices)]
if Controller.Apply(player, "MysteryPad", choice.effect, 12) then
print(player.Name .. ": бонус " .. choice.name)
end
end)
Players.PlayerRemoving:Connect(function(player)
lastTouch[player] = nil
end)3. Проверьте в игре
Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.
Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.
Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.
Измените длительность бонуса на 20 секунд.
Добавьте четвёртый бонус «Замедление».
Создайте лабиринт с тремя случайными площадками и контрольной точкой.
4. Проверьте себя
Почему у случайного бонуса отдельное имя эффекта MysteryPad?
Проверьте точные имена MysteryPad и StatsController. Если размер не меняется, используйте R15. Для многократного касания есть задержка 3 секунды. Вывод результата — в Output сервера.