-- Initializing the UI
local Venyx = loadstring(game:HttpGet("https://[Log in to view URL]"))()
local UI = Venyx.new({
    title = "Express Hub | Free ELRC Script" -- Title of the UI
})

-- Display a notification
UI:Notify({
    title = "Success", -- Title of the notification
    context = "",      -- Context or message of the notification
    callback = function(accepted)
        -- Handle notification response if needed
    end
})










local VehiclePage = UI:addPage({
    title = "Vehicle",  -- Title of the page
    icon = 1234567890     -- Asset ID for the page icon (optional)
})



local AccelerationSection = VehiclePage:addSection({
    title = "Acceleration"-- Title of the section
})




local vMult = 0.025
local accEnabled = false
local UserInputService = game:GetService("UserInputService")
local isAccelerating = false -- Track if "W" is pressed

-- Toggle for acceleration
AccelerationSection:addToggle({
    title = "Acceleration Enabled",
    default = accEnabled,
    callback = function(value)
        accEnabled = value
    end    
})

-- Slider for speed multiplier
AccelerationSection:addSlider({
    title = "Speed Multiplier",
    min = 0,
    max = 50,
    default = 25,
    color = Color3.fromRGB(255, 255, 255),
    increment = 1,
    valueName = "Multiplier",
    callback = function(value)
        vMult = value / 1000  -- Update velocity multiplier
    end    
})

-- Input handling for acceleration
UserInputService.InputBegan:Connect(function(input, processed)
    if processed then return end
    if input.KeyCode == Enum.KeyCode.W then
        isAccelerating = true
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.W then
        isAccelerating = false
    end
end)

-- Connect to RunService for acceleration logic
game:GetService("RunService").Stepped:Connect(function()
    if accEnabled and isAccelerating then
        local player = game.Players.LocalPlayer
        local char = player.Character

        if char and char:IsA("Model") then
            local hum = char:FindFirstChildWhichIsA("Humanoid")
            if hum then
                local seat = hum.SeatPart
                if seat and seat:IsA("VehicleSeat") then
                    -- Modify AssemblyLinearVelocity only when "W" is held down
                    local currentVelocity = seat.AssemblyLinearVelocity
                    seat.AssemblyLinearVelocity = currentVelocity * Vector3.new(1 + vMult, 1, 1 + vMult)
                end
            end
        end
    end
end)

-- Deceleration Section
local vMult2 = 0.15
local brakeEnabled = false
local braking = false

local DecelerationSection = VehiclePage:addSection({
    title = "Deceleration"
})

DecelerationSection:addToggle({
    title = "Instant Brake Enable",
    default = brakeEnabled,
    callback = function(value)
        brakeEnabled = value
    end    
})

DecelerationSection:addSlider({
    title = "Instant Brake",
    min = 0,
    max = 300,
    default = vMult2 * 1000,
    color = Color3.fromRGB(255, 255, 255),
    increment = 1,
    valueName = "Brake Force",
    callback = function(value)
        vMult2 = value / 1000
    end    
})

-- Keybind for braking
local quickBrakeKey = Enum.KeyCode.S
UserInputService.InputBegan:Connect(function(input, processed)
    if processed then return end
    if input.KeyCode == quickBrakeKey then
        braking = true
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.KeyCode == quickBrakeKey then
        braking = false
    end
end)

-- Connect to RunService for braking logic
game:GetService("RunService").Stepped:Connect(function()
    if brakeEnabled then
        local player = game.Players.LocalPlayer
        local char = player.Character
        
        if char and char:IsA("Model") then
            local hum = char:FindFirstChildWhichIsA("Humanoid")
            if hum then
                local seat = hum.SeatPart
                if seat and seat:IsA("VehicleSeat") then
                    if braking then
                        local currentVelocity = seat.AssemblyLinearVelocity
                        seat.AssemblyLinearVelocity = currentVelocity * Vector3.new(1 - vMult2, 1, 1 - vMult2)
                    end
                end
            end
        end
    end
end)





local FSec = VehiclePage:addSection({
    title = "Flight"
})

local P = game:GetService("Players")
local R = game:GetService("RunService")
local U = game:GetService("UserInputService")
local LP = P.LocalPlayer

local T = {
    BG = Color3.fromRGB(61, 60, 124), 
    G = Color3.fromRGB(60, 63, 221), 
    A = Color3.fromRGB(55, 52, 90), 
    LC = Color3.fromRGB(64, 65, 128), 
    DC = Color3.fromRGB(32, 33, 64),  
    TC = Color3.fromRGB(255, 255, 255)
}

local function GetVeh(D)
    return D:FindFirstAncestor(LP.Name .. "'s Car") or
           (D:FindFirstAncestor("Body") and D:FindFirstAncestor("Body").Parent) or
           (D:FindFirstAncestor("Misc") and D:FindFirstAncestor("Misc").Parent) or
           D:FindFirstAncestorWhichIsA("Model")
end

local function TeleportVeh(CF)
    local Parent = LP.Character.Parent
    local V = GetVeh(LP.Character:FindFirstChildWhichIsA("Humanoid").SeatPart)
    LP.Character.Parent = V
    local success, response = pcall(function()
        return V:SetPrimaryPartCFrame(CF)
    end)
    if not success then
        return V:MoveTo(CF.Position)
    end
end

-- Flight Control
local flightOn = false
local flightV = 1

FSec:addToggle({
    title = "Flight Enabled",
    default = flightOn,
    callback = function(value)
        flightOn = value
    end    
})

FSec:addSlider({
    title = "Flight Speed",
    min = 0,
    max = 800,
    default = 100,
    color = Color3.fromRGB(255, 255, 255),
    increment = 1,
    valueName = "Speed",
    callback = function(value)
        flightV = value / 100
    end    
})

local defaultParent
R.Stepped:Connect(function()
    local Char = LP.Character
    if flightOn then
        if Char and typeof(Char) == "Instance" then
            local Hum = Char:FindFirstChildWhichIsA("Humanoid")
            if Hum then
                local Seat = Hum.SeatPart
                if Seat and Seat:IsA("VehicleSeat") then
                    local Veh = GetVeh(Seat)
                    if Veh and Veh:IsA("Model") then
                        Char.Parent = Veh
                        if not Veh.PrimaryPart then
                            if Seat.Parent == Veh then
                                Veh.PrimaryPart = Seat
                            else
                                Veh.PrimaryPart = Veh:FindFirstChildWhichIsA("BasePart")
                            end
                        end
                        local PrimaryCFrame = Veh:GetPrimaryPartCFrame()
                        Veh:SetPrimaryPartCFrame(CFrame.new(PrimaryCFrame.Position, PrimaryCFrame.Position + workspace.CurrentCamera.CFrame.LookVector) * 
                            (U:GetFocusedTextBox() and CFrame.new(0, 0, 0) or CFrame.new(
                                (U:IsKeyDown(Enum.KeyCode.D) and flightV) or (U:IsKeyDown(Enum.KeyCode.A) and -flightV) or 0, 
                                (U:IsKeyDown(Enum.KeyCode.E) and flightV / 2) or (U:IsKeyDown(Enum.KeyCode.Q) and -flightV / 2) or 0, 
                                (U:IsKeyDown(Enum.KeyCode.S) and flightV) or (U:IsKeyDown(Enum.KeyCode.W) and -flightV) or 0
                            )))
                        Seat.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
                        Seat.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
                    end
                end
            end
        end
    else
        if Char and typeof(Char) == "Instance" then
            Char.Parent = defaultParent or Char.Parent
            defaultParent = Char.Parent
        end
    end
end)













local TrollingPage = UI:addPage({
    title = "Trolling",  -- Title of the page
    icon = 1234567890     -- Asset ID for the page icon (optional)
})





local FirstPersonSection = TrollingPage:addSection({
    title = "First Person Fly" -- Title of the section
})





local userInputService = game:GetService("UserInputService")
local runService = game:GetService("RunService")
local player = game.Players.LocalPlayer
local camera = game.Workspace.CurrentCamera

-- Define variables
local flying = false
local flyingEnabled = false
local toggleKey = Enum.KeyCode.X
local flySpeed = 50
local currentFlyCFrame -- Variable to store the current CFrame while flying

-- Function to teleport the player to a specified CFrame
local function teleportToLocation(cframe)
    local character = player.Character
    local humanoidRootPart = character and character:FindFirstChild("HumanoidRootPart")
    if humanoidRootPart then
        humanoidRootPart.CFrame = cframe
    end
end

-- Function to toggle flying mode
local function toggleFly()
    if flyingEnabled then
        flying = not flying
        if flying then
            -- Start flying
            if player.Character then
                local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
                if humanoidRootPart then
                    currentFlyCFrame = humanoidRootPart.CFrame -- Store the current CFrame while flying
                    humanoidRootPart.Anchored = true
                    for _, part in pairs(player.Character:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.CanCollide = false
                            part.Transparency = 1
                        end
                    end
                end
            end

            -- Lock the camera in the center
            camera.CameraType = Enum.CameraType.Scriptable
            userInputService.ModalEnabled = true

        else
            -- Stop flying
            if player.Character then
                local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
                if humanoidRootPart then
                    humanoidRootPart.Anchored = false
                    teleportToLocation(currentFlyCFrame) -- Teleport to the current CFrame
                    for _, part in pairs(player.Character:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.CanCollide = true
                            part.Transparency = 0
                        end
                    end
                end
            end

            camera.CameraType = Enum.CameraType.Custom
            camera.CameraSubject = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
            userInputService.ModalEnabled = false
        end
    end
end

-- Update camera position and rotation while flying
local function onRenderStepped()
    if flying then
        local moveDirection = Vector3.new()

        -- Forward and backward movement
        if userInputService:IsKeyDown(Enum.KeyCode.W) then
            moveDirection = moveDirection + camera.CFrame.LookVector
        end
        if userInputService:IsKeyDown(Enum.KeyCode.S) then
            moveDirection = moveDirection - camera.CFrame.LookVector
        end

        -- Left and right movement
        if userInputService:IsKeyDown(Enum.KeyCode.A) then
            moveDirection = moveDirection - camera.CFrame.RightVector
        end
        if userInputService:IsKeyDown(Enum.KeyCode.D) then
            moveDirection = moveDirection + camera.CFrame.RightVector
        end

        -- Up and down movement
        if userInputService:IsKeyDown(Enum.KeyCode.E) then
            moveDirection = moveDirection + Vector3.new(0, 1, 0)
        end
        if userInputService:IsKeyDown(Enum.KeyCode.Q) then
            moveDirection = moveDirection + Vector3.new(0, -1, 0)
        end

        -- Normalize moveDirection to avoid faster diagonal movement
        if moveDirection.Magnitude > 0 then
            moveDirection = moveDirection.Unit
        end

        -- Update the camera's position
        local movement = moveDirection * flySpeed
        camera.CFrame = camera.CFrame + movement

        -- Mouse-controlled rotation
        local mouseDelta = userInputService:GetMouseDelta()
        local yaw = CFrame.Angles(0, -math.rad(mouseDelta.X * 0.1), 0)
        local pitch = CFrame.Angles(-math.rad(mouseDelta.Y * 0.1), 0, 0)

        -- Apply rotation to the camera
        camera.CFrame = camera.CFrame * yaw * pitch
    end
end

-- Function to handle mouse button events
local function onInputBegan(input)
    if input.UserInputType == Enum.UserInputType.MouseButton2 then
        rotating = true
    end
end

local function onInputEnded(input)
    if input.UserInputType == Enum.UserInputType.MouseButton2 then
        rotating = false
    end
end

-- Connect to input and render events
userInputService.InputBegan:Connect(onInputBegan)
userInputService.InputEnded:Connect(onInputEnded)
runService.RenderStepped:Connect(onRenderStepped)

-- Handle the toggle functionality
FirstPersonSection:addToggle({
    title = "Enable First Person Fly",
    default = false,
    callback = function(value)
        flyingEnabled = value
        if not flyingEnabled then
            flying = false
            camera.CameraType = Enum.CameraType.Custom
            camera.CameraSubject = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
            userInputService.ModalEnabled = false

            if player.Character then
                local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
                if humanoidRootPart then
                    humanoidRootPart.Anchored = false
                    for _, part in pairs(player.Character:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.CanCollide = true
                            part.Transparency = 0
                        end
                    end
                end
            end
        end
    end
})

-- Handle the keybind functionality
FirstPersonSection:addKeybind({ 
    title = "Fly Keybind",
    key = toggleKey,
    callback = function()
        toggleFly()
    end,
    changedCallback = function(key)
        toggleKey = key
        print("Changed Keybind to", key)
    end
})

-- Handle the speed slider functionality
FirstPersonSection:addSlider({
    title = "Adjust Fly Speed",
    default = flySpeed,
    min = 1,
    max = 100,
    callback = function(value)
        flySpeed = value
        print("Fly Speed:", value)
    end
})

-- Ensure character model is updated when respawned
player.CharacterAdded:Connect(function(character)
    character.PrimaryPart = character:WaitForChild("HumanoidRootPart")
end)

-- Fix to ensure we don't leave the HumanoidRootPart anchored
runService.RenderStepped:Connect(function()
    if flying and player.Character then
        local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
        if humanoidRootPart then
            humanoidRootPart.Anchored = true
        end
    end
end)












-- Create the Teleportation Page
local TeleportationPage = UI:addPage({
    title = "Teleportation", -- Title of the page
    icon = 1234567890       -- Asset ID for the page icon (optional)
})





-- Create a Section for Waypoints
local WaypointSection = TeleportationPage:addSection({
    title = "Waypoint" -- Title of the section
})

-- Define variable to store the copied CFrame
local savedCFrame = nil

-- Button to save the user's current CFrame
WaypointSection:addButton({
    title = "Make new Waypoint",
    callback = function()
        local player = game.Players.LocalPlayer
        local character = player.Character or player.CharacterAdded:Wait()
        if character and character:FindFirstChild("HumanoidRootPart") then
            savedCFrame = character.HumanoidRootPart.CFrame
            print("New waypoint saved at: " .. tostring(savedCFrame))
        else
            warn("HumanoidRootPart not found!")
        end
    end
})

-- Button to teleport to the saved CFrame
WaypointSection:addButton({
    title = "Teleport to Waypoint",
    callback = function()
        if savedCFrame then
            local player = game.Players.LocalPlayer
            local character = player.Character or player.CharacterAdded:Wait()
            if character and character:FindFirstChild("HumanoidRootPart") then
                -- Teleport smoothly by tweening the CFrame
                local tweenService = game:GetService("TweenService")
                local humanoidRootPart = character.HumanoidRootPart
                local teleportTween = tweenService:Create(humanoidRootPart, TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {CFrame = savedCFrame})

                teleportTween:Play()
                teleportTween.Completed:Wait()
                print("Teleported to waypoint.")
            else
                warn("HumanoidRootPart not found!")
            end
        else
            warn("No waypoint has been set!")
        end
    end
})













local PlayerTeleportSection = TeleportationPage:addSection({
    title = "Player Teleport" -- Title of the section
})


local players = {}
local Select = nil

-- Function to update the players list
local function updatePlayersList()
    table.clear(players)
    for _, player in pairs(game:GetService("Players"):GetChildren()) do
        table.insert(players, player.Name)
    end
end


-- Initial population of the players list
updatePlayersList()


-- Dropdown for selecting a player
PlayerTeleportSection:addDropdown({
    title = "Select Player",  -- Title of the dropdown
    list = players,           -- List of players
    callback = function(value)
        print("Dropdown selected:", value)  -- Print the selected value
        Select = value                       -- Store the selected value
    end
})

-- Teleport button to teleport to selected player
PlayerTeleportSection:addButton({
    title = "Teleport!",  -- Title of the button
    description = " ",   -- Description (can be adjusted as needed)
    callback = function()
        if Select and game.Players:FindFirstChild(Select) then
            local targetPlayer = game.Players[Select]
            -- Wait for the target player's character to load
            if targetPlayer and targetPlayer.Character then
                local targetHumanoidRootPart = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
                
                if targetHumanoidRootPart then
                    -- Teleport the local player
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = targetHumanoidRootPart.CFrame
                else
                    print("Target player's HumanoidRootPart is not available.")
                end
            else
                print("Target player's character is not available.")
            end
        else
            print("Player not found or not selected.")
        end
    end
})

-- Refresh button to update players list
PlayerTeleportSection:addButton({
    title = "Refresh Player List",  -- Title of the button
    description = " ",   -- Description (can be adjusted as needed)
    callback = function()
        updatePlayersList()  -- Update the players list
    end
})















-- Create the Spawn Section
local SpawnSection = TeleportationPage:addSection({
    title = "Spawn" -- Title of the section
})

-- Add the Spawn Button
SpawnSection:addButton({
    title = "Spawn", -- Title of the button
    callback = function()
        -- Ensure the player and their character exist
        local player = game.Players.LocalPlayer
        if player and player.Character then
            local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
            if humanoidRootPart then
                -- Set the CFrame of the HumanoidRootPart to the specified coordinates
                humanoidRootPart.CFrame = CFrame.new(
                    -505.467957, 23.7107906, 652.503906, 
                    -0.99977529, 1.07727978e-08, -0.0211992487, 
                    9.80691262e-09, 1, 4.56662193e-08, 
                    0.0211992487, 4.54480578e-08, -0.99977529
                )
            end
        end
    end
})




-- Create the Criminal Section
local CriminalSection = TeleportationPage:addSection({
    title = "Criminal/Robbery Assitance" -- Title of the section
})

-- Add Dropdown Menu for Location Selector
CriminalSection:addDropdown({
    title = "Select Location",  -- Title of the dropdown
    list = {
        "None", 
        "Gun Store", 
        "Car Seller", 
        "Tool Store", 
        "Jewelry Store", 
        "Bank", 
        "Underground Bunker",  -- New location
        "Bounty Hunter"        -- New location
    }, -- List of options
    callback = function(value)
        local player = game.Players.LocalPlayer
        if player and player.Character then
            local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
            if humanoidRootPart then
                -- Define CFrames for each location
                local locations = {
                    None = nil,
                    ["Gun Store"] = CFrame.new(
                        -1198.71448, 23.2480125, -170.569321, 
                        0.731142402, -4.53885152e-09, -0.682224929, 
                        1.14018062e-09, 1, -5.4310787e-09, 
                        0.682224929, 3.19303206e-09, 0.731142402
                    ),
                    ["Car Seller"] = CFrame.new(
                        1624.4657, 3.82302451, -501.705902, 
                        0.408474684, -6.46358274e-08, 0.912769675, 
                        1.10165317e-08, 1, 6.5882837e-08, 
                        -0.912769675, -1.6855914e-08, 0.408474684
                    ),
                    ["Tool Store"] = CFrame.new(
                        -439.869232, 24.5106964, -715.560669, 
                        -0.865956128, 4.48093083e-08, -0.500119984, 
                        -1.10567413e-08, 1, 1.0874183e-07, 
                        0.500119984, 9.96953489e-08, -0.865956128
                    ),
                    ["Jewelry Store"] = CFrame.new(
                        -464.756714, 23.7106667, -411.026428, 
                        0.998576045, 4.38038744e-10, -0.0533464141, 
                        -2.77688805e-09, 1, -4.37685514e-08, 
                        0.0533464141, 4.38543637e-08, 0.998576045
                    ),
                    ["Bank"] = CFrame.new(
                        -1140.61011, 23.2476749, 449.233765, 
                        -0.0293217897, 1.06881526e-08, -0.999570012, 
                        5.65440361e-09, 1, 1.05268816e-08, 
                        0.999570012, -5.34330535e-09, -0.0293217897
                    ),
                    ["Underground Bunker"] = CFrame.new(
                        -1357.98584, 2.37512946, -1234.61914, 
                        -0.953902245, 5.52598145e-08, 0.300117463, 
                        4.44210784e-08, 1, -4.29380123e-08, 
                        -0.300117463, -2.76271255e-08, -0.953902245
                    ),
                    ["Bounty Hunter"] = CFrame.new(
                        2931.9292, 76.5576782, -776.82666, 
                        -0.891279995, 2.90516162e-08, -0.453453422, 
                        1.11739749e-10, 1, 6.38478497e-08, 
                        0.453453422, 5.68556402e-08, -0.891279995
                    ),
                }

                -- Get the selected location's CFrame
                local selectedCFrame = locations[value]
                
                -- Teleport the player to the selected location if CFrame is valid
                if selectedCFrame then
                    humanoidRootPart.CFrame = selectedCFrame
                end
            end
        end
    end    
})












local GasStationsSection = TeleportationPage:addSection({
    title = "Gas Stations" -- Title of the section
})

-- Define the CFrames for each gas station
local gasStationLocations = {
    ["Gas Station 1"] = CFrame.new(
        -977.28595, 23.2107048, 702.084229,
        -0.00783373136, 2.52783945e-08, 0.999969304,
        -3.2030826e-08, 1, -2.55300989e-08,
        -0.999969304, -3.22298384e-08, -0.00783373136
    ),
    ["Gas Station 2"] = CFrame.new(
        619.959778, 3.19807577, -1537.24841,
        0.119836323, 1.07668727e-08, -0.992793679,
        1.69497394e-08, 1, 1.2890963e-08,
        0.992793679, -1.83723987e-08, 0.119836323
    ),
    ["Gas Station 3"] = CFrame.new(
        2497.48755, -12.3789701, -1636.23853,
        0.999889612, 1.97213854e-08, -0.014856413,
        -1.86305709e-08, 1, 7.35621626e-08,
        0.014856413, -7.32772563e-08, 0.999889612
    ),
}

-- Add Dropdown Menu for Gas Stations with the new options
GasStationsSection:addDropdown({
    title = "Select an Option",  -- Title of the dropdown
    list = {"Gas Station 1", "Gas Station 2", "Gas Station 3"}, -- List of options
    callback = function(selectedOption)
        print("Dropdown selected:", selectedOption)
        -- Handle the selected option here
        -- For example, if you want to teleport to a gas station
        if selectedOption ~= "None" then
            local locationCFrame = gasStationLocations[selectedOption]
            if locationCFrame then
                local player = game.Players.LocalPlayer
                if player and player.Character then
                    local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
                    if humanoidRootPart then
                        humanoidRootPart.CFrame = locationCFrame
                    else
                        print("HumanoidRootPart not found in player character")
                    end
                else
                    print("Player or player.Character not found")
                end
            else
                print("Location CFrame not found for:", selectedOption)
            end
        end
    end
})










local OtherSection = TeleportationPage:addSection({
    title = "Other" -- Title of the section
})

-- Define the CFrames for each location
local locations = {
    ["Hospital"] = CFrame.new(
        -141.743423, 23.3343201, -436.428162,
        0.999859035, 1.82984845e-08, 0.0167886484,
        -1.89841796e-08, 1, 4.06834424e-08,
        -0.0167886484, -4.09964258e-08, 0.999859035
    ),
    ["Postal Office"] = CFrame.new(
        647.735413, 3.6981535, -472.93866,
        -0.0911604762, 1.08815385e-07, -0.995836198,
        8.49627479e-09, 1, 1.084926e-07,
        0.995836198, 1.42933965e-09, -0.0911604762
    ),
    ["Police Station"] = CFrame.new(
        697.348633, 3.66067529, -118.044838,
        -0.998747885, 6.65068045e-09, 0.050027106,
        7.92670907e-09, 1, 2.53083474e-08,
        -0.050027106, 2.56732076e-08, -0.998747885
    ),
    ["Sherrifs Office"] = CFrame.new(
        1519.53967, -11.8770685, -1957.86328,
        -0.999998987, -1.23013488e-09, 0.00144022494,
        -1.3140059e-09, 1, -5.82336952e-08,
        -0.00144022494, -5.82355248e-08, -0.999998987
    ),
    ["Jail"] = CFrame.new(
        1341.18518, 3.6958375, -336.934052,
        0.999974728, -6.78301504e-08, 0.00710828975,
        6.83275871e-08, 1, -6.9737311e-08,
        -0.00710828975, 7.02212404e-08, 0.999974728
    ),
}

-- Function to handle smooth instant teleportation
local function teleportToLocation(targetCFrame)
    local player = game.Players.LocalPlayer
    if player and player.Character then
        local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
        if humanoidRootPart then
            -- Ensure the character is fully loaded and grounded before teleporting
            if player.Character:FindFirstChild("Humanoid") and player.Character:FindFirstChild("Humanoid").RootPart then
                -- Set the new CFrame
                humanoidRootPart.CFrame = targetCFrame
            else
                warn("Humanoid or RootPart not found!")
            end
        else
            warn("HumanoidRootPart not found!")
        end
    else
        warn("Player or Character not found!")
    end
end

-- Add Dropdown Menu with New Options
OtherSection:addDropdown({
    title = "Select an Option",  -- Title of the dropdown
    list = {"Hospital", "Postal Office", "Police Station","Sherrifs Office","Jail"}, -- List of options
    callback = function(selectedOption)
        print("Dropdown selected:", selectedOption)
        -- Handle the selected option here
        -- For example, if you want to teleport to a location
        -- You would need to map "Option 1", "Option 2", etc. to actual locations if needed
        -- Currently, it's just printing the selected option
        local locationCFrame = locations[selectedOption]
        if locationCFrame then
            teleportToLocation(locationCFrame)
        else
            print("CFrame for location not found for:", selectedOption)
        end
    end
})













local ATMSandHousesSection = TeleportationPage:addSection({
    title = "ATMS/Houses/Cars" -- Title of the section
})

-- Define ATM CFrames including a "None" option
local ATMs = {
    ["None"] = nil,  -- This entry signifies no movement should occur
    ["ATM 1"] = CFrame.new(-487.113312, 23.7480087, 444.513977, -0.999783933, -2.20798579e-08, -0.0207876563, -2.0967871e-08, 1, -5.37106075e-08, 0.0207876563, -5.3263129e-08, -0.999783933),
    ["ATM 2"] = CFrame.new(-375.451294, 23.7106667, 152.370117, 0.0204466879, -7.16725213e-09, -0.999790967, -7.801561e-08, 1, -8.76424533e-09, 0.999790967, 7.81785019e-08, 0.0204466879),
    ["ATM 3"] = CFrame.new(-585.005798, 23.2106667, -405.970154, 0.999496341, 7.55746932e-09, 0.031734243, -7.49425055e-09, 1, -2.11104734e-09, -0.031734243, 1.87215976e-09, 0.999496341),
    ["ATM 4"] = CFrame.new(-967.710693, 23.7415009, 830.593384, -0.999993563, -3.90976851e-09, -0.00358740473, -3.9136081e-09, 1, 1.06324782e-09, 0.00358740473, 1.0772806e-09, -0.999993563),
    ["ATM 5"] = CFrame.new(-1018.44458, 23.8422203, 440.476501, -0.999797702, -1.04781153e-08, 0.0201148633, -9.33078859e-09, 1, 5.71326311e-08, -0.0201148633, 5.69333842e-08, -0.999797702),
    ["ATM 6"] = CFrame.new(996.884644, 3.69802427, -25.2728481, -0.997444093, -2.96525346e-08, -0.0714514479, -2.35790072e-08, 1, -8.58456204e-08, 0.0714514479, -8.39414511e-08, -0.997444093),
    ["ATM 7"] = CFrame.new(1111.54565, 3.66068506, 372.539398, 0.0866908953, -8.42515391e-08, -0.996235251, -1.71123151e-08, 1, -8.60590106e-08, 0.996235251, 2.45084237e-08, 0.0866908953),
    ["ATM 8"] = CFrame.new(2486.30981, -11.8799753, -1737.61206, 0.998913169, 6.15962676e-08, 0.0466098711, -5.89835487e-08, 1, -5.7430448e-08, -0.0466098711, 5.46188161e-08, 0.998913169),
    ["ATM 9"] = CFrame.new(2613.8938, -11.9173918, -2093.91016, 0.998950422, -1.90768956e-10, -0.0458045267, 1.60884556e-10, 1, -6.56119936e-10, 0.0458045267, 6.48062048e-10, 0.998950422),
    ["ATM 10"] = CFrame.new(2558.21289, -11.917448, -2238.27271, 0.0294445287, 7.44225082e-09, -0.999566436, -2.31045654e-08, 1, 6.76488066e-09, 0.999566436, 2.28953585e-08, 0.0294445287)
}

-- Create a table of ATM names for dropdown options, ordered from 1 to 10 plus "None"
local ATMNames = {"None"}  -- Start with "None" option
for i = 1, 10 do
    table.insert(ATMNames, "ATM " .. i)
end

-- Add the dropdown menu
ATMSandHousesSection:addDropdown({
    title = "Select an ATM",
    list = ATMNames,
    callback = function(selectedATM)
        local cframe = ATMs[selectedATM]
        local player = game.Players.LocalPlayer
        if player and player.Character and player.Character.PrimaryPart then
            if cframe then
                -- Move player to the selected ATM's location
                player.Character:SetPrimaryPartCFrame(cframe)
            end
            -- If selectedATM is "None", no action is taken, and the player remains where they are
        end
        print("Dropdown selected:", selectedATM)
    end    
})

-- List of CFrames to teleport to
local cframes = {
    CFrame.new(1213.66626, 3.32743382, -1037.1488, 0.987790287, -1.74776282e-08, -0.155789584, 3.31574341e-08, 1, 9.80486732e-08, 0.155789584, -1.02017104e-07, 0.987790287),
    CFrame.new(1335.94849, 3.77058911, -959.160278, -0.985945821, -6.16276452e-08, -0.167065278, -7.00428942e-08, 1, 4.4478778e-08, 0.167065278, 5.55554038e-08, -0.985945821),
    CFrame.new(1247.6344, 3.77058911, -959.302368, -0.99265492, 1.98811438e-08, 0.120980047, 1.55285971e-08, 1, -3.69201842e-08, -0.120980047, -3.47703519e-08, -0.99265492),
    CFrame.new(-740.352539, -8.81006527, -1392.46228, -0.99898994, -8.37003977e-09, -0.0449338965, -4.11223189e-09, 1, -9.48495824e-08, 0.0449338965, -9.45689962e-08, -0.99898994),
    CFrame.new(-995.86908, -9.05234528, -1529.20886, 0.999989569, -1.92240872e-08, 0.0045716376, 1.95222043e-08, 1, -6.5165267e-08, -0.0045716376, 6.5253829e-08, 0.999989569),
    CFrame.new(-1389.63306, -8.81006527, -1731.40063, 0.855655253, 6.4681891e-09, 0.517546237, 1.11399991e-08, 1, -3.09154764e-08, -0.517546237, 3.22184519e-08, 0.855655253),
    CFrame.new(-1149.17969, -9.05234432, -1752.32886, -0.998203456, -1.04891285e-09, -0.0599154346, -7.17963078e-10, 1, -5.54514212e-09, 0.0599154346, -5.49216317e-09, -0.998203456),
    CFrame.new(-726.539124, -8.81006527, -1889.41162, 0.999535441, 8.5560814e-10, -0.0304784086, -1.01324049e-09, 1, -5.15648946e-09, 0.0304784086, 5.184976e-09, 0.999535441),
    CFrame.new(-493.500732, -7.44760752, -1872.88318, 0.999964535, -7.50357785e-08, 0.00842297077, 7.51620206e-08, 1, -1.46714711e-08, -0.00842297077, 1.53040389e-08, 0.999964535),
    CFrame.new(-146.703461, -7.44792271, -1509.40649, 0.995531142, 7.58703766e-09, -0.0944337696, -5.90913229e-09, 1, 1.80476984e-08, 0.0944337696, -1.74090236e-08, 0.995531142)
}

-- Function to teleport the player to a random CFrame
local function teleportToRandomCFrame()
    local player = game.Players.LocalPlayer
    if not player or not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        warn("Player or HumanoidRootPart not found")
        return
    end

    local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
    if not humanoidRootPart then
        warn("")
        return
    end

    local randomIndex = math.random(1, #cframes)
    local targetCFrame = cframes[randomIndex]
    
    humanoidRootPart.CFrame = targetCFrame
end

-- Add the button and its functionality
ATMSandHousesSection:addButton({
    title = "Random Houses",
    callback = function()
        teleportToRandomCFrame()
        print("")
    end    
})

















local UtilitiesPage = UI:addPage({
    title = "Utilities",  -- Title of the page
    icon = 1234567890     -- Asset ID for the page icon (optional)
})




local PremiumSection = UtilitiesPage:addSection({
    title = "Locked! This page is only for premium buyers!" -- Title of the section
})

PremiumSection:addTextbox({
    title = "Join the discord down below to purchase premium!",   -- Title of the textbox
    default = "",    -- Default text
    callback = function(text, focusLost)
        if focusLost then
            print("Text entered:", text)
        end
    end
})


PremiumSection:addButton({
    title = "Join Discord!", -- Title of the button
    callback = function()
        -- Copy the Discord link to the clipboard
        setclipboard("https://[Log in to view URL]")

        -- Show the notification
        UI:Notify({
            title = "Copied!",
            context = "",
            callback = function(accepted)
                if accepted then
                    print("Notification accepted")
                else
                    print("Notification cancelled")
                end
            end
        })
    end
})







local ExtraPage = UI:addPage({
    title = "Extra",  -- Title of the page
    icon = 1234567890     -- Asset ID for the page icon (optional)
})





local OtherSection = ExtraPage:addSection({
    title = "Other" -- Title of the section
})





OtherSection:addButton({
    title = "Fast Reset", -- Title of the button
    callback = function()
        -- LocalScript (typically placed in StarterPlayerScripts or StarterCharacterScripts)

local player = game.Players.LocalPlayer

-- Ensure the player's character and humanoid are loaded
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

-- Set the health to zero
humanoid.Health = 0
    end
})


OtherSection:addButton({
    title = "Teleport to Local Wanted Players", -- Title of the button
    callback = function()
        -- Use a coroutine to handle the button logic
        coroutine.wrap(function()
            pcall(function()
                -- Ensure the game is fully loaded before proceeding
                repeat wait() until game:IsLoaded()

                -- Get the local player reference
                local plr = game.Players.LocalPlayer

                -- Function to arrest a target player
                local function ArrestPlayer(target)
                    -- Initialize a counter to limit the number of attempts
                    local count = 0

                    -- Check if the target is valid and within limits
                    while target and target.Character and target.Character:FindFirstChild("Humanoid") and
                          target.Character.Humanoid.WalkSpeed > 0 and 
                          target.Character.Humanoid.Health > 0.1 and 
                          target:FindFirstChild("Is_Wanted") and 
                          count < 50 do

                        -- Increment the attempt counter
                        count = count + 1
                        wait(0.1)

                        -- Calculate the position behind the target
                        if target.Character and target.Character.PrimaryPart and plr.Character and plr.Character.PrimaryPart then
                            local targetPosition = target.Character.PrimaryPart.Position
                            local direction = (plr.Character.PrimaryPart.Position - targetPosition).unit
                            local behindPosition = targetPosition + (direction * 5) -- Adjust the distance as needed

                            -- Move the player to the position behind the target
                            plr.Character:SetPrimaryPartCFrame(CFrame.new(behindPosition))

                            -- Check if the player is now at the arrest position
                            if (plr.Character.PrimaryPart.Position - targetPosition).magnitude < 10 then
                                -- Create the Handcuff arguments and invoke the server
                                local args = {
                                    [1] = "Handcuff",
                                    [2] = target
                                }
                                game:GetService("ReplicatedStorage").FE.Handcuffs:InvokeServer(unpack(args))
                            end
                        end
                    end

                    -- Final attempt to arrest the player
                    if target and target.Character and target.Character.PrimaryPart then
                        local args = {
                            [1] = "Arrest",
                            [2] = target
                        }
                        game:GetService("ReplicatedStorage").FE.Handcuffs:InvokeServer(unpack(args))
                    end
                end

                -- Function to get all wanted players in the game
                local function GetWantedPlayers()
                    local wanted = {}

                    -- Check each player to see if they have the "Is_Wanted" property
                    for _, a in pairs(game.Players:GetPlayers()) do
                        if a:FindFirstChild("Is_Wanted") then
                            table.insert(wanted, a)
                        end
                    end

                    return wanted
                end

                -- Check if there are any wanted players
                local wantedPlayers = GetWantedPlayers()
                if #wantedPlayers > 0 then
                    -- Switch to Police team if not already in it
                    if plr.Team.Name ~= "Police" then
                        local args = {
                            [1] = BrickColor.new(102), -- Team color for Police
                            [2] = tostring(math.random(1000, 9999)) -- Random team code
                        }
                        game:GetService("ReplicatedStorage").FE.TeamChange:FireServer(unpack(args))
                        wait(6) -- Wait for the team change to take effect
                    end

                    -- Ensure the player is on the Police team before arresting
                    if plr.Team.Name == "Police" then
                        for _, v in pairs(wantedPlayers) do
                            if v.Character and v.Character.PrimaryPart then
                                ArrestPlayer(v) -- Attempt to arrest each wanted player
                            end
                        end
                    end
                else
                    print("No Local Wanted Players Found")
                    -- You can also use a notification here if you have one set up
                end

                print("Script finished successfully.")
            end)
        end)() -- Start the coroutine
    end
})






local ServerHopSection = ExtraPage:addSection({
    title = "Server Hop" -- Title of the section
})


local Http = game:GetService("HttpService")
local TPS = game:GetService("TeleportService")
local Players = game:GetService("Players")

local Api = "https://[Log in to view URL]"
local _place = game.PlaceId
local _servers = Api.._place.."/servers/Public?sortOrder=Asc&limit=100"

-- Variable to store desired player count
local DesiredPlayerCount = 3

-- Function to list servers with optional cursor for pagination
function ListServers(cursor)
    local Raw = game:HttpGet(_servers .. ((cursor and "&cursor="..cursor) or ""))
    return Http:JSONDecode(Raw)
end

-- Function to teleport to a server with the desired number of players
local function TeleportToServer()
    local Server, Next
    repeat
        local Servers = ListServers(Next)
        for _, s in ipairs(Servers.data) do
            if s.playing <= DesiredPlayerCount then
                Server = s
                break
            end
        end
        Next = Servers.nextPageCursor
    until Server or not Next

    if Server then
        TPS:TeleportToPlaceInstance(_place, Server.id, Players.LocalPlayer)
    else
        warn("No suitable server found with "..DesiredPlayerCount.." or fewer players.")
    end
end

-- UI Section to add slider and button
local Section = ... -- Replace with the appropriate section from your UI library

-- Add a slider to adjust the desired player count
ServerHopSection:addSlider({
    title = "Desired Players",
    default = 3,
    min = 1,
    max = 100,
    callback = function(value)
        DesiredPlayerCount = value
        print("Desired player count set to:", value)
    end
})

-- Add a button to teleport to the server
ServerHopSection:addButton({
    title = "Teleport",
    callback = function()
        print("Searching for a server with", DesiredPlayerCount, "or fewer players...")
        TeleportToServer()
    end
})











local AutoRobPage = UI:addPage({
    title = "AutoRob",  -- Title of the page
    icon = 1234567890     -- Asset ID for the page icon (optional)
})




local PremiumSection = AutoRobPage:addSection({
    title = "Locked! This page is only for premium buyers!" -- Title of the section
})

PremiumSection:addTextbox({
    title = "Join the discord down below to purchase premium!",   -- Title of the textbox
    default = "",    -- Default text
    callback = function(text, focusLost)
        if focusLost then
            print("Text entered:", text)
        end
    end
})


PremiumSection:addButton({
    title = "Join Discord!", -- Title of the button
    callback = function()
        -- Copy the Discord link to the clipboard
        setclipboard("https://[Log in to view URL]")

        -- Show the notification
        UI:Notify({
            title = "Copied!",
            context = "",
            callback = function(accepted)
                if accepted then
                    print("Notification accepted")
                else
                    print("Notification cancelled")
                end
            end
        })
    end
})





















local ESPPage = UI:addPage({
    title = "ESP",  -- Title of the page
    icon = 1234567890     -- Asset ID for the page icon (optional)
})



local EspsSection = ESPPage:addSection({
    title = "Esps" -- Title of the section
})


-- Declare a variable to track the ESP state
local isESPEnabled = false

-- Function to enable ESP
local function enableESP()
    local Holder = Instance.new("Folder", game.CoreGui)
    Holder.Name = "ESP"

    local Box = Instance.new("BoxHandleAdornment")
    Box.Name = "nilBox"
    Box.Size = Vector3.new(1, 2, 1)
    Box.Color3 = Color3.new(100 / 255, 100 / 255, 100 / 255)
    Box.Transparency = 0.7
    Box.ZIndex = 0
    Box.AlwaysOnTop = false
    Box.Visible = false

    local NameTag = Instance.new("BillboardGui")
    NameTag.Name = "nilNameTag"
    NameTag.Enabled = false
    NameTag.Size = UDim2.new(0, 200, 0, 50)
    NameTag.AlwaysOnTop = true
    NameTag.StudsOffset = Vector3.new(0, 1.8, 0)
    
    local Tag = Instance.new("TextLabel", NameTag)
    Tag.Name = "Tag"
    Tag.BackgroundTransparency = 1
    Tag.Position = UDim2.new(0, -50, 0, 0)
    Tag.Size = UDim2.new(0, 300, 0, 20)
    Tag.TextSize = 20
    Tag.TextColor3 = Color3.new(100 / 255, 100 / 255, 100 / 255)
    Tag.TextStrokeColor3 = Color3.new(0 / 255, 0 / 255, 0 / 255)
    Tag.TextStrokeTransparency = 0.4
    Tag.Text = ""
    Tag.Font = Enum.Font.SourceSansBold
    Tag.TextScaled = false

    local function LoadCharacter(v)
        repeat wait() until v.Character ~= nil
        v.Character:WaitForChild("Humanoid")
        
        local vHolder = Holder:FindFirstChild(v.Name) or Instance.new("Folder", Holder)
        vHolder.Name = v.Name
        vHolder:ClearAllChildren()

        local b = Box:Clone()
        b.Name = v.Name .. "Box"
        b.Adornee = v.Character
        b.Parent = vHolder
        
        local t = NameTag:Clone()
        t.Name = v.Name .. "NameTag"
        t.Enabled = true
        t.Parent = vHolder
        t.Adornee = v.Character:WaitForChild("Head", 5)

        if not t.Adornee then
            return UnloadCharacter(v)
        end

        t.Tag.Text = v.Name
        b.Color3 = Color3.new(v.TeamColor.r, v.TeamColor.g, v.TeamColor.b)
        t.Tag.TextColor3 = Color3.new(v.TeamColor.r, v.TeamColor.g, v.TeamColor.b)

        local UpdateNameTag = function()
            if pcall(function()
                v.Character.Humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
            end) then
                t.Tag.Text = v.Name  -- Update the name each time
            end
        end
        
        UpdateNameTag()
        v.Character.Humanoid.Changed:Connect(UpdateNameTag)
    end

    local function UnloadCharacter(v)
        local vHolder = Holder:FindFirstChild(v.Name)
        if vHolder then
            vHolder:ClearAllChildren()
        end
    end

    local function LoadPlayer(v)
        local vHolder = Instance.new("Folder", Holder)
        vHolder.Name = v.Name
        v.CharacterAdded:Connect(function()
            pcall(LoadCharacter, v)
        end)
        v.CharacterRemoving:Connect(function()
            pcall(UnloadCharacter, v)
        end)
        v.Changed:Connect(function(prop)
            if prop == "TeamColor" then
                UnloadCharacter(v)
                wait()
                LoadCharacter(v)
            end
        end)
        LoadCharacter(v)
    end

    local function UnloadPlayer(v)
        UnloadCharacter(v)
        local vHolder = Holder:FindFirstChild(v.Name)
        if vHolder then
            vHolder:Destroy()
        end
    end

    for _, v in pairs(game:GetService("Players"):GetPlayers()) do
        spawn(function() pcall(LoadPlayer, v) end)
    end

    game:GetService("Players").PlayerAdded:Connect(function(v)
        pcall(LoadPlayer, v)
    end)

    game:GetService("Players").PlayerRemoving:Connect(function(v)
        pcall(UnloadPlayer, v)
    end)

    game:GetService("Players").LocalPlayer.NameDisplayDistance = 0
end

-- Function to disable ESP
local function disableESP()
    local holder = game.CoreGui:FindFirstChild("ESP")
    if holder then
        holder:Destroy()
    end
end

EspsSection:addToggle({
    title = "Name Esp",  -- Title of the toggle
    default = false,    -- Default value (off)
    callback = function(value)
        isESPEnabled = value
        if isESPEnabled then
            enableESP()
        else
            disableESP()
        end
    end
})














-- Services
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")

-- Configuration for ESP
local config = {
    ESP = {
        Box = {
            Box = true,
            TeamCheck = false,
            BoxColor = Color3.fromRGB(0, 0, 0),
            TeamColor = true
        }
    }
}

-- Toggle state variable
local isToggleOn = false

-- Create and update ESP boxes
local function createBoxESP(playerCharacter)
    -- Check if the character is not the local player
    if playerCharacter == Players.LocalPlayer then return end

    -- Create ESP GUI elements
    local billboardGui = Instance.new("BillboardGui")
    billboardGui.Parent = playerCharacter.Character:FindFirstChild("HumanoidRootPart") or playerCharacter.Character
    billboardGui.Name = playerCharacter.Name .. "_BoxESP"
    billboardGui.AlwaysOnTop = true
    billboardGui.Size = UDim2.new(4, 0, 5.4, 0)
    billboardGui.ClipsDescendants = false
    billboardGui.Enabled = isToggleOn

    local frame = Instance.new("Frame", billboardGui)
    frame.Size = UDim2.new(1, 0, 1, 0)
    frame.BorderSizePixel = 1
    frame.BackgroundTransparency = 1

    local topFrame = Instance.new("Frame", frame)
    topFrame.BorderSizePixel = 1
    topFrame.Size = UDim2.new(1, 0, 0, 2)
    topFrame.Position = UDim2.new(0, 0, 0, 0)

    local bottomFrame = Instance.new("Frame", frame)
    bottomFrame.BorderSizePixel = 1
    bottomFrame.Size = UDim2.new(1, 0, 0, 2)
    bottomFrame.Position = UDim2.new(0, 0, 1, -2)

    local leftFrame = Instance.new("Frame", frame)
    leftFrame.BorderSizePixel = 1
    leftFrame.Size = UDim2.new(0, 2, 1, 0)
    leftFrame.Position = UDim2.new(0, 0, 0, 0)

    local rightFrame = Instance.new("Frame", frame)
    rightFrame.BorderSizePixel = 1
    rightFrame.Size = UDim2.new(0, 2, 1, 0)
    rightFrame.Position = UDim2.new(1, -2, 0, 0)

    -- Coroutine to update ESP boxes
    coroutine.wrap(function()
        while wait(0.1) do
            if playerCharacter and playerCharacter.Character and playerCharacter.Character:FindFirstChild("Humanoid") then
                local humanoid = playerCharacter.Character.Humanoid
                if humanoid.Health > 0 then
                    billboardGui.Adornee = playerCharacter.Character.HumanoidRootPart

                    -- Update visibility based on toggle and team check
                    if config.ESP.Box.Box then
                        frame.Visible = true
                    else
                        frame.Visible = false
                    end

                    if config.ESP.Box.TeamCheck and (playerCharacter.TeamColor == Players.LocalPlayer.TeamColor) then
                        billboardGui.Enabled = false
                    else
                        billboardGui.Enabled = isToggleOn
                    end

                    -- Update color based on team or default
                    local color = config.ESP.Box.BoxColor
                    if config.ESP.Box.TeamColor then
                        color = playerCharacter.TeamColor.Color
                    end

                    topFrame.BackgroundColor3 = color
                    bottomFrame.BackgroundColor3 = color
                    leftFrame.BackgroundColor3 = color
                    rightFrame.BackgroundColor3 = color
                    frame.BackgroundColor3 = color
                else
                    billboardGui.Enabled = false
                    billboardGui.Adornee = nil
                    frame.Visible = false
                end
            else
                billboardGui.Enabled = false
                billboardGui.Adornee = nil
                frame.Visible = false
            end

            if not Players:FindFirstChild(playerCharacter.Name) then
                billboardGui:Destroy()
                return
            end
        end
    end)()
end

EspsSection:addToggle({
    title = "Box ESP",  -- Title of the toggle
    default = false,    -- Default value (off)
    callback = function(value)
        isToggleOn = value
        -- Update all existing ESPs based on the new toggle state
        for _, player in ipairs(Players:GetPlayers()) do
            if player.Character and player ~= Players.LocalPlayer then
                local billboardGui = player.Character:FindFirstChild(player.Name .. "_BoxESP")
                if billboardGui then
                    billboardGui.Enabled = isToggleOn and (not config.ESP.Box.TeamCheck or player.TeamColor ~= Players.LocalPlayer.TeamColor)
                    billboardGui:FindFirstChild("Frame").Visible = isToggleOn
                end
            end
        end
    end
})

-- Connect player events
Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(character)
        createBoxESP(player)
    end)
end)

-- Handle existing players
for _, player in ipairs(Players:GetPlayers()) do
    if player.Character and player ~= Players.LocalPlayer then
        createBoxESP(player)
    end
end















-- Dependencies
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")

-- Get the local player and the camera
local localPlayer = Players.LocalPlayer
local currentCamera = Workspace.CurrentCamera

-- Variable to keep track of Distance ESP toggle state
local distanceESPEnabled = false

-- Container for BillboardGui objects
local distanceDisplays = {}

-- Function to calculate distance from the camera to a part
local function getDistanceFromCamera(part)
    return (part.Position - currentCamera.CFrame.Position).Magnitude
end

-- Function to create and display the BillboardGui
local function createDistanceDisplay(player)
    local character = player.Character
    if not character then return end

    local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    if not humanoidRootPart then return end

    -- Create the BillboardGui
    local billboardGui = Instance.new("BillboardGui")
    billboardGui.Name = player.Name .. "_DistanceDisplay"
    billboardGui.Parent = humanoidRootPart
    billboardGui.Size = UDim2.new(0, 60, 0, 50) -- Size of the BillboardGui
    billboardGui.Adornee = humanoidRootPart
    billboardGui.AlwaysOnTop = true
    billboardGui.StudsOffset = Vector3.new(3, 0, 0) -- Position to the right of the player
    billboardGui.ClipsDescendants = true

    -- Create the TextLabel
    local textLabel = Instance.new("TextLabel")
    textLabel.Parent = billboardGui
    textLabel.Size = UDim2.new(1, 0, 1, 0)
    textLabel.BackgroundTransparency = 1
    textLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    textLabel.TextStrokeTransparency = 0.5
    textLabel.TextScaled = true
    textLabel.Text = "Distance: 0 "

    -- Update the distance display
    local function updateDistance()
        local distance = math.floor(getDistanceFromCamera(humanoidRootPart))
        textLabel.Text = string.format("Distance: %d ", distance)
    end

    -- Connect to RenderStepped to update the distance
    local renderConnection
    renderConnection = RunService.RenderStepped:Connect(function()
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            billboardGui:Destroy()
            if renderConnection then
                renderConnection:Disconnect()
            end
        else
            updateDistance()
        end
    end)

    -- Store the billboardGui in the distanceDisplays table
    distanceDisplays[player] = billboardGui
end

-- Function to handle player addition
local function onPlayerAdded(player)
    if distanceESPEnabled and player.Character then
        createDistanceDisplay(player)
    end
    player.CharacterAdded:Connect(function()
        if distanceESPEnabled then
            createDistanceDisplay(player)
        end
    end)
end

-- Function to handle player removal
local function onPlayerRemoving(player)
    if distanceDisplays[player] then
        distanceDisplays[player]:Destroy()
        distanceDisplays[player] = nil
    end
end

-- Toggle functionality
local function toggleDistanceESP(shouldEnable)
    if shouldEnable == distanceESPEnabled then return end

    -- Turn off Distance ESP
    if not shouldEnable then
        for _, display in pairs(distanceDisplays) do
            display:Destroy()
        end
        distanceDisplays = {}
        distanceESPEnabled = false
    else
        -- Turn on Distance ESP
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= localPlayer then
                local character = player.Character
                if character then
                    createDistanceDisplay(player)
                end
            end
        end

        -- Start listening for new players
        Players.PlayerAdded:Connect(onPlayerAdded)
        Players.PlayerRemoving:Connect(onPlayerRemoving)

        distanceESPEnabled = true
    end
end

EspsSection:addToggle({
    title = "Distance Esp",  -- Title of the toggle
    default = false,         -- Default value (off)
    callback = function(value)
        toggleDistanceESP(value)
    end
})











-- Services
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")

-- Configuration for Health ESP
local config = {
    ESP = {
        Health = {
            Enabled = false,  -- Start with health ESP disabled
            Position = UDim2.new(0, 0, 1, 0),  -- Position on the left side of the player
            Size = UDim2.new(0.04, 0, 1, 0),      -- Width and height of the health bar
            BackgroundColor = Color3.fromRGB(40, 40, 40),
            BarColor = Color3.fromRGB(94, 255, 69),
        }
    }
}

-- Toggle state variable
local healthESPEnabled = config.ESP.Health.Enabled

-- Toggle function
local function onToggleChanged(value)
    healthESPEnabled = value
    -- Update all existing health bars based on new toggle state
    for _, playerCharacter in ipairs(Players:GetPlayers()) do
        if playerCharacter.Character and playerCharacter.Character:FindFirstChild("HumanoidRootPart") then
            local existingESP = Workspace.CurrentCamera:FindFirstChild(playerCharacter.Name .. "_HealthBarESP")
            if existingESP then
                existingESP.Enabled = healthESPEnabled
            end
        end
    end
end

-- Create and update Health Bar ESP
local function createHealthBarESP(playerCharacter)
    -- Create ESP GUI elements
    local billboardGui = Instance.new("BillboardGui")
    billboardGui.Parent = Workspace.CurrentCamera
    billboardGui.Name = playerCharacter.Name .. "_HealthBarESP"
    billboardGui.AlwaysOnTop = true
    billboardGui.Size = UDim2.new(4.5, 0, 6, 0)
    billboardGui.ClipsDescendants = false
    billboardGui.Enabled = healthESPEnabled

    local healthBarContainer = Instance.new("Frame", billboardGui)
    healthBarContainer.Name = "HealthBarContainer"
    healthBarContainer.Size = config.ESP.Health.Size
    healthBarContainer.Position = config.ESP.Health.Position
    healthBarContainer.BackgroundColor3 = config.ESP.Health.BackgroundColor
    healthBarContainer.BorderSizePixel = 0

    local healthBar = Instance.new("Frame", healthBarContainer)
    healthBar.Name = "HealthBar"
    healthBar.Size = UDim2.new(0.8, 0, 0.8, 0)
    healthBar.BackgroundColor3 = config.ESP.Health.BarColor
    healthBar.BorderSizePixel = 0
    healthBar.AnchorPoint = Vector2.new(0, 1)
    healthBar.Position = UDim2.new(0, 0, 0, 0)

    -- Coroutine to update Health Bar
    local coroutineTask = coroutine.create(function()
        while wait(0.1) do
            if (playerCharacter ~= Players.LocalPlayer) and playerCharacter and playerCharacter.Character and playerCharacter.Character:FindFirstChild("Humanoid") and (playerCharacter.Character.Humanoid.Health > 0) then
                billboardGui.Adornee = playerCharacter.Character.HumanoidRootPart

                -- Update health bar
                local humanoid = playerCharacter.Character:FindFirstChild("Humanoid")
                if humanoid then
                    local healthRatio = humanoid.Health / humanoid.MaxHealth
                    healthBar.Size = UDim2.new(1, 0, healthRatio, 0)
                end

                -- Update health bar visibility
                billboardGui.Enabled = healthESPEnabled

                if not Players:FindFirstChild(playerCharacter.Name) then
                    billboardGui:Destroy()
                    coroutine.yield()
                end
            else
                billboardGui.Enabled = false
                billboardGui.Adornee = nil
            end
        end
    end)

    coroutine.resume(coroutineTask)
end

-- Connect player events
Players.PlayerAdded:Connect(function(playerCharacter)
    playerCharacter.CharacterAdded:Connect(function()
        createHealthBarESP(playerCharacter)
    end)
end)

-- Handle existing players
for _, playerCharacter in ipairs(Players:GetPlayers()) do
    if playerCharacter.Character then
        createHealthBarESP(playerCharacter)
    end
end

EspsSection:addToggle({
    title = "Health Esp",  -- Title of the toggle
    default = false,       -- Default value (off)
    callback = onToggleChanged,  -- Function to call when the toggle state changes
})















local function API_Check()
    return Drawing == nil and "No" or "Yes"
end

local Find_Required = API_Check()

if Find_Required == "No" then
    OrionLib:MakeNotification({
        Name = "Exunys Developer",
        Content = "Tracer script could not be loaded because your exploit is unsupported.",
        Time = math.huge
    })
    return
end

-- Services
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Camera = game:GetService("Workspace").CurrentCamera
local UserInputService = game:GetService("UserInputService")

-- Settings
_G.SendNotifications = false
_G.DefaultSettings = false
_G.TeamCheck = false
_G.FromMouse = false
_G.FromCenter = false
_G.FromBottom = true
_G.TracersVisible = true
_G.TracerColor = Color3.fromRGB(255, 255, 255)
_G.TracerThickness = 1
_G.TracerTransparency = 0.7
_G.ModeSkipKey = Enum.KeyCode.E
_G.DisableKey = Enum.KeyCode.Q

-- Define a variable to track the toggle state
local TracersEnabled = false -- Start with Tracers disabled

local function CreateTracers()
    local function UpdateTracer(v)
        local TracerLine = Drawing.new("Line")
        RunService.RenderStepped:Connect(function()
            local character = workspace:FindFirstChild(v.Name)
            if character and character:FindFirstChild("HumanoidRootPart") then
                local HumanoidRootPart_Position, HumanoidRootPart_Size = character.HumanoidRootPart.CFrame, character.HumanoidRootPart.Size * 1
                local Vector, OnScreen = Camera:WorldToViewportPoint(HumanoidRootPart_Position * CFrame.new(0, -HumanoidRootPart_Size.Y, 0).p)

                TracerLine.Thickness = _G.TracerThickness
                TracerLine.Transparency = _G.TracerTransparency
                TracerLine.Color = _G.TracerColor

                if _G.FromMouse and not _G.FromCenter and not _G.FromBottom then
                    TracerLine.From = Vector2.new(UserInputService:GetMouseLocation().X, UserInputService:GetMouseLocation().Y)
                elseif _G.FromCenter and not _G.FromMouse and not _G.FromBottom then
                    TracerLine.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
                elseif _G.FromBottom and not _G.FromMouse and not _G.FromCenter then
                    TracerLine.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
                end

                if OnScreen then
                    TracerLine.To = Vector2.new(Vector.X, Vector.Y)
                    if _G.TeamCheck then
                        TracerLine.Visible = Players.LocalPlayer.Team ~= v.Team and _G.TracersVisible and TracersEnabled
                    else
                        TracerLine.Visible = _G.TracersVisible and TracersEnabled
                    end
                else
                    TracerLine.Visible = false
                end
            else
                TracerLine.Visible = false
            end
        end)

        Players.PlayerRemoving:Connect(function()
            TracerLine.Visible = false
        end)
    end

    for _, v in pairs(Players:GetPlayers()) do
        if v.Name ~= Players.LocalPlayer.Name then
            UpdateTracer(v)
        end
    end

    Players.PlayerAdded:Connect(function(Player)
        Player.CharacterAdded:Connect(function()
            if Player.Name ~= Players.LocalPlayer.Name then
                UpdateTracer(Player)
            end
        end)
    end)
end

UserInputService.TextBoxFocused:Connect(function()
    Typing = true
end)

UserInputService.TextBoxFocusReleased:Connect(function()
    Typing = false
end)

UserInputService.InputBegan:Connect(function(Input)
    if Input.KeyCode == _G.ModeSkipKey and not Typing then
        if _G.FromMouse and not _G.FromCenter and not _G.FromBottom then
            _G.FromCenter = false
            _G.FromBottom = true
            _G.FromMouse = false
            if _G.SendNotifications then
                OrionLib:MakeNotification({
                    Name = "Notification",
                    Content = "Tracers will be now coming from the bottom of your screen (Mode 1)",
                    Time = 5
                })
            end
        elseif _G.FromCenter and not _G.FromMouse and not _G.FromBottom then
            _G.FromCenter = false
            _G.FromBottom = false
            _G.FromMouse = true
            if _G.SendNotifications then
                OrionLib:MakeNotification({
                    Name = "Notification",
                    Content = "Tracers will be now coming from the position of your mouse cursor on your screen (Mode 3)",
                    Time = 5
                })
            end
        elseif _G.FromBottom and not _G.FromCenter and not _G.FromMouse then
            _G.FromCenter = true
            _G.FromBottom = false
            _G.FromMouse = false
            if _G.SendNotifications then
                OrionLib:MakeNotification({
                    Name = "Notification",
                    Content = "Tracers will be now coming from the center of your screen (Mode 2)",
                    Time = 5
                })
            end
        end
    elseif Input.KeyCode == _G.DisableKey and not Typing then
        _G.TracersVisible = not _G.TracersVisible
        if _G.SendNotifications then
            OrionLib:MakeNotification({
                Name = "Notification",
                Content = "The tracers' visibility is now set to " .. tostring(_G.TracersVisible) .. ".",
                Time = 5
            })
        end
    end
end)

if _G.DefaultSettings then
    _G.TeamCheck = true
    _G.FromMouse = false
    _G.FromCenter = false
    _G.FromBottom = true
    _G.TracersVisible = true
    _G.TracerColor = Color3.fromRGB(255, 255, 255)
    _G.TracerThickness = 1
    _G.TracerTransparency = 0.5
    _G.ModeSkipKey = Enum.KeyCode.E
    _G.DisableKey = Enum.KeyCode.Q
end

local Success, Errored = pcall(CreateTracers)

if Success and not Errored then
    if _G.SendNotifications then
        OrionLib:MakeNotification({
            Name = "Notification",
            Content = "Tracer script has successfully loaded.",
            Time = 5
        })
    end
elseif Errored then
    if _G.SendNotifications then
        OrionLib:MakeNotification({
            Name = "Notification",
            Content = "Tracer script has errored while loading, please check the developer console! (F9)",
            Time = 5
        })
    end
    warn(Errored)
end

EspsSection:addToggle({
    title = "Tracers Esp",  -- Title of the toggle
    default = false,       -- Default value (off)
    callback = function(value)
        TracersEnabled = value
        if TracersEnabled then
            CreateTracers() -- Start creating tracers when enabled
        end
        if _G.SendNotifications then
            OrionLib:MakeNotification({
                Name = "Notification",
                Content = "Tracers have been " .. (value and "enabled" or "disabled") .. ".",
                Time = 5
            })
        end
    end
})
















-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera

-- Player and Mouse
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

-- Globals
local ESPEnabled = false
local ESPConnections = {}
local ESPLines = {}

-- Utility function to create a drawing line
local function DrawLine()
    local line = Drawing.new("Line")
    line.Visible = false
    line.From = Vector2.new(0, 0)
    line.To = Vector2.new(1, 1)
    line.Color = Color3.fromRGB(255, 255, 255)
    line.Thickness = 1
    line.Transparency = 1
    return line
end

-- Function to create ESP for a player
local function DrawESP(plr)
    repeat wait() until plr.Character and plr.Character:FindFirstChild("Humanoid")
    
    local limbs = {}
    local isR15 = (plr.Character.Humanoid.RigType == Enum.HumanoidRigType.R15)

    -- Define limb lines
    local function InitializeLimbLines()
        if isR15 then
            return {
                -- Spine
                Head_UpperTorso = DrawLine(),
                UpperTorso_LowerTorso = DrawLine(),
                -- Left Arm
                UpperTorso_LeftUpperArm = DrawLine(),
                LeftUpperArm_LeftLowerArm = DrawLine(),
                LeftLowerArm_LeftHand = DrawLine(),
                -- Right Arm
                UpperTorso_RightUpperArm = DrawLine(),
                RightUpperArm_RightLowerArm = DrawLine(),
                RightLowerArm_RightHand = DrawLine(),
                -- Left Leg
                LowerTorso_LeftUpperLeg = DrawLine(),
                LeftUpperLeg_LeftLowerLeg = DrawLine(),
                LeftLowerLeg_LeftFoot = DrawLine(),
                -- Right Leg
                LowerTorso_RightUpperLeg = DrawLine(),
                RightUpperLeg_RightLowerLeg = DrawLine(),
                RightLowerLeg_RightFoot = DrawLine(),
            }
        else
            return {
                Head_Spine = DrawLine(),
                Spine = DrawLine(),
                LeftArm = DrawLine(),
                LeftArm_UpperTorso = DrawLine(),
                RightArm = DrawLine(),
                RightArm_UpperTorso = DrawLine(),
                LeftLeg = DrawLine(),
                LeftLeg_LowerTorso = DrawLine(),
                RightLeg = DrawLine(),
                RightLeg_LowerTorso = DrawLine()
            }
        end
    end

    limbs = InitializeLimbLines()
    ESPLines[plr] = limbs

    local function SetVisibility(state)
        for _, line in pairs(limbs) do
            line.Visible = state
        end
    end

    local function UpdateLinesR15()
        return RunService.RenderStepped:Connect(function()
            if not ESPEnabled or not plr.Character or not plr.Character:FindFirstChild("Humanoid") or not plr.Character:FindFirstChild("HumanoidRootPart") or plr.Character.Humanoid.Health <= 0 then
                SetVisibility(false)
                return
            end

            local HUM, vis = Camera:WorldToViewportPoint(plr.Character.HumanoidRootPart.Position)
            if not vis then
                SetVisibility(false)
                return
            end

            -- Define limb positions
            local positions = {}
            for _, partName in ipairs({
                "Head", "UpperTorso", "LowerTorso",
                "LeftUpperArm", "LeftLowerArm", "LeftHand",
                "RightUpperArm", "RightLowerArm", "RightHand",
                "LeftUpperLeg", "LeftLowerLeg", "LeftFoot",
                "RightUpperLeg", "RightLowerLeg", "RightFoot"
            }) do
                positions[partName] = Camera:WorldToViewportPoint(plr.Character:FindFirstChild(partName).Position)
            end

            -- Update limb lines
            limbs.Head_UpperTorso.From = Vector2.new(positions.Head.X, positions.Head.Y)
            limbs.Head_UpperTorso.To = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)

            limbs.UpperTorso_LowerTorso.From = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)
            limbs.UpperTorso_LowerTorso.To = Vector2.new(positions.LowerTorso.X, positions.LowerTorso.Y)

            limbs.UpperTorso_LeftUpperArm.From = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)
            limbs.UpperTorso_LeftUpperArm.To = Vector2.new(positions.LeftUpperArm.X, positions.LeftUpperArm.Y)

            limbs.LeftUpperArm_LeftLowerArm.From = Vector2.new(positions.LeftUpperArm.X, positions.LeftUpperArm.Y)
            limbs.LeftUpperArm_LeftLowerArm.To = Vector2.new(positions.LeftLowerArm.X, positions.LeftLowerArm.Y)

            limbs.LeftLowerArm_LeftHand.From = Vector2.new(positions.LeftLowerArm.X, positions.LeftLowerArm.Y)
            limbs.LeftLowerArm_LeftHand.To = Vector2.new(positions.LeftHand.X, positions.LeftHand.Y)

            limbs.UpperTorso_RightUpperArm.From = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)
            limbs.UpperTorso_RightUpperArm.To = Vector2.new(positions.RightUpperArm.X, positions.RightUpperArm.Y)

            limbs.RightUpperArm_RightLowerArm.From = Vector2.new(positions.RightUpperArm.X, positions.RightUpperArm.Y)
            limbs.RightUpperArm_RightLowerArm.To = Vector2.new(positions.RightLowerArm.X, positions.RightLowerArm.Y)

            limbs.RightLowerArm_RightHand.From = Vector2.new(positions.RightLowerArm.X, positions.RightLowerArm.Y)
            limbs.RightLowerArm_RightHand.To = Vector2.new(positions.RightHand.X, positions.RightHand.Y)

            limbs.LowerTorso_LeftUpperLeg.From = Vector2.new(positions.LowerTorso.X, positions.LowerTorso.Y)
            limbs.LowerTorso_LeftUpperLeg.To = Vector2.new(positions.LeftUpperLeg.X, positions.LeftUpperLeg.Y)

            limbs.LeftUpperLeg_LeftLowerLeg.From = Vector2.new(positions.LeftUpperLeg.X, positions.LeftUpperLeg.Y)
            limbs.LeftUpperLeg_LeftLowerLeg.To = Vector2.new(positions.LeftLowerLeg.X, positions.LeftLowerLeg.Y)

            limbs.LeftLowerLeg_LeftFoot.From = Vector2.new(positions.LeftLowerLeg.X, positions.LeftLowerLeg.Y)
            limbs.LeftLowerLeg_LeftFoot.To = Vector2.new(positions.LeftFoot.X, positions.LeftFoot.Y)

            limbs.LowerTorso_RightUpperLeg.From = Vector2.new(positions.LowerTorso.X, positions.LowerTorso.Y)
            limbs.LowerTorso_RightUpperLeg.To = Vector2.new(positions.RightUpperLeg.X, positions.RightUpperLeg.Y)

            limbs.RightUpperLeg_RightLowerLeg.From = Vector2.new(positions.RightUpperLeg.X, positions.RightUpperLeg.Y)
            limbs.RightUpperLeg_RightLowerLeg.To = Vector2.new(positions.RightLowerLeg.X, positions.RightLowerLeg.Y)

            limbs.RightLowerLeg_RightFoot.From = Vector2.new(positions.RightLowerLeg.X, positions.RightLowerLeg.Y)
            limbs.RightLowerLeg_RightFoot.To = Vector2.new(positions.RightFoot.X, positions.RightFoot.Y)

            SetVisibility(true)
        end)
    end

    local function UpdateLinesR6()
        return RunService.RenderStepped:Connect(function()
            if not ESPEnabled or not plr.Character or not plr.Character:FindFirstChild("Humanoid") or not plr.Character:FindFirstChild("HumanoidRootPart") or plr.Character.Humanoid.Health <= 0 then
                SetVisibility(false)
                return
            end

            local HUM, vis = Camera:WorldToViewportPoint(plr.Character.HumanoidRootPart.Position)
            if not vis then
                SetVisibility(false)
                return
            end

            local T = Camera:WorldToViewportPoint(plr.Character.Torso.Position)
            local T_Height = plr.Character.Torso.Size.Y/2 - 0.2
            local UT = Camera:WorldToViewportPoint((plr.Character.Torso.CFrame * CFrame.new(0, T_Height, 0)).p)
            local LT = Camera:WorldToViewportPoint((plr.Character.Torso.CFrame * CFrame.new(0, -T_Height, 0)).p)

            local LA_Height = plr.Character["Left Arm"].Size.Y/2 - 0.2
            local LUA = Camera:WorldToViewportPoint((plr.Character["Left Arm"].CFrame * CFrame.new(0, LA_Height, 0)).p)
            local LLA = Camera:WorldToViewportPoint((plr.Character["Left Arm"].CFrame * CFrame.new(0, -LA_Height, 0)).p)

            local RA_Height = plr.Character["Right Arm"].Size.Y/2 - 0.2
            local RUA = Camera:WorldToViewportPoint((plr.Character["Right Arm"].CFrame * CFrame.new(0, RA_Height, 0)).p)
            local RLA = Camera:WorldToViewportPoint((plr.Character["Right Arm"].CFrame * CFrame.new(0, -RA_Height, 0)).p)

            local LL_Height = plr.Character["Left Leg"].Size.Y/2 - 0.2
            local LUL = Camera:WorldToViewportPoint((plr.Character["Left Leg"].CFrame * CFrame.new(0, LL_Height, 0)).p)
            local LLL = Camera:WorldToViewportPoint((plr.Character["Left Leg"].CFrame * CFrame.new(0, -LL_Height, 0)).p)

            local RL_Height = plr.Character["Right Leg"].Size.Y/2 - 0.2
            local RUL = Camera:WorldToViewportPoint((plr.Character["Right Leg"].CFrame * CFrame.new(0, RL_Height, 0)).p)
            local RLL = Camera:WorldToViewportPoint((plr.Character["Right Leg"].CFrame * CFrame.new(0, -RL_Height, 0)).p)

            -- Update limb lines
            limbs.Head_Spine.From = Vector2.new(positions.Head.X, positions.Head.Y)
            limbs.Head_Spine.To = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)

            limbs.Spine.From = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)
            limbs.Spine.To = Vector2.new(positions.LowerTorso.X, positions.LowerTorso.Y)

            limbs.LeftArm.From = Vector2.new(positions.LeftUpperArm.X, positions.LeftUpperArm.Y)
            limbs.LeftArm.To = Vector2.new(positions.LeftLowerArm.X, positions.LeftLowerArm.Y)

            limbs.LeftArm_UpperTorso.From = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)
            limbs.LeftArm_UpperTorso.To = Vector2.new(positions.LeftUpperArm.X, positions.LeftUpperArm.Y)

            limbs.RightArm.From = Vector2.new(positions.RightUpperArm.X, positions.RightUpperArm.Y)
            limbs.RightArm.To = Vector2.new(positions.RightLowerArm.X, positions.RightLowerArm.Y)

            limbs.RightArm_UpperTorso.From = Vector2.new(positions.UpperTorso.X, positions.UpperTorso.Y)
            limbs.RightArm_UpperTorso.To = Vector2.new(positions.RightUpperArm.X, positions.RightUpperArm.Y)

            limbs.LeftLeg.From = Vector2.new(positions.LeftUpperLeg.X, positions.LeftUpperLeg.Y)
            limbs.LeftLeg.To = Vector2.new(positions.LeftLowerLeg.X, positions.LeftLowerLeg.Y)

            limbs.LeftLeg_LowerTorso.From = Vector2.new(positions.LowerTorso.X, positions.LowerTorso.Y)
            limbs.LeftLeg_LowerTorso.To = Vector2.new(positions.LeftUpperLeg.X, positions.LeftUpperLeg.Y)

            limbs.RightLeg.From = Vector2.new(positions.RightUpperLeg.X, positions.RightUpperLeg.Y)
            limbs.RightLeg.To = Vector2.new(positions.RightLowerLeg.X, positions.RightLowerLeg.Y)

            limbs.RightLeg_LowerTorso.From = Vector2.new(positions.LowerTorso.X, positions.LowerTorso.Y)
            limbs.RightLeg_LowerTorso.To = Vector2.new(positions.RightUpperLeg.X, positions.RightUpperLeg.Y)

            SetVisibility(true)
        end)
    end

    local connection
    if isR15 then
        connection = UpdateLinesR15()
    else
        connection = UpdateLinesR6()
    end

    ESPConnections[plr] = connection
end

-- Function to handle player joining
local function onPlayerAdded(newplr)
    if newplr ~= Player then
        DrawESP(newplr)
    end
end

-- Function to handle player leaving
local function onPlayerRemoving(plr)
    if ESPConnections[plr] then
        ESPConnections[plr]:Disconnect()
        ESPConnections[plr] = nil
        ESPLines[plr] = nil
    end
end

-- Initial setup
for _, v in pairs(Players:GetPlayers()) do
    if v ~= Player then
        DrawESP(v)
    end
end

Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoving)

-- Toggle ESP function
function ToggleESP(state)
    ESPEnabled = state

    -- Disconnect existing connections and clear lines if disabling ESP
    if not state then
        for _, connection in pairs(ESPConnections) do
            connection:Disconnect()
        end
        ESPConnections = {}
        
        for _, lines in pairs(ESPLines) do
            for _, line in pairs(lines) do
                line.Visible = false
            end
        end
        ESPLines = {}
    else
        -- Re-enable ESP and recreate lines
        for _, player in pairs(Players:GetPlayers()) do
            if player ~= Player then
                DrawESP(player)
            end
        end
    end
end

EspsSection:addToggle({
    title = "Skeleton Esp",  -- Title of the toggle
    default = false,         -- Default value (off)
    callback = function(value)
        ToggleESP(value)
    end
})









