
Key RequiredUniversal

-- 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
})



P l a n k s.