Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
225 changes: 225 additions & 0 deletions Saikytiteo
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
-- StarterPlayerScripts/SaikytiteoAutoParry.lua
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer

-- ====== SERVER LOGIC ======
if RunService:IsServer() then
local DEFAULT_REACTION = 0.03
local MAX_HITBOX_DISTANCE = 4
local ATTACK_FLAG = "IsAttacking"
local HITBOX_NAME = "Hitbox"

local AutoParryState = {}
local PlayerReaction = {}

Players.PlayerAdded:Connect(function(plr)
AutoParryState[plr] = false
PlayerReaction[plr] = DEFAULT_REACTION

plr.CharacterAdded:Connect(function(char)
local remote = Instance.new("RemoteEvent")
remote.Name = "ParryRemote"
remote.Parent = char

local toggleEvent = Instance.new("RemoteEvent")
toggleEvent.Name = "AutoParryToggle"
toggleEvent.Parent = plr:WaitForChild("PlayerGui")

toggleEvent.OnServerEvent:Connect(function(p, state, reaction)
if p == plr then
AutoParryState[p] = state
if reaction then PlayerReaction[p] = reaction end
end
end)
end)
end)

local function IncomingPerfectHit(targetPlayer)
local char = targetPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return false end
local hrp = char.HumanoidRootPart

for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= targetPlayer then
local aChar = plr.Character
if aChar and aChar:FindFirstChild(ATTACK_FLAG) then
if aChar[ATTACK_FLAG].Value then
local hitbox = aChar:FindFirstChild(HITBOX_NAME)
if hitbox then
local dist = (hitbox.Position - hrp.Position).Magnitude
if dist <= MAX_HITBOX_DISTANCE then
return true
end
end
end
end
end
end
return false
end

RunService.Heartbeat:Connect(function()
for plr, enabled in pairs(AutoParryState) do
if enabled and plr.Character then
local char = plr.Character
local remote = char:FindFirstChild("ParryRemote")
if remote and IncomingPerfectHit(plr) then
task.spawn(function()
task.wait(PlayerReaction[plr] or DEFAULT_REACTION)
remote:Fire("StartParryPerfect")
end)
end
end
end
end)
return
end

-- ====== CLIENT LOGIC ======
local char = player.Character or player.CharacterAdded:Wait()
local remote = char:FindFirstChild("ParryRemote") or Instance.new("RemoteEvent")
remote.Name = "ParryRemote"
remote.Parent = char

remote.OnClientEvent:Connect(function(action)
if action == "StartParryPerfect" then
print("PERFECT AUTO PARRY!")
-- Thêm flash, âm thanh, animation ở đây nếu muốn
end
end)

-- ====== GUI “Saikytiteo” ======
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.ResetOnSpawn = false
ScreenGui.Name = "SaikytiteoAutoParryMenu"
ScreenGui.Parent = player:WaitForChild("PlayerGui")

local Frame = Instance.new("Frame")
Frame.Size = UDim2.new(0, 250, 0, 150)
Frame.Position = UDim2.new(0.05,0,0.2,0)
Frame.BackgroundColor3 = Color3.fromRGB(30,30,30)
Frame.BorderSizePixel = 0
Frame.Parent = ScreenGui
Frame.Active = true
Frame.Draggable = true
Frame.ClipsDescendants = true

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1,0,0,28)
Title.BackgroundTransparency = 1
Title.Text = "Saikytiteo"
Title.TextColor3 = Color3.fromRGB(255,255,255)
Title.TextSize = 24
Title.Font = Enum.Font.GothamBold
Title.Parent = Frame

