-- https://x5no.github.io/nebula-guide/#intro local Nebula = loadstring(game:HttpGet( "https://raw.githubusercontent.com/x5no/NebulaUi-Libary/refs/heads/main/main.lua", true ))() if not Nebula then warn("[Matcha] Library failed!") return end local UI = Nebula.new({ Name="Matcha" }) if not UI then warn("[Matcha] Instance failed!") return end local Plrs = game:GetService("Players") local UIS = game:GetService("UserInputService") local RS = game:GetService("RunService") local Lighting = game:GetService("Lighting") local LP = Plrs.LocalPlayer local Cam = workspace.CurrentCamera local OL = { Brightness=Lighting.Brightness, ClockTime=Lighting.ClockTime, FogEnd=Lighting.FogEnd, GlobalShadows=Lighting.GlobalShadows, Ambient=Lighting.Ambient, OutdoorAmbient=Lighting.OutdoorAmbient } local Win = UI:CreateWindow({ Title="Matcha", Subtitle="stable", User=LP.Name, Size=UDim2.new(0,700,0,490) }) UI:CreateKeySystem({ KeyType = "static", Key = "demo", GetKeyUrl = "demo", Title = "Matcha", Subtitle = "key is demo", SaveName = "MatchaKey", OnSuccess = function() end, }) task.delay(0.6, function() UI:Notify({Title="Matcha", Body="Loaded. RightShift to toggle.", Type="Success", Duration=4}) end) local function getChar(p) return p and p.Character end local function isAlive(p) local c = getChar(p); if not c then return false end local h = c:FindFirstChild("Humanoid"); return h and h.Health > 0 end local function getPart(p) local c = getChar(p); if not c then return nil end return c:FindFirstChild(UI:GetFlag("aim_part") or "Head") or c:FindFirstChild("HumanoidRootPart") end local function canSee(from, to) local rp = RaycastParams.new(); rp.FilterType = Enum.RaycastFilterType.Exclude local ex = {} for _, pl in ipairs(Plrs:GetPlayers()) do if pl.Character then table.insert(ex, pl.Character) end end rp.FilterDescendantsInstances = ex return workspace:Raycast(from, to - from, rp) == nil end local function findTarget() local best, bestD = nil, math.huge local maxD = UI:GetFlag("aim_dist") or 500 local fovR = UI:GetFlag("aim_fov") or 120 local teamCh = UI:GetFlag("aim_team") or false local visCh = UI:GetFlag("aim_vis") or false local center = Vector2.new(Cam.ViewportSize.X / 2, Cam.ViewportSize.Y / 2) for _, pl in ipairs(Plrs:GetPlayers()) do if pl == LP then continue end if not isAlive(pl) then continue end if teamCh and pl.Team == LP.Team then continue end local part = getPart(pl); if not part then continue end local wp = part.Position if (Cam.CFrame.Position - wp).Magnitude > maxD then continue end if visCh and not canSee(Cam.CFrame.Position, wp) then continue end local sp, vis = Cam:WorldToScreenPoint(wp); if not vis then continue end local d = (Vector2.new(sp.X, sp.Y) - center).Magnitude if d < fovR and d < bestD then bestD = d; best = pl end end return best end local function D(t, props) local ok, d = pcall(function() return Drawing.new(t) end) if not ok then return {Visible=false,Remove=function()end} end for k, v in pairs(props or {}) do pcall(function() d[k] = v end) end return d end local aimSX, aimSY = 0, 0 local aimConn = nil local function startAim() if aimConn then aimConn:Disconnect(); aimConn = nil end aimConn = RS.RenderStepped:Connect(function(dt) if not UI:GetFlag("aim_on") then aimSX = 0; aimSY = 0; return end if not UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then aimSX = 0; aimSY = 0; return end local tgt = findTarget(); if not tgt then return end local part = getPart(tgt); if not part then return end local wp = part.Position if UI:GetFlag("pred_on") then local hrp = getChar(tgt) and getChar(tgt):FindFirstChild("HumanoidRootPart") if hrp then local vel = hrp.AssemblyLinearVelocity local pingS = (UI:GetFlag("pred_ping") or 80) / 1000 wp = wp + vel * (pingS + (UI:GetFlag("pred_extra") or 0.05)) end end local aimType = UI:GetFlag("aim_type") or "Mouse" local sp2 = UI:GetFlag("aim_smooth") or 0 if aimType == "Camera" then local targetCF = CFrame.lookAt(Cam.CFrame.Position, wp) if sp2 > 0 then Cam.CFrame = Cam.CFrame:Lerp(targetCF, 1 - math.exp(-dt * sp2)) else Cam.CFrame = targetCF end else local sp3, vis = Cam:WorldToScreenPoint(wp); if not vis then return end local tx, ty = sp3.X, sp3.Y if sp2 > 0 then local f = 1 - math.exp(-dt * sp2) aimSX = aimSX + (tx - aimSX) * f; aimSY = aimSY + (ty - aimSY) * f pcall(mousemoveabs, math.floor(aimSX), math.floor(aimSY)) else aimSX = tx; aimSY = ty; pcall(mousemoveabs, math.floor(tx), math.floor(ty)) end end end) end startAim() local trigConn = nil; local trigFiring = false local function setupTrig() if trigConn then trigConn:Disconnect(); trigConn = nil end if not UI:GetFlag("trig_on") then return end trigConn = RS.Heartbeat:Connect(function() if not UI:GetFlag("trig_on") or trigFiring then return end local tgt = findTarget(); if not tgt then return end local part = getPart(tgt); if not part then return end local sp, vis = Cam:WorldToScreenPoint(part.Position); if not vis then return end local center = Vector2.new(Cam.ViewportSize.X / 2, Cam.ViewportSize.Y / 2) if (Vector2.new(sp.X, sp.Y) - center).Magnitude < 30 then trigFiring = true task.delay((UI:GetFlag("trig_delay") or 1) / 1000, function() pcall(function() game:GetService("VirtualInputManager"):SendMouseButtonEvent(0,0,0,true,game,0) end) task.delay((UI:GetFlag("trig_rel") or 10) / 1000, function() pcall(function() game:GetService("VirtualInputManager"):SendMouseButtonEvent(0,0,0,false,game,0) end) trigFiring = false end) end) end end) end local fovCircle = nil; local fovConn = nil local function destroyFov() if fovConn then fovConn:Disconnect(); fovConn = nil end if fovCircle then pcall(function() fovCircle:Remove() end); fovCircle = nil end end local function buildFov() destroyFov() if not UI:GetFlag("fov_on") then return end pcall(function() fovCircle = Drawing.new("Circle") fovCircle.Visible = true fovCircle.Radius = UI:GetFlag("aim_fov") or 120 fovCircle.Thickness = UI:GetFlag("fov_thick") or 1 fovCircle.Filled = false local cd = UI:GetFlag("fov_col") fovCircle.Color = cd and Color3.new(cd[1], cd[2], cd[3]) or Color3.fromRGB(235, 75, 175) fovConn = RS.RenderStepped:Connect(function() if fovCircle then fovCircle.Position = Vector2.new(Cam.ViewportSize.X/2, Cam.ViewportSize.Y/2) end end) end) end local flyConn = nil; local flyBP = nil; local flyBG = nil local function stopFly() if flyConn then flyConn:Disconnect(); flyConn = nil end if flyBP then pcall(function() flyBP:Destroy() end); flyBP = nil end if flyBG then pcall(function() flyBG:Destroy() end); flyBG = nil end local c = LP.Character; if c then local hrp = c:FindFirstChild("HumanoidRootPart") if hrp then hrp.AssemblyLinearVelocity = Vector3.zero end local hum = c:FindFirstChild("Humanoid") if hum then hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, true) end end end local function startFly() stopFly() local c = LP.Character; if not c then return end local hrp = c:FindFirstChild("HumanoidRootPart"); if not hrp then return end local hum = c:FindFirstChild("Humanoid") if hum then hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false) end flyBP = Instance.new("BodyPosition"); flyBP.MaxForce = Vector3.new(1e5,1e5,1e5) flyBP.P = 3000; flyBP.D = 200; flyBP.Position = hrp.Position; flyBP.Parent = hrp flyBG = Instance.new("BodyGyro"); flyBG.MaxTorque = Vector3.new(1e5,1e5,1e5) flyBG.P = 3000; flyBG.D = 200; flyBG.Parent = hrp flyConn = RS.RenderStepped:Connect(function() if not UI:GetFlag("fly_on") then return end local speed = UI:GetFlag("fly_speed") or 60 local dir = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then dir = dir + Cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then dir = dir - Cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.A) then dir = dir - Cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.D) then dir = dir + Cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0,1,0) end if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then dir = dir - Vector3.new(0,1,0) end if dir.Magnitude > 0 then dir = dir.Unit end flyBP.Position = flyBP.Position + dir * speed * (1/60) flyBG.CFrame = CFrame.new(Vector3.zero, Cam.CFrame.LookVector) end) end local Combat = Win:AddTab("Combat") local AimSub = Combat:AddSubTab("Aimbot") local PredSub = Combat:AddSubTab("Prediction") local SmSub = Combat:AddSubTab("Smoothness") local FovSub = Combat:AddSubTab("FOV") local AL, AR = AimSub:GetColumns() local AimG = AL:AddSection("") AimG:AddCheckbox({ Name="Enabled", Flag="aim_on", Keybind="rmb" }) AimG:AddCheckbox({ Name="Team Check", Flag="aim_team" }) AimG:AddCheckbox({ Name="Visible Check", Flag="aim_vis" }) AimG:AddCheckbox({ Name="Sticky Aim", Flag="aim_sticky" }) AimG:AddSlider({ Name="Distance", Min=0, Max=2000, Default=500, Flag="aim_dist" }) AimG:AddSlider({ Name="FOV Radius", Min=10, Max=600, Default=120, Flag="aim_fov", Callback=function(v) if fovCircle then pcall(function() fovCircle.Radius = v end) end end }) AimG:AddCheckbox({ Name="Show FOV Circle", Flag="fov_on", Callback=function() buildFov() end }) AimG:AddDropdown({ Name="Hit Part", Items={"Head","Torso","HumanoidRootPart","LeftArm","RightArm"}, Default="Head", Flag="aim_part" }) AimG:AddDropdown({ Name="Aim Type", Items={"Mouse","Camera"}, Default="Mouse", Flag="aim_type" }) local SilG = AR:AddSection("Silent Aim") SilG:AddCheckbox({ Name="Enabled", Flag="sil_on", Keybind="e" }) SilG:AddCheckbox({ Name="Team Check", Flag="sil_team" }) SilG:AddCheckbox({ Name="Visible Check", Flag="sil_vis" }) SilG:AddSlider({ Name="Distance", Min=0, Max=2000, Default=500, Flag="sil_dist" }) SilG:AddDropdown({ Name="Hit Part", Items={"Head","Torso","HumanoidRootPart"}, Default="Head", Flag="sil_part" }) local TrigG = AR:AddSection("Trigger Bot") TrigG:AddCheckbox({ Name="Enabled", Flag="trig_on", Keybind="q", Callback=function() setupTrig() end }) TrigG:AddCheckbox({ Name="Team Check", Flag="trig_team" }) TrigG:AddCheckbox({ Name="Visible Check", Flag="trig_vis" }) TrigG:AddSlider({ Name="Hitbox Mul", Min=1, Max=5, Default=1, Decimals=2, Flag="trig_mul" }) TrigG:AddSlider({ Name="Delay (ms)", Min=0, Max=500, Default=1, Flag="trig_delay" }) TrigG:AddSlider({ Name="Release (ms)", Min=0, Max=500, Default=10, Flag="trig_rel" }) local SmL, _ = SmSub:GetColumns() local SmG = SmL:AddSection("Smoothing") SmG:AddSlider({ Name="Aim Smoothing", Min=0, Max=50, Default=0, Flag="aim_smooth" }) SmG:AddSlider({ Name="Min Threshold",Min=0, Max=20, Default=2, Flag="aim_thresh" }) local PL, _ = PredSub:GetColumns() local PredG = PL:AddSection("Prediction") PredG:AddCheckbox({ Name="Enable Prediction", Flag="pred_on" }) PredG:AddSlider({ Name="Ping Offset (ms)", Min=0, Max=300, Default=80, Flag="pred_ping" }) PredG:AddSlider({ Name="Extra Lead", Min=0, Max=0.5, Default=0.05, Flag="pred_extra", Decimals=3 }) PredG:AddDropdown({ Name="Method", Items={"Velocity","Linear"}, Default="Velocity", Flag="pred_method" }) local FL, FR = FovSub:GetColumns() local FovG = FL:AddSection("FOV Circle") FovG:AddCheckbox({ Name="Enabled", Flag="fov_on", Callback=function() buildFov() end }) FovG:AddSlider({ Name="Radius", Min=10, Max=600, Default=120, Flag="fov_radius", Callback=function(v) UI:SetFlag("aim_fov", v); if fovCircle then pcall(function() fovCircle.Radius=v end) end end }) FovG:AddSlider({ Name="Thickness", Min=1, Max=5, Default=1, Flag="fov_thick", Callback=function(v) if fovCircle then pcall(function() fovCircle.Thickness=v end) end end }) FR:AddSection("Color"):AddColorPicker({ Name="Circle Color", Default=Color3.fromRGB(235,75,175), Flag="fov_col", Callback=function(c) UI:SetFlag("fov_col",{c.R,c.G,c.B}); if fovCircle then pcall(function() fovCircle.Color=c end) end end }) local Visuals = Win:AddTab("Visuals") local ChamsSub = Visuals:AddSubTab("Chams") local EspSub = Visuals:AddSubTab("ESP") local HumEspSub = Visuals:AddSubTab("World ESP") local hlPool = {} local function getHL(pl) if not hlPool[pl] then local hl = Instance.new("Highlight"); hl.Adornee = nil; hl.Parent = workspace; hlPool[pl] = hl end return hlPool[pl] end local function clearHL(pl) if hlPool[pl] then hlPool[pl]:Destroy(); hlPool[pl] = nil end end local function updateChams() local on = UI:GetFlag("chams_on") local visOnly = UI:GetFlag("chams_visonly") local teamCh = UI:GetFlag("chams_team") local fcd = UI:GetFlag("chams_viscol"); local fillCol = fcd and Color3.new(fcd[1],fcd[2],fcd[3]) or Color3.fromRGB(80,200,255) local ocd = UI:GetFlag("chams_outcol"); local outCol = ocd and Color3.new(ocd[1],ocd[2],ocd[3]) or Color3.fromRGB(235,75,175) local fillTr = UI:GetFlag("chams_filltrans") or 0.5 local outTr = UI:GetFlag("chams_outtrans") or 0 for _, pl in ipairs(Plrs:GetPlayers()) do if pl == LP then continue end if teamCh and pl.Team == LP.Team then continue end if on then local hl = getHL(pl); hl.Adornee = pl.Character hl.FillColor = fillCol; hl.OutlineColor = outCol hl.FillTransparency = fillTr; hl.OutlineTransparency = outTr hl.DepthMode = visOnly and Enum.HighlightDepthMode.Occluded or Enum.HighlightDepthMode.AlwaysOnTop else clearHL(pl) end end end for _, pl in ipairs(Plrs:GetPlayers()) do pl.CharacterAdded:Connect(function() task.wait(0.5); if UI:GetFlag("chams_on") then updateChams() end end) end Plrs.PlayerAdded:Connect(function(pl) pl.CharacterAdded:Connect(function() task.wait(0.5); if UI:GetFlag("chams_on") then updateChams() end end) end) Plrs.PlayerRemoving:Connect(clearHL) local ChL, ChR = ChamsSub:GetColumns() local ChG = ChL:AddSection("") ChG:AddCheckbox({ Name="Enable Chams", Flag="chams_on", Callback=function() updateChams() end }) ChG:AddCheckbox({ Name="Visible Only", Flag="chams_visonly", Callback=function() updateChams() end }) ChG:AddCheckbox({ Name="Team Chams", Flag="chams_team", Callback=function() updateChams() end }) ChG:AddSlider({ Name="Fill Transparency", Min=0, Max=1, Default=0.5, Decimals=2, Flag="chams_filltrans", Callback=function() updateChams() end }) ChG:AddSlider({ Name="Outline Transparency", Min=0, Max=1, Default=0, Decimals=2, Flag="chams_outtrans", Callback=function() updateChams() end }) ChL:AddSection("Visible Fill Color"):AddColorPicker({ Name="Fill", Default=Color3.fromRGB(80,200,255), Flag="chams_viscol", Callback=function(c) UI:SetFlag("chams_viscol",{c.R,c.G,c.B}); updateChams() end }) ChL:AddSection("Outline Color"):AddColorPicker({ Name="Outline", Default=Color3.fromRGB(235,75,175), Flag="chams_outcol", Callback=function(c) UI:SetFlag("chams_outcol",{c.R,c.G,c.B}); updateChams() end }) local rainbowConn = nil local RG = ChR:AddSection("Rainbow") RG:AddCheckbox({ Name="Rainbow Chams", Flag="chams_rainbow", Callback=function(v) if rainbowConn then rainbowConn:Disconnect(); rainbowConn = nil end if v then local hue = 0 rainbowConn = RS.Heartbeat:Connect(function(dt) if not UI:GetFlag("chams_on") then return end hue = (hue + dt * (UI:GetFlag("chams_rspeed") or 3) * 0.08) % 1 local col = Color3.fromHSV(hue, 1, 1) for _, pl in ipairs(Plrs:GetPlayers()) do if pl ~= LP and hlPool[pl] then hlPool[pl].FillColor = col end end end) else updateChams() end end }) RG:AddSlider({ Name="Rainbow Speed", Min=1, Max=10, Default=3, Flag="chams_rspeed" }) local BONES = { {"Head","UpperTorso"},{"UpperTorso","LowerTorso"}, {"UpperTorso","LeftUpperArm"},{"LeftUpperArm","LeftLowerArm"},{"LeftLowerArm","LeftHand"}, {"UpperTorso","RightUpperArm"},{"RightUpperArm","RightLowerArm"},{"RightLowerArm","RightHand"}, {"LowerTorso","LeftUpperLeg"},{"LeftUpperLeg","LeftLowerLeg"},{"LeftLowerLeg","LeftFoot"}, {"LowerTorso","RightUpperLeg"},{"RightUpperLeg","RightLowerLeg"},{"RightLowerLeg","RightFoot"}, } local BONES_R6 = { {"Head","Torso"},{"Torso","HumanoidRootPart"}, {"Torso","Left Arm"},{"Torso","Right Arm"}, {"HumanoidRootPart","Left Leg"},{"HumanoidRootPart","Right Leg"}, } local espObjs = {} local function removeEP(key) if espObjs[key] then for _, d in pairs(espObjs[key]) do if type(d) == "table" then for _, line in ipairs(d) do pcall(function() line:Remove() end) end else pcall(function() d:Remove() end) end end espObjs[key] = nil end end local espConn = nil local function startEsp() if espConn then espConn:Disconnect(); espConn = nil end for key in pairs(espObjs) do removeEP(key) end if not UI:GetFlag("esp_on") then return end espConn = RS.RenderStepped:Connect(function() if not UI:GetFlag("esp_on") then return end local boxOn = UI:GetFlag("esp_box") local nameOn = UI:GetFlag("esp_names") local distOn = UI:GetFlag("esp_dist") local hpOn = UI:GetFlag("esp_hp") local hdotOn = UI:GetFlag("esp_headdot") local skelOn = UI:GetFlag("esp_skel") local teamCh = UI:GetFlag("esp_team") local bcd = UI:GetFlag("esp_boxcol"); local boxCol = bcd and Color3.new(bcd[1],bcd[2],bcd[3]) or Color3.fromRGB(255,50,50) local ncd = UI:GetFlag("esp_namecol"); local nameCol = ncd and Color3.new(ncd[1],ncd[2],ncd[3]) or Color3.fromRGB(255,255,255) local scd = UI:GetFlag("esp_skelcol"); local skelCol = scd and Color3.new(scd[1],scd[2],scd[3]) or Color3.fromRGB(255,200,100) local hdc = UI:GetFlag("esp_hdotcol"); local hdotCol = hdc and Color3.new(hdc[1],hdc[2],hdc[3]) or Color3.fromRGB(255,80,80) local seen = {} for _, pl in ipairs(Plrs:GetPlayers()) do if pl == LP then continue end if teamCh and pl.Team == LP.Team then continue end if not isAlive(pl) then removeEP(pl); continue end local c = getChar(pl); if not c then continue end local hrp = c:FindFirstChild("HumanoidRootPart"); if not hrp then continue end local hum = c:FindFirstChild("Humanoid") local head = c:FindFirstChild("Head") local topW = hrp.Position + Vector3.new(0, 3.4, 0) local botW = hrp.Position - Vector3.new(0, 3.1, 0) local topS, _ = Cam:WorldToScreenPoint(topW) local botS, vis = Cam:WorldToScreenPoint(botW) local rootS, _ = Cam:WorldToScreenPoint(hrp.Position) if not vis then removeEP(pl); continue end seen[pl] = true local bH = math.abs(topS.Y - botS.Y); if bH < 4 then continue end local bW = bH * 0.6; local bx = rootS.X - bW/2; local by = topS.Y if not espObjs[pl] then local isR15 = c:FindFirstChild("UpperTorso") ~= nil local boneList = isR15 and BONES or BONES_R6 local skelLines = {} for _ = 1, #boneList do table.insert(skelLines, D("Line", {Visible=false,Thickness=1,Color=skelCol})) end espObjs[pl] = { boxS = D("Square",{Visible=false,Filled=false,Thickness=2,Color=Color3.new(0,0,0)}), box = D("Square",{Visible=false,Filled=false,Thickness=1}), name = D("Text", {Visible=false,Size=13,Center=true,Outline=true,OutlineColor=Color3.new(0,0,0)}), dist = D("Text", {Visible=false,Size=11,Center=true,Outline=true,OutlineColor=Color3.new(0,0,0),Color=Color3.fromRGB(190,190,190)}), hpBg = D("Square",{Visible=false,Filled=true,Color=Color3.fromRGB(22,22,22)}), hpBar = D("Square",{Visible=false,Filled=true}), hdot = D("Circle",{Visible=false,Radius=4,Filled=true,Thickness=1}), hdotO = D("Circle",{Visible=false,Radius=6,Filled=false,Thickness=1,Color=Color3.new(0,0,0)}), skel = skelLines, boneList = boneList, } end local e = espObjs[pl] pcall(function() e.boxS.Visible = boxOn; e.box.Visible = boxOn if boxOn then e.boxS.Position = Vector2.new(bx-1, by-1); e.boxS.Size = Vector2.new(bW+2, bH+2) e.box.Position = Vector2.new(bx, by); e.box.Size = Vector2.new(bW, bH) e.box.Color = boxCol end end) pcall(function() e.name.Visible = nameOn if nameOn then e.name.Text = pl.DisplayName e.name.Position = Vector2.new(rootS.X, by - 16) e.name.Color = nameCol end end) pcall(function() e.dist.Visible = distOn if distOn then local studs = math.floor((Cam.CFrame.Position - hrp.Position).Magnitude) e.dist.Text = studs .. " studs" e.dist.Position = Vector2.new(rootS.X, botS.Y + 3) end end) pcall(function() e.hpBg.Visible = hpOn; e.hpBar.Visible = hpOn if hpOn and hum then local pct = math.clamp(hum.Health / hum.MaxHealth, 0, 1) local fillH = bH * pct e.hpBg.Position = Vector2.new(bx - 5, by); e.hpBg.Size = Vector2.new(4, bH) e.hpBar.Position = Vector2.new(bx - 5, by + bH - fillH); e.hpBar.Size = Vector2.new(4, fillH) e.hpBar.Color = Color3.fromHSV(pct * 0.33, 1, 1) end end) pcall(function() e.hdot.Visible = hdotOn; e.hdotO.Visible = hdotOn if hdotOn and head then local hs, _ = Cam:WorldToScreenPoint(head.Position) local pos = Vector2.new(hs.X, hs.Y) e.hdot.Position = pos; e.hdot.Color = hdotCol e.hdotO.Position = pos end end) pcall(function() local boneList = e.boneList or BONES for i, bone in ipairs(boneList) do local line = e.skel[i]; if not line then continue end local p1 = c:FindFirstChild(bone[1]) local p2 = c:FindFirstChild(bone[2]) if p1 and p2 and skelOn then local s1, v1 = Cam:WorldToScreenPoint(p1.Position) local s2, v2 = Cam:WorldToScreenPoint(p2.Position) if v1 and v2 then line.Visible = true line.From = Vector2.new(s1.X, s1.Y) line.To = Vector2.new(s2.X, s2.Y) line.Color = skelCol else line.Visible = false end else line.Visible = false end end end) end for key in pairs(espObjs) do if not seen[key] then removeEP(key) end end end) end local EL, ER = EspSub:GetColumns() local EspG = EL:AddSection("Player ESP") EspG:AddCheckbox({ Name="Enable ESP", Flag="esp_on", Callback=function() startEsp() end }) EspG:AddCheckbox({ Name="Box", Flag="esp_box" }) EspG:AddCheckbox({ Name="Display Name", Flag="esp_names" }) EspG:AddCheckbox({ Name="Distance (studs)", Flag="esp_dist" }) EspG:AddCheckbox({ Name="Health Bar", Flag="esp_hp" }) EspG:AddCheckbox({ Name="Head Dot", Flag="esp_headdot" }) EspG:AddCheckbox({ Name="Skeleton", Flag="esp_skel" }) EspG:AddCheckbox({ Name="Team Check", Flag="esp_team" }) local EColG = ER:AddSection("Colors") EColG:AddColorPicker({ Name="Box", Default=Color3.fromRGB(255,50,50), Flag="esp_boxcol", Callback=function(c) UI:SetFlag("esp_boxcol",{c.R,c.G,c.B}) end }) EColG:AddColorPicker({ Name="Name", Default=Color3.fromRGB(255,255,255), Flag="esp_namecol", Callback=function(c) UI:SetFlag("esp_namecol",{c.R,c.G,c.B}) end }) EColG:AddColorPicker({ Name="Skeleton", Default=Color3.fromRGB(255,200,100), Flag="esp_skelcol", Callback=function(c) UI:SetFlag("esp_skelcol",{c.R,c.G,c.B}) end }) EColG:AddColorPicker({ Name="Head Dot", Default=Color3.fromRGB(255,80,80), Flag="esp_hdotcol", Callback=function(c) UI:SetFlag("esp_hdotcol",{c.R,c.G,c.B}) end }) local humEspObjs = {} local humEspConn = nil local function removeHum(hum) if humEspObjs[hum] then for _, d in pairs(humEspObjs[hum]) do pcall(function() d:Remove() end) end humEspObjs[hum] = nil end end local function startHumEsp() if humEspConn then humEspConn:Disconnect(); humEspConn = nil end for hum in pairs(humEspObjs) do removeHum(hum) end if not UI:GetFlag("hum_on") then return end humEspConn = RS.RenderStepped:Connect(function() if not UI:GetFlag("hum_on") then return end local hboxOn = UI:GetFlag("hum_box") local hnameOn = UI:GetFlag("hum_name") local hhpOn = UI:GetFlag("hum_hp") local hbcd = UI:GetFlag("hum_boxcol"); local hboxCol = hbcd and Color3.new(hbcd[1],hbcd[2],hbcd[3]) or Color3.fromRGB(100,255,100) local hncd = UI:GetFlag("hum_namecol"); local hnameCol = hncd and Color3.new(hncd[1],hncd[2],hncd[3]) or Color3.fromRGB(180,255,180) local playerChars = {} for _, pl in ipairs(Plrs:GetPlayers()) do if pl.Character then playerChars[pl.Character] = true end end local seen = {} for _, desc in ipairs(workspace:GetDescendants()) do if not desc:IsA("Humanoid") then continue end if desc.Health <= 0 then removeHum(desc); continue end local model = desc.Parent; if not model then continue end if playerChars[model] then continue end local hrp = model:FindFirstChild("HumanoidRootPart") or model:FindFirstChildWhichIsA("BasePart") if not hrp then continue end local topW = hrp.Position + Vector3.new(0, 3, 0) local botW = hrp.Position - Vector3.new(0, 3, 0) local topS, _ = Cam:WorldToScreenPoint(topW) local botS, vis = Cam:WorldToScreenPoint(botW) local rootS, _ = Cam:WorldToScreenPoint(hrp.Position) if not vis then removeHum(desc); continue end seen[desc] = true local bH = math.abs(topS.Y - botS.Y); if bH < 3 then continue end local bW = bH * 0.6; local bx = rootS.X - bW/2; local by = topS.Y if not humEspObjs[desc] then humEspObjs[desc] = { boxS = D("Square",{Visible=false,Filled=false,Thickness=2,Color=Color3.new(0,0,0)}), box = D("Square",{Visible=false,Filled=false,Thickness=1}), name = D("Text", {Visible=false,Size=12,Center=true,Outline=true,OutlineColor=Color3.new(0,0,0)}), hpBg = D("Square",{Visible=false,Filled=true,Color=Color3.fromRGB(22,22,22)}), hpBar = D("Square",{Visible=false,Filled=true}), } end local e = humEspObjs[desc] pcall(function() e.boxS.Visible = hboxOn; e.box.Visible = hboxOn if hboxOn then e.boxS.Position = Vector2.new(bx-1,by-1); e.boxS.Size = Vector2.new(bW+2,bH+2) e.box.Position = Vector2.new(bx,by); e.box.Size = Vector2.new(bW,bH) e.box.Color = hboxCol end end) pcall(function() e.name.Visible = hnameOn if hnameOn then e.name.Text = model.Name; e.name.Position = Vector2.new(rootS.X, by-15); e.name.Color = hnameCol end end) pcall(function() e.hpBg.Visible = hhpOn; e.hpBar.Visible = hhpOn if hhpOn then local pct = math.clamp(desc.Health / desc.MaxHealth, 0, 1) local fillH = bH * pct e.hpBg.Position = Vector2.new(bx-5, by); e.hpBg.Size = Vector2.new(4, bH) e.hpBar.Position = Vector2.new(bx-5, by+bH-fillH); e.hpBar.Size = Vector2.new(4, fillH) e.hpBar.Color = Color3.fromHSV(pct * 0.33, 1, 1) end end) end for hum in pairs(humEspObjs) do if not seen[hum] then removeHum(hum) end end end) end local HL, HR = HumEspSub:GetColumns() local HumG = HL:AddSection("Humanoid (World) ESP") HumG:AddCheckbox({ Name="Enable Humanoid ESP", Flag="hum_on", Callback=function() startHumEsp() end }) HumG:AddCheckbox({ Name="Box", Flag="hum_box" }) HumG:AddCheckbox({ Name="Name", Flag="hum_name" }) HumG:AddCheckbox({ Name="Health Bar", Flag="hum_hp" }) local HColG = HR:AddSection("Colors") HColG:AddColorPicker({ Name="Box", Default=Color3.fromRGB(100,255,100), Flag="hum_boxcol", Callback=function(c) UI:SetFlag("hum_boxcol",{c.R,c.G,c.B}) end }) HColG:AddColorPicker({ Name="Name", Default=Color3.fromRGB(180,255,180), Flag="hum_namecol", Callback=function(c) UI:SetFlag("hum_namecol",{c.R,c.G,c.B}) end }) local World = Win:AddTab("World") local WL, _ = World:GetColumns() local WG = WL:AddSection("Environment") WG:AddCheckbox({ Name="Fullbright", Flag="world_fb", Callback=function(v) if v then Lighting.Brightness=2;Lighting.ClockTime=14;Lighting.FogEnd=1e6 Lighting.GlobalShadows=false;Lighting.Ambient=Color3.new(1,1,1);Lighting.OutdoorAmbient=Color3.new(1,1,1) else Lighting.Brightness=OL.Brightness;Lighting.ClockTime=OL.ClockTime;Lighting.FogEnd=OL.FogEnd Lighting.GlobalShadows=OL.GlobalShadows;Lighting.Ambient=OL.Ambient;Lighting.OutdoorAmbient=OL.OutdoorAmbient end end }) WG:AddCheckbox({ Name="No Fog", Flag="world_nofog", Callback=function(v) Lighting.FogEnd=v and 1e6 or OL.FogEnd end }) WG:AddCheckbox({ Name="No Shadows", Flag="world_noshadow", Callback=function(v) Lighting.GlobalShadows=not v end }) WG:AddSlider({ Name="Brightness", Min=0, Max=5, Default=1, Decimals=1, Flag="world_bright", Callback=function(v) Lighting.Brightness=v end }) WG:AddSlider({ Name="Time of Day",Min=0, Max=24, Default=14, Flag="world_time", Callback=function(v) Lighting.ClockTime=v end }) WG:AddColorPicker({ Name="Ambient", Default=Color3.fromRGB(70,70,70), Flag="world_ambient", Callback=function(c) Lighting.Ambient=c end }) local Char = Win:AddTab("Character") local ChrL, ChrR = Char:GetColumns() local speedConn, ijConn, ncConn = nil, nil, nil local MovG = ChrL:AddSection("Movement") MovG:AddCheckbox({ Name="Speed Hack", Flag="move_speed", Callback=function(v) if speedConn then speedConn:Disconnect(); speedConn=nil end local c=LP.Character; if c and c:FindFirstChild("Humanoid") then c.Humanoid.WalkSpeed=v and (UI:GetFlag("move_spd") or 50) or 16 end if v then speedConn=RS.Heartbeat:Connect(function() if not UI:GetFlag("move_speed") then return end local ch=LP.Character; if ch and ch:FindFirstChild("Humanoid") then ch.Humanoid.WalkSpeed=UI:GetFlag("move_spd") or 50 end end) end end }) MovG:AddSlider({ Name="Walk Speed", Min=16, Max=300, Default=50, Flag="move_spd", Callback=function(v) if UI:GetFlag("move_speed") then local c=LP.Character;if c and c:FindFirstChild("Humanoid") then c.Humanoid.WalkSpeed=v end end end }) MovG:AddCheckbox({ Name="Infinite Jump", Flag="move_ijump", Callback=function(v) if ijConn then ijConn:Disconnect(); ijConn=nil end if v then ijConn=UIS.JumpRequest:Connect(function() local c=LP.Character;if c and c:FindFirstChild("Humanoid") then c.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end) end end }) MovG:AddSlider({ Name="Jump Power", Min=50, Max=500, Default=100, Flag="move_jump", Callback=function(v) local c=LP.Character;if c and c:FindFirstChild("Humanoid") then c.Humanoid.JumpHeight=v end end }) MovG:AddCheckbox({ Name="Noclip", Flag="move_noclip", Callback=function(v) if ncConn then ncConn:Disconnect(); ncConn=nil end if v then ncConn=RS.Stepped:Connect(function() local c=LP.Character;if c and UI:GetFlag("move_noclip") then for _,p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide=false end end end end) else local c=LP.Character;if c then for _,p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then pcall(function() p.CanCollide=true end) end end end end end }) MovG:AddButton({ Name="Reset Character", Callback=function() LP:LoadCharacter() end }) local FlyG = ChrR:AddSection("Fly") FlyG:AddCheckbox({ Name="Smooth Fly", Flag="fly_on", Keybind="v", Callback=function(v) if v then startFly() else stopFly() end end }) FlyG:AddSlider({ Name="Fly Speed", Min=10, Max=300, Default=60, Flag="fly_speed" }) local BodyG = ChrR:AddSection("Body") BodyG:AddSlider({ Name="FOV", Min=30, Max=120, Default=70, Flag="body_fov", Callback=function(v) Cam.FieldOfView=v end }) BodyG:AddCheckbox({ Name="Hide Character", Flag="body_hide", Callback=function(v) local c=LP.Character;if c then for _,p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") or p:IsA("Decal") then pcall(function() p.LocalTransparencyModifier=v and 1 or 0 end) end end end end }) local PlayersTab = Win:AddTab("Players") local PlL, PlR = PlayersTab:GetColumns() local plrMap = {} local function buildPlrList() plrMap = {} local items = {} for _, p in ipairs(Plrs:GetPlayers()) do if p ~= LP then plrMap[p.Name] = p table.insert(items, p.Name) end end if #items == 0 then plrMap["(no players)"] = nil items = {"(no players)"} end return items end local function resolveTarget() local sel = UI:GetFlag("target_plr") or "" return plrMap[sel] end local specSubject = nil local function stopSpec() Cam.CameraType = Enum.CameraType.Custom local c = LP.Character; Cam.CameraSubject = c and c:FindFirstChild("Humanoid") or nil specSubject = nil end local PlG = PlL:AddSection("Target") local initItems = buildPlrList() local plrDropObj = PlG:AddDropdown({ Name="Player", Items=initItems, Flag="target_plr" }) PlG:AddButton({ Name="↻ Refresh Players", Callback=function() local newItems = buildPlrList() plrDropObj:Rebuild(newItems) UI:Notify({Title="Refreshed", Body=#newItems.." player(s) found.", Type="Info", Duration=2}) end }) PlG:AddButton({ Name="Teleport To Player", Callback=function() local tgt = resolveTarget() if not (tgt and tgt.Character and LP.Character) then UI:Notify({Title="Error", Body="Player not found. Try refreshing.", Type="Error", Duration=3}); return end local th = tgt.Character:FindFirstChild("HumanoidRootPart") local mh = LP.Character:FindFirstChild("HumanoidRootPart") if th and mh then mh.LocalTransparencyModifier = 1 mh.CFrame = th.CFrame * CFrame.new(0, 0, 3.5) task.delay(0.1, function() mh.LocalTransparencyModifier = 0 end) UI:Notify({Title="Teleported", Body="Went to " .. tgt.Name, Type="Info", Duration=2}) end end }) PlG:AddButton({ Name="Bring Player", Callback=function() local tgt = resolveTarget() if not (tgt and tgt.Character and LP.Character) then UI:Notify({Title="Error", Body="Player not found.", Type="Error", Duration=3}); return end local th = tgt.Character:FindFirstChild("HumanoidRootPart") local mh = LP.Character:FindFirstChild("HumanoidRootPart") if th and mh then th.CFrame = mh.CFrame * CFrame.new(3.5, 0, 0) UI:Notify({Title="Brought", Body=tgt.Name .. " to you.", Type="Info", Duration=2}) end end }) PlG:AddButton({ Name="Spectate", Callback=function() local tgt = resolveTarget() if not (tgt and tgt.Character) then UI:Notify({Title="Error", Body="Can't find target.", Type="Error", Duration=3}); return end stopSpec() local hum = tgt.Character:FindFirstChild("Humanoid") if hum then Cam.CameraType = Enum.CameraType.Custom; Cam.CameraSubject = hum; specSubject = hum UI:Notify({Title="Spectating", Body=tgt.Name, Type="Info", Duration=3}) end end }) PlG:AddButton({ Name="Unspectate", Callback=function() stopSpec(); UI:Notify({Title="Unspectated", Body="Returned to character.", Type="Info", Duration=2}) end }) Plrs.PlayerRemoving:Connect(function(pl) if specSubject and getChar(pl) and specSubject:IsDescendantOf(getChar(pl)) then stopSpec() end end) local Servers = Win:AddTab("Servers") local SvL, _ = Servers:GetColumns() local SvG = SvL:AddSection("Server Hop") SvG:AddSlider({ Name="Min Players", Min=0, Max=50, Default=1, Flag="sv_min" }) SvG:AddSlider({ Name="Max Players", Min=1, Max=50, Default=20, Flag="sv_max" }) SvG:AddButton({ Name="Server Hop Now", Callback=function() local TpS = game:GetService("TeleportService") local ok, pages = pcall(function() return game:GetService("HttpService"):JSONDecode( game:HttpGet("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=25")) end) local servers = {} if ok and pages and pages.data then local mn = UI:GetFlag("sv_min") or 1; local mx2 = UI:GetFlag("sv_max") or 20 for _, s in ipairs(pages.data) do if s.id ~= game.JobId and s.playing >= mn and s.playing <= mx2 then table.insert(servers, s.id) end end end if #servers > 0 then TpS:TeleportToPlaceInstance(game.PlaceId, servers[math.random(1, #servers)]) UI:Notify({Title="Hopping", Body="Joining new server…", Type="Info", Duration=3}) else UI:Notify({Title="No Servers", Body="None found.", Type="Warning", Duration=3}) end end }) local Config = Win:AddTab("Config") local CfL, CfR = Config:GetColumns() local cfgNames = {} local cfgSelected = nil local function scanConfigs() cfgNames = {} if type(listfiles) == "function" then local ok, files = pcall(listfiles, "") if ok and files then for _, f in ipairs(files) do local name = f:match("^Matcha_(.+)%.json$") if not name then name = f:match("Matcha_(.+)%.json$") end if name then table.insert(cfgNames, name) end end end end if #cfgNames == 0 then if type(isfile) == "function" and pcall(isfile, "Matcha_default.json") then table.insert(cfgNames, "default") end end return cfgNames end local SaveG = CfL:AddSection("Save Config") local cfgNameBox = SaveG:AddTextBox({ Name="Config Name", Flag="cfg_name", Default="default", Placeholder="e.g. default, pvp, build...", }) SaveG:AddButton({ Name="Save", Callback=function() local name = cfgNameBox:Get() if not name or name=="" then name="default" end local ok, msg = UI.Cfg:save(name) UI:Notify({Title=ok and "Saved" or "Error", Body=(ok and "Saved as '"..name.."'" or msg), Type=ok and "Success" or "Error", Duration=3}) if ok then local found=false; for _,n in ipairs(cfgNames) do if n==name then found=true end end if not found then table.insert(cfgNames,name) end end end }) CfL:AddSection(""):AddButton({ Name="Reset All Flags", Callback=function() UI.Cfg._d = {} UI:Notify({Title="Reset", Body="All settings cleared in memory.", Type="Warning", Duration=3}) end }) local UISetG = CfL:AddSection("UI Settings") UISetG:AddColorPicker({ Name="Accent Color", Default=Color3.fromRGB(235,75,175), Flag="ui_accent", Callback=function(c) UI:SetAccent(c) end }) UISetG:AddTextBox({ Name="Toggle Key", Flag="ui_key", Default="Insert", Placeholder="e.g. Insert, RightShift, F5...", Callback=function(v) local kc = Enum.KeyCode[v] if kc then UI:SetToggleKey(kc) UI:Notify({Title="Keybind", Body="Toggle key set to: "..v, Type="Info", Duration=3}) else UI:Notify({Title="Invalid Key", Body="'"..v.."' is not a valid KeyCode name.", Type="Error", Duration=4}) end end }) UISetG:AddButton({ Name="Unload UI", Callback=function() UI:Notify({Title="Unloading", Body="Closing in 1s…", Type="Warning", Duration=1}) task.delay(1, function() for _, conn in ipairs({speedConn,ijConn,ncConn,aimConn,trigConn,rainbowConn,espConn,fovConn,flyConn,humEspConn}) do if conn then pcall(function() conn:Disconnect() end) end end destroyFov(); stopFly() for pl in pairs(hlPool) do clearHL(pl) end for key in pairs(espObjs) do removeEP(key) end for hum in pairs(humEspObjs) do removeHum(hum) end stopSpec() Lighting.Brightness=OL.Brightness; Lighting.ClockTime=OL.ClockTime Lighting.FogEnd=OL.FogEnd; Lighting.GlobalShadows=OL.GlobalShadows Lighting.Ambient=OL.Ambient; Lighting.OutdoorAmbient=OL.OutdoorAmbient local c = LP.Character if c then local h = c:FindFirstChild("Humanoid") if h then h.WalkSpeed=16; h.JumpHeight=7.2 end for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then pcall(function() p.CanCollide=true; p.LocalTransparencyModifier=0 end) end end end UI:Unload() end) end }) local cfgListSec = CfR:AddSection("Saved Configs") local cfgListDrop local function refreshCfgList() scanConfigs() local items = #cfgNames > 0 and cfgNames or {"(none)"} if cfgListDrop then cfgListDrop:Rebuild(items) end end scanConfigs() local initCfgItems = #cfgNames > 0 and cfgNames or {"(none)"} cfgListDrop = cfgListSec:AddDropdown({ Name="Select Config", Flag="cfg_selected", Items=initCfgItems, Default=initCfgItems[1], }) cfgListSec:AddButton({ Name="↻ Refresh List", Callback=function() refreshCfgList() UI:Notify({Title="Refreshed", Body=#cfgNames.." config(s) found.", Type="Info", Duration=2}) end }) cfgListSec:AddButton({ Name="Load Selected", Callback=function() local name = UI:GetFlag("cfg_selected") if not name or name=="(none)" then UI:Notify({Title="Error", Body="No config selected.", Type="Error", Duration=3}); return end local ok, msg = UI.Cfg:load(name) UI:Notify({Title=ok and "Loaded" or "Failed", Body=ok and "Loaded '"..name.."'" or msg, Type=ok and "Info" or "Error", Duration=3}) end }) cfgListSec:AddButton({ Name="Delete Selected", Callback=function() local name = UI:GetFlag("cfg_selected") if not name or name=="(none)" then UI:Notify({Title="Error", Body="No config selected.", Type="Error", Duration=3}); return end local deleted = false if type(delfile) == "function" then local ok = pcall(delfile, "Matcha_"..name..".json") deleted = ok elseif type(writefile) == "function" then pcall(writefile, "Matcha_"..name..".json", "") deleted = true end if deleted then for i, n in ipairs(cfgNames) do if n == name then table.remove(cfgNames, i); break end end refreshCfgList() UI:Notify({Title="Deleted", Body="Removed '"..name.."'", Type="Warning", Duration=3}) else UI:Notify({Title="Error", Body="Could not delete (delfile unsupported).", Type="Error", Duration=4}) end end }) CfR:AddSection("Options"):AddCheckbox({ Name="Notifications", Flag="ui_notifs", Default=true }) CfR:AddSection(""):AddCheckbox({ Name="Watermark", Flag="ui_wm", Default=true })