-- Create the Aimbot Page
local AimbotPage = UI:addPage({
    title = "Aimbot",  -- Title of the page
    icon = 50777179   -- Asset ID for the page icon (optional)
})

-- Create the Aimbot Settings Section
local AimbotSection = AimbotPage:addSection({
    title = "Aimbot Settings" -- Title of the section
})






local Camera = workspace.CurrentCamera
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local CurrentTarget = nil
local isAiming = false

_G.AimbotEnabled = false
_G.TeamCheck = false
_G.AimPart = "Head"
_G.Sensitivity = 0
local fov = 80
local fovColor = Color3.fromRGB(255, 0, 0)
local fovEnabled = false
local fovPosition = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)

local FOVring = Drawing.new("Circle")
FOVring.Visible = false
FOVring.Thickness = 1.5
FOVring.Radius = fov
FOVring.Transparency = 0.5
FOVring.Color = fovColor

local function GetClosestPlayer()
    local MaximumDistance = 80
    local Target = nil

    for _, v in next, Players:GetPlayers() do
        if v.Name ~= LocalPlayer.Name then
            if _G.TeamCheck and v.Team == LocalPlayer.Team then
                continue
            end
            if v.Character and v.Character:FindFirstChild("HumanoidRootPart") and 
               v.Character:FindFirstChild("Humanoid") and v.Character.Humanoid.Health > 0 then

                local ScreenPoint = Camera:WorldToScreenPoint(v.Character.HumanoidRootPart.Position)
                local VectorDistance = (Vector2.new(UserInputService:GetMouseLocation().X, UserInputService:GetMouseLocation().Y) - Vector2.new(ScreenPoint.X, ScreenPoint.Y)).Magnitude
                
                if VectorDistance < MaximumDistance then
                    Target = v
                    break
                end
            end
        end
    end

    return Target
end

UserInputService.InputBegan:Connect(function(Input)
    if Input.UserInputType == Enum.UserInputType.MouseButton2 and _G.AimbotEnabled then
        isAiming = true
        CurrentTarget = GetClosestPlayer()
    elseif Input.UserInputType == Enum.UserInputType.MouseButton1 and fovEnabled then
        UserInputService.InputChanged:Connect(function(moveInput)
            if moveInput.UserInputType == Enum.UserInputType.MouseMovement then
                fovPosition = UserInputService:GetMouseLocation()
            end
        end)
    end
end)

UserInputService.InputEnded:Connect(function(Input)
    if Input.UserInputType == Enum.UserInputType.MouseButton2 then
        isAiming = false
        CurrentTarget = nil
    end
end)

RunService.RenderStepped:Connect(function()
    if CurrentTarget and _G.AimbotEnabled and isAiming then
        local aimPosition
        if _G.AimPart == "Torso" then
            aimPosition = CurrentTarget.Character.HumanoidRootPart.Position
        else
            aimPosition = CurrentTarget.Character[_G.AimPart].Position
        end

        TweenService:Create(Camera, TweenInfo.new(_G.Sensitivity, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), 
        {CFrame = CFrame.new(Camera.CFrame.Position, aimPosition)}):Play()
    end

    if fovEnabled then
        FOVring.Position = fovPosition
        FOVring.Visible = true
        FOVring.Radius = fov
        FOVring.Color = fovColor
        FOVring.Transparency = 0.5
    else
        FOVring.Visible = false
    end
end)

AimbotSection:addToggle({
    title = "Enable Aimbot",
    default = false,
    callback = function(value)
        _G.AimbotEnabled = value
    end
})

AimbotSection:addDropdown({
    title = "Aim Part",
    list = {"Head", "Torso"},
    callback = function(value)
        _G.AimPart = value
    end
})

local FOVSection = AimbotPage:addSection({
    title = "FOV Circle"
})

FOVSection:addToggle({
    title = "Enable FOV Circle",
    default = false,
    callback = function(value)
        fovEnabled = value
    end
})

FOVSection:addColorPicker({
    title = "Pick a Color",
    default = Color3.fromRGB(255, 0, 0),
    callback = function(color)
        fovColor = color
        FOVring.Color = fovColor
    end
})







local CrosshairSection = AimbotPage:addSection({
    title = "Crosshair" -- Title of the section
})






--// Preventing Multiple Processes

pcall(function()
    getgenv().Crosshair.Functions:Exit()
end)

--// Environment

getgenv().Crosshair = {}
local Environment = getgenv().Crosshair

--// Services

local StarterGui = game:GetService("StarterGui")
local RunService = game:GetService("RunService")
local HttpService = game:GetService("HttpService")
local UserInputService = game:GetService("UserInputService")
local Camera = game:GetService("Workspace").CurrentCamera

--// Variables

local Title = "Exunys Developer"
local FileNames = {"Crosshair", "Configuration.json", "Crosshair.json"}
local AxisX, AxisY = nil, nil
local AxisConnection, CrosshairConnection = nil

--// Script Settings

Environment.Settings = {
    SendNotifications = false,  -- Set to false to disable notifications
    SaveSettings = true,
    ReloadOnTeleport = true,
    Enabled = true,
    ToMouse = true
}

--// Crosshair Settings

Environment.CrosshairSettings = {
    Size = 12,
    Thickness = 1,
    Color = "255, 0, 0",  -- Default color in RGB format
    Transparency = 1,
    GapSize = 5,
    CenterDot = false,
    CenterDotColor = "255, 0, 0",  -- Default center dot color
    CenterDotSize = 1,
    CenterDotTransparency = 1,
    CenterDotFilled = true,
}

Environment.Construction = {
    LeftLine = Drawing.new("Line"),
    RightLine = Drawing.new("Line"),
    TopLine = Drawing.new("Line"),
    BottomLine = Drawing.new("Line"),
    CenterDot = Drawing.new("Circle")
}

--// Core Functions

local function Encode(Table)
    if Table and type(Table) == "table" then
        return HttpService:JSONEncode(Table)
    end
end

local function Decode(String)
    if String and type(String) == "string" then
        return HttpService:JSONDecode(String)
    end
