SurislamClient - Rake Remastered Mod Menu
Key Required

SurislamClient - Rake Remastered Mod Menu

The Rake REMASTEREDKabanovDevKabanovDev 1.4K views 2.2K executesUpdated Sep 29, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•1392 lines (46942 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local StarterGui = game:GetService("StarterGui")

local player = Players.LocalPlayer
local mouse = player:GetMouse()
local camera = workspace.CurrentCamera

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SurislamClientUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = player:WaitForChild("PlayerGui")

local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 600, 0, 400)
MainFrame.Position = UDim2.new(0.5, -300, 0.5, -200)
MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
MainFrame.BorderSizePixel = 0
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 12)
MainCorner.Parent = MainFrame

local MainStroke = Instance.new("UIStroke")
MainStroke.Color = Color3.fromRGB(60, 60, 60)
MainStroke.Thickness = 1
MainStroke.Transparency = 0.5
MainStroke.Parent = MainFrame

local Header = Instance.new("Frame")
Header.Size = UDim2.new(1, 0, 0, 50)
Header.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Header.BorderSizePixel = 0
Header.Parent = MainFrame

local HeaderCorner = Instance.new("UICorner")
HeaderCorner.CornerRadius = UDim.new(0, 12)
HeaderCorner.Parent = Header

local HeaderFix = Instance.new("Frame")
HeaderFix.Size = UDim2.new(1, 0, 0, 15)
HeaderFix.Position = UDim2.new(0, 0, 1, -15)
HeaderFix.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
HeaderFix.BorderSizePixel = 0
HeaderFix.Parent = Header

local Logo = Instance.new("TextLabel")
Logo.Size = UDim2.new(0, 30, 0, 30)
Logo.Position = UDim2.new(0, 20, 0.5, -15)
Logo.BackgroundTransparency = 1
Logo.Text = "★"
Logo.TextColor3 = Color3.fromRGB(255, 255, 255)
Logo.TextSize = 26
Logo.Font = Enum.Font.GothamBold
Logo.Parent = Header

local TitleSurislam = Instance.new("TextLabel")
TitleSurislam.Size = UDim2.new(0, 100, 1, 0)
TitleSurislam.Position = UDim2.new(0, 55, 0, 0)
TitleSurislam.BackgroundTransparency = 1
TitleSurislam.Text = "Surislam"
TitleSurislam.TextColor3 = Color3.fromRGB(255, 50, 50)
TitleSurislam.TextSize = 22
TitleSurislam.Font = Enum.Font.GothamBold
TitleSurislam.TextXAlignment = Enum.TextXAlignment.Left
TitleSurislam.Parent = Header

local TitleClient = Instance.new("TextLabel")
TitleClient.Size = UDim2.new(0, 70, 1, 0)
TitleClient.Position = UDim2.new(0, 140, 0, 0)
TitleClient.BackgroundTransparency = 1
TitleClient.Text = "Client"
TitleClient.TextColor3 = Color3.fromRGB(255, 255, 255)
TitleClient.TextSize = 22
TitleClient.Font = Enum.Font.GothamBold
TitleClient.TextXAlignment = Enum.TextXAlignment.Left
TitleClient.Parent = Header

local StatusDot = Instance.new("Frame")
StatusDot.Size = UDim2.new(0, 8, 0, 8)
StatusDot.Position = UDim2.new(0, 210, 0.5, -4)
StatusDot.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
StatusDot.BorderSizePixel = 0
StatusDot.Parent = Header

local DotCorner = Instance.new("UICorner")
DotCorner.CornerRadius = UDim.new(1, 0)
DotCorner.Parent = StatusDot

local MinimizeBtn = Instance.new("TextButton")
MinimizeBtn.Size = UDim2.new(0, 30, 0, 30)
MinimizeBtn.Position = UDim2.new(1, -85, 0.5, -15)
MinimizeBtn.BackgroundTransparency = 1
MinimizeBtn.Text = "−"
MinimizeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
MinimizeBtn.TextSize = 22
MinimizeBtn.Font = Enum.Font.GothamBold
MinimizeBtn.Parent = Header

local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 36, 0, 36)
CloseBtn.Position = UDim2.new(1, -48, 0.5, -18)
CloseBtn.BackgroundTransparency = 1
CloseBtn.Text = "×"
CloseBtn.TextColor3 = Color3.fromRGB(150, 150, 150)
CloseBtn.TextSize = 22
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.Parent = Header

local FloatingBtn = Instance.new("TextButton")
FloatingBtn.Size = UDim2.new(0, 50, 0, 50)
FloatingBtn.Position = UDim2.new(0, 20, 1, -70)
FloatingBtn.BackgroundColor3 = Color3.fromRGB(10, 10, 10)
FloatingBtn.BorderSizePixel = 0
FloatingBtn.Text = ""
FloatingBtn.Visible = false
FloatingBtn.Parent = ScreenGui

local FloatCorner = Instance.new("UICorner")
FloatCorner.CornerRadius = UDim.new(0, 12)
FloatCorner.Parent = FloatingBtn

local FloatStroke = Instance.new("UIStroke")
FloatStroke.Color = Color3.fromRGB(80, 80, 80)
FloatStroke.Thickness = 1.5
FloatStroke.Transparency = 0.3
FloatStroke.Parent = FloatingBtn

local FloatStar = Instance.new("TextLabel")
FloatStar.Size = UDim2.new(1, 0, 1, 0)
FloatStar.BackgroundTransparency = 1
FloatStar.Text = "★"
FloatStar.TextColor3 = Color3.fromRGB(255, 50, 50)
FloatStar.TextSize = 28
FloatStar.Font = Enum.Font.GothamBold
FloatStar.Parent = FloatingBtn

FloatingBtn.MouseEnter:Connect(function()
    TweenService:Create(FloatingBtn, TweenInfo.new(0.3, Enum.EasingStyle.Sine), {Size = UDim2.new(0, 56, 0, 56)}):Play()
    TweenService:Create(FloatStroke, TweenInfo.new(0.3, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(255, 50, 50), Transparency = 0.1}):Play()
end)