local ToggleButton = Instance.new("TextButton")
ToggleButton.Size = UDim2.new(0,200,0,50)
ToggleButton.Position = UDim2.new(0,25,0,40)
ToggleButton.BackgroundColor3 = Color3.fromRGB(180,50,50)
ToggleButton.Text = "OFF"
ToggleButton.TextColor3 = Color3.fromRGB(255,255,255)
ToggleButton.TextSize = 22
ToggleButton.Font = Enum.Font.GothamBold
ToggleButton.Parent = Frame
ToggleButton.AutoButtonColor = true
ToggleButton.BorderSizePixel = 0
ToggleButton.CornerRadius = UDim.new(0,10)

local SliderLabel = Instance.new("TextLabel")
SliderLabel.Size = UDim2.new(1,0,0,20)
SliderLabel.Position = UDim2.new(0,0,0,100)
SliderLabel.BackgroundTransparency = 1
SliderLabel.Text = "Reaction Time"
SliderLabel.TextColor3 = Color3.fromRGB(255,255,255)
SliderLabel.Font = Enum.Font.Gotham
SliderLabel.TextSize = 16
SliderLabel.Parent = Frame

local SliderBar = Instance.new("Frame")
SliderBar.Size = UDim2.new(0,200,0,20)
SliderBar.Position = UDim2.new(0,25,0,120)
SliderBar.BackgroundColor3 = Color3.fromRGB(70,70,70)
SliderBar.BorderSizePixel = 0
SliderBar.Parent = Frame
SliderBar.CornerRadius = UDim.new(0,10)

local Handle = Instance.new("Frame")
Handle.Size = UDim2.new(0,20,1,0)
Handle.Position = UDim2.new(0.5,0,0,0)
Handle.BackgroundColor3 = Color3.fromRGB(200,200,200)
Handle.BorderSizePixel = 0
Handle.Parent = SliderBar
Handle.CornerRadius = UDim.new(0,10)

local dragging = false
local reactionTime = 0.03
Handle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true end
end)
Handle.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local x = math.clamp(input.Position.X - SliderBar.AbsolutePosition.X,0,SliderBar.AbsoluteSize.X)
Handle.Position = UDim2.new(0, x, 0, 0)
reactionTime = 0.01 + (0.05 * (1 - x/SliderBar.AbsoluteSize.X))
end
end)

-- Nút thu nhỏ
local MiniButton = Instance.new("TextButton")
MiniButton.Size = UDim2.new(0,40,0,40)
MiniButton.Position = UDim2.new(1, -45, 0, 5)
MiniButton.BackgroundColor3 = Color3.fromRGB(50,50,50)
MiniButton.TextColor3 = Color3.fromRGB(255,255,255)
MiniButton.Text = "S"
MiniButton.Font = Enum.Font.GothamBold
MiniButton.TextSize = 24
MiniButton.Parent = Frame
MiniButton.Visible = true

local isMinimized = false
MiniButton.MouseButton1Click:Connect(function()
if not isMinimized then
-- Thu nhỏ
Frame.Size = UDim2.new(0, 60, 0, 40)
Title.Visible = false
ToggleButton.Visible = false
SliderLabel.Visible = false
SliderBar.Visible = false
Handle.Visible = false
isMinimized = true
else
-- Mở lại
Frame.Size = UDim2.new(0, 250, 0, 150)
Title.Visible = true
ToggleButton.Visible = true
SliderLabel.Visible = true
SliderBar.Visible = true
Handle.Visible = true
isMinimized = false
end
end)

-- RemoteEvent để gửi ON/OFF và reaction time
local toggleRemote = ScreenGui:FindFirstChild("AutoParryToggle") or Instance.new("RemoteEvent")
toggleRemote.Name = "AutoParryToggle"
toggleRemote.Parent = ScreenGui

local isOn = false
ToggleButton.MouseButton1Click:Connect(function()
isOn = not isOn
if isOn then
ToggleButton.BackgroundColor3 = Color3.fromRGB(40,180,60)
ToggleButton.Text = "ON"
else
ToggleButton.BackgroundColor3 = Color3.fromRGB(180,50,50)
ToggleButton.Text = "OFF"
end
toggleRemote:FireServer(isOn, reactionTime)
end)