ZO ぞ SAMURAI Script | AUTO PARRY AND BLATANT STUFF – OPEN SOURCE

local players = game:GetService("Players")
local vim = game:GetService("VirtualInputManager")
local plr = players.LocalPlayer
local cd = false
local Settings = {
    Autoparry = { Toggle = false, Range = 20, Delay = 0, IgnoreKicks = false, Autocounter = false, Fov = 180,
Katana = 0.01, Fist =0.095, Kick = 0,
Scythe = 0.27,
Nagi = 0.22,
kanaboo = 0.29,
Kusa = 0.06,
Tanto = 0.05,
Odachi = 0.22 },
    ESP = { Toggle = false, Config = {} },
    Tpaura = {
        Toggle = false,
    },
}

local anims = {
    ["rbxassetid://6678908798"] = { [1] = Settings.Autoparry.Katana, [2] = 0.48 },
    ["rbxassetid://6678909967"] = { [1] = Settings.Autoparry.Katana, [2] = 0.48 },
    ["rbxassetid://6678913068"] = { [1] = Settings.Autoparry.Katana, [2] = 0.48 },
["rbxassetid://11753430563"] = { [1] = 0.17, [2] = 0.48 }, -- slower needs seperate ap method ig lol wap
    ["rbxassetid://6678914641"] = { [1] = Settings.Autoparry.Katana, [2] = 0.50 }, --thats swing kick
    ["rbxassetid://6907975812"] = { [1] = Settings.Autoparry.Kick, [2] = 0.35 }, -- kick
    ["rbxassetid://11752087150"] = { [1] = Settings.Autoparry.Fist, [2] = 0.45 },
    ["rbxassetid://11752098805"] = { [1] = Settings.Autoparry.Fist, [2] = 0.45 },
    ["rbxassetid://11752104735"] = { [1] = Settings.Autoparry.Fist, [2] = 0.45 },
    ["rbxassetid://11752111783"] = { [1] = Settings.Autoparry.Fist, [2] = 0.45 },
    --
    ["rbxassetid://6708118912"] = { [1] = Settings.Autoparry.Scythe, [2] = 0.60 }, -- scythe  default was 0.29 before btw
    ["rbxassetid://6835409260"] = { [1] = Settings.Autoparry.Scythe, [2] = 0.60 },
    ["rbxassetid://6708121991"] = { [1] = Settings.Autoparry.Scythe, [2] = 0.60 },
    ["rbxassetid://6708121121"] = { [1] = Settings.Autoparry.Scythe, [2] = 0.60 },
--
    ["rbxassetid://14349499924"] = { [1] = Settings.Autoparry.Nagi, [2] = 0.60 }, -- nagi
    ["rbxassetid://14349501923"] = { [1] = Settings.Autoparry.Nagi, [2] = 0.60 },
    ["rbxassetid://14349504049"] = { [1] = Settings.Autoparry.Nagi, [2] = 0.60 },
    ["rbxassetid://14349506078"] = { [1] = Settings.Autoparry.Nagi, [2] = 0.60 },
--
    ["rbxassetid://14483365680"] = { [1] = Settings.Autoparry.kanaboo, [2] = 0.60 }, -- kanaboo
    ["rbxassetid://6995853850"] = { [1] = Settings.Autoparry.kanaboo, [2] = 0.60 },
    ["rbxassetid://6996771877"] = { [1] = Settings.Autoparry.kanaboo, [2] = 0.60 },
    ["rbxassetid://7011157033"] = { [1] = Settings.Autoparry.kanaboo, [2] = 0.60 },
--
    ["rbxassetid://11941288362"] = { [1] = Settings.Autoparry.Kusa, [2] = 0.50 }, -- kusarigima
    ["rbxassetid://11941292174"] = { [1] = Settings.Autoparry.Kusa, [2] = 0.50 },
    ["rbxassetid://11941309395"] = { [1] = Settings.Autoparry.Kusa, [2] = 0.50 },
    ["rbxassetid://11941314458"] = { [1] = Settings.Autoparry.Kusa, [2] = 0.50 },
--
    ["rbxassetid://7845695759"] = { [1] = Settings.Autoparry.Tanto, [2] = 0.4 }, -- tanto
    ["rbxassetid://7845695236"] = { [1] = Settings.Autoparry.Tanto, [2] = 0.4 },
    ["rbxassetid://7845696985"] = { [1] = Settings.Autoparry.Tanto, [2] = 0.4 },
    ["rbxassetid://7845696360"] = { [1] = Settings.Autoparry.Tanto, [2] = 0.4 },
--
    ["rbxassetid://13537213350"] = { [1] = Settings.Autoparry.Odachi, [2] = 0.60 }, -- odachi last weapon
    ["rbxassetid://13537219514"] = { [1] = Settings.Autoparry.Odachi, [2] = 0.70 }, 
    ["rbxassetid://13537224645"] = { [1] = Settings.Autoparry.Odachi, [2] = 0.60 }, 
    ["rbxassetid://13537230809"] = { [1] = Settings.Autoparry.Odachi, [2] = 0.80 }, 
}



local closestplr, c, anim, coef, plrDirection, objectDirection, unit, value

function closest()
    closestplr = {}
    for i, v in next, players:GetChildren() do -- we want to use GetChildren instead of GetPlayers because we love children (written by mac)
        if
            v.Character
            and plr.Character:WaitForChild("HumanoidRootPart", 1)
            and v ~= plr
            and v.Character ~= plr.Character
            and v.Character:FindFirstChild("HumanoidRootPart")
            and (v.Character.HumanoidRootPart.Position - plr.Character.HumanoidRootPart.Position).Magnitude
            < Settings.Autoparry.Range
    then
        table.insert(closestplr, v)
    end
    end
    return closestplr
end



function def(enemy,distance)
    if not Settings.Autoparry.Autocounter then
        if cd then
            return
end
        task.wait(Settings.Autoparry.Delay)
print("parry attempt")
        cd = true
        vim:SendMouseButtonEvent(0, 0, 1, true, game, 0)
        task.wait(0.28)
        vim:SendMouseButtonEvent(0, 0, 1, false, game, 0)
        cd = false
    elseif Settings.Autoparry.Autocounter then
        if cd then
            return
        end
        task.wait(Settings.Autoparry.Delay)
        cd = true
        vim:SendMouseButtonEvent(0, 0, 1, true, game, 0)
        task.wait(0.28)
vim:SendMouseButtonEvent(0, 0, 1, false, game, 0)
cd = false
print("parry attempt(counter version)")
if enemy:FindFirstChildOfClass("Tool").Stunned.Value == true and enemy:FindFirstChildOfClass("Tool").Blocking.Value == false and distance > 15  then
vim:SendMouseButtonEvent(0, 0, 0, true, game, 0)
task.wait(0.10)
vim:SendMouseButtonEvent(0, 0, 0, false, game, 0)
print("counter attempt")
end
end
end


function isfacing(object)
    if Settings.Autoparry.Toggle then
        plrDirection = plr.Character.Head.CFrame.LookVector
        unit = (object.Head.CFrame.p - plr.Character.Head.CFrame.p).Unit
        value = math.pow((plrDirection - unit).Magnitude / 2, 2)
        if value >= Settings.Autoparry.Fov / 360 then
            return false
        else
            return true
        end
    end
end




function adjuster(distance) -- to be continued


end




function parry()
    for i, c in closest() do
        if
            c
            and plr.Character:WaitForChild("HumanoidRootPart", 2)
            and c.Character
            and c.Character:FindFirstChild("Humanoid")
            and c.Character.Humanoid:FindFirstChild("Animator")
        then
            for i, v in next, c.Character.Humanoid.Animator:GetPlayingAnimationTracks() do
                    anim = anims[v.Animation.AnimationId] 
                    if anim and isfacing(c.Character) and v.TimePosition >= anim[1] and v.TimePosition <= anim[2] then
                        task.spawn(function()
                            def(c.Character,(c.Character.HumanoidRootPart.Position - plr.Character.HumanoidRootPart.Position).Magnitude)
                        end)
                    end
                end
            end
        end
    end





function ESP()
    for i, v in next, players:GetChildren() do
        if v ~= plr and v.Character:WaitForChild("Humanoid", 1) then
            local h = Instance.new("Highlight", v.Character)
            h.FillColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
            h.OutlineColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
            v.Character.Humanoid.Changed:Connect(function(prop)
                if prop == "Health" and h then
                    h.FillColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
                    h.OutlineColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
                end
            end)
        end
    end
end



local repo = 'https://raw.githubusercontent.com/HTDBarsi/LinoriaLib/main/'

local Library = loadstring(game:HttpGet(repo .. 'Library.lua'))()
local ThemeManager = loadstring(game:HttpGet(repo .. 'addons/ThemeManager.lua'))()
local SaveManager = loadstring(game:HttpGet(repo .. 'addons/SaveManager.lua'))()

local Window = Library:CreateWindow({

        Title = "Asteria Zo",
        Center = true,
        AutoShow = true,
        TabPadding = 8,
        MenuFadeTime = 0.2,
})

local Tabs = {
    Main = Window:AddTab("Closet features"),
    Rage = Window:AddTab("Rage"),
    Visuals = Window:AddTab("Visuals"),
    ["UI Settings"] = Window:AddTab("UI Settings"),
}

local LeftGroupBox = Tabs.Main:AddLeftGroupbox("Main")
LeftGroupBox:AddToggle("Autoparry Toggle", {
    Text = "Autoparry",
    Default = false, -- Default value (true / false)
    Tooltip = "", -- Information shown when you hover over the toggle

    Callback = function(Value)
        Settings.Autoparry.Toggle = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Autoparry FOV",
    Default = 180,
    Min = 0,
    Max = 360,
    Rounding = 1,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Fov = Value
    end,
})


LeftGroupBox:AddSlider("MySlider", {
    Text = "Delay",
    Default = 0,
    Min = 0,
    Max = 2,
    Rounding = 2,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Delay = Value
    end,
})


LeftGroupBox:AddSlider("MySlider", {
    Text = "Range",
    Default = 25,
    Min = 0,
    Max = 25,
    Rounding = 1,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Range = Value
    end,
})

LeftGroupBox:AddToggle("Autoparry Toggle", {
    Text = "Auto counter[BETA]",
    Default = false, -- Default value (true / false)
    Tooltip = "Instantly Attacks after parrying", -- Information shown when you hover over the toggle

    Callback = function(Value)
        Settings.Autoparry.Autocounter = Value
    end,
})




LeftGroupBox:AddToggle("Ignore kicks Toggle", {
    Text = "Ignore kicks",
    Default = false, -- Default value (true / false)
    Tooltip = "Ignores kick inside of the autoparry", -- Information shown when you hover over the toggle

    Callback = function(Value)
        Settings.Autoparry.IgnoreKicks = Value
    end,
})


local LeftGroupBox = Tabs.Main:AddLeftGroupbox('TimePosition Settings')
LeftGroupBox:AddLabel('The lower the faster ap reaction ')


LeftGroupBox:AddSlider("MySlider", {
    Text = "Katana time position",
    Default = 0.085,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Katana = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Fist time position",
    Default = 0.095,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Fist = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Kick time position",
    Default = 0,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Kick = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Scythe time position",
    Default = 0.27,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Scythe = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Nagi time position",
    Default = 0.22,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Nagi = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Kanaboo time position",
    Default = 0.29,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.kanaboo = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Kusarigima time position",
    Default = 0.06,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Kusa = Value
    end,
})

LeftGroupBox:AddSlider("MySlider", {
    Text = "Tanto time position",
    Default = 0.05,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Tanto = Value
    end,
})


LeftGroupBox:AddSlider("MySlider", {
    Text = "Odachi time position",
    Default = 0.22,
    Min = 0,
    Max = 2,
    Rounding = 3,
    Compact = false,

    Callback = function(Value)
        Settings.Autoparry.Odachi = Value
    end,
})


local LeftGroupBox = Tabs.Rage:AddLeftGroupbox("Rage")
local MyButton = LeftGroupBox:AddButton({
    Text = "Tpaura(extremly obvious and op)",
    Func = function()
        loadstring(game:HttpGet("https://raw.githubusercontent.com/HTDBarsi/ZO/main/bettertp.lua"))()
    end,
    DoubleClick = false,
    Tooltip = "",
})

local LeftGroupBox = Tabs.Visuals:AddLeftGroupbox("Chams")

LeftGroupBox:AddToggle("Chams Toggle", {
    Text = "Chams toggle",
    Default = false, -- Default value (true / false)
    Tooltip = "", -- Information shown when you hover over the toggle

    Callback = function(Value)
        Settings.ESP.Toggle = Value
        if Value then
            for i, v in pairs(game.Players:GetChildren()) do
                if v.Character and v ~= plr and v.Character:WaitForChild("Humanoid", 1) then
                    local h = Instance.new("Highlight", v.Character)
                    h.FillColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
                    h.OutlineColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
                    v.Character.Humanoid.Changed:Connect(function(prop)
                        if prop == "Health" and h then
                            h.FillColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
                            h.OutlineColor = Color3.fromHSV((v.Character.Humanoid.Health / 255), 1, 1)
                        end
                    end)
                end
            end
        else
            for i, v in pairs(game.Players:GetChildren()) do
                if v.Character and v.Character:FindFirstChild("Highlight") then
                    v.Character.Highlight:Destroy()
                end
            end
        end
    end,
})





--//Configs and sh ui tab

local MenuGroup = Tabs["UI Settings"]:AddLeftGroupbox("Menu")
MenuGroup:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind", { Default = "End", NoUI = true, Text = "Menu keybind" })
MenuGroup:AddButton("Unload", function()
    Library:Unload()
end)
MenuGroup:AddButton("Copy discord invite", function()
    setclipboard("https://discord.gg/t2cXFpkGBh")
end)
Library.ToggleKeybind = Options.MenuKeybind
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:BuildConfigSection(Tabs["UI Settings"])
ThemeManager:SetFolder("Asteria/ZO")
SaveManager:SetFolder("Asteria/ZO")
ThemeManager:ApplyToTab(Tabs["UI Settings"])
SaveManager:LoadAutoloadConfig()

task.spawn(function()
    game:GetService("RunService").RenderStepped:Connect(function()
        if Settings.Autoparry.Toggle then
            parry()
        end
    end)
end)

task.spawn(function()
    workspace.ChildAdded:Connect(function(v)
pcall(function()
        if v:WaitForChild("Humanoid", 1) and v ~= plr.Character and Settings.ESP.Toggle then
            local h = Instance.new("Highlight", v)
            h.FillColor = Color3.new(0, 1, 0)
            h.OutlineColor = Color3.new(0, 1, 0)
                h.FillColor = Color3.fromHSV((v.Humanoid.Health / 255), 1, 1)
                h.OutlineColor = Color3.fromHSV((v.Humanoid.Health / 255), 1, 1)

            v.Humanoid.Changed:Connect(function(prop)
                if prop == "Health" then
                    h.FillColor = Color3.fromHSV((v.Humanoid.Health / 255), 1, 1)
                    h.OutlineColor = Color3.fromHSV((v.Humanoid.Health / 255), 1, 1)
                end
            end)
end
        end)
    end)
end)
Scroll to Top