FloatingBtn.MouseLeave:Connect(function()
    TweenService:Create(FloatingBtn, TweenInfo.new(0.3, Enum.EasingStyle.Sine), {Size = UDim2.new(0, 50, 0, 50)}):Play()
    TweenService:Create(FloatStroke, TweenInfo.new(0.3, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(80, 80, 80), Transparency = 0.3}):Play()
end)

local draggingFloat = false
local floatDragInput
local floatMoved = false
local floatStartPos

FloatingBtn.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        draggingFloat = true
        floatMoved = false
        floatStartPos = input.Position
        local startFrame = FloatingBtn.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                draggingFloat = false
            end
        end)
        local moveConn
        moveConn = UserInputService.InputChanged:Connect(function(i)
            if not draggingFloat then
                moveConn:Disconnect()
                return
            end
            if i.UserInputType == Enum.UserInputType.MouseMovement then
                local delta = i.Position - floatStartPos
                if math.abs(delta.X) > 5 or math.abs(delta.Y) > 5 then
                    floatMoved = true
                end
                FloatingBtn.Position = UDim2.new(startFrame.X.Scale, startFrame.X.Offset + delta.X, startFrame.Y.Scale, startFrame.Y.Offset + delta.Y)
            end
        end)
    end
end)

FloatingBtn.MouseButton1Click:Connect(function()
    if not floatMoved then
        FloatingBtn.Visible = false
        MainFrame.Visible = true
        MainFrame.Size = UDim2.new(0, 0, 0, 0)
        TweenService:Create(MainFrame, TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
            Size = UDim2.new(0, 600, 0, 400)
        }):Play()
    end
end)

local Sidebar = Instance.new("Frame")
Sidebar.Size = UDim2.new(0, 160, 1, -50)
Sidebar.Position = UDim2.new(0, 0, 0, 50)
Sidebar.BackgroundColor3 = Color3.fromRGB(18, 18, 18)
Sidebar.BorderSizePixel = 0
Sidebar.Parent = MainFrame

local Content = Instance.new("Frame")
Content.Size = UDim2.new(1, -160, 1, -50)
Content.Position = UDim2.new(0, 160, 0, 50)
Content.BackgroundTransparency = 1
Content.ClipsDescendants = true
Content.Parent = MainFrame

local Tabs = {}
local Indicators = {}
local Pages = {}
local Toggles = {}
local Inputs = {}
local CurrentTab = "Player"

local tabOrder = {"Player", "Visuals", "Locations", "Rake"}

local function CreateTab(name, idx)
    local tab = Instance.new("TextButton")
    tab.Size = UDim2.new(1, -16, 0, 38)
    tab.Position = UDim2.new(0, 8, 0, (idx - 1) * 44)
    tab.BackgroundColor3 = idx == 1 and Color3.fromRGB(35, 35, 35) or Color3.fromRGB(25, 25, 25)
    tab.BorderSizePixel = 0
    tab.Text = "  " .. name
    tab.TextColor3 = idx == 1 and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180)
    tab.TextSize = 15
    tab.Font = Enum.Font.GothamMedium
    tab.TextXAlignment = Enum.TextXAlignment.Left
    tab.Parent = Sidebar

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 8)
    corner.Parent = tab

    local highlight = Instance.new("Frame")
    highlight.Size = UDim2.new(1, 0, 1, 0)
    highlight.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
    highlight.BackgroundTransparency = 1
    highlight.BorderSizePixel = 0
    highlight.ZIndex = 0
    highlight.Parent = tab

    local highlightCorner = Instance.new("UICorner")
    highlightCorner.CornerRadius = UDim.new(0, 8)
    highlightCorner.Parent = highlight

    local indicator = Instance.new("Frame")
    indicator.Size = UDim2.new(0, 3, 0.6, 0)
    indicator.Position = UDim2.new(0, 0, 0.5, 0)
    indicator.AnchorPoint = Vector2.new(0, 0.5)
    indicator.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
    indicator.BorderSizePixel = 0
    indicator.Visible = idx == 1
    indicator.Parent = tab

    local indicatorCorner = Instance.new("UICorner")
    indicatorCorner.CornerRadius = UDim.new(1, 0)
    indicatorCorner.Parent = indicator

    Tabs[name] = tab
    Indicators[name] = indicator

    tab.MouseEnter:Connect(function()
        TweenService:Create(highlight, TweenInfo.new(0.35, Enum.EasingStyle.Sine), {BackgroundTransparency = 0.88}):Play()
    end)
    tab.MouseLeave:Connect(function()
        TweenService:Create(highlight, TweenInfo.new(0.35, Enum.EasingStyle.Sine), {BackgroundTransparency = 1}):Play()
    end)

    return tab
end

local function CreatePage(name, idx)
    local page = Instance.new("ScrollingFrame")
    page.Name = name .. "Content"
    page.Size = UDim2.new(1, 0, 1, 0)
    page.BackgroundTransparency = 1
    page.BorderSizePixel = 0
    page.ScrollBarThickness = 4
    page.ScrollBarImageColor3 = Color3.fromRGB(255, 50, 50)
    page.CanvasSize = UDim2.new(0, 0, 0, 0)
    page.Visible = idx == 1
    page.Parent = Content
    Pages[name] = page
    return page
end

local function CreateSectionTitle(parent, text, yPos)
    local title = Instance.new("TextLabel")
    title.Size = UDim2.new(1, -40, 0, 30)
    title.Position = UDim2.new(0, 20, 0, yPos)
    title.BackgroundTransparency = 1
    title.Text = text
    title.TextColor3 = Color3.fromRGB(255, 255, 255)
    title.TextSize = 20
    title.Font = Enum.Font.GothamBold
    title.TextXAlignment = Enum.TextXAlignment.Left
    title.Parent = parent
end

local function CreateFunctionBlock(parent, name, yPos)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -40, 0, 50)
    frame.Position = UDim2.new(0, 20, 0, yPos)
    frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
    frame.BorderSizePixel = 0
    frame.Parent = parent

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 10)
    corner.Parent = frame

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(50, 50, 50)
    stroke.Thickness = 1
    stroke.Transparency = 0.7
    stroke.Parent = frame

    local funcName = Instance.new("TextLabel")
    funcName.Size = UDim2.new(0.7, 0, 1, 0)
    funcName.Position = UDim2.new(0, 20, 0, 0)
    funcName.BackgroundTransparency = 1
    funcName.Text = name
    funcName.TextColor3 = Color3.fromRGB(220, 220, 220)
    funcName.TextSize = 15
    funcName.Font = Enum.Font.GothamMedium
    funcName.TextXAlignment = Enum.TextXAlignment.Left
    funcName.Parent = frame

    local toggleBtn = Instance.new("TextButton")
    toggleBtn.Size = UDim2.new(0, 50, 0, 26)
    toggleBtn.Position = UDim2.new(1, -70, 0.5, -13)
    toggleBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    toggleBtn.BorderSizePixel = 0
    toggleBtn.Text = ""
    toggleBtn.Parent = frame

    local toggleCorner = Instance.new("UICorner")
    toggleCorner.CornerRadius = UDim.new(1, 0)
    toggleCorner.Parent = toggleBtn

    local toggleStroke = Instance.new("UIStroke")
    toggleStroke.Color = Color3.fromRGB(60, 60, 60)
    toggleStroke.Thickness = 1
    toggleStroke.Transparency = 0.5
    toggleStroke.Parent = toggleBtn

    local toggleCircle = Instance.new("Frame")
    toggleCircle.Size = UDim2.new(0, 20, 0, 20)
    toggleCircle.Position = UDim2.new(0, 3, 0.5, -10)
    toggleCircle.BackgroundColor3 = Color3.fromRGB(180, 180, 180)
    toggleCircle.BorderSizePixel = 0
    toggleCircle.Parent = toggleBtn

    local circleCorner = Instance.new("UICorner")
    circleCorner.CornerRadius = UDim.new(1, 0)
    circleCorner.Parent = toggleCircle

    frame.MouseEnter:Connect(function()
        TweenService:Create(frame, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {BackgroundColor3 = Color3.fromRGB(32, 32, 32)}):Play()
        TweenService:Create(stroke, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(255, 50, 50), Transparency = 0.3}):Play()
        TweenService:Create(funcName, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {TextColor3 = Color3.fromRGB(255, 255, 255)}):Play()
    end)

    frame.MouseLeave:Connect(function()
        TweenService:Create(frame, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {BackgroundColor3 = Color3.fromRGB(25, 25, 25)}):Play()
        TweenService:Create(stroke, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(50, 50, 50), Transparency = 0.7}):Play()
        TweenService:Create(funcName, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {TextColor3 = Color3.fromRGB(220, 220, 220)}):Play()
    end)

    Toggles[name] = {btn = toggleBtn, stroke = toggleStroke, circle = toggleCircle, state = false}
    return frame, toggleBtn, toggleStroke, toggleCircle
end

local function UpdateToggleByName(name, state)
    local t = Toggles[name]
    if not t then return end
    t.state = state
    if state then
        TweenService:Create(t.btn, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {BackgroundColor3 = Color3.fromRGB(255, 50, 50)}):Play()
        TweenService:Create(t.stroke, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(255, 50, 50)}):Play()
        TweenService:Create(t.circle, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {Position = UDim2.new(1, -23, 0.5, -10), BackgroundColor3 = Color3.fromRGB(255, 255, 255)}):Play()
    else
        TweenService:Create(t.btn, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
        TweenService:Create(t.stroke, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(60, 60, 60)}):Play()
        TweenService:Create(t.circle, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {Position = UDim2.new(0, 3, 0.5, -10), BackgroundColor3 = Color3.fromRGB(180, 180, 180)}):Play()
    end
end

local function CreateInput(parent, name, yPos, minVal, maxVal, defaultVal, suffix, callback)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -40, 0, 65)
    frame.Position = UDim2.new(0, 20, 0, yPos)
    frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
    frame.BorderSizePixel = 0
    frame.Parent = parent

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 10)
    corner.Parent = frame

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(50, 50, 50)
    stroke.Thickness = 1
    stroke.Transparency = 0.7
    stroke.Parent = frame

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -30, 0, 28)
    label.Position = UDim2.new(0, 15, 0, 5)
    label.BackgroundTransparency = 1
    label.Text = name
    label.TextColor3 = Color3.fromRGB(220, 220, 220)
    label.TextSize = 15
    label.Font = Enum.Font.GothamMedium
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = frame

    local inputBox = Instance.new("Frame")
    inputBox.Size = UDim2.new(0, 120, 0, 24)
    inputBox.Position = UDim2.new(0, 15, 0, 35)
    inputBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    inputBox.BorderSizePixel = 0
    inputBox.Parent = frame

    local inputCorner = Instance.new("UICorner")
    inputCorner.CornerRadius = UDim.new(0, 6)
    inputCorner.Parent = inputBox

    local inputStroke = Instance.new("UIStroke")
    inputStroke.Color = Color3.fromRGB(60, 60, 60)
    inputStroke.Thickness = 1
    inputStroke.Transparency = 0.5
    inputStroke.Parent = inputBox

    local textBox = Instance.new("TextBox")
    textBox.Size = UDim2.new(1, 0, 1, 0)
    textBox.BackgroundTransparency = 1
    textBox.Text = tostring(defaultVal)
    textBox.TextColor3 = Color3.fromRGB(255, 50, 50)
    textBox.TextSize = 14
    textBox.Font = Enum.Font.GothamBold
    textBox.ClearTextOnFocus = false
    textBox.Parent = inputBox

    if suffix and suffix ~= "" then
        local suffixLabel = Instance.new("TextLabel")
        suffixLabel.Size = UDim2.new(0, 200, 0, 24)
        suffixLabel.Position = UDim2.new(0, 145, 0, 35)
        suffixLabel.BackgroundTransparency = 1
        suffixLabel.Text = suffix
        suffixLabel.TextColor3 = Color3.fromRGB(150, 150, 150)
        suffixLabel.TextSize = 13
        suffixLabel.Font = Enum.Font.Gotham
        suffixLabel.TextXAlignment = Enum.TextXAlignment.Left
        suffixLabel.Parent = frame
    end

    local currentValue = defaultVal

    textBox.FocusLost:Connect(function()
        local val = tonumber(textBox.Text)
        if val then
            val = math.clamp(val, minVal, maxVal)
            textBox.Text = tostring(val)
            currentValue = val
            pcall(callback, val)
        else
            textBox.Text = tostring(currentValue)
        end
    end)

    inputBox.MouseEnter:Connect(function()
        TweenService:Create(inputStroke, TweenInfo.new(0.3, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(255, 50, 50), Transparency = 0.2}):Play()
    end)
    inputBox.MouseLeave:Connect(function()
        TweenService:Create(inputStroke, TweenInfo.new(0.3, Enum.EasingStyle.Sine), {Color = Color3.fromRGB(60, 60, 60), Transparency = 0.5}):Play()
    end)

    pcall(callback, defaultVal)
    Inputs[name] = frame
end

local function isSameTeam(plr)
    if player.Team and plr.Team then
        return player.Team == plr.Team
    end
    return false
end

local function Message(title, text, time)
    pcall(function()
        StarterGui:SetCore("SendNotification", {
            Title = title,
            Text = text,
            Duration = time or 5
        })
    end)
end

for i, name in ipairs(tabOrder) do
    CreateTab(name, i)
    CreatePage(name, i)
end

local State = {
    InfiniteJump = false,
    Noclip = false,
    Fullbright = false,
    Speedhack = false,
    SpeedValue = 16,
    ESP = false,
    ESPTeamCheck = false,
    ShowNames = false,
    ShowHealth = false,
    ShowDistance = false,
    OutlineGlow = false,
    ShowSkeleton = false,
    ShowRake = false,
}

local Connections = {
    Noclip = nil,
    Fullbright = nil,
}

local ClipFlag = false

local function applySpeed()
    if player.Character then
        local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
        if humanoid then
            humanoid.WalkSpeed = State.Speedhack and State.SpeedValue or 16
        end
    end
end

local function noclip()
    ClipFlag = false
    Connections.Noclip = RunService.Stepped:Connect(function()
        if not ClipFlag and player.Character then
            for _, v in pairs(player.Character:GetDescendants()) do
                if v:IsA('BasePart') and v.CanCollide then
                    v.CanCollide = false
                end
            end
        end
        task.wait(0.1)
    end)
end

local function clip()
    if Connections.Noclip then
        Connections.Noclip:Disconnect()
        Connections.Noclip = nil
    end
    ClipFlag = true
    if player.Character then
        for _, v in pairs(player.Character:GetDescendants()) do
            if v:IsA("BasePart") then
                v.CanCollide = true
            end
        end
    end
end

local function applyFullbright()
    if not player.Character then return end
    local head = player.Character:FindFirstChild("Head")
    if not head then return end
    local existing = head:FindFirstChild("SurislamClientFullbright")
    if existing then existing:Destroy() end
    local light = Instance.new("PointLight")
    light.Name = "SurislamClientFullbright"
    light.Brightness = 1.5
    light.Range = 60
    light.Color = Color3.fromRGB(255, 255, 255)
    light.Shadows = false
    light.Parent = head
end

local function removeFullbright()
    if not player.Character then return end
    local head = player.Character:FindFirstChild("Head")
    if not head then return end
    local light = head:FindFirstChild("SurislamClientFullbright")
    if light then light:Destroy() end
end

local function startFullbright()
    applyFullbright()
    Connections.Fullbright = player.CharacterAdded:Connect(function()
        task.wait(1)
        if State.Fullbright then applyFullbright() end
    end)
end

local function stopFullbright()
    if Connections.Fullbright then
        Connections.Fullbright:Disconnect()
        Connections.Fullbright = nil
    end
    removeFullbright()
end

player.CharacterAdded:Connect(function(char)
    char:WaitForChild("Humanoid", 5)
    task.wait(0.1)
    applySpeed()
end)

task.spawn(function()
    while task.wait(0.25) do
        if player.Character then
            local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
            if humanoid then
                if State.Speedhack then
                    if humanoid.WalkSpeed ~= State.SpeedValue then humanoid.WalkSpeed = State.SpeedValue end
                else
                    if humanoid.WalkSpeed ~= 16 then humanoid.WalkSpeed = 16 end
                end
            end
        end
    end
end)

UserInputService.JumpRequest:Connect(function()
    if State.InfiniteJump and player.Character then
        local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
        if humanoid then
            humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
        end
    end
end)

local playerPage = Pages["Player"]
CreateSectionTitle(playerPage, "Player", 20)
local py = 65

CreateFunctionBlock(playerPage, "Infinite Jump", py)
py = py + 60

CreateFunctionBlock(playerPage, "Noclip", py)
py = py + 60

CreateFunctionBlock(playerPage, "Fullbright", py)
py = py + 60

CreateFunctionBlock(playerPage, "Speedhack", py)
py = py + 60

CreateInput(playerPage, "Speed Value", py, 0, 10000, 16, "studs", function(v) State.SpeedValue = v; if State.Speedhack then applySpeed() end end)
py = py + 70

playerPage.CanvasSize = UDim2.new(0, 0, 0, py + 10)

local visualsPage = Pages["Visuals"]
CreateSectionTitle(visualsPage, "Visuals", 20)
local vy = 65

CreateFunctionBlock(visualsPage, "ESP Enabled", vy)
vy = vy + 60

CreateFunctionBlock(visualsPage, "ESP Team Check", vy)
vy = vy + 60

CreateFunctionBlock(visualsPage, "Show Names", vy)
vy = vy + 60

CreateFunctionBlock(visualsPage, "Show Health", vy)
vy = vy + 60

CreateFunctionBlock(visualsPage, "Show Distance", vy)
vy = vy + 60

CreateFunctionBlock(visualsPage, "Outline Glow", vy)
vy = vy + 60

CreateFunctionBlock(visualsPage, "Show Skeleton", vy)
vy = vy + 60

