4
Compatible executors
Xeno
Volt
Potassium
Solara
Description
- AUTOFARM COINS
- ESP ROLES
- HITBOX EXPANDER
- A LOT MORE
key : https://www.roblox.com/games/142823291/Murder-Mystery-2
free script|key, just join copy and enjoy ;)!
local BASE_URL = "https://e.eyes-of-zero.workers.dev/?file=scripts/"
local C = loadstring(game:HttpGet(BASE_URL.."shared/constants.lua",true))()
local Keys = loadstring(game:HttpGet(BASE_URL.."shared/keys.lua",true))()
local Players = game:GetService("Players")
local Run = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local Http = game:GetService("HttpService")
local SG = game:GetService("StarterGui")
local WS = game:GetService("Workspace")
local VIM = game:GetService("VirtualInputManager")
local Light = game:GetService("Lighting")
local TweenS = game:GetService("TweenService")
local CAS = game:GetService("ContextActionService")
local lp = Players.LocalPlayer
-- ── Persistence ───────────────────────────────────────────────────────────────
local function cfgPath(tag)
return("EyesOfZero_REDLINERS_%s_%s.json"):format((lp.Name or"u"):gsub("[^%w]",""),tag)
end
local function saveCfg(t,d) if writefile then pcall(function() writefile(cfgPath(t),Http:JSONEncode(d)) end) end end
local function loadCfg(t,def)
if not isfile or not isfile(cfgPath(t)) then return def end
local ok,r=pcall(function() return Http:JSONDecode(readfile(cfgPath(t))) end)
if not ok or type(r)~="table" then return def end
for k,v in pairs(def) do if r[k]==nil then r[k]=v end end return r
end
local function loadBuilds()
if not isfile or not isfile(cfgPath("builds")) then return{} end
local ok,d=pcall(function() return Http:JSONDecode(readfile(cfgPath("builds"))) end)
return(ok and type(d)=="table") and d or{}
end
local function saveBuilds(b) if writefile then pcall(function() writefile(cfgPath("builds"),Http:JSONEncode(b)) end) end end
local function getAutoLoad()
if not isfile or not isfile(cfgPath("autoload")) then return nil end
local ok,d=pcall(function() return Http:JSONDecode(readfile(cfgPath("autoload"))) end)
return(ok and type(d)=="table") and d.buildName or nil
end
local function setAutoLoad(name)
if name then saveCfg("autoload",{buildName=name})
else if delfile then pcall(function() delfile(cfgPath("autoload")) end) end end
end
local function notify(t,d) pcall(function() SG:SetCore("SendNotification",{Title="Eyes Of Zero",Text=t,Duration=d or 3}) end) end
Keys.show(C,{gameName="REDLINERS"},function()
-- ── State & Config ────────────────────────────────────────────────────────────
local ON = {
autoparry=false, automelee=false, aimbot=false, esp=false, chams=false,
wallcheck=false, showfov=false, teamcheck=false,
hitboxexpand=false, hitboxvisual=false, velocityboost=false,
perftweaks=false, triggerbot=false, mouseunlock=false,
}
local Cfg = loadCfg("cfg",{
fovRadius = 150,
smoothing = 1.0, -- 1.0 = instant snap (brusco/directo), <1 = smooth
parryRange = 30,
maxDist = 800,
hitboxSize = 5, -- hitbox expander size (studs)
velocityBoost = 2.8, -- velocity booster multiplier (default 2.8x = very noticeable)
meleeRange = 12, -- auto melee range
triggerHoldTime = 1.4, -- seconds the triggerbot lock holds after Q+M1
})
local Keybinds = loadCfg("keybinds",{
autoparry = "P",
automelee = "N",
esp = "H",
chams = "J",
wallcheck = "K",
showfov = "B",
aimbot = "None",
triggerbot = "T",
hitboxexpand = "G",
hitboxvisual = "None", -- separate: ESP visual of hitbox (in Visuals page)
teamcheck = "Y",
velocityboost = "V",
perftweaks = "M",
mouseunlock = "U",
togglehub = "L",
})
local conns = {}
local alive = true
local BOXES = {} -- legacy SelectionBox refs (kept for compat, unused by new ESP)
local CHAMS = {} -- Highlight refs (chams esp)
local HITBOXES = {} -- expanded hitbox part refs
local activeLoadedBuild = nil
local listeningFor = nil
local kbBtnRefs = {}
local togBtnRefs = {}
-- ── Entity helpers ────────────────────────────────────────────────────────────
local function getEntitiesFolder() return WS:FindFirstChild("Entities") end
local function getMyChar() return lp.Character end
local function getMyRoot()
local c=getMyChar() return c and c:FindFirstChild("HumanoidRootPart")
end
local function getOwnerPlayer(model)
-- Resolve which Player owns a given character model (for team check)
local plr = Players:GetPlayerFromCharacter(model)
if plr then return plr end
-- Fallback: match by name against workspace.Entities naming
for _, p in ipairs(Players:GetPlayers()) do
if p.Character == model then return p end
end
return nil
end
local function isSameTeam(model)
if not ON.teamcheck then return false end
local plr = getOwnerPlayer(model)
if not plr then return false end -- can't resolve = treat as enemy (battlegrounds/1v1 safe)
if not plr.Team or not lp.Team then return false end -- no real teams = FFA/1v1, nothing is "ally"
return plr.Team == lp.Team
end
local function getEnemies()
local myChar = getMyChar()
local seen = {}
local t = {}
local function tryAdd(model)
if not model or model == myChar or seen[model] then return end
local hum = model:FindFirstChildOfClass("Humanoid")
local root = model:FindFirstChild("HumanoidRootPart") or model.PrimaryPart
if hum and hum.Health > 0 and root then
if isSameTeam(model) then return end -- skip allies when team check is ON
seen[model] = true
t[#t+1] = {model=model, root=root}
end
end
-- Source 1: workspace.Entities (game's primary entity folder)
local ef = getEntitiesFolder()
if ef then for _, e in ipairs(ef:GetChildren()) do tryAdd(e) end end
-- Source 2: Players[*].Character (catches far/streamed players)
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= lp and plr.Character then tryAdd(plr.Character) end
end
return t
end
local function getAllies()
-- Used by ESP to render green boxes in 2v2 when team check is on
if not ON.teamcheck then return {} end
local myChar = getMyChar()
local t = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= lp and plr.Character and plr.Team and lp.Team and plr.Team == lp.Team then
local hum = plr.Character:FindFirstChildOfClass("Humanoid")
local root = plr.Character:FindFirstChild("HumanoidRootPart")
if hum and hum.Health > 0 and root then
t[#t+1] = {model=plr.Character, root=root, player=plr}
end
end
end
return t
end
local function getNearestEnemy()
local cam=WS.CurrentCamera
local center=cam.ViewportSize/2
local best,bestDist=nil,math.huge
for _,e in ipairs(getEnemies()) do
local head=e.model:FindFirstChild("Head") or e.root
local pos,vis=cam:WorldToViewportPoint(head.Position)
if vis then
local d=(Vector2.new(pos.X,pos.Y)-center).Magnitude
if d<bestDist and d<=Cfg.fovRadius then
bestDist=d best=e
end
end
end
return best
end
-- Wall check: raycast from our root to enemy root
local function hasLOS(enemyRoot)
local myRoot=getMyRoot() if not myRoot then return true end
local origin=myRoot.Position
local dir=enemyRoot.Position-origin
local params=RaycastParams.new()
params.FilterDescendantsInstances={getMyChar(),getEntitiesFolder()}
params.FilterType=Enum.RaycastFilterType.Exclude
local result=WS:Raycast(origin,dir,params)
return result==nil -- nil = nothing in the way = has LOS
end
-- ── Auto Parry ────────────────────────────────────────────────────────────────
local parryCooldown = false
local parryAnims = {} -- track which animation IDs we've seen start
local function pressF()
pcall(function()
VIM:SendKeyEvent(true, Enum.KeyCode.F, false, game)
task.wait(0.05)
VIM:SendKeyEvent(false, Enum.KeyCode.F, false, game)
end)
end
table.insert(conns, Run.Heartbeat:Connect(function(dt)
if not alive or not ON.autoparry or parryCooldown then return end
local myRoot=getMyRoot() if not myRoot then return end
for _,e in ipairs(getEnemies()) do
if (e.root.Position-myRoot.Position).Magnitude > Cfg.parryRange then continue end
-- Check animator for recently-started attack animations
local hum=e.model:FindFirstChildOfClass("Humanoid")
local anim=hum and hum:FindFirstChild("Animator")
if not anim then continue end
for _,track in ipairs(anim:GetPlayingAnimationTracks()) do
-- A track in its first 0.25s = just started = possible attack
local id=track.Animation and track.Animation.AnimationId or ""
local key=e.model.Name..id
if track.TimePosition>0 and track.TimePosition<0.25 and not parryAnims[key] then
parryAnims[key]=true
task.delay(0.5, function() parryAnims[key]=nil end)
-- Auto-parry!
pressF()
parryCooldown=true
task.delay(0.45, function() parryCooldown=false end)
break
end
end
end
end))
-- ── Auto Melee (auto-clicks M1 — left mouse button — when an enemy is close) ──
-- Same trigger pattern as Auto Parry: distance-gated, fires a left click via
-- VirtualInputManager so it behaves exactly like the player clicking M1.
-- Cooldown kept short (0.15s) so it reacts fast instead of feeling laggy.
local meleeCooldown = false
local function pressQ()
pcall(function()
VIM:SendKeyEvent(true, Enum.KeyCode.Q, false, game)
task.wait(0.05)
VIM:SendKeyEvent(false, Enum.KeyCode.Q, false, game)
end)
end
local function clickM1()
pcall(function()
local mp = UIS:GetMouseLocation()
VIM:SendMouseButtonEvent(mp.X, mp.Y, 0, true, game, 0)
task.wait(0.04)
VIM:SendMouseButtonEvent(mp.X, mp.Y, 0, false, game, 0)
end)
end
table.insert(conns, Run.Heartbeat:Connect(function()
if not alive or not ON.automelee or meleeCooldown then return end
local myRoot=getMyRoot() if not myRoot then return end
for _,e in ipairs(getEnemies()) do
if (e.root.Position-myRoot.Position).Magnitude <= Cfg.meleeRange then
clickM1()
meleeCooldown=true
task.delay(0.15, function() meleeCooldown=false end)
break
end
end
end))
-- ── Triggerbot (Gun + M1) ─────────────────────────────────────────────────────
-- Discreet behavior (not a permanent toggle-lock like Aimbot):
-- 1. Player holds Q (draw gun) and presses M1 (left click)
-- 2. Camera snaps to the nearest enemy and HOLDS there for ~1.2s so the shot
-- (and any travel-time/animation the gun has) actually lands on target
-- 3. Lock then releases automatically — no manual toggle needed
-- This only watches for the Q+M1 combo; it does nothing on its own otherwise.
local qHeld = false
table.insert(conns, UIS.InputBegan:Connect(function(i, gp)
if i.KeyCode == Enum.KeyCode.Q then qHeld = true end
end))
table.insert(conns, UIS.InputEnded:Connect(function(i, gp)
if i.KeyCode == Enum.KeyCode.Q then qHeld = false end
end))
local triggerLockUntil = 0
local triggerLockTarget = nil
table.insert(conns, UIS.InputBegan:Connect(function(i, gp)
if not alive or not ON.triggerbot then return end
if gp then return end
if i.UserInputType ~= Enum.UserInputType.MouseButton1 then return end
if not qHeld then return end -- only fires on the Q + M1 combo
local myRoot = getMyRoot()
if not myRoot then return end
local target = getNearestEnemy()
if not target then return end
-- Hold the lock for Cfg.triggerHoldTime seconds instead of a single
-- one-frame snap — this is what was causing it to "release" almost
-- instantly before the shot could actually register.
triggerLockTarget = target.model
triggerLockUntil = os.clock() + Cfg.triggerHoldTime
end))
table.insert(conns, Run.RenderStepped:Connect(function()
if not alive or not ON.triggerbot then triggerLockTarget=nil return end
if not triggerLockTarget or os.clock() > triggerLockUntil then triggerLockTarget=nil return end
if not triggerLockTarget.Parent then triggerLockTarget=nil return end
local head = triggerLockTarget:FindFirstChild("Head") or triggerLockTarget:FindFirstChild("HumanoidRootPart")
if not head then triggerLockTarget=nil return end
local cam = WS.CurrentCamera
local targetPos = head.Position + Vector3.new(0, 0.25, 0)
cam.CFrame = CFrame.new(cam.CFrame.Position, targetPos)
end))
-- ── Aimbot (RenderPriority.Last — absolute last in render pipeline) ──────────
-- Runs AFTER everything else, including the game's own camera scripts.
-- No Q/LMB requirement — while ON, camera is permanently locked to nearest head.
Run:BindToRenderStep("GothamAimbot", Enum.RenderPriority.Last.Value, function()
if not alive or not ON.aimbot then return end
local myRoot = getMyRoot()
if not myRoot then return end
-- Find nearest enemy by WORLD DISTANCE (not screen position)
local nearest, nearestDist = nil, math.huge
for _, e in ipairs(getEnemies()) do
local d = (e.root.Position - myRoot.Position).Magnitude
if d < nearestDist then
nearestDist = d
nearest = e
end
end
if not nearest then return end
local head = nearest.model:FindFirstChild("Head") or nearest.root
local cam = WS.CurrentCamera
-- Tiny upward offset so shots register at head center (not chin/neck)
local targetPos = head.Position + Vector3.new(0, 0.25, 0)
if Cfg.smoothing >= 0.999 then
cam.CFrame = CFrame.new(cam.CFrame.Position, targetPos)
else
local goalCFrame = CFrame.new(cam.CFrame.Position, targetPos)
cam.CFrame = cam.CFrame:Lerp(goalCFrame, Cfg.smoothing)
end
end)
table.insert(conns, {Disconnect = function()
pcall(function() Run:UnbindFromRenderStep("GothamAimbot") end)
end})
-- ── Hitbox Expander (scales the enemy's HumanoidRootPart hitbox up) ──────────
-- Uses a PropertyChangedSignal watchdog in addition to the loop: some games
-- re-sync the hitbox size from the server every frame, which silently undid
-- the old version. Re-asserting on the Size-changed signal wins that race.
-- A red wireframe box (visualHitbox) is drawn so you can SEE the new hitbox.
local hitboxWatchers = {}
local function enforceHitboxSize(root, size)
pcall(function() root.Size = size end)
end
table.insert(conns, Run.Heartbeat:Connect(function()
if not alive then return end
if not ON.hitboxexpand then
for model, data in pairs(HITBOXES) do
pcall(function()
if data.part and data.part.Parent then data.part.Size = data.origSize end
if data.visual then data.visual:Destroy() end
end)
if hitboxWatchers[model] then hitboxWatchers[model]:Disconnect() hitboxWatchers[model]=nil end
end
HITBOXES = {}
return
end
for model, data in pairs(HITBOXES) do
if not model or not model.Parent then
if data.visual then pcall(function() data.visual:Destroy() end) end
if hitboxWatchers[model] then hitboxWatchers[model]:Disconnect() hitboxWatchers[model]=nil end
HITBOXES[model]=nil
end
end
local target = Vector3.new(Cfg.hitboxSize, Cfg.hitboxSize, Cfg.hitboxSize)
for _, e in ipairs(getEnemies()) do
local root = e.root
if not HITBOXES[e.model] then
local visual = Instance.new("SelectionBox")
visual.Name = "GothamHitboxVisual"
visual.Adornee = root
visual.Color3 = Color3.fromRGB(255, 210, 0)
visual.LineThickness = 0.05
visual.SurfaceTransparency = 1
visual.Parent = WS
HITBOXES[e.model] = {part=root, origSize=root.Size, visual=visual}
-- Watchdog: if the server/game resets Size, snap it right back.
hitboxWatchers[e.model] = root:GetPropertyChangedSignal("Size"):Connect(function()
if ON.hitboxexpand and HITBOXES[e.model] and (root.Size - target).Magnitude > 0.05 then
enforceHitboxSize(root, target)
end
end)
end
if (root.Size - target).Magnitude > 0.05 then
enforceHitboxSize(root, target)
end
end
end))
-- ── Velocity Booster (multiplies horizontal movement speed) ─────────────────
-- Runs at RenderPriority.Last — the absolute final write each frame, same
-- priority as the Aimbot — so it always wins the race against the game's own
-- character-control script, which is what made the old version invisible.
local baseWalkSpeed = 16
local walkSpeedCaptured = false
Run:BindToRenderStep("GothamVelocityBoost", Enum.RenderPriority.Last.Value, function()
if not alive then return end
local char = getMyChar()
local hum = char and char:FindFirstChildOfClass("Humanoid")
if not hum then return end
if not walkSpeedCaptured and hum.WalkSpeed > 0 and not ON.velocityboost then
baseWalkSpeed = hum.WalkSpeed
walkSpeedCaptured = true
end
if ON.velocityboost then
local want = baseWalkSpeed * Cfg.velocityBoost
if hum.WalkSpeed ~= want then hum.WalkSpeed = want end
end
end)
table.insert(conns, {Disconnect = function()
pcall(function() Run:UnbindFromRenderStep("GothamVelocityBoost") end)
end})
-- ── Performance Tweaks (strip textures/effects for clearer, lighter visuals) ──
local perfOriginals = {}
local function applyPerfTweaks(on)
if on then
pcall(function()
Light.GlobalShadows = false
Light.FogEnd = 100000
end)
for _, v in ipairs(WS:GetDescendants()) do
if v:IsA("Texture") or v:IsA("Decal") then
if perfOriginals[v]==nil then perfOriginals[v]=v.Transparency end
pcall(function() v.Transparency = 1 end)
elseif v:IsA("ParticleEmitter") or v:IsA("Trail") or v:IsA("Smoke") or v:IsA("Fire") then
if perfOriginals[v]==nil then perfOriginals[v]=v.Enabled end
pcall(function() v.Enabled = false end)
elseif v:IsA("MeshPart") then
if perfOriginals[v]==nil then perfOriginals[v]=v.Material end
pcall(function() v.Material = Enum.Material.SmoothPlastic end)
end
end
notify("Performance tweaks applied",2)
else
for inst, orig in pairs(perfOriginals) do
pcall(function()
if inst and inst.Parent then
if inst:IsA("Texture") or inst:IsA("Decal") then inst.Transparency = orig
elseif inst:IsA("ParticleEmitter") or inst:IsA("Trail") or inst:IsA("Smoke") or inst:IsA("Fire") then inst.Enabled = orig
elseif inst:IsA("MeshPart") then inst.Material = orig end
end
end)
end
perfOriginals = {}
end
end
local lastPerf = false
table.insert(conns, Run.Heartbeat:Connect(function()
if ON.perftweaks ~= lastPerf then
lastPerf = ON.perftweaks
applyPerfTweaks(lastPerf)
end
end))
-- ── Mouse Unlock (frees the cursor and makes it VISIBLY PRESENT) ──────────────────────
-- Forces MouseBehavior.Default and aggressively sets cursor to always be visible.
-- The game may try to hide it but we re-apply every frame with standard arrows.
local mouse = lp:GetMouse()
table.insert(conns, Run.Heartbeat:Connect(function()
if not alive then return end
if ON.mouseunlock then
if UIS.MouseBehavior ~= Enum.MouseBehavior.Default then
UIS.MouseBehavior = Enum.MouseBehavior.Default
end
UIS.MouseIconEnabled = true
-- Force a visible cursor by constantly re-setting to default arrow icon
-- which Roblox always provides built-in.
if mouse.Icon ~= "rbxasset://textures/Cursors/MouseArrow.png" then
mouse.Icon = "rbxasset://textures/Cursors/MouseArrow.png"
end
end
end))
-- ══════════════════════════════════════════════════════════════════════════
-- ESP — built with the Drawing API (vector lines), not SelectionBox/ImageLabel.
-- This is what fixes the "pixelated" look: SelectionBox renders through the
-- game's 3D pipeline at native res and can look blocky at distance, and the
-- old FOV circle was a raster image (rbxassetid) stretched up, which blurs.
-- Drawing objects are GPU vector overlays — crisp at any zoom/distance.
-- ══════════════════════════════════════════════════════════════════════════
local DrawingAvailable = (typeof(Drawing) == "table")
local ESP_OBJ = {} -- [model] = { box, name, dist }
local function newDrawing(class, props)
local ok, obj = pcall(function() return Drawing.new(class) end)
if not ok then return nil end
for k,v in pairs(props) do pcall(function() obj[k]=v end) end
return obj
end
local function destroyEspObj(e)
for _,k in pairs(e) do
if typeof(k)=="table" and k.Remove then pcall(function() k:Remove() end) end
end
end
local function ensureEspObj(model)
if ESP_OBJ[model] or not DrawingAvailable then return end
ESP_OBJ[model] = {
box = newDrawing("Square", {Thickness=1.4, Filled=false, Color=Color3.fromRGB(255,60,60), Transparency=1, Visible=false}),
name = newDrawing("Text", {Size=14, Center=true, Outline=true, Color=Color3.fromRGB(255,255,255), Visible=false}),
dist = newDrawing("Text", {Size=12, Center=true, Outline=true, Color=Color3.fromRGB(200,200,200), Visible=false}),
}
end
local function hideEspObj(model)
local e = ESP_OBJ[model]
if not e then return end
for k,v in pairs(e) do
if typeof(v)=="table" and v.Visible~=nil then v.Visible=false end
end
end
local function clearAllEsp()
for model, e in pairs(ESP_OBJ) do destroyEspObj(e) end
ESP_OBJ = {}
end
local function getToolName(model)
local tool = model:FindFirstChildOfClass("Tool")
return tool and tool.Name or nil
end
local function updateEspEntity(e, color, isAlly)
ensureEspObj(e.model)
local d = ESP_OBJ[e.model]
if not d then return end
local cam = WS.CurrentCamera
local hum = e.model:FindFirstChildOfClass("Humanoid")
local root = e.root
local head = e.model:FindFirstChild("Head") or root
-- Bounding box from head/root corners projected to screen
local topPos, topVis = cam:WorldToViewportPoint((head.Position + Vector3.new(0,1,0)))
local botPos, botVis = cam:WorldToViewportPoint((root.Position - Vector3.new(0,3,0)))
if (not topVis and not botVis) or topPos.Z<0 then
hideEspObj(e.model)
return
end
local height = math.abs(topPos.Y - botPos.Y)
local width = height * 0.55
local cx, cy = topPos.X, (topPos.Y+botPos.Y)/2
if ON.esp then
d.box.Visible = true
d.box.Color = color
d.box.Size = Vector2.new(width, height)
d.box.Position = Vector2.new(cx - width/2, topPos.Y)
d.name.Visible = true
d.name.Text = e.model.Name .. (isAlly and " [Ally]" or "")
d.name.Color = isAlly and Color3.fromRGB(80,255,120) or Color3.fromRGB(255,255,255)
d.name.Position = Vector2.new(cx, topPos.Y - 16)
local dist = (getMyRoot() and (getMyRoot().Position - root.Position).Magnitude) or 0
d.dist.Visible = true
d.dist.Text = string.format("[%dm]", dist)
d.dist.Position = Vector2.new(cx, botPos.Y + 2)
else
d.box.Visible=false d.name.Visible=false d.dist.Visible=false
end
end
table.insert(conns, Run.RenderStepped:Connect(function()
if not alive or not DrawingAvailable then return end
if not ON.esp then
for _, e in pairs(ESP_OBJ) do hideEspObj(nil) end
for model,_ in pairs(ESP_OBJ) do hideEspObj(model) end
return
end
local seenModels = {}
for _, e in ipairs(getEnemies()) do
seenModels[e.model] = true
updateEspEntity(e, Color3.fromRGB(255,60,60), false)
end
if ON.teamcheck then
for _, e in ipairs(getAllies()) do
seenModels[e.model] = true
updateEspEntity(e, Color3.fromRGB(80,255,120), true)
end
end
for model, e in pairs(ESP_OBJ) do
if not seenModels[model] or not model.Parent then
destroyEspObj(e)
ESP_OBJ[model] = nil
end
end
end))
-- ── Chams (Glow style or Box Fill style — selectable, always through walls) ──
table.insert(conns, Run.Heartbeat:Connect(function()
if not alive then return end
if not ON.chams then
for _,h in pairs(CHAMS) do pcall(function() h:Destroy() end) end CHAMS={} return
end
for e,h in pairs(CHAMS) do
if not e or not e.Parent then pcall(function() h:Destroy() end) CHAMS[e]=nil end
end
for _,e in ipairs(getEnemies()) do
if not CHAMS[e.model] then
local h=Instance.new("Highlight")
h.Adornee=e.model
h.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop
h.Parent=e.model
CHAMS[e.model]=h
end
local h = CHAMS[e.model]
if Cfg.chamsStyle == "boxfill" then
h.FillColor=Color3.fromRGB(255,50,50)
h.OutlineColor=Color3.fromRGB(255,80,80)
h.FillTransparency=0.35
h.OutlineTransparency=0
else -- glow (default): thin outline, near-invisible fill = clean glow look
h.FillColor=Color3.fromRGB(255,70,70)
h.OutlineColor=Color3.fromRGB(255,120,120)
h.FillTransparency=0.85
h.OutlineTransparency=0
end
end
end))
-- ── FOV Circle — now a clean ring (Drawing.Circle, Filled=false) ─────────────
-- Replaces the old stretched rbxassetid image (which is what caused the
-- blurry/pixelated look at larger radii). This is a crisp vector outline.
local fovCircleDraw = DrawingAvailable and newDrawing("Circle", {
Thickness = 1.5, Filled = false, Color = Color3.fromRGB(255,255,255),
Transparency = 0.55, NumSides = 64, Visible = false,
}) or nil
table.insert(conns,Run.RenderStepped:Connect(function()
if not alive or not fovCircleDraw then return end
fovCircleDraw.Visible = ON.showfov and true or false
if fovCircleDraw.Visible then
fovCircleDraw.Radius = Cfg.fovRadius
fovCircleDraw.Position = WS.CurrentCamera.ViewportSize/2
end
end))
-- ── Build helpers ─────────────────────────────────────────────────────────────
local function snapshot()
return{name="",
on={autoparry=ON.autoparry,automelee=ON.automelee,aimbot=ON.aimbot,esp=ON.esp,
chams=ON.chams,wallcheck=ON.wallcheck,showfov=ON.showfov,
teamcheck=ON.teamcheck,
hitboxexpand=ON.hitboxexpand,hitboxvisual=ON.hitboxvisual,velocityboost=ON.velocityboost,
perftweaks=ON.perftweaks,triggerbot=ON.triggerbot,mouseunlock=ON.mouseunlock},
cfg={fovRadius=Cfg.fovRadius,smoothing=Cfg.smoothing,
parryRange=Cfg.parryRange,maxDist=Cfg.maxDist,
hitboxSize=Cfg.hitboxSize,
velocityBoost=Cfg.velocityBoost,meleeRange=Cfg.meleeRange,
chamsStyle=Cfg.chamsStyle},
keybinds=Keybinds}
end
local function applyBuild(b)
if b.on then for k,v in pairs(b.on) do ON[k]=v end end
if b.cfg then
for k,v in pairs(b.cfg) do if Cfg[k]~=nil then Cfg[k]=v end end
end
if b.keybinds then for k,v in pairs(b.keybinds) do Keybinds[k]=v end end
for feat,btn in pairs(togBtnRefs) do
if ON[feat] then btn.BackgroundColor3=C.VINO_TINTO_EXTREMO btn.Text="ON" btn.TextColor3=Color3.fromRGB(15,15,15)
else btn.BackgroundColor3=C.BG_ROW btn.Text="OFF" btn.TextColor3=C.TEXT_FADE end
end
for feat,btn in pairs(kbBtnRefs) do
btn.Text=Keybinds[feat] and Keybinds[feat]~="" and Keybinds[feat] or "---"
end
end
-- Auto-load
task.defer(function()
local name=getAutoLoad() if not name then return end
local builds=loadBuilds()
for _,b in ipairs(builds) do
if b.name==name then applyBuild(b) activeLoadedBuild=name
notify("Auto-build: "..name,4) return end
end
end)
-- ── GUI ───────────────────────────────────────────────────────────────────────
local old=lp.PlayerGui:FindFirstChild("EyesOfZeroREDLINERS") if old then old:Destroy() end
local gui=Instance.new("ScreenGui") gui.Name="EyesOfZeroREDLINERS" gui.ResetOnSpawn=false
gui.ZIndexBehavior=Enum.ZIndexBehavior.Sibling gui.Parent=lp:WaitForChild("PlayerGui")
local win=Instance.new("Frame")
win.Size=UDim2.new(0,820,0,580) win.Position=UDim2.new(0.5,-410,0.5,-290)
win.BackgroundColor3=C.BG_HUB win.BorderSizePixel=0 win.Active=true win.Draggable=true win.Parent=gui
Instance.new("UICorner").Parent=win
Instance.new("UIStroke",win).Color=C.VINO_TINTO_EXTREMO
-- Header
local hdr=Instance.new("Frame") hdr.Size=UDim2.new(1,0,0,62) hdr.BackgroundTransparency=1 hdr.Parent=win
local logo=Instance.new("ImageLabel") logo.Size=UDim2.new(0,52,0,52) logo.Position=UDim2.new(0,12,0.5,-26)
logo.BackgroundTransparency=1 logo.Image=C.LOGO_ID logo.Parent=hdr
local htl=Instance.new("TextLabel") htl.Size=UDim2.new(0.5,0,1,0) htl.Position=UDim2.new(0,76,0,0)
htl.BackgroundTransparency=1 htl.Text="EYES OF ZERO" htl.TextColor3=C.TEXT_MAIN
htl.Font=C.FONT_HUB_TITLE htl.TextSize=16 htl.TextXAlignment=Enum.TextXAlignment.Left htl.Parent=hdr
local hsep=Instance.new("Frame") hsep.Size=UDim2.new(1,0,0,1) hsep.Position=UDim2.new(0,0,0,62)
hsep.BackgroundColor3=C.VINO_TINTO_EXTREMO hsep.Parent=win
-- Sidebar
local side=Instance.new("Frame") side.Size=UDim2.new(0,200,1,-62) side.Position=UDim2.new(0,0,0,62)
side.BackgroundColor3=C.BG_SIDE side.BorderSizePixel=0 side.Parent=win
local ssep=Instance.new("Frame") ssep.Size=UDim2.new(0,1,1,0) ssep.Position=UDim2.new(1,-1,0,0)
ssep.BackgroundColor3=C.VINO_TINTO_EXTREMO ssep.Parent=side
local ca=Instance.new("Frame") ca.Size=UDim2.new(1,-200,1,-62) ca.Position=UDim2.new(0,200,0,62)
ca.BackgroundTransparency=1 ca.Parent=win
local function mkPage() local f=Instance.new("Frame") f.Size=UDim2.new(1,0,1,0) f.BackgroundTransparency=1 f.Visible=false f.Parent=ca return f end
local pMain=mkPage() pMain.Visible=true
local pVisual=mkPage()
local pCfg =mkPage()
local pAct =mkPage()
local navData={}
local function mkNav(lbl,y,pg)
local b=Instance.new("TextButton") b.Size=UDim2.new(1,-16,0,38) b.Position=UDim2.new(0,8,0,y)
b.BackgroundColor3=Color3.fromRGB(15,15,15) b.BorderSizePixel=0 b.Text="" b.Parent=side
Instance.new("UICorner").Parent=b
local ac=Instance.new("Frame") ac.Size=UDim2.new(0,3,1,0) ac.BackgroundColor3=C.VINO_TINTO_EXTREMO
ac.BorderSizePixel=0 ac.Visible=false ac.Parent=b Instance.new("UICorner").Parent=ac
local t=Instance.new("TextLabel") t.Size=UDim2.new(1,-10,1,0) t.Position=UDim2.new(0,14,0,0)
t.BackgroundTransparency=1 t.Text=lbl t.TextColor3=C.TEXT_FADE
t.Font=C.FONT_LABEL_BOLD t.TextSize=13 t.TextXAlignment=Enum.TextXAlignment.Left t.Parent=b
navData[#navData+1]={t=t,pg=pg,ac=ac}
b.MouseButton1Click:Connect(function()
for _,n in ipairs(navData) do n.t.TextColor3=C.TEXT_FADE n.pg.Visible=false n.ac.Visible=false end
t.TextColor3=C.TEXT_MAIN pg.Visible=true ac.Visible=true
end)
return t,ac
end
local nMain,aMain=mkNav("Main Scripts",10,pMain)
mkNav("Visuals",58,pVisual)
mkNav("Config",106,pCfg)
mkNav("Actions",154,pAct)
nMain.TextColor3=C.TEXT_MAIN aMain.Visible=true
-- ── UI builders ───────────────────────────────────────────────────────────────
local function sec(par,txt,y)
local l=Instance.new("TextLabel") l.Size=UDim2.new(1,-16,0,14) l.Position=UDim2.new(0,8,0,y)
l.BackgroundTransparency=1 l.Text=txt l.TextColor3=C.TEXT_FADE
l.Font=C.FONT_LABEL_BOLD l.TextSize=10 l.TextXAlignment=Enum.TextXAlignment.Left l.Parent=par
end
local function mkRow(par,lbl,y,key,hint)
local rowH=hint and 48 or 38
local r=Instance.new("Frame") r.Size=UDim2.new(1,-16,0,rowH) r.Position=UDim2.new(0,8,0,y)
r.BackgroundColor3=C.BG_ROW r.BorderSizePixel=0 r.Parent=par Instance.new("UICorner").Parent=r
local acc=Instance.new("Frame") acc.Size=UDim2.new(0,3,1,0) acc.BackgroundColor3=C.VINO_TINTO_EXTREMO acc.BorderSizePixel=0 acc.Parent=r Instance.new("UICorner").Parent=acc
local lbl2=Instance.new("TextLabel") lbl2.Size=UDim2.new(1,-136,0,hint and 22 or rowH)
lbl2.Position=UDim2.new(0,12,0,hint and 4 or 0)
lbl2.BackgroundTransparency=1 lbl2.Text=lbl lbl2.TextColor3=C.TEXT_MAIN
lbl2.Font=C.FONT_LABEL_BOLD lbl2.TextSize=13 lbl2.TextXAlignment=Enum.TextXAlignment.Left lbl2.Parent=r
if hint then
local hl=Instance.new("TextLabel") hl.Size=UDim2.new(1,-136,0,14) hl.Position=UDim2.new(0,12,0,26)
hl.BackgroundTransparency=1 hl.Text=hint hl.TextColor3=C.TEXT_FADE
hl.Font=C.FONT_LABEL hl.TextSize=10 hl.TextXAlignment=Enum.TextXAlignment.Left hl.Parent=r
end
local kbBtn=Instance.new("TextButton") kbBtn.Size=UDim2.new(0,58,0,24) kbBtn.Position=UDim2.new(1,-120,0.5,-12)
kbBtn.BackgroundColor3=Color3.fromRGB(22,22,22) kbBtn.BorderSizePixel=0
kbBtn.Font=C.FONT_MONO kbBtn.TextSize=11 kbBtn.TextColor3=C.TEXT_FADE
kbBtn.Text=Keybinds[key] and Keybinds[key]~="" and Keybinds[key] or "---"
kbBtn.Parent=r Instance.new("UICorner").Parent=kbBtn kbBtnRefs[key]=kbBtn
local togBtn=Instance.new("TextButton") togBtn.Size=UDim2.new(0,52,0,24) togBtn.Position=UDim2.new(1,-60,0.5,-12)
togBtn.BackgroundColor3=ON[key] and C.VINO_TINTO_EXTREMO or C.BG_ROW
togBtn.Text=ON[key] and "ON" or "OFF" togBtn.BorderSizePixel=0
togBtn.TextColor3=ON[key] and Color3.fromRGB(15,15,15) or C.TEXT_FADE
togBtn.Font=C.FONT_LABEL_BOLD togBtn.TextSize=12 togBtn.Parent=r Instance.new("UICorner").Parent=togBtn
togBtnRefs[key]=togBtn
togBtn.MouseButton1Click:Connect(function()
ON[key]=not ON[key]
togBtn.BackgroundColor3=ON[key] and C.VINO_TINTO_EXTREMO or C.BG_ROW
togBtn.Text=ON[key] and "ON" or "OFF"
togBtn.TextColor3=ON[key] and Color3.fromRGB(15,15,15) or C.TEXT_FADE
end)
kbBtn.MouseButton1Click:Connect(function()
if listeningFor==key then listeningFor=nil kbBtn.BackgroundColor3=Color3.fromRGB(22,22,22) kbBtn.TextColor3=C.TEXT_FADE kbBtn.Text=Keybinds[key] and Keybinds[key]~="" and Keybinds[key] or "---" return end
listeningFor=key kbBtn.BackgroundColor3=C.VINO_TINTO_EXTREMO kbBtn.TextColor3=Color3.fromRGB(15,15,15) kbBtn.Text="..."
task.delay(4,function() if listeningFor==key then listeningFor=nil kbBtn.BackgroundColor3=Color3.fromRGB(22,22,22) kbBtn.TextColor3=C.TEXT_FADE kbBtn.Text=Keybinds[key] or"---" end end)
end)
end
local function mkSlider(par,lbl,y,mn,mx,def,step,cb)
step=step or 1
local r=Instance.new("Frame") r.Size=UDim2.new(1,-16,0,52) r.Position=UDim2.new(0,8,0,y)
r.BackgroundColor3=C.BG_ROW r.BorderSizePixel=0 r.Parent=par Instance.new("UICorner").Parent=r
local acc=Instance.new("Frame") acc.Size=UDim2.new(0,3,1,0) acc.BackgroundColor3=C.VINO_TINTO_EXTREMO acc.BorderSizePixel=0 acc.Parent=r Instance.new("UICorner").Parent=acc
local vl=Instance.new("TextLabel") vl.Size=UDim2.new(1,-14,0,20) vl.Position=UDim2.new(0,12,0,4)
vl.BackgroundTransparency=1 vl.TextColor3=C.TEXT_MAIN vl.Font=C.FONT_LABEL vl.TextSize=12
vl.TextXAlignment=Enum.TextXAlignment.Left vl.Parent=r
local tr=Instance.new("Frame") tr.Size=UDim2.new(1,-20,0,6) tr.Position=UDim2.new(0,12,0,32)
tr.BackgroundColor3=Color3.fromRGB(35,35,35) tr.BorderSizePixel=0 tr.Parent=r Instance.new("UICorner").Parent=tr
local fi=Instance.new("Frame") fi.BackgroundColor3=C.VINO_TINTO_EXTREMO fi.BorderSizePixel=0
fi.Size=UDim2.new((def-mn)/(mx-mn),0,1,0) fi.Parent=tr Instance.new("UICorner").Parent=fi
local kn=Instance.new("TextButton") kn.Size=UDim2.new(0,14,0,14) kn.Position=UDim2.new((def-mn)/(mx-mn),-7,0.5,-7)
kn.BackgroundColor3=C.TEXT_MAIN kn.BorderSizePixel=0 kn.Text="" kn.Parent=tr Instance.new("UICorner").Parent=kn
local cur=def local drag=false
local function fmtVal(v) return step<1 and string.format("%.2f",v) or tostring(v) end
vl.Text=lbl..": "..fmtVal(cur)
kn.MouseButton1Down:Connect(function() drag=true end)
local uc=UIS.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 then drag=false end end)
table.insert(conns,uc)
local hc=Run.Heartbeat:Connect(function()
if not drag then return end
local mp=UIS:GetMouseLocation() local tp=tr.AbsolutePosition local ts=tr.AbsoluteSize
local ratio=math.clamp((mp.X-tp.X)/ts.X,0,1)
local raw=mn+ratio*(mx-mn)
local nv=math.floor(raw/step+0.5)*step
nv=math.clamp(nv,mn,mx)
if nv~=cur then cur=nv vl.Text=lbl..": "..fmtVal(nv)
local r2=(nv-mn)/(mx-mn) fi.Size=UDim2.new(r2,0,1,0) kn.Position=UDim2.new(r2,-7,0.5,-7) cb(nv) end
end)
table.insert(conns,hc)
end
local function mkBtn(par,lbl,y,fn,col)
local b=Instance.new("TextButton") b.Size=UDim2.new(1,-16,0,38) b.Position=UDim2.new(0,8,0,y)
b.BackgroundColor3=col or C.BG_ROW b.BorderSizePixel=0
b.Text=lbl b.TextColor3=C.TEXT_MAIN b.Font=C.FONT_LABEL_BOLD b.TextSize=13 b.Parent=par
local s=Instance.new("UIStroke") s.Color=col or C.VINO_TINTO_EXTREMO s.Thickness=1 s.Parent=b
Instance.new("UICorner").Parent=b b.MouseButton1Click:Connect(fn) return b
end
-- ── Main Scripts Page ─────────────────────────────────────────────────────────
do
local left=Instance.new("ScrollingFrame")
left.Size=UDim2.new(0.5,-6,1,-6) left.Position=UDim2.new(0,3,0,3)
left.BackgroundColor3=C.BG_CARD left.BorderSizePixel=0
left.ScrollBarThickness=3 left.ScrollBarImageColor3=C.VINO_TINTO_EXTREMO
left.CanvasSize=UDim2.new(0,0,0,720) left.Parent=pMain
Instance.new("UICorner").Parent=left Instance.new("UIStroke",left).Color=C.VINO_TINTO_EXTREMO
sec(left,"── AIMBOT ──",4)
mkRow(left,"Aimbot Lock",20,"aimbot")
mkRow(left,"Triggerbot (Gun + M1)",64,"triggerbot")
sec(left,"── COMBAT ──",112)
mkRow(left,"Auto Parry [F auto]",130,"autoparry")
mkRow(left,"Auto Melee [M1 auto]",174,"automelee")
mkRow(left,"Hitbox Expander (execute only)",218,"hitboxexpand")
mkRow(left,"Velocity Booster",262,"velocityboost")
sec(left,"── UTILITY ──",310)
mkRow(left,"Team Check (2v2)",328,"teamcheck","Hides allies from ESP/aimbot/triggerbot")
mkRow(left,"Performance Tweaks",372,"perftweaks","Strips textures/fx for clarity + FPS")
sec(left,"── CONFIG ──",420)
mkSlider(left,"Aimbot FOV",438,50,500,Cfg.fovRadius,1,function(v)
Cfg.fovRadius=v saveCfg("cfg",Cfg)
end)
mkSlider(left,"Smoothing",498,0.01,1,Cfg.smoothing,0.01,function(v)
Cfg.smoothing=v saveCfg("cfg",Cfg)
end)
mkSlider(left,"Parry Range (studs)",558,10,80,Cfg.parryRange,1,function(v)
Cfg.parryRange=v saveCfg("cfg",Cfg)
end)
mkSlider(left,"Melee Range (studs)",618,5,40,Cfg.meleeRange,1,function(v)
Cfg.meleeRange=v saveCfg("cfg",Cfg)
end)
-- Right: info
local right=Instance.new("Frame")
right.Size=UDim2.new(0.5,-6,1,-6) right.Position=UDim2.new(0.5,3,0,3)
right.BackgroundColor3=C.BG_CARD right.BorderSizePixel=0 right.Parent=pMain
Instance.new("UICorner").Parent=right Instance.new("UIStroke",right).Color=C.VINO_TINTO_EXTREMO
sec(right,"── INFORMATION ──",6)
local function il(t,y)
local l=Instance.new("TextLabel") l.Size=UDim2.new(1,-16,0,20) l.Position=UDim2.new(0,12,0,y)
l.BackgroundTransparency=1 l.TextColor3=C.TEXT_DIM l.Text=t
l.Font=C.FONT_LABEL l.TextSize=12 l.TextXAlignment=Enum.TextXAlignment.Left l.Parent=right
end
il("User: "..lp.Name,26)
il("Executor: "..(identifyexecutor and identifyexecutor() or "Unknown"),46)
il("Game: REDLINERS",66)
il("Owner: jonas_l.s",86)
local ns=Instance.new("TextLabel") ns.Size=UDim2.new(1,-16,0,18) ns.Position=UDim2.new(0,46,0,106)
ns.BackgroundTransparency=1 ns.TextColor3=C.TEXT_FADE ns.Text="Noir"
ns.Font=C.FONT_OWNER_SUB ns.TextSize=12 ns.TextXAlignment=Enum.TextXAlignment.Left ns.Parent=right
local div=Instance.new("Frame") div.Size=UDim2.new(1,-24,0,1) div.Position=UDim2.new(0,12,0,132)
div.BackgroundColor3=C.VINO_TINTO_EXTREMO div.Parent=right
sec(right,"── STATUS ──",140)
local tgtLbl=Instance.new("TextLabel") tgtLbl.Size=UDim2.new(1,-16,0,18) tgtLbl.Position=UDim2.new(0,12,0,160)
tgtLbl.BackgroundTransparency=1 tgtLbl.Font=C.FONT_LABEL tgtLbl.TextSize=12
tgtLbl.TextColor3=C.TEXT_FADE tgtLbl.Text="Target: —" tgtLbl.TextXAlignment=Enum.TextXAlignment.Left tgtLbl.Parent=right
local autoLbl=Instance.new("TextLabel") autoLbl.Size=UDim2.new(1,-16,0,18) autoLbl.Position=UDim2.new(0,12,0,182)
autoLbl.BackgroundTransparency=1 autoLbl.Font=C.FONT_LABEL autoLbl.TextSize=12
autoLbl.TextXAlignment=Enum.TextXAlignment.Left autoLbl.Parent=right
local alName=getAutoLoad()
autoLbl.Text=alName and ("Auto-load: "..alName) or "Auto-load: —"
autoLbl.TextColor3=alName and C.TEXT_AMBER or C.TEXT_FADE
local kbListen=Instance.new("TextLabel") kbListen.Size=UDim2.new(1,-16,0,18) kbListen.Position=UDim2.new(0,12,0,204)
kbListen.BackgroundTransparency=1 kbListen.Font=C.FONT_LABEL_BOLD kbListen.TextSize=11
kbListen.TextColor3=C.VINO_TINTO_EXTREMO kbListen.TextXAlignment=Enum.TextXAlignment.Left kbListen.Text="" kbListen.Parent=right
local uTimer=0
table.insert(conns,Run.Heartbeat:Connect(function(dt)
if not alive then return end
uTimer=uTimer+dt if uTimer<0.25 then return end uTimer=0
local t=getNearestEnemy()
if t then tgtLbl.Text="Target: "..t.model.Name tgtLbl.TextColor3=Color3.fromRGB(255,80,80)
else tgtLbl.Text="Target: —" tgtLbl.TextColor3=C.TEXT_FADE end
kbListen.Text=listeningFor and ("Listening: "..listeningFor.." (press key)") or ""
end))
end
-- ── Visuals Page (ESP detail toggles + Chams style + FOV) ────────────────────
-- NOTE: this is a ScrollingFrame, not a plain Frame — the old version was a
-- fixed-height Frame and the FOV/Hitbox/Flick/Velocity sliders at the bottom
-- physically overflowed past the visible card edge. Scrolling fixes that
-- without needing to shrink everything to fit.
do
local card=Instance.new("ScrollingFrame") card.Size=UDim2.new(1,-6,1,-6) card.Position=UDim2.new(0,3,0,3)
card.BackgroundColor3=C.BG_CARD card.BorderSizePixel=0
card.ScrollBarThickness=3 card.ScrollBarImageColor3=C.VINO_TINTO_EXTREMO
card.CanvasSize=UDim2.new(0,0,0,760) card.Parent=pVisual
Instance.new("UICorner").Parent=card Instance.new("UIStroke",card).Color=C.VINO_TINTO_EXTREMO
sec(card,"── ESP ──",6)
mkRow(card,"ESP Boxes / Names / Distance",24,"esp")
mkRow(card,"Wall Check (raycast LOS gate)",68,"wallcheck")
sec(card,"── CHAMS ──",116)
mkRow(card,"Chams ESP",134,"chams")
local styleLbl=Instance.new("TextLabel") styleLbl.Size=UDim2.new(1,-16,0,16) styleLbl.Position=UDim2.new(0,8,0,180)
styleLbl.BackgroundTransparency=1 styleLbl.Text="Chams Style" styleLbl.TextColor3=C.TEXT_FADE
styleLbl.Font=C.FONT_LABEL_BOLD styleLbl.TextSize=11 styleLbl.TextXAlignment=Enum.TextXAlignment.Left styleLbl.Parent=card
local styleRow=Instance.new("Frame") styleRow.Size=UDim2.new(1,-16,0,34) styleRow.Position=UDim2.new(0,8,0,296)
styleRow.BackgroundTransparency=1 styleRow.Parent=card
local function styleBtn(text,xOff,style)
local b=Instance.new("TextButton") b.Size=UDim2.new(0.5,-4,1,0) b.Position=UDim2.new(xOff,0,0,0)
b.BackgroundColor3=(Cfg.chamsStyle==style) and C.VINO_TINTO_EXTREMO or C.BG_ROW
b.BorderSizePixel=0 b.Text=text b.TextColor3=(Cfg.chamsStyle==style) and Color3.fromRGB(15,15,15) or C.TEXT_FADE
b.Font=C.FONT_LABEL_BOLD b.TextSize=12 b.Parent=styleRow Instance.new("UICorner").Parent=b
return b
end
Cfg.chamsStyle = Cfg.chamsStyle or "glow"
local glowBtn = styleBtn("Glow",0,"glow")
local fillBtn = styleBtn("Box Fill",0.5,"boxfill")
glowBtn.MouseButton1Click:Connect(function()
Cfg.chamsStyle="glow" saveCfg("cfg",Cfg)
glowBtn.BackgroundColor3=C.VINO_TINTO_EXTREMO glowBtn.TextColor3=Color3.fromRGB(15,15,15)
fillBtn.BackgroundColor3=C.BG_ROW fillBtn.TextColor3=C.TEXT_FADE
end)
fillBtn.MouseButton1Click:Connect(function()
Cfg.chamsStyle="boxfill" saveCfg("cfg",Cfg)
fillBtn.BackgroundColor3=C.VINO_TINTO_EXTREMO fillBtn.TextColor3=Color3.fromRGB(15,15,15)
glowBtn.BackgroundColor3=C.BG_ROW glowBtn.TextColor3=C.TEXT_FADE
end)
sec(card,"── FOV ──",344)
mkRow(card,"Show FOV (ring outline, not filled)",362,"showfov")
mkSlider(card,"FOV Radius",410,50,500,Cfg.fovRadius,1,function(v)
Cfg.fovRadius=v saveCfg("cfg",Cfg)
end)
sec(card,"── HITBOX ──",470)
mkRow(card,"Hitbox Expander (yellow box = new hitbox)",488,"hitboxexpand")
mkSlider(card,"Hitbox Size (studs)",532,2,20,Cfg.hitboxSize,0.5,function(v)
Cfg.hitboxSize=v saveCfg("cfg",Cfg)
end)
sec(card,"── MOVEMENT / AIM ──",592)
mkRow(card,"Mouse Unlock (free cursor)",610,"mouseunlock","Frees the cursor even mid-combat / locked camera states")
mkSlider(card,"Velocity Multiplier",662,1,5,Cfg.velocityBoost,0.1,function(v)
Cfg.velocityBoost=v saveCfg("cfg",Cfg)
end)
end
-- ── Config Page (Build Manager) ───────────────────────────────────────────────
do
local builds=loadBuilds() local brows={}
local currentAuto=getAutoLoad()
local card=Instance.new("Frame") card.Size=UDim2.new(1,-6,1,-6) card.Position=UDim2.new(0,3,0,3)
card.BackgroundColor3=C.BG_CARD card.Parent=pCfg
Instance.new("UICorner").Parent=card Instance.new("UIStroke",card).Color=C.VINO_TINTO_EXTREMO
sec(card,"── BUILD MANAGER ──",6)
local nb=Instance.new("TextBox") nb.Size=UDim2.new(1,-208,0,30) nb.Position=UDim2.new(0,12,0,26)
nb.BackgroundColor3=C.BG_INPUT nb.BorderSizePixel=0 nb.PlaceholderText="Build name..."
nb.Text="" nb.TextColor3=C.TEXT_MAIN nb.PlaceholderColor3=C.TEXT_FADE
nb.Font=C.FONT_LABEL nb.TextSize=13 nb.Parent=card Instance.new("UICorner").Parent=nb
local svNew=Instance.new("TextButton") svNew.Size=UDim2.new(0,86,0,30) svNew.Position=UDim2.new(1,-196,0,26)
svNew.BackgroundColor3=C.VINO_TINTO_EXTREMO svNew.BorderSizePixel=0 svNew.Text="Save"
svNew.TextColor3=Color3.fromRGB(15,15,15) svNew.Font=C.FONT_LABEL_BOLD svNew.TextSize=12 svNew.Parent=card Instance.new("UICorner").Parent=svNew
local svCur=Instance.new("TextButton") svCur.Size=UDim2.new(0,100,0,30) svCur.Position=UDim2.new(1,-102,0,26)
svCur.BackgroundColor3=Color3.fromRGB(15,40,15) svCur.BorderSizePixel=0 svCur.Text="Save current"
svCur.TextColor3=C.TEXT_GREEN svCur.Font=C.FONT_LABEL_BOLD svCur.TextSize=12 svCur.Parent=card Instance.new("UICorner").Parent=svCur
local desc=Instance.new("TextLabel") desc.Size=UDim2.new(1,-24,0,14) desc.Position=UDim2.new(0,12,0,62)
desc.BackgroundTransparency=1 desc.Font=C.FONT_LABEL desc.TextSize=10 desc.TextColor3=C.TEXT_FADE
desc.Text="★ Auto-Load on startup | Load | Save = overwrite | X = delete"
desc.TextXAlignment=Enum.TextXAlignment.Left desc.Parent=card
local dv=Instance.new("Frame") dv.Size=UDim2.new(1,-24,0,1) dv.Position=UDim2.new(0,12,0,80)
dv.BackgroundColor3=C.VINO_TINTO_EXTREMO dv.Parent=card
local bsc=Instance.new("ScrollingFrame") bsc.Size=UDim2.new(1,-24,1,-90) bsc.Position=UDim2.new(0,12,0,86)
bsc.BackgroundTransparency=1 bsc.BorderSizePixel=0 bsc.ScrollBarThickness=3
bsc.ScrollBarImageColor3=C.VINO_TINTO_EXTREMO bsc.CanvasSize=UDim2.new(0,0,0,0) bsc.Parent=card
local function refreshBuilds()
for _,r in ipairs(brows) do r:Destroy() end brows={}
bsc.CanvasSize=UDim2.new(0,0,0,math.max(#builds*50,10))
for i,b in ipairs(builds) do
local isAuto=(b.name==currentAuto)
local row=Instance.new("Frame") row.Size=UDim2.new(1,-4,0,44) row.Position=UDim2.new(0,2,0,(i-1)*48)
row.BackgroundColor3=C.BG_ROW row.BorderSizePixel=0 row.Parent=bsc Instance.new("UICorner").Parent=row table.insert(brows,row)
local ac2=Instance.new("Frame") ac2.Size=UDim2.new(0,3,1,0) ac2.BackgroundColor3=C.VINO_TINTO_EXTREMO ac2.BorderSizePixel=0 ac2.Parent=row Instance.new("UICorner").Parent=ac2
local star=Instance.new("TextButton") star.Size=UDim2.new(0,28,0,28) star.Position=UDim2.new(0,8,0.5,-14)
star.BackgroundTransparency=1 star.Text=isAuto and "★" or "☆" star.TextColor3=isAuto and Color3.fromRGB(255,210,0) or C.TEXT_FADE
star.Font=Enum.Font.GothamBold star.TextSize=16 star.BorderSizePixel=0 star.Parent=row
local nl=Instance.new("TextLabel") nl.Size=UDim2.new(1,-210,1,0) nl.Position=UDim2.new(0,40,0,0)
nl.BackgroundTransparency=1 nl.Text=b.name or("Build "..i) nl.TextColor3=C.TEXT_MAIN
nl.Font=C.FONT_LABEL_BOLD nl.TextSize=13 nl.TextXAlignment=Enum.TextXAlignment.Left nl.Parent=row
local lb=Instance.new("TextButton") lb.Size=UDim2.new(0,46,0,28) lb.Position=UDim2.new(1,-202,0.5,-14) lb.BackgroundColor3=C.VINO_TINTO_EXTREMO lb.BorderSizePixel=0 lb.Text="Load" lb.TextColor3=Color3.fromRGB(15,15,15) lb.Font=C.FONT_LABEL_BOLD lb.TextSize=12 lb.Parent=row Instance.new("UICorner").Parent=lb
local sb2=Instance.new("TextButton") sb2.Size=UDim2.new(0,46,0,28) sb2.Position=UDim2.new(1,-150,0.5,-14) sb2.BackgroundColor3=Color3.fromRGB(15,40,15) sb2.BorderSizePixel=0 sb2.Text="Save" sb2.TextColor3=C.TEXT_GREEN sb2.Font=C.FONT_LABEL_BOLD sb2.TextSize=12 sb2.Parent=row Instance.new("UICorner").Parent=sb2
local db=Instance.new("TextButton") db.Size=UDim2.new(0,30,0,28) db.Position=UDim2.new(1,-98,0.5,-14) db.BackgroundColor3=Color3.fromRGB(50,8,8) db.BorderSizePixel=0 db.Text="X" db.TextColor3=C.TEXT_MAIN db.Font=C.FONT_LABEL_BOLD db.TextSize=12 db.Parent=row Instance.new("UICorner").Parent=db
local idx=i
lb.MouseButton1Click:Connect(function() applyBuild(builds[idx]) activeLoadedBuild=builds[idx].name lb.Text="✓" task.delay(1.5,function() lb.Text="Load" end) end)
sb2.MouseButton1Click:Connect(function() local s2=snapshot() s2.name=builds[idx].name builds[idx]=s2 saveBuilds(builds) refreshBuilds() sb2.Text="✓" task.delay(1.5,function() sb2.Text="Save" end) end)
db.MouseButton1Click:Connect(function() if builds[idx].name==currentAuto then currentAuto=nil setAutoLoad(nil) end table.remove(builds,idx) saveBuilds(builds) refreshBuilds() end)
star.MouseButton1Click:Connect(function()
if isAuto then currentAuto=nil setAutoLoad(nil)
else currentAuto=builds[idx].name setAutoLoad(builds[idx].name) notify("Auto-load: "..builds[idx].name,3) end
refreshBuilds()
end)
end
end
svNew.MouseButton1Click:Connect(function()
local name=nb.Text~="" and nb.Text or("Build "..(#builds+1))
local s2=snapshot() s2.name=name table.insert(builds,s2) saveBuilds(builds) refreshBuilds()
nb.Text="" svNew.Text="Saved!" task.delay(1.5,function() svNew.Text="Save" end)
end)
svCur.MouseButton1Click:Connect(function()
if not activeLoadedBuild then notify("Load a build first",2) return end
for i,b in ipairs(builds) do
if b.name==activeLoadedBuild then
local s2=snapshot() s2.name=b.name builds[i]=s2 saveBuilds(builds) refreshBuilds()
svCur.Text="✓" task.delay(1.5,function() svCur.Text="Save current" end) return
end
end
end)
refreshBuilds()
end
-- ── Actions Page ─────────────────────────────────────────────────────────────
do
local card=Instance.new("Frame") card.Size=UDim2.new(1,-6,1,-6) card.Position=UDim2.new(0,3,0,3)
card.BackgroundColor3=C.BG_CARD card.Parent=pAct
Instance.new("UICorner").Parent=card Instance.new("UIStroke",card).Color=C.VINO_TINTO_EXTREMO
sec(card,"── ACTIONS ──",6)
mkRow(card,"Toggle Hub",26,"togglehub")
-- Discord icon button (blurple)
local _dWrap=Instance.new("Frame") _dWrap.Size=UDim2.new(0,44,0,44) _dWrap.Position=UDim2.new(0.5,-22,0,130)
_dWrap.BackgroundColor3=Color3.fromRGB(88,101,242) _dWrap.BorderSizePixel=0 _dWrap.Parent=card
Instance.new("UICorner").Parent=_dWrap
local _dIcon=Instance.new("ImageButton") _dIcon.Size=UDim2.new(0.8,0,0.8,0) _dIcon.Position=UDim2.new(0.1,0,0.1,0)
_dIcon.BackgroundTransparency=1 _dIcon.Image=C.DISCORD_IMG_ID _dIcon.Parent=_dWrap
_dIcon.MouseButton1Click:Connect(function()
if setclipboard then
setclipboard("https://discord.gg/AD5NsXxMjn")
_dWrap.BackgroundColor3=Color3.fromRGB(60,80,200)
task.delay(1.5,function() _dWrap.BackgroundColor3=Color3.fromRGB(88,101,242) end)
end
end)
mkBtn(card,"Unload Hub",184,function()
alive=false
for _,b in pairs(BOXES) do pcall(function() b:Destroy() end) end BOXES={}
for _,h in pairs(CHAMS) do pcall(function() h:Destroy() end) end CHAMS={}
for model,data in pairs(HITBOXES) do
pcall(function() if data.part and data.part.Parent then data.part.Size=data.origSize end end)
end HITBOXES={}
clearAllEsp()
if fovCircleDraw then pcall(function() fovCircleDraw:Remove() end) end
applyPerfTweaks(false)
for _,c in ipairs(conns) do pcall(function() c:Disconnect() end) end
pcall(function() gui:Destroy() end)
end,Color3.fromRGB(35,6,6))
end
-- ── Global Input ──────────────────────────────────────────────────────────────
table.insert(conns,UIS.InputBegan:Connect(function(i,p)
if p then return end
if i.UserInputType~=Enum.UserInputType.Keyboard then return end
local kc=i.KeyCode
if listeningFor then
local feat=listeningFor listeningFor=nil
Keybinds[feat]=kc==Enum.KeyCode.Escape and nil or kc.Name
saveCfg("keybinds",Keybinds)
local btn=kbBtnRefs[feat]
if btn then btn.BackgroundColor3=Color3.fromRGB(22,22,22) btn.TextColor3=C.TEXT_FADE btn.Text=Keybinds[feat] or"---" end
return
end
if Keybinds.togglehub and kc.Name==Keybinds.togglehub then win.Visible=not win.Visible return end
for feat,keyName in pairs(Keybinds) do
if keyName and keyName~="None" and keyName~="" and kc.Name==keyName then
ON[feat]=not ON[feat]
local btn=togBtnRefs[feat]
if btn then btn.BackgroundColor3=ON[feat] and C.VINO_TINTO_EXTREMO or C.BG_ROW btn.Text=ON[feat] and"ON" or"OFF" btn.TextColor3=ON[feat] and Color3.fromRGB(15,15,15) or C.TEXT_FADE end
end
end
end))
notify("REDLINERS loaded | L = toggle",4)
end) -- Keys.show
Discussion
0 / 20Log in to join the discussion.
No comments yetBe the first to ask a question or leave feedback.