-- Gui to Lua
-- Version: 3.2
-- Instances:
local ScreenGui = Instance.new("ScreenGui")
local Frame = Instance.new("Frame")
local Title = Instance.new("TextLabel")
local Credits = Instance.new("TextLabel")
local ToggleESP = Instance.new("TextButton")
local ChangeMode = Instance.new("TextButton")
local ModeChangerNote = Instance.new("TextLabel")
local CloseGUI = Instance.new("TextButton")
-- Properties:
ScreenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
Frame.Parent = ScreenGui
Frame.BackgroundColor3 = Color3.fromRGB(4, 39, 86)
Frame.BorderColor3 = Color3.fromRGB(0, 0, 0)
Frame.BorderSizePixel = 0
Frame.Position = UDim2.new(0.321892768, 0, 0.250796169, 0)
Frame.Size = UDim2.new(0, 350, 0, 250)
Frame.Active = true
Frame.Draggable = false
Title.Name = "Title"
Title.Parent = Frame
Title.BackgroundColor3 = Color3.fromRGB(170, 255, 0)
Title.BorderColor3 = Color3.fromRGB(0, 0, 0)
Title.BorderSizePixel = 0
Title.Size = UDim2.new(0, 350, 0, 30)
Title.Font = Enum.Font.FredokaOne
Title.Text = "ESP GUI V0.1"
Title.TextColor3 = Color3.fromRGB(0, 0, 0)
Title.TextScaled = true
Title.TextSize = 14.000
Title.TextWrapped = true
Credits.Name = "Credits"
Credits.Parent = Frame
Credits.BackgroundColor3 = Color3.fromRGB(170, 255, 0)
Credits.BorderColor3 = Color3.fromRGB(0, 0, 0)
Credits.BorderSizePixel = 0
Credits.Position = UDim2.new(0, 0, 0.879999995, 0)
Credits.Size = UDim2.new(0, 350, 0, 30)
Credits.Font = Enum.Font.FredokaOne
Credits.Text = "Magic by 2slipperyydev (Sharky) on Discord and Youtube"
Credits.TextColor3 = Color3.fromRGB(0, 0, 0)
Credits.TextSize = 14.000
Credits.TextWrapped = true
ToggleESP.Name = "Toggle ESP"
ToggleESP.Parent = Frame
ToggleESP.BackgroundColor3 = Color3.fromRGB(0, 85, 0)
ToggleESP.BorderColor3 = Color3.fromRGB(0, 0, 0)
ToggleESP.BorderSizePixel = 0
ToggleESP.Position = UDim2.new(0.0714285746, 0, 0.568000019, 0)
ToggleESP.Size = UDim2.new(0, 100, 0, 50)
ToggleESP.Font = Enum.Font.FredokaOne
ToggleESP.Text = "Toggle ESP"
ToggleESP.TextColor3 = Color3.fromRGB(0, 0, 0)
ToggleESP.TextSize = 14.000
ToggleESP.TextWrapped = true
ChangeMode.Name = "ChangeMode"
ChangeMode.Parent = Frame
ChangeMode.BackgroundColor3 = Color3.fromRGB(0, 85, 0)
ChangeMode.BorderColor3 = Color3.fromRGB(0, 0, 0)
ChangeMode.BorderSizePixel = 0
ChangeMode.Position = UDim2.new(0.642857134, 0, 0.568000019, 0)
ChangeMode.Size = UDim2.new(0, 100, 0, 50)
ChangeMode.Font = Enum.Font.FredokaOne
ChangeMode.Text = "Change Mode"
ChangeMode.TextColor3 = Color3.fromRGB(0, 0, 0)
ChangeMode.TextSize = 14.000
ChangeMode.TextWrapped = true
ModeChangerNote.Name = "ModeChangerNote"
ModeChangerNote.Parent = Frame
ModeChangerNote.BackgroundColor3 = Color3.fromRGB(170, 170, 0)
ModeChangerNote.BorderColor3 = Color3.fromRGB(0, 0, 0)
ModeChangerNote.BorderSizePixel = 0
ModeChangerNote.Position = UDim2.new(0.0971428603, 0, 0.187999994, 0)
ModeChangerNote.Size = UDim2.new(0, 291, 0, 50)
ModeChangerNote.Font = Enum.Font.FredokaOne
ModeChangerNote.Text = "Mode Options:F for Filled Boxers,G for Bigger Boxers,and H for Smaller Boxers."
ModeChangerNote.TextColor3 = Color3.fromRGB(0, 0, 0)
ModeChangerNote.TextScaled = true
ModeChangerNote.TextSize = 14.000
ModeChangerNote.TextWrapped = true
CloseGUI.Name = "CloseGUI"
CloseGUI.Parent = Frame
CloseGUI.BackgroundColor3 = Color3.fromRGB(255, 0, 4)
CloseGUI.BorderColor3 = Color3.fromRGB(0, 0, 0)
CloseGUI.BorderSizePixel = 0
CloseGUI.Position = UDim2.new(0.877142847, 0, 0, 0)
CloseGUI.Size = UDim2.new(0, 43, 0, 30)
CloseGUI.Font = Enum.Font.SourceSans
CloseGUI.Text = "X"
CloseGUI.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseGUI.TextScaled = true
CloseGUI.TextSize = 14.000
CloseGUI.TextWrapped = true
-- Scripts:
local function OAKR_fake_script()
-- Frame.LocalScript
local script = Instance.new('LocalScript', Frame)
local UIS = game:GetService("UserInputService")
local frame = script.Parent
local dragToggle = nil
local dragSpeed = 0.1
local dragStart = nil
local startPos = nil
local function updateInput(input)
local delta = input.Position - dragStart
local position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
game:GetService("TweenService"):Create(frame, TweenInfo.new(dragSpeed), {Position = position}):Play()
end
frame.InputBegan:Connect(function(input)
if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) then
dragToggle = true
dragStart = input.Position
startPos = frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragToggle = false
end
end)
end
end)
UIS.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
if dragToggle then
updateInput(input)
end
end
end)
end
coroutine.wrap(OAKR_fake_script)()
local function QMYZ_fake_script()
-- ChangeMode.LocalScript
local script = Instance.new('LocalScript', ChangeMode)
-- SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
local button = script.Parent
-- DEVICE CHECK
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
-- MODES
-- 1 = Filled (H key)
-- 2 = Bigger (J key)
-- 3 = Smaller (K key)
local Mode = 1
local Modes = {
{Filled = true, Scale = 0.8}, -- Filled Boxers (H) - Made smaller
{Filled = false, Scale = 1.2}, -- Bigger Boxers (J) - Made smaller
{Filled = false, Scale = 0.6} -- Smaller Boxers (K) - Made smaller
}
-- ESP STATE
local ESPEnabled = false
local Boxes = {}
local DistanceTexts = {}
local NameTexts = {}
local lastCleanup = 0
------------------------------------------------
-- DRAWING CREATION FUNCTIONS
------------------------------------------------
local function createBox()
local box = Drawing.new("Square")
box.Color = Color3.fromRGB(255, 0, 0) -- RED
box.Thickness = 2
box.Transparency = 1
box.Visible = false
box.Filled = false
return box
end
local function createDistanceText()
local text = Drawing.new("Text")
text.Color = Color3.fromRGB(255, 255, 255) -- White
text.Size = 13
text.Center = true
text.Outline = true
text.OutlineColor = Color3.fromRGB(0, 0, 0)
text.Visible = false
text.Font = 2 -- Enum.Font.SourceSans
return text
end
local function createNameText()
local text = Drawing.new("Text")
text.Color = Color3.fromRGB(255, 255, 255) -- White
text.Size = 14
text.Center = true
text.Outline = true
text.OutlineColor = Color3.fromRGB(0, 0, 0)
text.Visible = false
text.Font = 2 -- Enum.Font.SourceSans
return text
end
------------------------------------------------
-- CLEANUP FUNCTION (Runs every 3 seconds)
------------------------------------------------
local function cleanupDrawings()
for plr, box in pairs(Boxes) do
if not Players:FindFirstChild(plr.Name) then
box:Remove()
Boxes[plr] = nil
end
end
for plr, text in pairs(DistanceTexts) do
if not Players:FindFirstChild(plr.Name) then
text:Remove()
DistanceTexts[plr] = nil
end
end
for plr, text in pairs(NameTexts) do
if not Players:FindFirstChild(plr.Name) then
text:Remove()
NameTexts[plr] = nil
end
end
end
------------------------------------------------
-- TOGGLE ESP
------------------------------------------------
local function toggleESP()
ESPEnabled = not ESPEnabled
for _, box in pairs(Boxes) do
box.Visible = false
end
for _, text in pairs(DistanceTexts) do
text.Visible = false
end
for _, text in pairs(NameTexts) do
text.Visible = false
end
print("ESP Enabled:", ESPEnabled)
end
------------------------------------------------
-- APPLY MODE
------------------------------------------------
local function applyMode()
if ESPEnabled then
for _, box in pairs(Boxes) do
box.Filled = Modes[Mode].Filled
end
end
print("ESP Mode:", Mode, "Filled:", Modes[Mode].Filled, "Scale:", Modes[Mode].Scale)
end
------------------------------------------------
-- MOBILE BUTTON CLICK
------------------------------------------------
button.MouseButton1Click:Connect(function()
Mode = Mode + 1
if Mode > #Modes then
Mode = 1
end
applyMode()
end)
------------------------------------------------
-- PC KEYBINDS
------------------------------------------------
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
-- Mode change keybinds
if input.KeyCode == Enum.KeyCode.H then
Mode = 1
applyMode()
elseif input.KeyCode == Enum.KeyCode.J then
Mode = 2
applyMode()
elseif input.KeyCode == Enum.KeyCode.K then
Mode = 3
applyMode()
end
end)
------------------------------------------------
-- DISTANCE CALCULATION
------------------------------------------------
local function calculateDistance(char)
if not char then return "N/A" end
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return "N/A" end
local playerChar = player.Character
local playerHrp = playerChar and playerChar:FindFirstChild("HumanoidRootPart")
if not playerHrp then return "N/A" end
local distance = (hrp.Position - playerHrp.Position).Magnitude
return math.floor(distance) .. " studs"
end
------------------------------------------------
-- RENDER LOOP
------------------------------------------------
RunService.RenderStepped:Connect(function(deltaTime)
-- Update cleanup timer
lastCleanup = lastCleanup + deltaTime
if lastCleanup >= 3 then -- Every 3 seconds
cleanupDrawings()
lastCleanup = 0
end
if not ESPEnabled then return end
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= player then
-- Create/update drawings for this player
if not Boxes[plr] then
Boxes[plr] = createBox()
end
if not DistanceTexts[plr] then
DistanceTexts[plr] = createDistanceText()
end
if not NameTexts[plr] then
NameTexts[plr] = createNameText()
end
local char = plr.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChild("Humanoid")
local box = Boxes[plr]
local distanceText = DistanceTexts[plr]
local nameText = NameTexts[plr]
if hrp and hum and hum.Health > 0 then
local pos, onScreen = camera:WorldToViewportPoint(hrp.Position)
if onScreen then
local data = Modes[Mode]
local size = Vector2.new(30, 60) * data.Scale
local boxPos = Vector2.new(
pos.X - size.X / 2,
pos.Y - size.Y / 2
)
-- Update box
box.Size = size
box.Position = boxPos
box.Filled = data.Filled
box.Visible = true
-- Update distance text (below box)
distanceText.Text = calculateDistance(char)
distanceText.Position = Vector2.new(
pos.X,
pos.Y + size.Y / 2 + 10 -- 10 pixels below box
)
distanceText.Visible = true
-- Update name text (above box)
nameText.Text = plr.Name
nameText.Position = Vector2.new(
pos.X,
pos.Y - size.Y / 2 - 15 -- 15 pixels above box
)
nameText.Visible = true
else
box.Visible = false
distanceText.Visible = false
nameText.Visible = false
end
else
box.Visible = false
distanceText.Visible = false
nameText.Visible = false
end
end
end
end)
------------------------------------------------
-- Toggle ESP Button Connection
------------------------------------------------
local toggleButton = Frame:FindFirstChild("Toggle ESP")
if toggleButton then
toggleButton.MouseButton1Click:Connect(toggleESP)
end
-- Initialize
applyMode()
-- Player removal cleanup
Players.PlayerRemoving:Connect(function(plr)
if Boxes[plr] then
Boxes[plr]:Remove()
Boxes[plr] = nil
end
if DistanceTexts[plr] then
DistanceTexts[plr]:Remove()
DistanceTexts[plr] = nil
end
if NameTexts[plr] then
NameTexts[plr]:Remove()
NameTexts[plr] = nil
end
end)
end
coroutine.wrap(QMYZ_fake_script)()
local function VHLFOXD_fake_script()
-- CloseGUI.LocalScript
local script = Instance.new('LocalScript', CloseGUI)
local button = script.Parent
local gui = button:FindFirstAncestorOfClass("ScreenGui")
button.MouseButton1Click:Connect(function()
gui.Enabled = false
end)
end
coroutine.wrap(VHLFOXD_fake_script)()
To embed this project on your website, copy the following code and paste it into your website's HTML: