SG macrobest
Key RequiredUniversal

SG macrobest

Universal ScriptSam_on_tiktokSam_on_tiktok 817 views 19.4K executesUpdated Aug 19, 2026
Unrated
00
Lua Script•427 lines (15345 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")

local LocalPlayer = Players.LocalPlayer
local cam = workspace.CurrentCamera

-- Base Settings
local power = 90
local moveBoost = 150
local idleBoost = 100

_G.FlickEnabled = false 
_G.Flick360Hold = false
_G.Flick360NoBoostHold = false
_G.ButtonsLocked = false -- Global lock toggle

-- Touch & Mouse Drag Handler with Lock Check
local function makeDraggable(guiObject)
    local dragging = false
    local dragStart = Vector3.zero
    local startPos = UDim2.new()

    guiObject.InputBegan:Connect(function(input)
        if _G.ButtonsLocked then return end -- Block dragging if locked
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            dragStart = input.Position
            startPos = guiObject.Position
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if not _G.ButtonsLocked and dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            local delta = input.Position - dragStart
            guiObject.Position = UDim2.new(
                startPos.X.Scale, 
                startPos.X.Offset + delta.X, 
                startPos.Y.Scale, 
                startPos.Y.Offset + delta.Y
            )
        end
    end)

    local function endDrag(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = false
        end
    end

    guiObject.InputEnded:Connect(endDrag)
    UserInputService.InputEnded:Connect(endDrag)
end

-- UI Setup
local parentGui = (gethui and gethui()) or LocalPlayer:WaitForChild("PlayerGui")
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SilverSurfer_SG_UI"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = parentGui

-- Open/Close Icon
local OpenCloseBtn = Instance.new("TextButton")
OpenCloseBtn.Size = UDim2.new(0, 48, 0, 48)
OpenCloseBtn.Position = UDim2.new(0.02, 0, 0.4, 0)
OpenCloseBtn.Text = "🌌"
OpenCloseBtn.TextSize = 22
OpenCloseBtn.BackgroundColor3 = Color3.fromRGB(15, 15, 18)
OpenCloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
OpenCloseBtn.Active = true
OpenCloseBtn.Parent = ScreenGui
makeDraggable(OpenCloseBtn)

Instance.new("UICorner", OpenCloseBtn).CornerRadius = UDim.new(0, 8)
local OpenStroke = Instance.new("UIStroke", OpenCloseBtn)
OpenStroke.Color = Color3.fromRGB(220, 220, 220)
OpenStroke.Thickness = 2

-- Main Frame
local Frame = Instance.new("Frame")
Frame.Size = UDim2.new(0, 170, 0, 350)
Frame.Position = UDim2.new(0.5, -85, 0.1, 0)
Frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
Frame.Active = true
Frame.Parent = ScreenGui
makeDraggable(Frame)

Instance.new("UICorner", Frame).CornerRadius = UDim.new(0, 12)
local FrameStroke = Instance.new("UIStroke", Frame)
FrameStroke.Color = Color3.fromRGB(255, 255, 255)
FrameStroke.Thickness = 1.5

-- Background Image
local BackgroundImage = Instance.new("ImageLabel")
BackgroundImage.Size = UDim2.new(1, 0, 1, 0)
BackgroundImage.Image = "rbxassetid://11120144886430485783"
BackgroundImage.ImageTransparency = 0.35
BackgroundImage.ScaleType = Enum.ScaleType.Crop
BackgroundImage.BackgroundTransparency = 1
BackgroundImage.Parent = Frame

-- Title
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 28)
Title.Position = UDim2.new(0, 0, 0, 5)
Title.Text = "COSMIC SPEED"
Title.Font = Enum.Font.GothamBold
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 13
Title.BackgroundTransparency = 1
Title.Parent = Frame

-- SG Toggle
local ToggleButton = Instance.new("TextButton")
ToggleButton.Size = UDim2.new(1, -16, 0, 32)
ToggleButton.Position = UDim2.new(0, 8, 0, 35)
ToggleButton.Text = "SG: OFF"
ToggleButton.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ToggleButton.Font = Enum.Font.GothamBold
ToggleButton.TextSize = 13
ToggleButton.Parent = Frame

Instance.new("UICorner", ToggleButton).CornerRadius = UDim.new(0, 8)

-- 360 Flick Hold
local Flick360Btn = Instance.new("TextButton")
Flick360Btn.Size = UDim2.new(1, -16, 0, 32)
Flick360Btn.Position = UDim2.new(0, 8, 0, 72)
Flick360Btn.Text = "🌀 HOLD 360 FLICK"
Flick360Btn.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
Flick360Btn.TextColor3 = Color3.fromRGB(255, 255, 255)
Flick360Btn.Font = Enum.Font.GothamBold
Flick360Btn.TextSize = 11
Flick360Btn.Parent = Frame

Instance.new("UICorner", Flick360Btn).CornerRadius = UDim.new(0, 8)

-- 360 Flick Hold (NO BOOST)
local Flick360NoBoostBtn = Instance.new("TextButton")
Flick360NoBoostBtn.Size = UDim2.new(1, -16, 0, 32)
Flick360NoBoostBtn.Position = UDim2.new(0, 8, 0, 109)
Flick360NoBoostBtn.Text = "🌀 360 (NO BOOST)"
Flick360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
Flick360NoBoostBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
Flick360NoBoostBtn.Font = Enum.Font.GothamBold
Flick360NoBoostBtn.TextSize = 11
Flick360NoBoostBtn.Parent = Frame

Instance.new("UICorner", Flick360NoBoostBtn).CornerRadius = UDim.new(0, 8)

-- Move Speed Input Box
local MoveInput = Instance.new("TextBox")
MoveInput.Size = UDim2.new(1, -16, 0, 28)
MoveInput.Position = UDim2.new(0, 8, 0, 146)
MoveInput.PlaceholderText = "Move Speed (150)"
MoveInput.Text = "150"
MoveInput.BackgroundColor3 = Color3.fromRGB(10, 10, 12)
MoveInput.TextColor3 = Color3.fromRGB(255, 255, 255)
MoveInput.Font = Enum.Font.GothamMedium
MoveInput.TextSize = 11
MoveInput.Parent = Frame

Instance.new("UICorner", MoveInput).CornerRadius = UDim.new(0, 8)

-- Idle Speed Input Box
local IdleInput = Instance.new("TextBox")
IdleInput.Size = UDim2.new(1, -16, 0, 28)
IdleInput.Position = UDim2.new(0, 8, 0, 179)
IdleInput.PlaceholderText = "Idle Speed (100)"
IdleInput.Text = "100"
IdleInput.BackgroundColor3 = Color3.fromRGB(10, 10, 12)
IdleInput.TextColor3 = Color3.fromRGB(255, 255, 255)
IdleInput.Font = Enum.Font.GothamMedium
IdleInput.TextSize = 11
IdleInput.Parent = Frame

Instance.new("UICorner", IdleInput).CornerRadius = UDim.new(0, 8)

-- LOCK / UNLOCK POSITIONS BUTTON
local LockBtn = Instance.new("TextButton")
LockBtn.Size = UDim2.new(1, -16, 0, 32)
LockBtn.Position = UDim2.new(0, 8, 0, 215)
LockBtn.Text = "🔓 UNLOCKED"
LockBtn.BackgroundColor3 = Color3.fromRGB(40, 20, 20)
LockBtn.TextColor3 = Color3.fromRGB(255, 120, 120)
LockBtn.Font = Enum.Font.GothamBold
LockBtn.TextSize = 11
LockBtn.Parent = Frame

Instance.new("UICorner", LockBtn).CornerRadius = UDim.new(0, 8)

local LockStroke = Instance.new("UIStroke", LockBtn)
LockStroke.Color = Color3.fromRGB(255, 80, 80)
LockStroke.Thickness = 1

-- SPREAD BUTTON
local ExpandBtn = Instance.new("TextButton")
ExpandBtn.Size = UDim2.new(1, -16, 0, 32)
ExpandBtn.Position = UDim2.new(0, 8, 0, 252)
ExpandBtn.Text = "➕ SPREAD BUTTONS"
ExpandBtn.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
ExpandBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
ExpandBtn.Font = Enum.Font.GothamBold
ExpandBtn.TextSize = 11
ExpandBtn.Parent = Frame

Instance.new("UICorner", ExpandBtn).CornerRadius = UDim.new(0, 8)

---------------------------------------------------------
-- STANDALONE SPREAD BUTTONS (DRAGGABLE)
---------------------------------------------------------

local function createSpreadButton(defaultText, defaultPos)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 130, 0, 40)
    btn.Position = defaultPos
    btn.Text = defaultText
    btn.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 12
    btn.Visible = false
    btn.Active = true
    btn.Parent = ScreenGui
    
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
    local stroke = Instance.new("UIStroke", btn)
    stroke.Color = Color3.fromRGB(255, 255, 255)
    stroke.Thickness = 1.5

    makeDraggable(btn)
    return btn
end

local StandaloneBtn = createSpreadButton("SG: OFF", UDim2.new(0.5, -65, 0.4, 0))
local Standalone360Btn = createSpreadButton("🌀 HOLD 360", UDim2.new(0.5, -65, 0.4, 48))
local Standalone360NoBoostBtn = createSpreadButton("🌀 360 (NO BOOST)", UDim2.new(0.5, -65, 0.4, 96))

---------------------------------------------------------
-- CORE LOGIC & CONNECTIONS
---------------------------------------------------------

LockBtn.MouseButton1Click:Connect(function()
    _G.ButtonsLocked = not _G.ButtonsLocked
    if _G.ButtonsLocked then
        LockBtn.Text = "🔒 LOCKED"
        LockBtn.BackgroundColor3 = Color3.fromRGB(20, 40, 20)
        LockBtn.TextColor3 = Color3.fromRGB(120, 255, 120)
        LockStroke.Color = Color3.fromRGB(80, 255, 80)
    else
        LockBtn.Text = "🔓 UNLOCKED"
        LockBtn.BackgroundColor3 = Color3.fromRGB(40, 20, 20)
        LockBtn.TextColor3 = Color3.fromRGB(255, 120, 120)
        LockStroke.Color = Color3.fromRGB(255, 80, 80)
    end
end)

OpenCloseBtn.MouseButton1Click:Connect(function()
    Frame.Visible = not Frame.Visible
end)

MoveInput.FocusLost:Connect(function()
    local newSpeed = tonumber(MoveInput.Text)
    if newSpeed then moveBoost = newSpeed else MoveInput.Text = tostring(moveBoost) end
end)

IdleInput.FocusLost:Connect(function()
    local newIdle = tonumber(IdleInput.Text)
    if newIdle then idleBoost = newIdle else IdleInput.Text = tostring(idleBoost) end
end)

local function rotateCamStep(degrees)
    cam.CFrame = cam.CFrame * CFrame.Angles(0, math.rad(degrees), 0)
end

-- 360 NO BOOST HOLD LOOP
task.spawn(function()
    while true do
        if _G.Flick360NoBoostHold then
            for i = 1, 4 do
                if not _G.Flick360NoBoostHold then break end
                rotateCamStep(90)
                task.wait(0.015)
            end
        else
            task.wait(0.03)
        end
    end
end)

-- 360 WITH BOOST HOLD LOOP
task.spawn(function()
    while true do
        if _G.Flick360Hold then
            local char = LocalPlayer.Character
            local hrp = char and char:FindFirstChild("HumanoidRootPart")
            local hum = char and char:FindFirstChildOfClass("Humanoid")

            for i = 1, 4 do
                if not _G.Flick360Hold then break end
                rotateCamStep(90)
                if hrp and hum then
                    local lookDir = cam.CFrame.LookVector
                    local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit
                    if hum.MoveDirection.Magnitude > 0 then
                        hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (hum.MoveDirection * moveBoost)
                    else
                        hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (flatDir * idleBoost)
                    end
                end
                task.wait(0.015)
            end
        else
            task.wait(0.03)
        end
    end
end)

-- REGULAR SG FLICK LOOP
task.spawn(function()
    while true do
        if _G.FlickEnabled and not _G.Flick360Hold and not _G.Flick360NoBoostHold then
            local char = LocalPlayer.Character
            local hrp = char and char:FindFirstChild("HumanoidRootPart")
            local hum = char and char:FindFirstChildOfClass("Humanoid")

            rotateCamStep(power)
            if hrp and hum then
                local lookDir = cam.CFrame.LookVector
                local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit
                if hum.MoveDirection.Magnitude > 0 then
                    hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (hum.MoveDirection * moveBoost)
                else
                    hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (flatDir * idleBoost)
                end
            end
            task.wait(0.015)

            rotateCamStep(-power)
            if hrp and hum then
                local lookDir = cam.CFrame.LookVector
                local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit
                if hum.MoveDirection.Magnitude > 0 then
                    hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (hum.MoveDirection * moveBoost)
                else
                    hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (flatDir * idleBoost)
                end
            end
            task.wait(0.015)
        else
            task.wait(0.03)
        end
    end
end)

-- Toggle Actions
local function toggleSG()
    _G.FlickEnabled = not _G.FlickEnabled
    local statusText = _G.FlickEnabled and "SG: ON" or "SG: OFF"
    local bgColor = _G.FlickEnabled and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(30, 30, 35)
    local textColor = _G.FlickEnabled and Color3.fromRGB(0, 0, 0) or Color3.fromRGB(255, 255, 255)

    ToggleButton.Text = statusText
    ToggleButton.BackgroundColor3 = bgColor
    ToggleButton.TextColor3 = textColor

    StandaloneBtn.Text = statusText
    StandaloneBtn.BackgroundColor3 = bgColor
    StandaloneBtn.TextColor3 = textColor
end

ToggleButton.MouseButton1Click:Connect(toggleSG)
StandaloneBtn.MouseButton1Click:Connect(toggleSG)

-- 360 Boost Connections
local function on360Down()
    _G.Flick360Hold = true
    Flick360Btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Flick360Btn.TextColor3 = Color3.fromRGB(0, 0, 0)
    Standalone360Btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Standalone360Btn.TextColor3 = Color3.fromRGB(0, 0, 0)
end

local function on360Up()
    _G.Flick360Hold = false
    Flick360Btn.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
    Flick360Btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    Standalone360Btn.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
    Standalone360Btn.TextColor3 = Color3.fromRGB(255, 255, 255)
end

Flick360Btn.MouseButton1Down:Connect(on360Down)
Flick360Btn.MouseButton1Up:Connect(on360Up)
Standalone360Btn.MouseButton1Down:Connect(on360Down)
Standalone360Btn.MouseButton1Up:Connect(on360Up)

-- 360 No Boost Connections
local function on360NoBoostDown()
    _G.Flick360NoBoostHold = true
    Flick360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Flick360NoBoostBtn.TextColor3 = Color3.fromRGB(0, 0, 0)
    Standalone360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Standalone360NoBoostBtn.TextColor3 = Color3.fromRGB(0, 0, 0)
end

local function on360NoBoostUp()
    _G.Flick360NoBoostHold = false
    Flick360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
    Flick360NoBoostBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    Standalone360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
    Standalone360NoBoostBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
end

Flick360NoBoostBtn.MouseButton1Down:Connect(on360NoBoostDown)
Flick360NoBoostBtn.MouseButton1Up:Connect(on360NoBoostUp)
Standalone360NoBoostBtn.MouseButton1Down:Connect(on360NoBoostDown)
Standalone360NoBoostBtn.MouseButton1Up:Connect(on360NoBoostUp)

ExpandBtn.MouseButton1Click:Connect(function()
    local show = not StandaloneBtn.Visible
    StandaloneBtn.Visible = show
    Standalone360Btn.Visible = show
    Standalone360NoBoostBtn.Visible = show
    ExpandBtn.Text = show and "➖ HIDE SPREAD" or "➕ SPREAD BUTTONS"
end)

Features & Information

Macro that's all Figure it out yourself
#BEST SPEED GLITCH MACRO

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts