0% found this document useful (0 votes)
48 views

Basic Speed GUI

Uploaded by

aleksandrsozo88
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views

Basic Speed GUI

Uploaded by

aleksandrsozo88
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

-- Variables to define the player and UI setup

local player = game.Players.LocalPlayer


local mouse = player:GetMouse()

-- Utility function for smooth tween animations


local function createTween(object, tweenInfo, goal)
local tweenService = game:GetService("TweenService")
local tween = tweenService:Create(object, tweenInfo, goal)
tween:Play()
return tween
end

-- Function to create the UI


local function createUI()
-- Create the ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player:WaitForChild("PlayerGui")
screenGui.ResetOnSpawn = false -- Keep UI across respawns

-- Create the main UI frame with a grey background


local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 350, 0, 300) -- Reduced size for a more compact
UI
mainFrame.Position = UDim2.new(0.5, -175, 0.8, -150)
mainFrame.BackgroundColor3 = Color3.fromRGB(100, 100, 100) -- Grey background
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

-- Add rounded corners to the frame


local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 15) -- Slightly smaller corner radius
UICorner.Parent = mainFrame

-- Fade-in effect for the entire frame


mainFrame.BackgroundTransparency = 1
createTween(mainFrame, TweenInfo.new(1, Enum.EasingStyle.Quart,
Enum.EasingDirection.Out), {BackgroundTransparency = 0})

-- Add a title label with a glowing effect


local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, 0, 0, 35)
titleLabel.Position = UDim2.new(0, 0, 0, 10)
titleLabel.Text = "Speed Control"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextSize = 24
titleLabel.TextStrokeTransparency = 0.6
titleLabel.TextXAlignment = Enum.TextXAlignment.Center
titleLabel.BackgroundTransparency = 1
titleLabel.Font = Enum.Font.GothamBold
titleLabel.Parent = mainFrame

-- Create the Speed Label


local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(1, 0, 0, 25)
speedLabel.Position = UDim2.new(0, 0, 0, 50)
speedLabel.Text = "Current Speed: 16"
speedLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
speedLabel.TextSize = 20
speedLabel.TextStrokeTransparency = 0.8
speedLabel.TextXAlignment = Enum.TextXAlignment.Center
speedLabel.BackgroundTransparency = 1
speedLabel.Font = Enum.Font.GothamBold
speedLabel.Parent = mainFrame

-- Create an input box for the player to type the desired speed
local speedInput = Instance.new("TextBox")
speedInput.Size = UDim2.new(0, 200, 0, 40)
speedInput.Position = UDim2.new(0.5, -100, 0, 100)
speedInput.PlaceholderText = "Enter Speed (10-3000)"
speedInput.TextColor3 = Color3.fromRGB(255, 255, 255)
speedInput.BackgroundColor3 = Color3.fromRGB(50, 50, 170)
speedInput.TextSize = 18
speedInput.Font = Enum.Font.GothamBold
speedInput.Parent = mainFrame

-- Add rounded corners to the TextBox


local textBoxCorner = Instance.new("UICorner")
textBoxCorner.CornerRadius = UDim.new(0, 12)
textBoxCorner.Parent = speedInput

-- Function to update the player's speed


local function updateSpeed(newSpeed)
local humanoid = player.Character and
player.Character:FindFirstChild("Humanoid")
if humanoid then
newSpeed = math.clamp(newSpeed, 10, 3000)
humanoid.WalkSpeed = newSpeed
createTween(speedLabel, TweenInfo.new(0.5), {TextTransparency = 1})
wait(0.5)
speedLabel.Text = "Current Speed: " .. math.floor(newSpeed)
createTween(speedLabel, TweenInfo.new(0.5), {TextTransparency = 0})
end
end

-- When the player presses Enter on the speed input box


speedInput.FocusLost:Connect(function(enterPressed)
if enterPressed then
local inputText = tonumber(speedInput.Text)
if inputText and inputText >= 10 and inputText <= 3000 then
updateSpeed(inputText)
else
speedInput.Text = ""
speedLabel.Text = "Invalid Speed! (10-3000)"
end
end
end)

-- Function to create buttons with advanced interactivity


local function createButton(position, text, bgColor, textColor, callback)
local button = Instance.new("TextButton")
button.Size = UDim2.new(0, 120, 0, 40)
button.Position = position
button.Text = text
button.TextColor3 = textColor
button.BackgroundColor3 = bgColor
button.TextSize = 16
button.TextStrokeTransparency = 0.6
button.Font = Enum.Font.GothamBold
button.Parent = mainFrame

-- Add rounded corners to the button


local buttonUICorner = Instance.new("UICorner")
buttonUICorner.CornerRadius = UDim.new(0, 12)
buttonUICorner.Parent = button

-- Hover effects with animation


button.MouseEnter:Connect(function()
createTween(button, TweenInfo.new(0.2, Enum.EasingStyle.Back,
Enum.EasingDirection.Out), {Size = UDim2.new(0, 140, 0, 45), BackgroundColor3 =
button.BackgroundColor3:Lerp(Color3.fromRGB(255, 255, 255), 0.5)})
end)

button.MouseLeave:Connect(function()
createTween(button, TweenInfo.new(0.2, Enum.EasingStyle.Back,
Enum.EasingDirection.Out), {Size = UDim2.new(0, 120, 0, 40), BackgroundColor3 =
bgColor})
end)

button.MouseButton1Click:Connect(callback)
return button
end

-- Create buttons to increase and decrease speed


local increaseButton = createButton(UDim2.new(0.5, -130, 0, 160), "Increase
Speed", Color3.fromRGB(0, 170, 0), Color3.fromRGB(255, 255, 255), function()
updateSpeedByAmount(10) end)
local decreaseButton = createButton(UDim2.new(0.5, 10, 0, 160), "Decrease
Speed", Color3.fromRGB(170, 0, 0), Color3.fromRGB(255, 255, 255), function()
updateSpeedByAmount(-10) end)

-- Minimize/Restore Button with smooth transition


local minimizeButton = Instance.new("TextButton")
minimizeButton.Size = UDim2.new(0, 30, 0, 30)
minimizeButton.Position = UDim2.new(1, -40, 0, 50)
minimizeButton.Text = "_"
minimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
minimizeButton.BackgroundTransparency = 1
minimizeButton.TextSize = 20
minimizeButton.Font = Enum.Font.GothamBold
minimizeButton.Parent = mainFrame

local isMinimized = false


minimizeButton.MouseButton1Click:Connect(function()
isMinimized = not isMinimized
if isMinimized then
createTween(mainFrame, TweenInfo.new(0.3), {Size = UDim2.new(0, 350, 0,
40)})
speedLabel.Visible = false
speedInput.Visible = false
increaseButton.Visible = false
decreaseButton.Visible = false
else
createTween(mainFrame, TweenInfo.new(0.3), {Size = UDim2.new(0, 350, 0,
300)})
speedLabel.Visible = true
speedInput.Visible = true
increaseButton.Visible = true
decreaseButton.Visible = true
end
end)

-- Close button (X button) to close the UI with animation


local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 30, 0, 30)
closeButton.Position = UDim2.new(1, -40, 0, 10)
closeButton.Text = "X"
closeButton.TextColor3 = Color3.fromRGB(255, 0, 0)
closeButton.BackgroundTransparency = 1
closeButton.TextSize = 20
closeButton.Font = Enum.Font.GothamBold
closeButton.Parent = mainFrame

closeButton.MouseButton1Click:Connect(function()
createTween(mainFrame, TweenInfo.new(0.2, Enum.EasingStyle.Back,
Enum.EasingDirection.Out), {Size = UDim2.new(0, 350, 0, 0)})
wait(0.2)
screenGui:Destroy() -- Close the UI with animation
end)

-- Add draggable functionality with smooth dragging


local dragging = false
local dragStart = nil
local startPos = nil

mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
end
end)

mainFrame.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement
then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset +
delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)

mainFrame.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
end

-- Create the UI when the player joins


createUI()

You might also like