-- LocalScript in StarterPlayerScripts local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local camera = workspace.CurrentCamera local OWNER_ID = Players:GetUserIdFromNameAsync("mimiccome") if player.UserId ~= OWNER_ID then return end local FOV_RADIUS = 15 local aimbotEnabled = false local espEnabled = false local teamCheckEnabled = false local espBoxes = {} local npcCache = {} local wallCache = {} local npcRefreshTimer = 0 local wallRefreshTimer = 0 local NPC_REFRESH = 0.5 local WALL_REFRESH = 0.1 -- ===================== -- TEAM CHECK -- ===================== local function isOnMyTeam(npc) if not player.Team then return false end local tcVal = npc:FindFirstChild("TeamColor") if tcVal and tcVal:IsA("BrickColorValue") then return tcVal.Value == player.TeamColor end local teamVal = npc:FindFirstChild("Team") if teamVal and teamVal:IsA("ObjectValue") and teamVal.Value then return teamVal.Value == player.Team end local torso = npc:FindFirstChild("Torso") or npc:FindFirstChild("UpperTorso") if torso then return torso.BrickColor == player.TeamColor end return false end -- ===================== -- GUI -- ===================== local screenGui = Instance.new("ScreenGui") screenGui.Name = "OwnerGui" screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.Parent = player.PlayerGui local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 300, 0, 420) frame.Position = UDim2.new(0, 10, 0, 10) frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0) frame.BorderSizePixel = 0 frame.Active = true frame.Parent = screenGui local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 40) titleBar.BackgroundColor3 = Color3.fromRGB(20, 20, 20) titleBar.BorderSizePixel = 0 titleBar.Active = true titleBar.Parent = frame local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, 0, 1, 0) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "Owner Panel" titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.TextScaled = true titleLabel.Font = Enum.Font.GothamBold titleLabel.Parent = titleBar local welcomeLabel = Instance.new("TextLabel") welcomeLabel.Size = UDim2.new(1, -10, 0, 30) welcomeLabel.Position = UDim2.new(0, 5, 0, 45) welcomeLabel.BackgroundTransparency = 1 welcomeLabel.Text = "Welcome, mimiccome!" welcomeLabel.TextColor3 = Color3.fromRGB(255, 255, 255) welcomeLabel.TextScaled = true welcomeLabel.Font = Enum.Font.Gotham welcomeLabel.TextXAlignment = Enum.TextXAlignment.Left welcomeLabel.Parent = frame local function makeDivider(y) local d = Instance.new("Frame") d.Size = UDim2.new(1, -10, 0, 1) d.Position = UDim2.new(0, 5, 0, y) d.BackgroundColor3 = Color3.fromRGB(60, 60, 60) d.BorderSizePixel = 0 d.Parent = frame end local function makeButton(y) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -20, 0, 42) btn.Position = UDim2.new(0, 10, 0, y) btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40) btn.BorderSizePixel = 0 btn.TextScaled = true btn.Font = Enum.Font.GothamBold btn.Parent = frame Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6) return btn end makeDivider(82) -- Aimbot status (display only — RMB controls it) local aimbotStatus = Instance.new("TextLabel") aimbotStatus.Size = UDim2.new(1, -20, 0, 42) aimbotStatus.Position = UDim2.new(0, 10, 0, 90) aimbotStatus.BackgroundColor3 = Color3.fromRGB(40, 40, 40) aimbotStatus.BorderSizePixel = 0 aimbotStatus.Text = "Aimbot: OFF (Hold RMB)" aimbotStatus.TextColor3 = Color3.fromRGB(255, 80, 80) aimbotStatus.TextScaled = true aimbotStatus.Font = Enum.Font.GothamBold aimbotStatus.Parent = frame Instance.new("UICorner", aimbotStatus).CornerRadius = UDim.new(0, 6) local espButton = makeButton(140) espButton.Text = "ESP: OFF" espButton.TextColor3 = Color3.fromRGB(255, 80, 80) local teamButton = makeButton(190) teamButton.Text = "Team Check: OFF" teamButton.TextColor3 = Color3.fromRGB(255, 80, 80) makeDivider(242) local fovLabel = Instance.new("TextLabel") fovLabel.Size = UDim2.new(1, -10, 0, 26) fovLabel.Position = UDim2.new(0, 5, 0, 250) fovLabel.BackgroundTransparency = 1 fovLabel.Text = "Aimbot FOV: 30°" fovLabel.TextColor3 = Color3.fromRGB(255, 255, 255) fovLabel.TextScaled = true fovLabel.Font = Enum.Font.GothamBold fovLabel.TextXAlignment = Enum.TextXAlignment.Left fovLabel.Parent = frame local sliderTrack = Instance.new("Frame") sliderTrack.Size = UDim2.new(1, -20, 0, 10) sliderTrack.Position = UDim2.new(0, 10, 0, 284) sliderTrack.BackgroundColor3 = Color3.fromRGB(60, 60, 60) sliderTrack.BorderSizePixel = 0 sliderTrack.Parent = frame Instance.new("UICorner", sliderTrack).CornerRadius = UDim.new(1, 0) local sliderFill = Instance.new("Frame") sliderFill.Size = UDim2.new(0.5, 0, 1, 0) sliderFill.BackgroundColor3 = Color3.fromRGB(80, 180, 255) sliderFill.BorderSizePixel = 0 sliderFill.Parent = sliderTrack Instance.new("UICorner", sliderFill).CornerRadius = UDim.new(1, 0) local sliderKnob = Instance.new("TextButton") sliderKnob.Size = UDim2.new(0, 20, 0, 20) sliderKnob.Position = UDim2.new(0.5, -10, 0.5, -10) sliderKnob.BackgroundColor3 = Color3.fromRGB(255, 255, 255) sliderKnob.BorderSizePixel = 0 sliderKnob.Text = "" sliderKnob.Parent = sliderTrack Instance.new("UICorner", sliderKnob).CornerRadius = UDim.new(1, 0) local function makeSmallLabel(text, x, y, w) local l = Instance.new("TextLabel") l.Size = UDim2.new(0, w, 0, 20) l.Position = UDim2.new(0, x, 0, y) l.BackgroundTransparency = 1 l.Text = text l.TextColor3 = Color3.fromRGB(120, 120, 120) l.TextScaled = true l.Font = Enum.Font.Gotham l.Parent = frame return l end makeSmallLabel("5°", 10, 300, 25) makeSmallLabel("55°", 265, 300, 35) makeDivider(328) local targetLabel = makeSmallLabel("Target: None", 5, 336, 285) targetLabel.TextColor3 = Color3.fromRGB(180, 180, 180) targetLabel.TextXAlignment = Enum.TextXAlignment.Left local teamInfoLabel = makeSmallLabel("Your Team: None", 5, 360, 285) teamInfoLabel.TextColor3 = Color3.fromRGB(100, 180, 255) teamInfoLabel.TextXAlignment = Enum.TextXAlignment.Left local hintLabel = Instance.new("TextLabel") hintLabel.Size = UDim2.new(0, 210, 0, 28) hintLabel.Position = UDim2.new(0, 10, 0, 10) hintLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0) hintLabel.BackgroundTransparency = 0.4 hintLabel.BorderSizePixel = 0 hintLabel.Text = "[Insert] to open Owner Panel" hintLabel.TextColor3 = Color3.fromRGB(255, 255, 255) hintLabel.TextScaled = true hintLabel.Font = Enum.Font.Gotham hintLabel.Visible = false hintLabel.Parent = screenGui -- ===================== -- FOV CIRCLE — always visible -- ===================== local fovCircle = Drawing.new("Circle") fovCircle.Visible = true fovCircle.Color = Color3.fromRGB(255, 255, 255) fovCircle.Thickness = 1 fovCircle.Transparency = 0.6 fovCircle.Filled = false fovCircle.NumSides = 64 -- ===================== -- HELPERS -- ===================== local function fovToPixels() local dpp = math.deg(math.rad(camera.FieldOfView)) / camera.ViewportSize.Y return (FOV_RADIUS / 2) / dpp end local function getScreenAngle(rootPart) local pos, onScreen = camera:WorldToViewportPoint(rootPart.Position) if not onScreen or pos.Z < 0 then return math.huge end local center = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2) local dpp = math.deg(math.rad(camera.FieldOfView)) / camera.ViewportSize.Y return (Vector2.new(pos.X, pos.Y) - center).Magnitude * dpp end -- Torso for aiming; HumanoidRootPart fallback local function getAimPart(npc) return npc:FindFirstChild("UpperTorso") or npc:FindFirstChild("Torso") or npc:FindFirstChild("HumanoidRootPart") end -- Health color: green = high, yellow = mid, red = low local function getHealthColor(pct) if pct > 0.66 then return Color3.fromRGB(0, 255, 80) elseif pct > 0.33 then return Color3.fromRGB(255, 200, 0) else return Color3.fromRGB(255, 50, 50) end end local function refreshNPCs() local result = {} local char = player.Character local function check(obj) if obj:IsA("Model") and obj ~= char and obj:FindFirstChildOfClass("Humanoid") and obj:FindFirstChild("HumanoidRootPart") then table.insert(result, obj) end end for _, obj in ipairs(workspace:GetChildren()) do check(obj) if obj:IsA("Folder") or obj:IsA("Model") then for _, child in ipairs(obj:GetChildren()) do check(child) end end end return result end local function refreshWallCache() local char = player.Character local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = char and {char} or {} for _, npc in ipairs(npcCache) do local root = npc:FindFirstChild("HumanoidRootPart") if root then local origin = camera.CFrame.Position local dir = root.Position - origin local hit = workspace:Raycast(origin, dir, params) wallCache[npc] = (not hit) or hit.Instance:IsDescendantOf(npc) end end end -- ===================== -- ESP -- ===================== local function getOrCreateBox(npc) if espBoxes[npc] then return espBoxes[npc] end local box = {} for i = 1, 4 do local l = Drawing.new("Line") l.Thickness = 2; l.Transparency = 1; l.Visible = false box[i] = l end local lbl = Drawing.new("Text") lbl.Size = 13; lbl.Outline = true; lbl.Visible = false box.label = lbl local hpText = Drawing.new("Text") hpText.Size = 13; hpText.Outline = true; hpText.Visible = false box.hpText = hpText espBoxes[npc] = box return box end local function removeBox(npc) if not espBoxes[npc] then return end for _, obj in pairs(espBoxes[npc]) do obj:Remove() end espBoxes[npc] = nil end local function clearAllESP() for npc in pairs(espBoxes) do removeBox(npc) end end local function drawBox(npc, box) local root = npc:FindFirstChild("HumanoidRootPart") if not root then for _, o in pairs(box) do o.Visible = false end return end local cf = root.CFrame local s = npc:GetExtentsSize() local hx, hy, hz = s.X/2, s.Y/2, s.Z/2 local pts = { cf*Vector3.new(-hx, hy,-hz), cf*Vector3.new( hx, hy,-hz), cf*Vector3.new( hx,-hy,-hz), cf*Vector3.new(-hx,-hy,-hz), cf*Vector3.new(-hx, hy, hz), cf*Vector3.new( hx, hy, hz), cf*Vector3.new( hx,-hy, hz), cf*Vector3.new(-hx,-hy, hz), } local mnX, mnY, mxX, mxY = math.huge, math.huge, -math.huge, -math.huge for _, p in ipairs(pts) do local sp, on = camera:WorldToViewportPoint(p) if not on or sp.Z < 0 then for _, o in pairs(box) do o.Visible = false end return end if sp.X < mnX then mnX = sp.X end if sp.Y < mnY then mnY = sp.Y end if sp.X > mxX then mxX = sp.X end if sp.Y > mxY then mxY = sp.Y end end -- Box color: blue = teammate, green = enemy in FOV, red = enemy outside FOV, grey = walled local col if teamCheckEnabled and isOnMyTeam(npc) then col = Color3.fromRGB(50, 120, 255) else local notWalled = wallCache[npc] local inFov = getScreenAngle(root) < (FOV_RADIUS / 2) col = notWalled and inFov and Color3.fromRGB(0, 255, 80) or notWalled and Color3.fromRGB(255, 50, 50) or Color3.fromRGB(120, 120, 120) end local tl = Vector2.new(mnX, mnY) local tr = Vector2.new(mxX, mnY) local br = Vector2.new(mxX, mxY) local bl = Vector2.new(mnX, mxY) box[1].From=tl box[1].To=tr box[1].Color=col box[1].Visible=true box[2].From=tr box[2].To=br box[2].Color=col box[2].Visible=true box[3].From=br box[3].To=bl box[3].Color=col box[3].Visible=true box[4].From=bl box[4].To=tl box[4].Color=col box[4].Visible=true -- Name label just above box local prefix = (teamCheckEnabled and isOnMyTeam(npc)) and "[T] " or "" box.label.Text = prefix .. npc.Name box.label.Position = Vector2.new(mnX, mnY - 17) box.label.Color = col box.label.Visible = true -- Health label above name, updates every frame as you shoot local humanoid = npc:FindFirstChildOfClass("Humanoid") if humanoid then local hp = math.floor(humanoid.Health) local maxHp = math.floor(humanoid.MaxHealth) local pct = maxHp > 0 and (hp / maxHp) or 0 box.hpText.Text = "HP: " .. hp .. " / " .. maxHp box.hpText.Position = Vector2.new(mnX, mnY - 32) box.hpText.Color = getHealthColor(pct) box.hpText.Visible = true else box.hpText.Visible = false end end -- ===================== -- BUTTON STATES -- ===================== local function setAimbotStatus() if aimbotEnabled then aimbotStatus.Text = "Aimbot: ON (Hold RMB)" aimbotStatus.TextColor3 = Color3.fromRGB(80, 255, 80) aimbotStatus.BackgroundColor3 = Color3.fromRGB(20, 50, 20) else aimbotStatus.Text = "Aimbot: OFF (Hold RMB)" aimbotStatus.TextColor3 = Color3.fromRGB(255, 80, 80) aimbotStatus.BackgroundColor3 = Color3.fromRGB(40, 40, 40) targetLabel.Text = "Target: None" end end local function setESPButton() if espEnabled then espButton.Text = "ESP: ON" espButton.TextColor3 = Color3.fromRGB(80, 255, 80) espButton.BackgroundColor3 = Color3.fromRGB(20, 50, 20) else espButton.Text = "ESP: OFF" espButton.TextColor3 = Color3.fromRGB(255, 80, 80) espButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40) clearAllESP() end end local function setTeamButton() if teamCheckEnabled then teamButton.Text = "Team Check: ON" teamButton.TextColor3 = Color3.fromRGB(50, 120, 255) teamButton.BackgroundColor3 = Color3.fromRGB(10, 25, 60) else teamButton.Text = "Team Check: OFF" teamButton.TextColor3 = Color3.fromRGB(255, 80, 80) teamButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40) end end -- ===================== -- SLIDER -- ===================== local sliderDragging = false local function setFOV(relX) relX = math.clamp(relX, 0, 1) FOV_RADIUS = math.floor(5 + relX * 50) fovLabel.Text = "Aimbot FOV: " .. FOV_RADIUS .. "°" sliderFill.Size = UDim2.new(relX, 0, 1, 0) sliderKnob.Position = UDim2.new(relX, -10, 0.5, -10) fovCircle.Radius = fovToPixels() end sliderKnob.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then sliderDragging = true end end) sliderTrack.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then sliderDragging = true setFOV((i.Position.X - sliderTrack.AbsolutePosition.X) / sliderTrack.AbsoluteSize.X) end end) UserInputService.InputChanged:Connect(function(i) if sliderDragging and i.UserInputType == Enum.UserInputType.MouseMovement then setFOV((i.Position.X - sliderTrack.AbsolutePosition.X) / sliderTrack.AbsoluteSize.X) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then sliderDragging = false end end) -- ===================== -- RENDER LOOP -- ===================== RunService.RenderStepped:Connect(function(dt) fovCircle.Position = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2) fovCircle.Radius = fovToPixels() teamInfoLabel.Text = "Your Team: " .. (player.Team and player.Team.Name or "None") npcRefreshTimer += dt if npcRefreshTimer >= NPC_REFRESH then npcRefreshTimer = 0 npcCache = refreshNPCs() end wallRefreshTimer += dt if wallRefreshTimer >= WALL_REFRESH then wallRefreshTimer = 0 refreshWallCache() end -- Aimbot: aims at Torso, skips teammates when Team Check is ON if aimbotEnabled then local best, bestAngle = nil, FOV_RADIUS / 2 for _, npc in ipairs(npcCache) do local root = npc:FindFirstChild("HumanoidRootPart") if root and wallCache[npc] then -- Skip teammates if team check is on if not (teamCheckEnabled and isOnMyTeam(npc)) then local angle = getScreenAngle(root) if angle < bestAngle then bestAngle = angle; best = npc end end end end if best then targetLabel.Text = "Target: " .. best.Name local aimPart = getAimPart(best) camera.CFrame = CFrame.new(camera.CFrame.Position, aimPart.Position) else targetLabel.Text = "Target: None in FOV" end end -- ESP if espEnabled then local active = {} for _, npc in ipairs(npcCache) do active[npc] = true drawBox(npc, getOrCreateBox(npc)) end for npc in pairs(espBoxes) do if not active[npc] then removeBox(npc) end end end end) -- ===================== -- INPUT -- ===================== UserInputService.InputBegan:Connect(function(input, gp) if gp then return end if input.UserInputType == Enum.UserInputType.MouseButton2 then aimbotEnabled = true setAimbotStatus() elseif input.KeyCode == Enum.KeyCode.Insert then frame.Visible = not frame.Visible hintLabel.Visible = not frame.Visible end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton2 then aimbotEnabled = false setAimbotStatus() end end) espButton.MouseButton1Click:Connect(function() espEnabled = not espEnabled setESPButton() end) teamButton.MouseButton1Click:Connect(function() teamCheckEnabled = not teamCheckEnabled setTeamButton() end) -- ===================== -- DRAG -- ===================== local drag, dragStart, dragOrigin = false, nil, nil titleBar.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then drag = true; dragStart = i.Position; dragOrigin = frame.Position end end) titleBar.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then drag = false end end) UserInputService.InputChanged:Connect(function(i) if drag and i.UserInputType == Enum.UserInputType.MouseMovement then local d = i.Position - dragStart frame.Position = UDim2.new(dragOrigin.X.Scale, dragOrigin.X.Offset + d.X, dragOrigin.Y.Scale, dragOrigin.Y.Offset + d.Y) end end)