Roblox · Усиления
Минуту все монеты — с карты, из сундуков, за цели — приходят в двойном размере. На счётчике горит «×2».
Синим — что нужно создать.
StarterPack — или копии на карте для подбора └─ DoubleCoins (Tool) ├─ Handle (Part) — модель; CanCollide выкл. │ └─ Use (Sound) ├─ Configuration (Configuration) │ ├─ Duration (NumberValue) — секунд действия, 60 │ ├─ Multiplier (NumberValue) — во сколько раз больше монет, 2 │ ├─ Uses (NumberValue) — сколько раз можно использовать, 1 │ └─ Cooldown (NumberValue) — секунд между использованиями, 1 └─ DoubleCoinsServer (Script) ServerScriptService └─ Coins (ModuleScript) — умножает награды на CoinMultiplier
Где: StarterPack → DoubleCoins · Script
Зачем: Включает множитель монет на минуту.
-- двойные монеты (Tool)
local tool = script.Parent
-- модель
local handle = tool:WaitForChild("Handle")
-- настройки
local config = tool:WaitForChild("Configuration")
-- звук использования
local useSound = handle:WaitForChild("Use")
-- все игроки
local Players = game:GetService("Players")
-- время прошлого использования
local lastUse = 0
-- сколько раз ещё можно
local uses = config.Uses.Value
-- подсказка на панели предметов
tool.ToolTip = "Двойные монеты: " .. uses
-- клик, пока предмет в руках (событие приходит и на сервер)
tool.Activated:Connect(function()
-- кто держит
local humanoid = tool.Parent:FindFirstChildOfClass("Humanoid")
-- нет персонажа или он мёртв
if not humanoid or humanoid.Health <= 0 then return end
-- его персонаж
local character = humanoid.Parent
-- и игрок
local player = Players:GetPlayerFromCharacter(character)
-- держит не игрок
if not player then return end
-- откат ещё не прошёл
if os.clock() - lastUse < config.Cooldown.Value then return end
-- запоминаем
lastUse = os.clock()
-- звук
useSound:Play()
-- до какого момента
local untilTime = os.clock() + config.Duration.Value
-- запоминаем (повторный приём — с этой минуты)
player:SetAttribute("DoubleUntil", untilTime)
-- модуль Coins умножает все награды
player:SetAttribute("CoinMultiplier", config.Multiplier.Value)
-- когда время выйдет
task.delay(config.Duration.Value + 0.05, function()
-- не продлили новым приёмом
if os.clock() >= (player:GetAttribute("DoubleUntil") or 0) then
-- снова обычные монеты
player:SetAttribute("CoinMultiplier", nil)
-- конец проверки
end
-- конец отложенной функции
end)
-- минус одно использование
uses -= 1
-- обновляем подсказку
tool.ToolTip = "Двойные монеты: " .. uses
-- использования кончились
if uses <= 0 then
-- убираем из рук; здесь скрипт продолжит работать
tool.Parent = game:GetService("ServerScriptService")
-- ждём конца эффекта — иначе его таймер остановится
task.wait(config.Duration.Value + 1)
-- теперь удаляем совсем
tool:Destroy()
-- конец проверки
end
-- конец обработчика
end)Запусти Play (или Run) и убедись: