Catch And Tame
Key Required

Catch And Tame

[🧸] Catch And Tame!criminalcriminal 1K views 2.7K executesUpdated Jun 25, 2026
Unrated
00
Lua Script•399 lines (13517 chars)
-- made by @udoxxed on dc

local lp = game.Players.LocalPlayer
local CoreGui = game:GetService("CoreGui") or lp:WaitForChild("PlayerGui")
if CoreGui:FindFirstChild("LassoHub") then
    CoreGui.LassoHub:Destroy()
end
local rs = game:GetService("ReplicatedStorage")
local rem = rs:WaitForChild("Remotes")
-- settings
getgenv().AutoLasso = false
getgenv().AutoFarm = false
getgenv().AutoDeposit = false
getgenv().FarmRange = "Current"
local blacklist = {}
local busy = false
local function get_pen()
    local pens = workspace:FindFirstChild("PlayerPens")
    if not pens then return nil end
    for _, pen in ipairs(pens:GetChildren()) do
        local owner = pen:GetAttribute("Owner")
        if owner == lp.Name or tostring(owner) == tostring(lp.UserId) then
            return pen
        end
    end
    return nil
end
local function tp(cf)
    local c = lp.Character
    local root = c and c:FindFirstChild("HumanoidRootPart")
    if root then
        root.CFrame = cf
        root.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
        root.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
        
        root.Anchored = true
        task.wait(0.05)
        if root then
            root.Anchored = false
            root.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
            root.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
        end
    end
end
local function equip()
    local c = lp.Character
    local hum = c and c:FindFirstChildOfClass("Humanoid")
    if not hum then return nil end
    
    for _, v in ipairs(c:GetChildren()) do
        if v:IsA("Tool") and (v.Name == "Lasso" or v.Name:find("-")) then
            return v
        end
    end
    
    local lasso = lp.Backpack:FindFirstChild("Lasso")
    if not lasso then
        for _, v in ipairs(lp.Backpack:GetChildren()) do
            if v:IsA("Tool") and v.Name:find("-") then
                lasso = v
                break
            end
        end
    end
    
    if lasso then
        hum:EquipTool(lasso)
        return lasso
    end
    return nil
end
local function get_nearest(dist)
    local c = lp.Character
    local root = c and c:FindFirstChild("HumanoidRootPart")
    if not root then return nil end
    local near = nil
    local max_d = dist or math.huge
    for _, folder in ipairs(workspace:GetChildren()) do
        if (folder:IsA("Folder") or folder:IsA("Model")) and folder.Name:find("Pets") 
           and not folder.Name:find("Player") 
           and not folder.Name:find("Cloned") 
           and not folder.Name:find("ToFix") then
            
            local pets = folder:FindFirstChild("Pets")
            if pets then
                for _, pet in ipairs(pets:GetChildren()) do
                    if pet:IsA("Model") and (not blacklist[pet] or tick() > blacklist[pet]) and not pet:GetAttribute("Captured") then
                        local part = pet.PrimaryPart or pet:FindFirstChild("HumanoidRootPart") or pet:FindFirstChildWhichIsA("BasePart")
                        if part then
                            local d = (part.Position - root.Position).Magnitude
                            if d < max_d then
                                max_d = d
                                near = pet
                            end
                        end
                    end
                end
            end
        end
    end
    return near
end
local function get_best()
    local best = nil
    local max_s = -1
    
    for _, folder in ipairs(workspace:GetChildren()) do
        if (folder:IsA("Folder") or folder:IsA("Model")) and folder.Name:find("Pets") 
           and not folder.Name:find("Player") 
           and not folder.Name:find("Cloned") 
           and not folder.Name:find("ToFix") then
            
            local pets = folder:FindFirstChild("Pets")
            if pets then
                for _, pet in ipairs(pets:GetChildren()) do
                    if pet:IsA("Model") and not pet:GetAttribute("Captured") then
                        local strength = pet:GetAttribute("Strength") or 0
                        if strength > max_s then
                            local part = pet.PrimaryPart or pet:FindFirstChild("HumanoidRootPart") or pet:FindFirstChildWhichIsA("BasePart")
                            if part then
                                max_s = strength
                                best = pet
                            end
                        end
                    end
                end
            end
        end
    end
    return best
end
local function catch(pet)
    if busy then return end
    busy = true
    
    local c = lp.Character
    local root = c and c:FindFirstChild("HumanoidRootPart")
    if not root then 
        busy = false
        return 
    end
    
    local part = pet.PrimaryPart or pet:FindFirstChild("HumanoidRootPart") or pet:FindFirstChildWhichIsA("BasePart")
    if not part then
        busy = false
        return
    end
    
    local tool = equip()
    if not tool then
        warn("Put a Lasso in your Backpack!")
        busy = false
        return
    end
    
    if rem:FindFirstChild("equipLassoVisual") then
        pcall(function()
            rem.equipLassoVisual:InvokeServer(tool)
        end)
    end
    task.wait(0.2)
    
    local dir = (part.Position - root.Position)
    rem.ThrowLasso:FireServer(1, Vector3.new(dir.X, 0, dir.Z).Unit)
    task.wait(0.3)
    
    local ok, res = pcall(function()
        return rem.minigameRequest:InvokeServer(pet, pet:GetPivot())
    end)
    
    if ok and res == true then
        if pet:GetAttribute("Rarity") == "Boss" then
            for i = 1, 100 do
                rem.UpdateProgress:FireServer(1)
                task.wait(0.075)
            end
        else
            local l_name = lp:GetAttribute("equippedLasso") or "Basic Lasso"
            local petStrength = pet:GetAttribute("Strength") or 10
            
            local l_conf = require(rs.Configs.Lassos)
            local l_str = (l_conf[l_name] and l_conf[l_name].strength) or 10
            
            local diff = math.clamp(math.floor(math.sqrt(math.max(0, (petStrength / l_str) - 1)) * 4 + 1.5), 1, 10)
            local clicks_t = {
                [1] = 14, [2] = 18, [3] = 24, [4] = 30, [5] = 38,
                [6] = 47, [7] = 69, [8] = 81, [9] = 82, [10] = 98
            }
            local req = clicks_t[diff] or 98
            local t_wait = req / 14 + 0.5
            
            local steps = math.max(3, math.floor(t_wait / 0.25))
            local stepInterval = t_wait / steps
            local progress = 0
            
            for i = 1, steps do
                task.wait(stepInterval)
                progress = math.min(100, math.floor(i * (100 / steps)))
                rem.UpdateProgress:FireServer(progress)
            end
        end
        task.wait(0.2)
    else
        blacklist[pet] = tick() + 8
    end
    
    busy = false
end
local ui = Instance.new("ScreenGui")
ui.Name = "LassoHub"
ui.ResetOnSpawn = false
ui.Parent = CoreGui
local main = Instance.new("Frame")
main.Name = "Main"
main.Parent = ui
main.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
main.Position = UDim2.new(0.5, -110, 0.5, -120)
main.Size = UDim2.new(0, 220, 0, 245)
main.Active = true
main.Draggable = true
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 8)
corner.Parent = main
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Parent = main
title.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
title.Size = UDim2.new(1, 0, 0, 35)
title.Font = Enum.Font.GothamBold
title.Text = "@udoxxed on dc"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextSize = 14
title.TextXAlignment = Enum.TextXAlignment.Left
local t_corner = Instance.new("UICorner")
t_corner.CornerRadius = UDim.new(0, 8)
t_corner.Parent = title
local bar = Instance.new("Frame")
bar.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
bar.BorderSizePixel = 0
bar.Position = UDim2.new(0, 0, 1, -5)
bar.Size = UDim2.new(1, 0, 0, 5)
bar.Parent = title
local content = Instance.new("Frame")
content.BackgroundTransparency = 1
content.Position = UDim2.new(0, 0, 0, 35)
content.Size = UDim2.new(1, 0, 1, -35)
content.Parent = main
local list = Instance.new("UIListLayout")
list.Parent = content
list.HorizontalAlignment = Enum.HorizontalAlignment.Center
list.SortOrder = Enum.SortOrder.LayoutOrder
list.Padding = UDim.new(0, 8)
local padding = Instance.new("UIPadding")
padding.PaddingTop = UDim.new(0, 8)
padding.Parent = content
local function make_btn(txt, cb)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.9, 0, 0, 32)
    btn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
    btn.Font = Enum.Font.GothamBold
    btn.Text = txt
    btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    btn.TextSize = 13
    btn.Parent = content
    
    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, 6)
    c.Parent = btn
    
    local act = false
    local function update(val)
        act = val
        if act then
            btn.BackgroundColor3 = Color3.fromRGB(0, 160, 255)
            btn.TextColor3 = Color3.fromRGB(255, 255, 255)
        else
            btn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
            btn.TextColor3 = Color3.fromRGB(200, 200, 200)
        end
    end
    
    btn.MouseButton1Click:Connect(function()
        act = not act
        update(act)
        cb(act)
    end)
    
    return btn, update
end
local b_lasso, set_lasso = make_btn("Auto Lasso: OFF", function(val)
    getgenv().AutoLasso = val
    b_lasso.Text = val and "Auto Lasso: ON" or "Auto Lasso: OFF"
end)
local b_farm, set_farm = make_btn("Auto Farm: OFF", function(val)
    getgenv().AutoFarm = val
    b_farm.Text = val and "Auto Farm: ON" or "Auto Farm: OFF"
    if val then
        set_lasso(true)
        getgenv().AutoLasso = true
        b_lasso.Text = "Auto Lasso: ON"
    end
end)
local b_dep, set_dep = make_btn("Auto Deposit: OFF", function(val)
    getgenv().AutoDeposit = val
    b_dep.Text = val and "Auto Deposit: ON" or "Auto Deposit: OFF"
end)
local b_rng = Instance.new("TextButton")
b_rng.Size = UDim2.new(0.9, 0, 0, 32)
b_rng.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
b_rng.Font = Enum.Font.GothamBold
b_rng.Text = "Range: Current Zone (600)"
b_rng.TextColor3 = Color3.fromRGB(200, 200, 200)
b_rng.TextSize = 13
b_rng.Parent = content
local r_c = Instance.new("UICorner")
r_c.CornerRadius = UDim.new(0, 6)
r_c.Parent = b_rng
b_rng.MouseButton1Click:Connect(function()
    if getgenv().FarmRange == "Current" then
        getgenv().FarmRange = "All"
        b_rng.Text = "Range: All Zones (Inf)"
        b_rng.BackgroundColor3 = Color3.fromRGB(0, 160, 255)
        b_rng.TextColor3 = Color3.fromRGB(255, 255, 255)
    else
        getgenv().FarmRange = "Current"
        b_rng.Text = "Range: Current Zone (600)"
        b_rng.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
        b_rng.TextColor3 = Color3.fromRGB(200, 200, 200)
    end
end)
local b_tp = Instance.new("TextButton")
b_tp.Size = UDim2.new(0.9, 0, 0, 32)
b_tp.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
b_tp.Font = Enum.Font.GothamBold
b_tp.Text = "TP to Best Animal"
b_tp.TextColor3 = Color3.fromRGB(255, 215, 0)
b_tp.TextSize = 13
b_tp.Parent = content
local tp_c = Instance.new("UICorner")
tp_c.CornerRadius = UDim.new(0, 6)
tp_c.Parent = b_tp
b_tp.MouseButton1Click:Connect(function()
    local b = get_best()
    if b then
        local part = b.PrimaryPart or b:FindFirstChild("HumanoidRootPart") or b:FindFirstChildWhichIsA("BasePart")
        if part then
            tp(CFrame.new(part.Position + Vector3.new(6, 2, 6), part.Position))
            b_tp.Text = "TPed to " .. (b:GetAttribute("Name") or b.Name)
            task.delay(1.5, function()
                b_tp.Text = "TP to Best Animal"
            end)
        end
    else
        b_tp.Text = "No Animals Found"
        task.delay(1.5, function()
            b_tp.Text = "TP to Best Animal"
        end)
    end
end)
task.spawn(function()
    while task.wait(0.1) do
        if getgenv().AutoFarm and not busy then
            local c = lp.Character
            local root = c and c:FindFirstChild("HumanoidRootPart")
            if root then
                local range = getgenv().FarmRange == "Current" and 600 or math.huge
                local pet = get_nearest(range)
                if pet then
                    local part = pet.PrimaryPart or pet:FindFirstChild("HumanoidRootPart") or pet:FindFirstChildWhichIsA("BasePart")
                    if part then
                        tp(CFrame.new(part.Position + Vector3.new(6, 2, 6), part.Position))
                        task.wait(0.15)
                        catch(pet)
                        if getgenv().AutoDeposit then
                            local pen = get_pen()
                            local spawn = pen and pen:FindFirstChild("SpawnLocation")
                            if spawn then
                                tp(spawn.CFrame + Vector3.new(0, 3, 0))
                                task.wait(0.6)
                            end
                        end
                    end
                else
                    task.wait(0.3)
                end
            end
        end
    end
end)
task.spawn(function()
    while task.wait(0.1) do
        if getgenv().AutoLasso and not getgenv().AutoFarm and not busy then
            local pet = get_nearest(65)
            if pet then
                catch(pet)
            end
        end
    end
end)

Features & Information

hi this is my 1st post, here are the features: (coded it in half an hour so) - Auto Farm - Auto Lasso (can catch animals even if ur lasso doesnt have enough power) - Auto Deposit - Tp to best animal all open srced!
#catch#viral#sigma

Community Comments (2)

LollylylolLollylylolJul 27, 2026

yoo this script is so brokenn

BaguguBaguguAug 20, 2026

Why is it messed up?

More Scripts for [🧸] Catch And Tame!