local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Utility to create instances cleanly
local function new(class, props, parent)
local obj = Instance.new(class)
if props then
for k,v in pairs(props) do
obj[k] = v
end
end
if parent then
obj.Parent = parent
end
return obj
end
-- Clear old GUI if exists
local oldGui = playerGui:FindFirstChild("GoletDreadGUI")
if oldGui then oldGui:Destroy() end
local gui = new("ScreenGui", {
Name = "GoletDreadGUI",
ResetOnSpawn = false,
DisplayOrder = 1000,
Parent = playerGui,
})
-- ====================
-- LOADING SCREEN
-- ====================
local loading = new("Frame", {
Size = UDim2.new(1,0,1,0),
BackgroundColor3 = Color3.fromRGB(20, 20, 20),
ZIndex = 9999,
Parent = gui,
})
local loadingText = new("TextLabel", {
Size = UDim2.new(0,360,0,60),
Position = UDim2.new(0.5, -180, 0.4, -30),
BackgroundTransparency = 1,
Text = "Loading G0LET_DREAD'S GUI...",
TextScaled = true,
TextColor3 = Color3.fromRGB(235, 70, 70),
Font = Enum.Font.GothamBold,
ZIndex = 10000,
Parent = loading,
})
local loadingBarBack = new("Frame", {
Size = UDim2.new(0,360,0,28),
Position = UDim2.new(0.5, -180, 0.5, 20),
BackgroundColor3 = Color3.fromRGB(40, 10, 10),
BorderSizePixel = 0,
ClipsDescendants = true,
AnchorPoint = Vector2.new(0,0),
ZIndex = 9999,
Parent = loading,
})
loadingBarBack:ClearAllChildren()
local loadingBar = new("Frame", {
Size = UDim2.new(0,0,1,0),
BackgroundColor3 = Color3.fromRGB(255, 85, 85),
BorderSizePixel = 0,
ZIndex = 10000,
Parent = loadingBarBack,
})
local loadingBarGradient = new("UIGradient", {
Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 90, 90)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 180, 180)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 90, 90)),
},
Rotation = 90,
Parent = loadingBar,
})
local percentText = new("TextLabel", {
Size = UDim2.new(0,120,0,40),
Position = UDim2.new(0.5, -60, 0.5, 60),
BackgroundTransparency = 1,
Text = "0%",
TextColor3 = Color3.fromRGB(255,255,255),
Font = Enum.Font.GothamBold,
TextScaled = true,
ZIndex = 10000,
Parent = loading,
})
-- Loading text pulsate animation
local pulseSpeed = 2
RunService.Heartbeat:Connect(function(dt)
if loadingText.Parent then
local t = tick() * pulseSpeed
local pulse = 0.5 + 0.5 * math.sin(t)
local r = 0.8 + 0.2 * pulse
loadingText.TextColor3 = Color3.new(r, 0.3, 0.3)
end
end)
-- ====================
-- MAIN GUI FRAME
-- ====================
local main = new("Frame", {
Name = "Main",
Size = UDim2.new(0, 420, 0, 440),
Position = UDim2.new(0.5, -210, 0.5, -220),
BackgroundColor3 = Color3.fromRGB(50, 10, 10),
BorderSizePixel = 0,
Visible = false,
ClipsDescendants = true,
AnchorPoint = Vector2.new(0.5, 0.5),
Parent = gui,
})
-- Shadow effect (optional for nicer UI)
local shadow = new("ImageLabel", {
Size = UDim2.new(1,20,1,20),
Position = UDim2.new(0,-10,0,-10),
Image = "rbxassetid://1316045217", -- Shadow image asset
ScaleType = Enum.ScaleType.Slice,
SliceCenter = Rect.new(10,10,118,118),
BackgroundTransparency = 1,
ZIndex = 9980,
Parent = main,
})
local title = new("TextLabel", {
Size = UDim2.new(1,0,0,40),
BackgroundColor3 = Color3.fromRGB(100, 10, 10),
Text = "G0LET_DREAD'S GUI",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextScaled = true,
ZIndex = 10001,
Parent = main,
})
local minimize = new("TextButton", {
Size = UDim2.new(0,40,0,40),
Position = UDim2.new(1, -40, 0, 0),
Text = "−",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextScaled = true,
BackgroundColor3 = Color3.fromRGB(140, 0, 0),
ZIndex = 10002,
AutoButtonColor = false,
Parent = main,
})
minimize.MouseEnter:Connect(function()
TweenService:Create(minimize, TweenInfo.new(0.2), {BackgroundColor3 =
Color3.fromRGB(180, 0, 0)}):Play()
end)
minimize.MouseLeave:Connect(function()
TweenService:Create(minimize, TweenInfo.new(0.2), {BackgroundColor3 =
Color3.fromRGB(140, 0, 0)}):Play()
end)
-- Scrolling frame to hold buttons
local buttonHolder = new("ScrollingFrame", {
Size = UDim2.new(1, -20, 1, -40),
Position = UDim2.new(0, 10, 0, 40),
BackgroundTransparency = 1,
BorderSizePixel = 0,
CanvasSize = UDim2.new(0,0,0,0),
ScrollBarThickness = 10,
VerticalScrollBarInset = Enum.ScrollBarInset.ScrollBar,
ZIndex = 10001,
Parent = main,
})
local listLayout = new("UIListLayout", {
SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 14),
Parent = buttonHolder,
})
listLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
buttonHolder.CanvasSize = UDim2.new(0,0,0,listLayout.AbsoluteContentSize.Y +
14)
end)
local function createButton(text, layoutOrder)
local btn = new("TextButton", {
Size = UDim2.new(0.9, 0, 0, 50),
AnchorPoint = Vector2.new(0.5, 0),
Position = UDim2.new(0.5, 0, 0, 0),
BackgroundColor3 = Color3.fromRGB(210, 60, 60),
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextScaled = true,
Text = text,
AutoButtonColor = false,
BorderSizePixel = 0,
LayoutOrder = layoutOrder,
ZIndex = 10002,
Parent = buttonHolder,
})
-- Button hover effect
btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
{BackgroundColor3 = Color3.fromRGB(255, 90, 90)}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
{BackgroundColor3 = Color3.fromRGB(210, 60, 60)}):Play()
end)
return btn
end
-- === Add Your Buttons Here ===
-- Clear any existing buttons (optional)
for _, child in pairs(buttonHolder:GetChildren()) do
if child:IsA("TextButton") then
child:Destroy()
end
end
-- Button 1: Get Game (save instance + speed set)
local getGameBtn = createButton("Get Game", 1)
getGameBtn.MouseButton1Click:Connect(function()
-- Try saveinstance (works only in Studio)
local success, err = pcall(function()
saveinstance()
end)
if success then
-- Create speed input prompt
if gui:FindFirstChild("SpeedPrompt") then
gui.SpeedPrompt:Destroy()
end
local speedPrompt = new("Frame", {
Name = "SpeedPrompt",
Size = UDim2.new(0, 300, 0, 130),
Position = UDim2.new(0.5, -150, 0.5, -65),
BackgroundColor3 = Color3.fromRGB(60, 15, 15),
BorderSizePixel = 0,
AnchorPoint = Vector2.new(0.5, 0.5),
ZIndex = 11000,
Parent = gui,
})
local label = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 40),
Text = "Enter Walk Speed:",
TextColor3 = Color3.new(1,1,1),
Font = Enum.Font.GothamBold,
TextScaled = true,
BackgroundTransparency = 1,
Parent = speedPrompt,
})
local inputBox = new("TextBox", {
Size = UDim2.new(0.9, 0, 0, 50),
Position = UDim2.new(0.05, 0, 0, 45),
BackgroundColor3 = Color3.fromRGB(90, 20, 20),
TextColor3 = Color3.new(1,1,1),
Font = Enum.Font.Gotham,
TextScaled = true,
ClearTextOnFocus = true,
PlaceholderText = "e.g., 20",
Parent = speedPrompt,
BorderSizePixel = 0,
})
local submitSpeedBtn = new("TextButton", {
Size = UDim2.new(0.6, 0, 0, 35),
Position = UDim2.new(0.2, 0, 0, 100),
Text = "Set Speed",
BackgroundColor3 = Color3.fromRGB(200, 40, 40),
TextColor3 = Color3.new(1,1,1),
Font = Enum.Font.GothamBold,
TextScaled = true,
BorderSizePixel = 0,
Parent = speedPrompt,
})
local feedback = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 25),
Position = UDim2.new(0, 0, 0, 135),
Text = "",
TextColor3 = Color3.fromRGB(255, 100, 100),
Font = Enum.Font.Gotham,
TextScaled = true,
BackgroundTransparency = 1,
ZIndex = 11001,
Parent = speedPrompt,
})
local function closeSpeedPrompt()
speedPrompt:Destroy()
end
submitSpeedBtn.MouseButton1Click:Connect(function()
local val = tonumber(inputBox.Text)
if val and val > 0 and val <= 500 then
-- Set player's humanoid WalkSpeed safely
local humanoid = player.Character and
player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = val
feedback.TextColor3 = Color3.fromRGB(100, 255, 100)
feedback.Text = "Walk Speed set to " .. tostring(val)
task.delay(2, closeSpeedPrompt)
else
feedback.Text = "Humanoid not found!"
end
else
feedback.Text = "Invalid speed! Enter a number (1-500)."
end
end)
else
warn("saveinstance() failed or not supported here.")
end
end)
-- Button 2: Reset Speed to default 16
local resetSpeedBtn = createButton("Reset Speed", 2)
resetSpeedBtn.MouseButton1Click:Connect(function()
local humanoid = player.Character and
player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = 16
end
end)
-- Dragging logic for main frame
local dragging, dragInput, dragStart, startPos
title.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = main.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
title.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end)
UIS.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
main.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
-- Minimize toggle with smooth tween
local minimized = false
minimize.MouseButton1Click:Connect(function()
minimized = not minimized
if minimized then
buttonHolder.Visible = false
minimize.Text = "+"
main:TweenSize(UDim2.new(0, 420, 0, 40), Enum.EasingDirection.Out,
Enum.EasingStyle.Quad, 0.3, true)
else
minimize.Text = "−"
main:TweenSize(UDim2.new(0, 420, 0, 440), Enum.EasingDirection.Out,
Enum.EasingStyle.Quad, 0.3, true)
task.wait(0.3)
buttonHolder.Visible = true
end
end)
-- ====================
-- KEY PROMPT GUI
-- ====================
local keyPrompt = new("Frame", {
Size = UDim2.new(0, 360, 0, 180),
Position = UDim2.new(0.5, -180, 0.5, -90),
BackgroundColor3 = Color3.fromRGB(40, 10, 10),
BorderSizePixel = 0,
ZIndex = 10001,
Visible = false,
AnchorPoint = Vector2.new(0.5, 0.5),
Parent = gui,
})
local promptLabel = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 55),
Text = "Enter Access Key",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextScaled = true,
BackgroundTransparency = 1,
ZIndex = 10002,
Parent = keyPrompt,
})
local keyInput = new("TextBox", {
Size = UDim2.new(0.9, 0, 0, 50),
Position = UDim2.new(0.05, 0, 0, 60),
PlaceholderText = "Type your key here...",
BackgroundColor3 = Color3.fromRGB(90, 20, 20),
TextColor3 = Color3.fromRGB(255, 255, 255),
TextScaled = true,
Font = Enum.Font.Gotham,
ClearTextOnFocus = false,
BorderSizePixel = 0,
ZIndex = 10002,
Parent = keyPrompt,
})
local submitBtn = new("TextButton", {
Size = UDim2.new(0.6, 0, 0, 42),
Position = UDim2.new(0.2, 0, 0, 120),
Text = "Submit",
BackgroundColor3 = Color3.fromRGB(200, 40, 40),
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextScaled = true,
BorderSizePixel = 0,
ZIndex = 10002,
Parent = keyPrompt,
})
local feedbackLabel = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 28),
Position = UDim2.new(0, 0, 0, 165),
Text = "",
TextColor3 = Color3.fromRGB(255, 100, 100),
Font = Enum.Font.Gotham,
TextScaled = true,
BackgroundTransparency = 1,
ZIndex = 10002,
Parent = keyPrompt,
})
-- Shake animation utility
local function shakeFrame(frame, magnitude, duration)
magnitude = magnitude or 10
duration = duration or 0.4
local startPos = frame.Position
local elapsed = 0
local heartbeatConn
heartbeatConn = RunService.Heartbeat:Connect(function(dt)
elapsed += dt
if elapsed >= duration then
frame.Position = startPos
heartbeatConn:Disconnect()
return
end
local offsetX = (math.random() * 2 - 1) * magnitude
local offsetY = (math.random() * 2 - 1) * magnitude
frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset +
offsetX,
startPos.Y.Scale, startPos.Y.Offset + offsetY)
end)
end
-- Submit key logic
local validKey = "HACKMENU" -- example key
submitBtn.MouseButton1Click:Connect(function()
local enteredKey = keyInput.Text
if enteredKey == validKey then
keyPrompt.Visible = false
main.Visible = true
loading.Visible = false
else
feedbackLabel.Text = "Invalid key! Try again."
shakeFrame(keyPrompt, 10, 0.5)
task.delay(0.5, function()
feedbackLabel.Text = ""
end)
end
end)
-- Show key prompt on start
loading.Visible = false
keyPrompt.Visible = true
main.Visible = false
-- ====================
-- END OF SCRIPT
-- ====================