visualsPage.CanvasSize = UDim2.new(0, 0, 0, vy + 10)

-- ===== Locations =====
local locationsPage = Pages["Locations"]
CreateSectionTitle(locationsPage, "Locations", 20)
local ly = 65

local LOCATION_NAMES = {
    {key = "Show BaseCamp", folder = "BaseCamp", label = "BaseCamp"},
    {key = "Show ObservationTower", folder = "ObservationTower", label = "ObservationTower"},
    {key = "Show PowerStation", folder = "PowerStation", label = "PowerStation"},
    {key = "Show SafeHouse", folder = "SafeHouse", label = "SafeHouse"},
}

for _, loc in ipairs(LOCATION_NAMES) do
    CreateFunctionBlock(locationsPage, loc.key, ly)
    ly = ly + 60
end

locationsPage.CanvasSize = UDim2.new(0, 0, 0, ly + 10)

-- Location ESP storage
local locationHighlights = {}
local locationBillboards = {}

local function GetMapFolder()
    return workspace:FindFirstChild("Map")
end

local function GetLocationFolder(folderName)
    local map = GetMapFolder()
    if not map then return nil end
    return map:FindFirstChild(folderName)
end

local function GetLocationCenter(folder)
    if folder:IsA("Model") and folder.PrimaryPart then
        return folder.PrimaryPart.Position
    end
    local parts = {}
    for _, d in ipairs(folder:GetDescendants()) do
        if d:IsA("BasePart") then
            table.insert(parts, d)
        end
    end
    if #parts == 0 then return nil end
    local sum = Vector3.new(0, 0, 0)
    for _, p in ipairs(parts) do
        sum = sum + p.Position
    end
    return sum / #parts
end

local function CreateLocationBillboard(folderName, labelText, adorneePart)
    local bb = Instance.new("BillboardGui")
    bb.Name = "SurislamLoc_" .. folderName
    bb.Size = UDim2.new(0, 220, 0, 40)
    bb.StudsOffset = Vector3.new(0, 4, 0)
    bb.AlwaysOnTop = true
    bb.ResetOnSpawn = false
    bb.Parent = ScreenGui

    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(1, 0, 1, 0)
    lbl.BackgroundTransparency = 1
    lbl.Text = labelText
    lbl.TextColor3 = Color3.fromRGB(255, 50, 50)
    lbl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
    lbl.TextStrokeTransparency = 0.2
    lbl.TextSize = 18
    lbl.Font = Enum.Font.GothamBold
    lbl.Parent = bb

    bb.Adornee = adorneePart
    locationBillboards[folderName] = bb
end

local function EnableLocation(folderName, labelText)
    local folder = GetLocationFolder(folderName)
    if not folder then
        Message("Location", folderName .. " not found in Workspace.Map", 3)
        return
    end

    if locationHighlights[folderName] then
        locationHighlights[folderName]:Destroy()
        locationHighlights[folderName] = nil
    end

    local hl = Instance.new("Highlight")
    hl.Name = "SurislamLocHL_" .. folderName
    hl.Adornee = folder
    hl.FillTransparency = 1
    hl.OutlineColor = Color3.fromRGB(255, 50, 50)
    hl.OutlineTransparency = 0
    hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    hl.Parent = ScreenGui
    locationHighlights[folderName] = hl

    local center = GetLocationCenter(folder)
    if center then
        local anchor = Instance.new("Part")
        anchor.Name = "SurislamLocAnchor_" .. folderName
        anchor.Anchored = true
        anchor.CanCollide = false
        anchor.Transparency = 1
        anchor.Size = Vector3.new(1, 1, 1)
        anchor.CFrame = CFrame.new(center)
        anchor.Parent = ScreenGui

        CreateLocationBillboard(folderName, labelText, anchor)
    elseif folder:IsA("Model") and folder.PrimaryPart then
        CreateLocationBillboard(folderName, labelText, folder.PrimaryPart)
    end
end

local function DisableLocation(folderName)
    if locationHighlights[folderName] then
        locationHighlights[folderName]:Destroy()
        locationHighlights[folderName] = nil
    end
    if locationBillboards[folderName] then
        locationBillboards[folderName]:Destroy()
        locationBillboards[folderName] = nil
    end
    for _, child in ipairs(ScreenGui:GetChildren()) do
        if child.Name == "SurislamLocAnchor_" .. folderName then
            child:Destroy()
        end
    end
end

local function DisableAllLocations()
    for name, _ in pairs(locationHighlights) do
        DisableLocation(name)
    end
    for name, _ in pairs(locationBillboards) do
        DisableLocation(name)
    end
end

-- ===== Rake =====
local rakePage = Pages["Rake"]
CreateSectionTitle(rakePage, "Rake", 20)
local ry = 65

CreateFunctionBlock(rakePage, "Show Rake", ry)
ry = ry + 60

rakePage.CanvasSize = UDim2.new(0, 0, 0, ry + 10)

-- Rake ESP variables
local RAKE_TARGET_NAME = "Rake"
local RAKE_OUTLINE_COLOR = Color3.new(1, 1, 1)
local RAKE_TEXT_COLOR = Color3.new(1, 1, 1)
local RAKE_TEXT_SIZE = 16
local RAKE_UPDATE_RATE = 0.1

local rakeEspCache = {}
local rakeConnection = nil
local rakeAccumulator = 0

local function createRakeESP(model)
    if not model or not model:IsA("Model") then return end
    if rakeEspCache[model] then return end

    local highlight = Instance.new("Highlight")
    highlight.Name = "RakeESP_Highlight"
    highlight.Adornee = model
    highlight.FillTransparency = 1
    highlight.OutlineColor = RAKE_OUTLINE_COLOR
    highlight.OutlineTransparency = 0
    highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    highlight.Parent = model

    local billboard = Instance.new("BillboardGui")
    billboard.Name = "RakeESP_Label"
    billboard.Adornee = model
    billboard.Size = UDim2.new(0, 200, 0, 60)
    billboard.StudsOffsetWorldSpace = Vector3.new(0, 3, 0)
    billboard.AlwaysOnTop = true
    billboard.LightInfluence = 0
    billboard.MaxDistance = math.huge
    billboard.Parent = model

    local container = Instance.new("Frame")
    container.Name = "Container"
    container.Size = UDim2.new(1, 0, 1, 0)
    container.BackgroundTransparency = 1
    container.Parent = billboard

    local nameLabel = Instance.new("TextLabel")
    nameLabel.Name = "NameLabel"
    nameLabel.Size = UDim2.new(1, 0, 0.5, 0)
    nameLabel.Position = UDim2.new(0, 0, 0, 0)
    nameLabel.BackgroundTransparency = 1
    nameLabel.Text = "Rake"
    nameLabel.TextColor3 = RAKE_TEXT_COLOR
    nameLabel.TextStrokeTransparency = 0
    nameLabel.TextStrokeColor3 = Color3.new(0, 0, 0)
    nameLabel.TextScaled = false
    nameLabel.TextSize = RAKE_TEXT_SIZE
    nameLabel.Font = Enum.Font.SourceSansBold
    nameLabel.Parent = container

    local distLabel = Instance.new("TextLabel")
    distLabel.Name = "DistLabel"
    distLabel.Size = UDim2.new(1, 0, 0.5, 0)
    distLabel.Position = UDim2.new(0, 0, 0.5, 0)
    distLabel.BackgroundTransparency = 1
    distLabel.Text = "0 studs"
    distLabel.TextColor3 = RAKE_TEXT_COLOR
    distLabel.TextStrokeTransparency = 0
    distLabel.TextStrokeColor3 = Color3.new(0, 0, 0)
    distLabel.TextScaled = false
    distLabel.TextSize = RAKE_TEXT_SIZE
    distLabel.Font = Enum.Font.SourceSansBold
    distLabel.Parent = container

    rakeEspCache[model] = { highlight = highlight, billboard = billboard, distLabel = distLabel }

    model.AncestryChanged:Connect(function(_, parent)
        if not parent then
            if rakeEspCache[model] then
                if rakeEspCache[model].highlight then
                    rakeEspCache[model].highlight:Destroy()
                end
                if rakeEspCache[model].billboard then
                    rakeEspCache[model].billboard:Destroy()
                end
                rakeEspCache[model] = nil
            end
        end
    end)
end

local function scanForRake()
    for _, obj in ipairs(workspace:GetDescendants()) do
        if obj:IsA("Model") and obj.Name == RAKE_TARGET_NAME then
            createRakeESP(obj)
        end
    end
end

local function getRakeModelPosition(model)
    local ok, pos = pcall(function()
        return model:GetPivot().Position
    end)
    if ok and pos then return pos end

    local primary = model.PrimaryPart
    if primary then return primary.Position end

    local anyPart = model:FindFirstChildWhichIsA("BasePart", true)
    if anyPart then return anyPart.Position end

    return nil
end

local function clearAllRakeESP()
    for model, data in pairs(rakeEspCache) do
        if data.highlight then pcall(function() data.highlight:Destroy() end) end
        if data.billboard then pcall(function() data.billboard:Destroy() end) end
        rakeEspCache[model] = nil
    end
    rakeEspCache = {}
end

local function startRakeESP()
    if rakeConnection then return end
    rakeAccumulator = 0
    rakeConnection = RunService.Heartbeat:Connect(function(dt)
        if not State.ShowRake then return end
        rakeAccumulator = rakeAccumulator + dt
        if rakeAccumulator >= RAKE_UPDATE_RATE then
            rakeAccumulator = 0
            scanForRake()

            local char = player.Character
            local root = char and char:FindFirstChild("HumanoidRootPart")
            if root then
                local myPos = root.Position
                for model, data in pairs(rakeEspCache) do
                    if data.distLabel and data.distLabel.Parent then
                        local pos = getRakeModelPosition(model)
                        if pos then
                            local dist = (pos - myPos).Magnitude
                            data.distLabel.Text = string.format("%d studs", math.floor(dist + 0.5))
                        end
                    end
                end
            end
        end
    end)
end

local function stopRakeESP()
    if rakeConnection then
        rakeConnection:Disconnect()
        rakeConnection = nil
    end
    clearAllRakeESP()
end

-- ===== ESP code =====
local hasDrawing = false
pcall(function()
    local test = Drawing.new("Circle")
    test:Remove()
    hasDrawing = true
end)

local espHolder = Instance.new("Folder")
espHolder.Name = "SurislamClientESP"
espHolder.Parent = ScreenGui

local espLabels = {}
local outlineHighlights = {}
local skeletonDrawings = {}

local SKELETON_CONNECTIONS = {
    {"Head", "UpperTorso"},
    {"UpperTorso", "LowerTorso"},
    {"UpperTorso", "LeftUpperArm"},
    {"LeftUpperArm", "LeftLowerArm"},
    {"UpperTorso", "RightUpperArm"},
    {"RightUpperArm", "RightLowerArm"},
    {"LowerTorso", "LeftUpperLeg"},
    {"LeftUpperLeg", "LeftLowerLeg"},
    {"LowerTorso", "RightUpperLeg"},
    {"RightUpperLeg", "RightLowerLeg"}
}

local function CreateESP(plr)
    local esp = Instance.new("BillboardGui")
    esp.Name = plr.Name
    esp.Parent = espHolder
    esp.Size = UDim2.new(0, 250, 0, 50)
    esp.StudsOffset = Vector3.new(0, 2.5, 0)
    esp.AlwaysOnTop = true
    esp.Enabled = false
    esp.ResetOnSpawn = false

    local nameLabel = Instance.new("TextLabel")
    nameLabel.Parent = esp
    nameLabel.BackgroundTransparency = 1
    nameLabel.Size = UDim2.new(1, 0, 0.5, 0)
    nameLabel.Position = UDim2.new(0, 0, 0, -2)
    nameLabel.Font = Enum.Font.GothamBold
    nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    nameLabel.TextStrokeTransparency = 0.2
    nameLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
    nameLabel.TextSize = 16
    nameLabel.ZIndex = 2

    local infoLabel = Instance.new("TextLabel")
    infoLabel.Parent = esp
    infoLabel.BackgroundTransparency = 1
    infoLabel.Position = UDim2.new(0, 0, 0.5, 2)
    infoLabel.Size = UDim2.new(1, 0, 0.5, 0)
    infoLabel.Font = Enum.Font.GothamBold
    infoLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
    infoLabel.TextStrokeTransparency = 0.2
    infoLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
    infoLabel.TextSize = 14
    infoLabel.ZIndex = 2

    local highlight = Instance.new("Highlight")
    highlight.Name = plr.Name .. "Outline"
    highlight.Parent = espHolder
    highlight.FillTransparency = 1
    highlight.OutlineColor = Color3.fromRGB(255, 50, 50)
    highlight.OutlineTransparency = 0
    highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    highlight.Enabled = false

    table.insert(outlineHighlights, {plr = plr, highlight = highlight})
    table.insert(espLabels, {plr = plr, gui = esp, name = nameLabel, info = infoLabel})
end

local function clearSkeletonForPlayer(plr)
    local drawings = skeletonDrawings[plr]
    if drawings then
        for _, d in ipairs(drawings) do
            pcall(function() d.Visible = false; d:Remove() end)
        end
        skeletonDrawings[plr] = nil
    end
end

local function clearAllSkeletons()
    for plr, _ in pairs(skeletonDrawings) do
        clearSkeletonForPlayer(plr)
    end
end

local function drawSkeletonForPlayer(plr)
    if not hasDrawing then return end
    clearSkeletonForPlayer(plr)
    if not plr.Character then return end
    local drawings = {}
    for _, conn in ipairs(SKELETON_CONNECTIONS) do
        local part1 = plr.Character:FindFirstChild(conn[1])
        local part2 = plr.Character:FindFirstChild(conn[2])
        if part1 and part2 then
            local pos1, on1 = camera:WorldToViewportPoint(part1.Position)
            local pos2, on2 = camera:WorldToViewportPoint(part2.Position)
            if on1 and on2 then
                local ok, line = pcall(function()
                    local l = Drawing.new("Line")
                    l.From = Vector2.new(pos1.X, pos1.Y)
                    l.To = Vector2.new(pos2.X, pos2.Y)
                    l.Thickness = 2
                    l.Color = Color3.fromRGB(255, 50, 50)
                    l.Transparency = 0.8
                    l.Visible = true
                    return l
                end)
                if ok and line then table.insert(drawings, line) end
            end
        end
    end
    local head = plr.Character:FindFirstChild("Head")
    if head then
        local hp, on = camera:WorldToViewportPoint(head.Position)
        if on then
            local ok, circle = pcall(function()
                local c = Drawing.new("Circle")
                c.Position = Vector2.new(hp.X, hp.Y - 15)
                c.Radius = 10
                c.Thickness = 2
                c.Color = Color3.fromRGB(255, 50, 50)
                c.Filled = false
                c.NumSides = 16
                c.Visible = true
                return c
            end)
            if ok and circle then table.insert(drawings, circle) end
        end
    end
    skeletonDrawings[plr] = drawings
end

for _, plr in ipairs(Players:GetPlayers()) do
    if plr ~= player then CreateESP(plr) end
end

Players.PlayerAdded:Connect(function(plr)
    if plr ~= player then CreateESP(plr) end
end)

Players.PlayerRemoving:Connect(function(plr)
    if skeletonDrawings[plr] then clearSkeletonForPlayer(plr) end
    for i, data in ipairs(espLabels) do
        if data.plr == plr then
            data.gui:Destroy()
            table.remove(espLabels, i)
            break
        end
    end
    for i, data in ipairs(outlineHighlights) do
        if data.plr == plr then
            data.highlight:Destroy()
            table.remove(outlineHighlights, i)
            break
        end
    end
end)

local skeletonUpdateCounter = 0
local SKELETON_UPDATE_RATE = 3

RunService.RenderStepped:Connect(function(dt)
    skeletonUpdateCounter = skeletonUpdateCounter + 1
    local shouldUpdate = skeletonUpdateCounter >= SKELETON_UPDATE_RATE

    for _, data in ipairs(espLabels) do
        local plr = data.plr
        local gui = data.gui
        local isTeam = State.ESPTeamCheck and isSameTeam(plr)

        if plr and plr.Character and plr.Character:FindFirstChild("Head") and plr.Character:FindFirstChildOfClass("Humanoid") and not isTeam then
            local head = plr.Character.Head
            local humanoid = plr.Character.Humanoid
            gui.Adornee = head

            if State.ESP then
                local showAny = false
                local infoText = ""
                if State.ShowNames then
                    data.name.Text = plr.Name
                    data.name.Visible = true
                    showAny = true
                else
                    data.name.Visible = false
                end
                if State.ShowHealth then
                    infoText = math.floor(humanoid.Health) .. " HP"
                end
                if State.ShowDistance then
                    if infoText ~= "" then infoText = infoText .. " | " end
                    infoText = infoText .. math.floor((head.Position - camera.CFrame.Position).Magnitude) .. "m"
                end
                data.info.Text = infoText
                data.info.Visible = infoText ~= ""
                if infoText ~= "" then showAny = true end
                gui.Enabled = showAny
            else
                gui.Enabled = false
            end

            for _, o in ipairs(outlineHighlights) do
                if o.plr == plr then
                    if State.ESP and State.OutlineGlow and not isTeam then
                        o.highlight.Adornee = plr.Character
                        o.highlight.Enabled = true
                    else
                        o.highlight.Enabled = false
                    end
                end
            end

            if State.ESP and State.ShowSkeleton and not isTeam then
                if shouldUpdate then drawSkeletonForPlayer(plr) end
            else
                if skeletonDrawings[plr] then clearSkeletonForPlayer(plr) end
            end
        else
            gui.Enabled = false
            for _, o in ipairs(outlineHighlights) do
                if o.plr == plr then o.highlight.Enabled = false end
            end
            if skeletonDrawings[plr] then clearSkeletonForPlayer(plr) end
        end
    end

    if shouldUpdate then skeletonUpdateCounter = 0 end
    if not State.ESP or not State.ShowSkeleton then clearAllSkeletons() end
end)

local function SwitchTab(newTab)
    if CurrentTab == newTab then return end
    CurrentTab = newTab

    for name, tab in pairs(Tabs) do
        if name == newTab then
            TweenService:Create(tab, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
            TweenService:Create(tab, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {TextColor3 = Color3.fromRGB(255, 255, 255)}):Play()
            local ind = Indicators[name]
            ind.Visible = true
            ind.Size = UDim2.new(0, 0, 0.6, 0)
            TweenService:Create(ind, TweenInfo.new(0.45, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, 3, 0.6, 0)}):Play()
            Pages[name].Visible = true
            Pages[name].Position = UDim2.new(0, 30, 0, 0)
            TweenService:Create(Pages[name], TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Position = UDim2.new(0, 0, 0, 0)}):Play()
        else
            TweenService:Create(tab, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {BackgroundColor3 = Color3.fromRGB(25, 25, 25)}):Play()
            TweenService:Create(tab, TweenInfo.new(0.4, Enum.EasingStyle.Sine), {TextColor3 = Color3.fromRGB(180, 180, 180)}):Play()
            Indicators[name].Visible = false
            Pages[name].Visible = false
        end
    end
end

for name, tab in pairs(Tabs) do
    tab.MouseButton1Click:Connect(function()
        SwitchTab(name)
    end)
end

local toggleCallbacks = {
    ["Infinite Jump"] = function(s) State.InfiniteJump = s end,
    ["Noclip"] = function(s) State.Noclip = s; if s then noclip() else clip() end end,
    ["Fullbright"] = function(s) State.Fullbright = s; if s then startFullbright() else stopFullbright() end end,
    ["Speedhack"] = function(s) State.Speedhack = s; applySpeed() end,
    ["ESP Enabled"] = function(s) State.ESP = s end,
    ["ESP Team Check"] = function(s) State.ESPTeamCheck = s end,
    ["Show Names"] = function(s) State.ShowNames = s end,
    ["Show Health"] = function(s) State.ShowHealth = s end,
    ["Show Distance"] = function(s) State.ShowDistance = s end,
    ["Outline Glow"] = function(s) State.OutlineGlow = s end,
    ["Show Skeleton"] = function(s) State.ShowSkeleton = s end,
    ["Show BaseCamp"] = function(s)
        if s then EnableLocation("BaseCamp", "BaseCamp") else DisableLocation("BaseCamp") end
    end,
    ["Show ObservationTower"] = function(s)
        if s then EnableLocation("ObservationTower", "ObservationTower") else DisableLocation("ObservationTower") end
    end,
    ["Show PowerStation"] = function(s)
        if s then EnableLocation("PowerStation", "PowerStation") else DisableLocation("PowerStation") end
    end,
    ["Show SafeHouse"] = function(s)
        if s then EnableLocation("SafeHouse", "SafeHouse") else DisableLocation("SafeHouse") end
    end,
    ["Show Rake"] = function(s)
        State.ShowRake = s
        if s then startRakeESP() else stopRakeESP() end
    end,
}

for name, data in pairs(Toggles) do
    data.btn.MouseButton1Click:Connect(function()
        local newState = not data.state
        UpdateToggleByName(name, newState)
        local cb = toggleCallbacks[name]
        if cb then cb(newState) end
    end)
end

local dragging = false
local dragInput
local mousePos
local framePos

Header.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        mousePos = input.Position
        framePos = MainFrame.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

Header.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragging then
        local delta = input.Position - mousePos
        MainFrame.Position = UDim2.new(framePos.X.Scale, framePos.X.Offset + delta.X, framePos.Y.Scale, framePos.Y.Offset + delta.Y)
    end
end)

MinimizeBtn.MouseButton1Click:Connect(function()
    TweenService:Create(MainFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {
        Size = UDim2.new(0, 0, 0, 0)
    }):Play()
    task.wait(0.4)
    MainFrame.Visible = false
    FloatingBtn.Visible = true
    FloatingBtn.Size = UDim2.new(0, 0, 0, 0)
    TweenService:Create(FloatingBtn, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
        Size = UDim2.new(0, 50, 0, 50)
    }):Play()
end)

CloseBtn.MouseButton1Click:Connect(function()
    State.InfiniteJump = false
    State.Noclip = false
    State.Fullbright = false
    State.Speedhack = false
    State.ESP = false
    State.ShowSkeleton = false
    State.ShowRake = false

    if Connections.Noclip then Connections.Noclip:Disconnect() Connections.Noclip = nil end
    if Connections.Fullbright then Connections.Fullbright:Disconnect() Connections.Fullbright = nil end

    stopRakeESP()

    ClipFlag = true
    if player.Character then
        for _, v in pairs(player.Character:GetDescendants()) do
            if v:IsA("BasePart") then
                v.CanCollide = true
            end
        end
    end

    if player.Character then
        local head = player.Character:FindFirstChild("Head")
        if head then
            local light = head:FindFirstChild("SurislamClientFullbright")
            if light then light:Destroy() end
        end
        local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
        if humanoid then
            humanoid.WalkSpeed = 16
        end
    end

    clearAllSkeletons()
    DisableAllLocations()

    for _, data in ipairs(espLabels) do
        pcall(function() data.gui:Destroy() end)
    end
    espLabels = {}

    for _, data in ipairs(outlineHighlights) do
        pcall(function() data.highlight:Destroy() end)
    end
    outlineHighlights = {}

    if espHolder then
        espHolder:Destroy()
        espHolder = nil
    end

    ScreenGui:Destroy()
end)

Features & Information

[ + ] - Rake ESP [ + ] - Players ESP [ + ] - Infinite Jumps [ + ] - Speedhack [ + ] - Building Locations [ + ] - Noclip [ + ] - Fullbright
#Rake#ESP#Location#Speedhack

Community Comments (0)

No comments yet for this script.

More Scripts for The Rake REMASTERED