end

local function SendNotification(TitleArg, DescriptionArg, DurationArg)
    -- Notifications are disabled, so this function does nothing
end

local function GetColor(Color)
    local R, G, B = string.match(Color, "(%d+),%s*(%d+),%s*(%d+)")
    return Color3.fromRGB(tonumber(R), tonumber(G), tonumber(B))
end

local function Load()
    AxisConnection, CrosshairConnection = RunService.RenderStepped:Connect(function()
        if Environment.Settings.ToMouse then
            AxisX, AxisY = UserInputService:GetMouseLocation().X, UserInputService:GetMouseLocation().Y
        else
            AxisX, AxisY = Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2
        end
    end), RunService.RenderStepped:Connect(function()

        --// Left Line
        Environment.Construction.LeftLine.Visible = Environment.Settings.Enabled
        Environment.Construction.LeftLine.Color = GetColor(Environment.CrosshairSettings.Color)
        Environment.Construction.LeftLine.Thickness = Environment.CrosshairSettings.Thickness
        Environment.Construction.LeftLine.Transparency = Environment.CrosshairSettings.Transparency
        Environment.Construction.LeftLine.From = Vector2.new(AxisX + Environment.CrosshairSettings.GapSize, AxisY)
        Environment.Construction.LeftLine.To = Vector2.new(AxisX + Environment.CrosshairSettings.Size, AxisY)

        --// Right Line
        Environment.Construction.RightLine.Visible = Environment.Settings.Enabled
        Environment.Construction.RightLine.Color = GetColor(Environment.CrosshairSettings.Color)
        Environment.Construction.RightLine.Thickness = Environment.CrosshairSettings.Thickness
        Environment.Construction.RightLine.Transparency = Environment.CrosshairSettings.Transparency
        Environment.Construction.RightLine.From = Vector2.new(AxisX - Environment.CrosshairSettings.GapSize, AxisY)
        Environment.Construction.RightLine.To = Vector2.new(AxisX - Environment.CrosshairSettings.Size, AxisY)

        --// Top Line
        Environment.Construction.TopLine.Visible = Environment.Settings.Enabled
        Environment.Construction.TopLine.Color = GetColor(Environment.CrosshairSettings.Color)
        Environment.Construction.TopLine.Thickness = Environment.CrosshairSettings.Thickness
        Environment.Construction.TopLine.Transparency = Environment.CrosshairSettings.Transparency
        Environment.Construction.TopLine.From = Vector2.new(AxisX, AxisY + Environment.CrosshairSettings.GapSize)
        Environment.Construction.TopLine.To = Vector2.new(AxisX, AxisY + Environment.CrosshairSettings.Size)

        --// Bottom Line
        Environment.Construction.BottomLine.Visible = Environment.Settings.Enabled
        Environment.Construction.BottomLine.Color = GetColor(Environment.CrosshairSettings.Color)
        Environment.Construction.BottomLine.Thickness = Environment.CrosshairSettings.Thickness
        Environment.Construction.BottomLine.Transparency = Environment.CrosshairSettings.Transparency
        Environment.Construction.BottomLine.From = Vector2.new(AxisX, AxisY - Environment.CrosshairSettings.GapSize)
        Environment.Construction.BottomLine.To = Vector2.new(AxisX, AxisY - Environment.CrosshairSettings.Size)

        --// Center Dot
        Environment.Construction.CenterDot.Visible = Environment.Settings.Enabled and Environment.CrosshairSettings.CenterDot
        Environment.Construction.CenterDot.Color = GetColor(Environment.CrosshairSettings.CenterDotColor)
        Environment.Construction.CenterDot.Radius = Environment.CrosshairSettings.CenterDotSize
        Environment.Construction.CenterDot.Transparency = Environment.CrosshairSettings.CenterDotTransparency
        Environment.Construction.CenterDot.Filled = Environment.CrosshairSettings.CenterDotFilled
        Environment.Construction.CenterDot.Position = Vector2.new(AxisX, AxisY)
    end)
end

--// Functions

local function SaveSettings()
    if isfile(Title.."/"..FileNames[1].."/"..FileNames[2]) then
        writefile(Title.."/"..FileNames[1].."/"..FileNames[2], Encode(Environment.Settings))
    end

    if isfile(Title.."/"..FileNames[1].."/"..FileNames[3]) then
        writefile(Title.."/"..FileNames[1].."/"..FileNames[3], Encode(Environment.CrosshairSettings))
    end
end

if Environment.Settings.SaveSettings then
    if not isfolder(Title) then
        makefolder(Title)
    end

    if not isfolder(Title.."/"..FileNames[1]) then
        makefolder(Title.."/"..FileNames[1])
    end

    if not isfile(Title.."/"..FileNames[1].."/"..FileNames[2]) then
        writefile(Title.."/"..FileNames[1].."/"..FileNames[2], Encode(Environment.Settings))
    else
        Environment.Settings = Decode(readfile(Title.."/"..FileNames[1].."/"..FileNames[2]))
    end

    if not isfile(Title.."/"..FileNames[1].."/"..FileNames[3]) then
        writefile(Title.."/"..FileNames[1].."/"..FileNames[3], Encode(Environment.CrosshairSettings))
    else
        Environment.CrosshairSettings = Decode(readfile(Title.."/"..FileNames[1].."/"..FileNames[3]))
    end

    coroutine.wrap(function()
        while wait(10) do
            SaveSettings()
        end
    end)()
else
    if isfolder(Title) then
        delfolder(Title)
    end
end

--// Reload On Teleport

if Environment.Settings.ReloadOnTeleport then
    if syn and syn.queue_on_teleport then
        syn.queue_on_teleport(game:HttpGet("https://[Log in to view URL]"))
    else
        -- No notification sent since they are disabled
    end
end

--// Script Functions

Environment.Functions = {}

function Environment.Functions:Exit()
    table.foreach(Environment.Construction, function(_, Value)
        Value:Remove()
    end)

    AxisConnection:Disconnect()
    CrosshairConnection:Disconnect()

    getgenv().Crosshair = nil
end

function Environment.Functions:Restart()
    table.foreach(Environment.Construction, function(_, Value)
        Value:Remove()
    end)

    AxisConnection:Disconnect()
    CrosshairConnection:Disconnect()

    Load()
end

function Environment.Functions:ResetSettings()
    Environment.Settings = {
        SendNotifications = false,
        SaveSettings = true,
        ReloadOnTeleport = true,
        Enabled = true,
        ToMouse = true
    }

    Environment.CrosshairSettings = {
        Size = 12,
        Thickness = 1,
        Color = "255, 0, 0",  -- Default color in RGB format
        Transparency = 1,
        GapSize = 5,
        CenterDot = false,
        CenterDotColor = "255, 0, 0",
        CenterDotSize = 1,
        CenterDotTransparency = 1,
        CenterDotFilled = true,
    }

    SaveSettings()
end

function Environment.Functions:SetMouseIcon(Value)
    if Value == nil then Value = true end

    UserInputService.MouseIconEnabled = Value
end

function Environment.Functions:GetDocumentation()
    setclipboard("https://[Log in to view URL]")
    -- No notification sent since they are disabled
end

--// API Check

if not Drawing or not writefile or not makefolder then
    -- No notification sent since they are disabled
    return
end

--// Add Toggle for Enabling/Disabling the Crosshair
--// Add Toggle for Enabling/Disabling the Crosshair
CrosshairSection:addToggle({
    title = "Enable Crosshair",
    default = false,  -- Set default to false so it doesn't enable automatically
    callback = function(value)
        Environment.Settings.Enabled = value
    end
})

--// Add Color Picker for Crosshair Color
CrosshairSection:addColorPicker({
    title = "Pick a Color",
    default = Color3.fromRGB(255, 0, 0),  -- Default color
    callback = function(color)
        local r, g, b = color.R * 255, color.G * 255, color.B * 255
        Environment.CrosshairSettings.Color = string.format("%d, %d, %d", r, g, b)
        Environment.CrosshairSettings.CenterDotColor = string.format("%d, %d, %d", r, g, b)  -- Change center dot color too
    end
})


--// Load

Load()
-- No notification sent since they are disabled






















-- Create the Theme Settings Page
local ThemePage = UI:addPage({
    title = "Settings", -- Title of the page
    icon = iconAssetId  -- Asset ID for the page icon (optional)
})

-- Section for the Color Theme Customization Page
local ColorsSection = ThemePage:addSection({
    title = "UI Settings"
})

-- Themes
local Themes = {
    Background = Color3.fromRGB(24, 24, 24),
    Glow = Color3.fromRGB(0, 0, 0),
    Accent = Color3.fromRGB(10, 10, 10),
    LightContrast = Color3.fromRGB(20, 20, 20),
    DarkContrast = Color3.fromRGB(14, 14, 14),  
    TextColor = Color3.fromRGB(255, 255, 255)
}

-- Adding a color picker for each type of theme customizable
for theme, color in pairs(Themes) do
    ColorsSection:addColorPicker({
        title = theme,
        default = color,
        callback = function(color3)
            UI:setTheme({
                theme = theme, 
                color3 = color3
            })
        end
    })
end


-- Adding Credits Section to the Theme Page
local CreditsSection = ThemePage:addSection({
    title = "Credits" -- Title of the section
})

-- Adding a button to the Credits section
CreditsSection:addButton({
    title = "By They_fwdan", -- Title of the button
    callback = function()
        print("Created by They_fwdan")
    end
})




-- Finalizing the UI setup
UI:SelectPage({
    page = VehiclePage,
    toggle = true
})

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: