-- Load Mercury UI local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/deeeity/mercury-lib/master/src.lua"))() local gui = Library:create{Theme = Library.Themes.Serika} -- Tabs local combatTab = gui:tab{Icon = "rbxassetid://6034996695", Name = "Combat"} local espTab = gui:tab{Icon = "rbxassetid://6035192843", Name = "ESP"} local creditsTab = gui:tab{Icon = "rbxassetid://6034287535", Name = "Credits"} -- Services & References local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer -- ==== ESP Section ==== local ESPEnabled = false local TeamCheck = true local ESPObjects = {} function CreateESP(player) if player == LocalPlayer then return end local box = Drawing.new("Square") local name = Drawing.new("Text") local distance = Drawing.new("Text") box.Color = Color3.fromRGB(255, 0, 0) box.Thickness = 2 box.Filled = false box.Visible = false name.Size = 14 name.Color = Color3.new(1, 1, 1) name.Outline = true name.Center = true name.Visible = false distance.Size = 13 distance.Color = Color3.new(1, 1, 1) distance.Outline = true distance.Center = true distance.Visible = false ESPObjects[player] = {Box = box, Name = name, Distance = distance} end function RemoveESP(player) if ESPObjects[player] then for _, obj in pairs(ESPObjects[player]) do if obj and obj.Remove then obj:Remove() end end ESPObjects[player] = nil end end for _, player in ipairs(Players:GetPlayers()) do CreateESP(player) end Players.PlayerAdded:Connect(function(plr) plr.CharacterAdded:Connect(function() task.wait(1) CreateESP(plr) end) end) Players.PlayerRemoving:Connect(RemoveESP) RunService.RenderStepped:Connect(function() if not ESPEnabled then return end for player, objects in pairs(ESPObjects) do local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Head") then local pos, visible = Camera:WorldToViewportPoint(char.HumanoidRootPart.Position) local dist = math.floor((Camera.CFrame.Position - char.HumanoidRootPart.Position).Magnitude) if visible and (not TeamCheck or player.Team ~= LocalPlayer.Team) then local scale = 1 / (Camera.CFrame.Position - char.HumanoidRootPart.Position).Magnitude * 100 local size = Vector2.new(40 * scale, 60 * scale) local topLeft = Vector2.new(pos.X - size.X / 2, pos.Y - size.Y / 2) objects.Box.Size = size objects.Box.Position = topLeft objects.Box.Visible = true objects.Name.Text = player.Name objects.Name.Position = Vector2.new(pos.X, topLeft.Y - 15) objects.Name.Visible = true objects.Distance.Text = tostring(dist) .. "m" objects.Distance.Position = Vector2.new(pos.X, topLeft.Y + size.Y + 5) objects.Distance.Visible = true else objects.Box.Visible = false objects.Name.Visible = false objects.Distance.Visible = false end else objects.Box.Visible = false objects.Name.Visible = false objects.Distance.Visible = false end end end) -- ESP Tab Controls espTab:button({ Name = "Toggle ESP", Callback = function() ESPEnabled = not ESPEnabled gui:set_status(ESPEnabled and "ESP On" or "ESP Off") end }) espTab:toggle({ Name = "Team Check", StartingState = TeamCheck, Callback = function(state) TeamCheck = state end }) -- ==== Aimbot Section ==== local AimbotEnabled = false local AimPart = "Head" local Smoothness = 8 local AimFOV = 150 local FOVCircle = Drawing.new("Circle") FOVCircle.Color = Color3.fromRGB(255, 255, 255) FOVCircle.Thickness = 1 FOVCircle.Radius = AimFOV FOVCircle.Visible = false FOVCircle.Transparency = 0.4 FOVCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) local function GetClosestPlayer() local closest, shortest = nil, AimFOV for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild(AimPart) then local part = plr.Character[AimPart] local screenPoint, visible = Camera:WorldToViewportPoint(part.Position) local mousePos = Vector2.new(LocalPlayer:GetMouse().X, LocalPlayer:GetMouse().Y) local dist = (Vector2.new(screenPoint.X, screenPoint.Y) - mousePos).Magnitude if visible and dist < shortest then shortest = dist closest = plr end end end return closest end RunService.RenderStepped:Connect(function() if AimbotEnabled and game:GetService("UserInputService"):IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then local target = GetClosestPlayer() if target and target.Character and target.Character:FindFirstChild(AimPart) then local aimAt = target.Character[AimPart].Position local newCF = CFrame.new(Camera.CFrame.Position, aimAt) Camera.CFrame = Camera.CFrame:Lerp(newCF, 1 / Smoothness) end end FOVCircle.Position = Vector2.new(LocalPlayer:GetMouse().X, LocalPlayer:GetMouse().Y) end) -- Combat Tab UI combatTab:button({ Name = "Toggle Aimbot", Callback = function() AimbotEnabled = not AimbotEnabled FOVCircle.Visible = AimbotEnabled gui:set_status(AimbotEnabled and "Aimbot On" or "Aimbot Off") end }) combatTab:dropdown({ Name = "Aim Part", Items = { "Head", "Torso" }, Callback = function(v) AimPart = v end }) combatTab:slider({ Name = "Aimbot FOV", Min = 50, Max = 300, Default = AimFOV, Callback = function(v) AimFOV = v FOVCircle.Radius = v end }) combatTab:slider({ Name = "Smoothness", Min = 1, Max = 20, Default = Smoothness, Callback = function(v) Smoothness = v end }) combatTab:color_picker({ Name = "FOV Circle Color", Style = Library.ColorPickerStyles.Legacy, Callback = function(c) FOVCircle.Color = c end }) -- ==== Credits Tab ==== creditsTab:label({ Text = "Acknowledgements\n• Script Maker: CursedBy_ReaperUI\n• Library: Mercury by deeeity\n• MeowWare, Dev_Kitty" }) -- Final Notification gui:Notification{ Title = "MeowWare is Loaded!", Text = "All features are activated!", Duration = 5 } -- Add after existing tabs local configTab = gui:tab{Icon = "rbxassetid://6031097226", Name = "Config"} -- Config Functions local configPath = "meowware_config.json" local function SaveConfig() local config = { ESPEnabled = ESPEnabled, TeamCheck = TeamCheck, AimbotEnabled = AimbotEnabled, AimPart = AimPart, AimFOV = AimFOV, Smoothness = Smoothness, } writefile(configPath, game:GetService("HttpService"):JSONEncode(config)) gui:Notification{ Title = "Config Saved", Text = "Your settings were saved to file.", Duration = 4 } end local function LoadConfig() if isfile(configPath) then local success, data = pcall(function() return game:GetService("HttpService"):JSONDecode(readfile(configPath)) end) if success and typeof(data) == "table" then ESPEnabled = data.ESPEnabled or false TeamCheck = data.TeamCheck or true AimbotEnabled = data.AimbotEnabled or false AimPart = data.AimPart or "Head" AimFOV = data.AimFOV or 150 Smoothness = data.Smoothness or 8 FOVCircle.Radius = AimFOV FOVCircle.Visible = AimbotEnabled gui:Notification{ Title = "Config Loaded", Text = "Your settings have been applied.", Duration = 4 } else gui:Notification{ Title = "Load Failed", Text = "Could not read the config file.", Duration = 4 } end else gui:Notification{ Title = "No Config", Text = "You haven't saved a config yet!", Duration = 4 } end end -- Config Tab Buttons configTab:button({ Name = "Save Config", Callback = SaveConfig }) configTab:button({ Name = "Load Config", Callback = LoadConfig })