---==== ---==== ---==== ---==== ---==== local Vitrual = game:GetService("VirtualInputManager") local RunService = game:GetService("RunService") local workspace = game:GetService("Workspace") local Players = game:GetService("Players") local Player = Players.LocalPlayer local CurrentCharacter = Player.Character or Player.CharacterAdded:Wait() local humanoid = CurrentCharacter:WaitForChild("Humanoid") local PlayerRoot = CurrentCharacter:WaitForChild("HumanoidRootPart") local SavePositionPlayer = nil Player.CharacterAdded:Connect(function(character) CurrentCharacter = character end) -- === States === -- local States = { Wait = "Wait", Target = "Target", } local CurrentState = States.Wait local function UpdateState(State) if not States[State] then warn("ERROR STATE:", State) return end CurrentState = State end -- == -- == -- == -- Follow Block -- == -- == -- == -- == -- == -- == -- == -- == -- local FollowBlock = Instance.new("Part", workspace) FollowBlock.Size = Vector3.new(8, 8, 8) FollowBlock.Anchored = true FollowBlock.CanCollide = false FollowBlock.Transparency = 0 FollowBlock.Color = Color3.new(0.101961, 1, 0) -- === Delete/AddBall Function === -- local function CreateBallBillboard(Part) local billboard = Instance.new("BillboardGui", Part) billboard.Name = "BallBillboard" billboard.Size = UDim2.fromScale(7, 4) billboard.StudsOffset = Vector3.new(0, 3, 0) billboard.AlwaysOnTop = false billboard.MaxDistance = 300 billboard.Enabled = true billboard.Adornee = Part local label = Instance.new("TextLabel", billboard) label.Size = UDim2.fromScale(1, 1) label.BackgroundTransparency = 1 label.BackgroundColor3 = Color3.fromRGB(0, 0, 0) label.TextColor3 = Color3.fromRGB(255, 255, 255) label.RichText = true label.TextScaled = true label.Text = "Ball:" .. Part.Name local corner = Instance.new("UICorner", label) corner.CornerRadius = UDim.new(0, 4) end local CurrentBall = nil local FollowConnection = nil local function NewGet(Part) if FollowConnection then FollowConnection:Disconnect() FollowConnection = nil end FollowConnection = Part:GetPropertyChangedSignal("CFrame"):Connect(function() if Part and Part.Parent and FollowBlock then FollowBlock.CFrame = Part.CFrame end end) end local function SearchBall(Part) if Part.Name ~= "Part" then return false end if Part.Parent ~= workspace then return false end if not Part:IsA("MeshPart") then return false end local Highlight = Part:FindFirstChild("Highlight") if not Highlight then return false end if Highlight.FillTransparency == 0.5 then return false end return true end for _, Part in pairs(workspace:GetChildren()) do if SearchBall(Part) then CurrentBall = Part CurrentBallPosition = Part.Position CreateBallBillboard(Part) NewGet(Part) print("Ball: " .. Part.Name) break end end workspace.ChildAdded:Connect(function(Part) if SearchBall(Part) then CurrentBall = Part CurrentBallPosition = Part.Position CreateBallBillboard(Part) NewGet(Part) print("Ball: " .. Part.Name) end end) workspace.ChildRemoved:Connect(function(Part) if Part == CurrentBall then CurrentBall = nil CurrentBallPosition = nil if FollowConnection then FollowConnection:Disconnect() FollowConnection = nil end print("Ball.Deleted: " .. Part.Name) end end) -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == -- == local function DeletekillBlock(Part) local FX = workspace:FindFirstChild("FX") if not FX then return false end if Part.Parent ~= FX then return false end if not Part:IsA("Part") then return false end if Part.Name ~= "Part" then return false end if Part.Material ~= Enum.Material.Neon then return false end if Part.Color ~= Color3.fromRGB(255, 0, 0) then return false end if Part.CastShadow ~= true then return false end return true end local FX = workspace:FindFirstChild("FX") if FX then for _, Part in pairs(workspace.FX:GetChildren()) do if DeletekillBlock(Part) then task.defer(function() Part:Destroy() print("Kill.Part:" .. Part.Name ..":Destroy()") end) end end workspace.FX.ChildAdded:Connect(function(Part) if DeletekillBlock(Part) then task.defer(function() Part:Destroy() print("Kill.Part:" .. Part.Name ..":Destroy()") end) end end) end -- === Parry Function and t/d === -- local function parry() Vitrual:SendKeyEvent(true, Enum.KeyCode.F, false, game) Vitrual:SendKeyEvent(false, Enum.KeyCode.F, false, game) end local function IsTarget() local Highlight = CurrentCharacter:FindFirstChild("Highlight", true) if not Highlight then return false end if Highlight.FillTransparency == 1 then return false end return true end local function IsParry() local Highlight = CurrentCharacter:FindFirstChild("Highlight", true) if not Highlight then return false end if Highlight.OutlineTransparency == 1 then return false end return true end RunService.PreRender:Connect(function() if IsTarget() then UpdateState(States.Target) end if not IsTarget() then UpdateState(States.Wait) end end) local function Update() if CurrentState == States.Wait then print("awawa") end if CurrentState == States.Target then parry() task.defer(function() PlayerRoot.Position = CurrentBall.Position end) end end RunService.PreRender:Connect(Update) ---- awawa — w — By @yukizzi