roblox studio напиши скрипт чтобы при нажатие на к...
Created on: August 28, 2025
Answered using GPT-5 Thinking by Chat01
Created on: August 28, 2025
Answered using GPT-5 Thinking by Chat01
roblox studio напиши скрипт чтобы при нажатие на кнопку shift игрок начинал бежать. и шкалу чтобы через 5 секунд бежать больше нельзя было. заново можно бежать только через 7 секунд
ниже — готовый LocalScript с полоской выносливости.
Что делает:
Вставь LocalScript в StarterPlayer > StarterPlayerScripts (ничего больше создавать не нужно — GUI сделается скриптом).
lua-- LocalScript в StarterPlayerScripts local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") -- ====== НАСТРОЙКИ ====== local STAMINA_MAX = 5 -- сек. непрерывного бега local COOLDOWN = 7 -- сек. перезарядки после исчерпания local SPRINT_MULT = 1.6 -- во сколько раз быстрее обычного -- ====== СОСТОЯНИЕ ====== local DEFAULT_SPEED = humanoid.WalkSpeed local SPRINT_SPEED = DEFAULT_SPEED * SPRINT_MULT local stamina = STAMINA_MAX local sprinting = false local inCooldown = false local shiftDown = false -- ====== GUI (создаётся скриптом) ====== local gui = Instance.new("ScreenGui") gui.Name = "SprintGui" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local barBg = Instance.new("Frame") barBg.Name = "BarBg" barBg.AnchorPoint = Vector2.new(0.5, 1) barBg.Position = UDim2.new(0.5, 0, 1, -60) barBg.Size = UDim2.new(0, 300, 0, 20) barBg.BackgroundColor3 = Color3.fromRGB(30, 30, 35) barBg.BackgroundTransparency = 0.2 barBg.BorderSizePixel = 0 barBg.Parent = gui local barFill = Instance.new("Frame") barFill.Name = "BarFill" barFill.Size = UDim2.new(1, 0, 1, 0) -- старт: полная шкала barFill.BackgroundColor3 = Color3.fromRGB(70, 200, 120) barFill.BorderSizePixel = 0 barFill.Parent = barBg local corner1 = Instance.new("UICorner") corner1.CornerRadius = UDim.new(0, 6) corner1.Parent = barBg local corner2 = Instance.new("UICorner") corner2.CornerRadius = UDim.new(0, 6) corner2.Parent = barFill local label = Instance.new("TextLabel") label.BackgroundTransparency = 1 label.Size = UDim2.new(1, 0, 1, 0) label.Font = Enum.Font.GothamBold label.TextScaled = true label.TextColor3 = Color3.new(1, 1, 1) label.Text = "Спринт: готов" label.Parent = barBg -- ====== ЛОГИКА ====== local function setSprint(on) if on and not inCooldown and stamina > 0 then sprinting = true humanoid.WalkSpeed = SPRINT_SPEED label.Text = "Бег" else sprinting = false humanoid.WalkSpeed = DEFAULT_SPEED if inCooldown then label.Text = "Перезарядка..." else label.Text = "Спринт: готов" end end end -- Обработка нажатий Shift UIS.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.RightShift then shiftDown = true setSprint(true) end end) UIS.InputEnded:Connect(function(input, gpe) if input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.RightShift then shiftDown = false setSprint(false) end end) -- Пересоздание персонажа player.CharacterAdded:Connect(function(char) character = char humanoid = character:WaitForChild("Humanoid") DEFAULT_SPEED = humanoid.WalkSpeed SPRINT_SPEED = DEFAULT_SPEED * SPRINT_MULT setSprint(false) end) -- Основной цикл: тратим выносливость при беге, запускаем КД, обновляем шкалу RunService.Heartbeat:Connect(function(dt) -- Тратим выносливость только во время спринта if sprinting and stamina > 0 and not inCooldown then stamina = math.max(0, stamina - dt) if stamina == 0 then -- Выносливость кончилась -> стоп и КД setSprint(false) inCooldown = true label.Text = "Перезарядка..." -- анимация перезарядки: шкала заполняется за COOLDOWN секунд task.spawn(function() local t = 0 while t < COOLDOWN do local step = task.wait(0.05) t = t + step local alpha = math.clamp(t / COOLDOWN, 0, 1) barFill.Size = UDim2.new(alpha, 0, 1, 0) end stamina = STAMINA_MAX inCooldown = false barFill.Size = UDim2.new(1, 0, 1, 0) -- если Shift всё ещё зажат — снова начать бег if shiftDown then setSprint(true) else setSprint(false) end end) end end -- Обновляем шкалу в обычном режиме (когда не на КД) if not inCooldown then barFill.Size = UDim2.new(stamina / STAMINA_MAX, 0, 1, 0) end end)
SPRINT_MULT.