MeowWare
Key Required

MeowWare

[FPS] DUELS🛡️Cursed_ByReaperCursed_ByReaper 3.7K views 52 executesUpdated Apr 30, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•287 lines (8689 chars)
-- 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
})

Features & Information

Basics.

Community Comments (1)

Cursed_ByReaperCursed_ByReaperApr 30, 2025

P l a n k s.

More Scripts for [FPS] DUELS🛡️