local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = [Link]
local playerGui = player:WaitForChild("PlayerGui")
-- Utility to create instances cleanly
local function new(class, props, parent)
local obj = [Link](class)
if props then
for k,v in pairs(props) do
obj[k] = v
end
end
if parent then
[Link] = 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 = [Link](1,0,1,0),
BackgroundColor3 = [Link](20, 20, 20),
ZIndex = 9999,
Parent = gui,
})
local loadingText = new("TextLabel", {
Size = [Link](0,360,0,60),
Position = [Link](0.5, -180, 0.4, -30),
BackgroundTransparency = 1,
Text = "Loading G0LET_DREAD'S GUI...",
TextScaled = true,
TextColor3 = [Link](235, 70, 70),
Font = [Link],
ZIndex = 10000,
Parent = loading,
})
local loadingBarBack = new("Frame", {
Size = [Link](0,360,0,28),
Position = [Link](0.5, -180, 0.5, 20),
BackgroundColor3 = [Link](40, 10, 10),
BorderSizePixel = 0,
ClipsDescendants = true,
AnchorPoint = [Link](0,0),
ZIndex = 9999,
Parent = loading,
})
loadingBarBack:ClearAllChildren()
local loadingBar = new("Frame", {
Size = [Link](0,0,1,0),
BackgroundColor3 = [Link](255, 85, 85),
BorderSizePixel = 0,
ZIndex = 10000,
Parent = loadingBarBack,
})
local loadingBarGradient = new("UIGradient", {
Color = [Link]{
[Link](0, [Link](255, 90, 90)),
[Link](0.5, [Link](255, 180, 180)),
[Link](1, [Link](255, 90, 90)),
},
Rotation = 90,
Parent = loadingBar,
})
local percentText = new("TextLabel", {
Size = [Link](0,120,0,40),
Position = [Link](0.5, -60, 0.5, 60),
BackgroundTransparency = 1,
Text = "0%",
TextColor3 = [Link](255,255,255),
Font = [Link],
TextScaled = true,
ZIndex = 10000,
Parent = loading,
})
-- Loading text pulsate animation
local pulseSpeed = 2
[Link]:Connect(function(dt)
if [Link] then
local t = tick() * pulseSpeed
local pulse = 0.5 + 0.5 * [Link](t)
local r = 0.8 + 0.2 * pulse
loadingText.TextColor3 = [Link](r, 0.3, 0.3)
end
end)
-- ====================
-- MAIN GUI FRAME
-- ====================
local main = new("Frame", {
Name = "Main",
Size = [Link](0, 420, 0, 440),
Position = [Link](0.5, -210, 0.5, -220),
BackgroundColor3 = [Link](50, 10, 10),
BorderSizePixel = 0,
Visible = false,
ClipsDescendants = true,
AnchorPoint = [Link](0.5, 0.5),
Parent = gui,
})
-- Shadow effect (optional for nicer UI)
local shadow = new("ImageLabel", {
Size = [Link](1,20,1,20),
Position = [Link](0,-10,0,-10),
Image = "rbxassetid://1316045217", -- Shadow image asset
ScaleType = [Link],
SliceCenter = [Link](10,10,118,118),
BackgroundTransparency = 1,
ZIndex = 9980,
Parent = main,
})
local title = new("TextLabel", {
Size = [Link](1,0,0,40),
BackgroundColor3 = [Link](100, 10, 10),
Text = "G0LET_DREAD'S GUI",
TextColor3 = [Link](255, 255, 255),
Font = [Link],
TextScaled = true,
ZIndex = 10001,
Parent = main,
})
local minimize = new("TextButton", {
Size = [Link](0,40,0,40),
Position = [Link](1, -40, 0, 0),
Text = "−",
TextColor3 = [Link](255, 255, 255),
Font = [Link],
TextScaled = true,
BackgroundColor3 = [Link](140, 0, 0),
ZIndex = 10002,
AutoButtonColor = false,
Parent = main,
})
[Link]:Connect(function()
TweenService:Create(minimize, [Link](0.2), {BackgroundColor3 =
[Link](180, 0, 0)}):Play()
end)
[Link]:Connect(function()
TweenService:Create(minimize, [Link](0.2), {BackgroundColor3 =
[Link](140, 0, 0)}):Play()
end)
-- Scrolling frame to hold buttons
local buttonHolder = new("ScrollingFrame", {
Size = [Link](1, -20, 1, -40),
Position = [Link](0, 10, 0, 40),
BackgroundTransparency = 1,
BorderSizePixel = 0,
CanvasSize = [Link](0,0,0,0),
ScrollBarThickness = 10,
VerticalScrollBarInset = [Link],
ZIndex = 10001,
Parent = main,
})
local listLayout = new("UIListLayout", {
SortOrder = [Link],
Padding = [Link](0, 14),
Parent = buttonHolder,
})
listLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
[Link] = [Link](0,0,0,[Link].Y +
14)
end)
local function createButton(text, layoutOrder)
local btn = new("TextButton", {
Size = [Link](0.9, 0, 0, 50),
AnchorPoint = [Link](0.5, 0),
Position = [Link](0.5, 0, 0, 0),
BackgroundColor3 = [Link](210, 60, 60),
TextColor3 = [Link](255, 255, 255),
Font = [Link],
TextScaled = true,
Text = text,
AutoButtonColor = false,
BorderSizePixel = 0,
LayoutOrder = layoutOrder,
ZIndex = 10002,
Parent = buttonHolder,
})
-- Button hover effect
[Link]:Connect(function()
TweenService:Create(btn, [Link](0.2, [Link]),
{BackgroundColor3 = [Link](255, 90, 90)}):Play()
end)
[Link]:Connect(function()
TweenService:Create(btn, [Link](0.2, [Link]),
{BackgroundColor3 = [Link](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
[Link]:Destroy()
end
local speedPrompt = new("Frame", {
Name = "SpeedPrompt",
Size = [Link](0, 300, 0, 130),
Position = [Link](0.5, -150, 0.5, -65),
BackgroundColor3 = [Link](60, 15, 15),
BorderSizePixel = 0,
AnchorPoint = [Link](0.5, 0.5),
ZIndex = 11000,
Parent = gui,
})
local label = new("TextLabel", {
Size = [Link](1, 0, 0, 40),
Text = "Enter Walk Speed:",
TextColor3 = [Link](1,1,1),
Font = [Link],
TextScaled = true,
BackgroundTransparency = 1,
Parent = speedPrompt,
})
local inputBox = new("TextBox", {
Size = [Link](0.9, 0, 0, 50),
Position = [Link](0.05, 0, 0, 45),
BackgroundColor3 = [Link](90, 20, 20),
TextColor3 = [Link](1,1,1),
Font = [Link],
TextScaled = true,
ClearTextOnFocus = true,
PlaceholderText = "e.g., 20",
Parent = speedPrompt,
BorderSizePixel = 0,
})
local submitSpeedBtn = new("TextButton", {
Size = [Link](0.6, 0, 0, 35),
Position = [Link](0.2, 0, 0, 100),
Text = "Set Speed",
BackgroundColor3 = [Link](200, 40, 40),
TextColor3 = [Link](1,1,1),
Font = [Link],
TextScaled = true,
BorderSizePixel = 0,
Parent = speedPrompt,
})
local feedback = new("TextLabel", {
Size = [Link](1, 0, 0, 25),
Position = [Link](0, 0, 0, 135),
Text = "",
TextColor3 = [Link](255, 100, 100),
Font = [Link],
TextScaled = true,
BackgroundTransparency = 1,
ZIndex = 11001,
Parent = speedPrompt,
})
local function closeSpeedPrompt()
speedPrompt:Destroy()
end
submitSpeedBtn.MouseButton1Click:Connect(function()
local val = tonumber([Link])
if val and val > 0 and val <= 500 then
-- Set player's humanoid WalkSpeed safely
local humanoid = [Link] and
[Link]:FindFirstChildOfClass("Humanoid")
if humanoid then
[Link] = val
feedback.TextColor3 = [Link](100, 255, 100)
[Link] = "Walk Speed set to " .. tostring(val)
[Link](2, closeSpeedPrompt)
else
[Link] = "Humanoid not found!"
end
else
[Link] = "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 = [Link] and
[Link]:FindFirstChildOfClass("Humanoid")
if humanoid then
[Link] = 16
end
end)
-- Dragging logic for main frame
local dragging, dragInput, dragStart, startPos
[Link]:Connect(function(input)
if [Link] == [Link].MouseButton1 then
dragging = true
dragStart = [Link]
startPos = [Link]
[Link]:Connect(function()
if [Link] == [Link] then
dragging = false
end
end)
end
end)
[Link]:Connect(function(input)
if [Link] == [Link] then
dragInput = input
end
end)
[Link]:Connect(function(input)
if input == dragInput and dragging then
local delta = [Link] - dragStart
[Link] = [Link](
[Link],
[Link] + delta.X,
[Link],
[Link] + delta.Y
)
end
end)
-- Minimize toggle with smooth tween
local minimized = false
minimize.MouseButton1Click:Connect(function()
minimized = not minimized
if minimized then
[Link] = false
[Link] = "+"
main:TweenSize([Link](0, 420, 0, 40), [Link],
[Link], 0.3, true)
else
[Link] = "−"
main:TweenSize([Link](0, 420, 0, 440), [Link],
[Link], 0.3, true)
[Link](0.3)
[Link] = true
end
end)
-- ====================
-- KEY PROMPT GUI
-- ====================
local keyPrompt = new("Frame", {
Size = [Link](0, 360, 0, 180),
Position = [Link](0.5, -180, 0.5, -90),
BackgroundColor3 = [Link](40, 10, 10),
BorderSizePixel = 0,
ZIndex = 10001,
Visible = false,
AnchorPoint = [Link](0.5, 0.5),
Parent = gui,
})
local promptLabel = new("TextLabel", {
Size = [Link](1, 0, 0, 55),
Text = "Enter Access Key",
TextColor3 = [Link](255, 255, 255),
Font = [Link],
TextScaled = true,
BackgroundTransparency = 1,
ZIndex = 10002,
Parent = keyPrompt,
})
local keyInput = new("TextBox", {
Size = [Link](0.9, 0, 0, 50),
Position = [Link](0.05, 0, 0, 60),
PlaceholderText = "Type your key here...",
BackgroundColor3 = [Link](90, 20, 20),
TextColor3 = [Link](255, 255, 255),
TextScaled = true,
Font = [Link],
ClearTextOnFocus = false,
BorderSizePixel = 0,
ZIndex = 10002,
Parent = keyPrompt,
})
local submitBtn = new("TextButton", {
Size = [Link](0.6, 0, 0, 42),
Position = [Link](0.2, 0, 0, 120),
Text = "Submit",
BackgroundColor3 = [Link](200, 40, 40),
TextColor3 = [Link](255, 255, 255),
Font = [Link],
TextScaled = true,
BorderSizePixel = 0,
ZIndex = 10002,
Parent = keyPrompt,
})
local feedbackLabel = new("TextLabel", {
Size = [Link](1, 0, 0, 28),
Position = [Link](0, 0, 0, 165),
Text = "",
TextColor3 = [Link](255, 100, 100),
Font = [Link],
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 = [Link]
local elapsed = 0
local heartbeatConn
heartbeatConn = [Link]:Connect(function(dt)
elapsed += dt
if elapsed >= duration then
[Link] = startPos
heartbeatConn:Disconnect()
return
end
local offsetX = ([Link]() * 2 - 1) * magnitude
local offsetY = ([Link]() * 2 - 1) * magnitude
[Link] = [Link]([Link], [Link] +
offsetX,
[Link], [Link] + offsetY)
end)
end
-- Submit key logic
local validKey = "HACKMENU" -- example key
submitBtn.MouseButton1Click:Connect(function()
local enteredKey = [Link]
if enteredKey == validKey then
[Link] = false
[Link] = true
[Link] = false
else
[Link] = "Invalid key! Try again."
shakeFrame(keyPrompt, 10, 0.5)
[Link](0.5, function()
[Link] = ""
end)
end
end)
-- Show key prompt on start
[Link] = false
[Link] = true
[Link] = false
-- ====================
-- END OF SCRIPT
-- ====================