local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local isActive = false local isCompressing = false local isMinimized = false local activeProps = {} local explodedBlacklist = {} local screenGui = Instance.new("ScreenGui") screenGui.Name = "TarekScripterTornadoGUI" screenGui.ResetOnSpawn = false if syn and syn.protect_gui then syn.protect_gui(screenGui) screenGui.Parent = game:GetService("CoreGui") elseif gethui then screenGui.Parent = gethui() else screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 220, 0, 155) mainFrame.Position = UDim2.new(0.65, 0, 0.35, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30) mainFrame.BorderSizePixel = 0 mainFrame.ClipsDescendants = true mainFrame.Active = true mainFrame.Parent = screenGui Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 10) local mainStroke = Instance.new("UIStroke", mainFrame) mainStroke.Color = Color3.fromRGB(60, 60, 70) mainStroke.Thickness = 1.5 local titleBar = Instance.new("Frame") titleBar.Name = "TitleBar" titleBar.Size = UDim2.new(1, 0, 0, 35) titleBar.BackgroundColor3 = Color3.fromRGB(35, 35, 42) titleBar.BorderSizePixel = 0 titleBar.Parent = mainFrame Instance.new("UICorner", titleBar).CornerRadius = UDim.new(0, 10) local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, -65, 1, 0) titleLabel.Position = UDim2.new(0, 10, 0, 0) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "tarekscripter tornado(BETA)" titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.Font = Enum.Font.SourceSansBold titleLabel.TextSize = 13 titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Parent = titleBar local minBtn = Instance.new("TextButton") minBtn.Size = UDim2.new(0, 25, 0, 25) minBtn.Position = UDim2.new(1, -55, 0, 5) minBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 60) minBtn.TextColor3 = Color3.fromRGB(255, 255, 255) minBtn.Font = Enum.Font.SourceSansBold minBtn.Text = "-" minBtn.TextSize = 16 minBtn.Parent = titleBar Instance.new("UICorner", minBtn).CornerRadius = UDim.new(0, 5) local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 25, 0, 25) closeBtn.Position = UDim2.new(1, -28, 0, 5) closeBtn.BackgroundColor3 = Color3.fromRGB(200, 40, 40) closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.Font = Enum.Font.SourceSansBold closeBtn.Text = "X" closeBtn.TextSize = 14 closeBtn.Parent = titleBar Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 5) local contentFrame = Instance.new("Frame") contentFrame.Name = "ContentFrame" contentFrame.Size = UDim2.new(1, 0, 1, -35) contentFrame.Position = UDim2.new(0, 0, 0, 35) contentFrame.BackgroundTransparency = 1 contentFrame.Parent = mainFrame local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.9, 0, 0, 40) btn.Position = UDim2.new(0.05, 0, 0.1, 0) btn.BackgroundColor3 = Color3.fromRGB(240, 40, 40) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.SourceSansBold btn.Text = "TORNADO: OFF (R)" btn.TextScaled = true btn.Parent = contentFrame Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) local blastBtn = Instance.new("TextButton") blastBtn.Size = UDim2.new(0.9, 0, 0, 40) blastBtn.Position = UDim2.new(0.05, 0, 0.52, 0) blastBtn.BackgroundColor3 = Color3.fromRGB(255, 140, 0) blastBtn.TextColor3 = Color3.fromRGB(255, 255, 255) blastBtn.Font = Enum.Font.SourceSansBold blastBtn.Text = "COMPRESS & BLAST (T)" blastBtn.TextScaled = true blastBtn.Parent = contentFrame Instance.new("UICorner", blastBtn).CornerRadius = UDim.new(0, 8) local dragging, dragStart, startPos titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = mainFrame.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then local delta = input.Position - dragStart mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) minBtn.Activated:Connect(function() isMinimized = not isMinimized if isMinimized then contentFrame.Visible = false mainFrame.Size = UDim2.new(0, 220, 0, 35) minBtn.Text = "+" else contentFrame.Visible = true mainFrame.Size = UDim2.new(0, 220, 0, 155) minBtn.Text = "-" end end) local function isValidProp(part) if not part or not part:IsA("BasePart") or part.Anchored then return false end if explodedBlacklist[part] then return false end local ancestor = part:FindFirstAncestorOfClass("Model") if ancestor and ancestor:FindFirstChildOfClass("Humanoid") then return false end if part.Parent and part.Parent:FindFirstChildOfClass("Humanoid") then return false end return true end local function removePropPhysics(part) if activeProps[part] then local data = activeProps[part] if data.AP then data.AP:Destroy() end if data.AO then data.AO:Destroy() end if data.Att then data.Att:Destroy() end activeProps[part] = nil end end local function stopTornado() isActive = false isCompressing = false btn.Text = "TORNADO: OFF (R)" btn.BackgroundColor3 = Color3.fromRGB(240, 40, 40) for part, _ in pairs(activeProps) do removePropPhysics(part) end activeProps = {} explodedBlacklist = {} end closeBtn.Activated:Connect(function() stopTornado() screenGui:Destroy() end) local function attachPhysicsToProp(part) if activeProps[part] or not isValidProp(part) then return end pcall(function() part:SetNetworkOwner(LocalPlayer) end) local att = Instance.new("Attachment") att.Name = "TornadoGrabbedAtt" att.Parent = part local ao = Instance.new("AlignOrientation") ao.Mode = Enum.OrientationAlignmentMode.OneAttachment ao.Attachment0 = att ao.MaxTorque = math.huge ao.Responsiveness = 100 ao.CFrame = part.CFrame ao.Parent = part local ap = Instance.new("AlignPosition") ap.Mode = Enum.PositionAlignmentMode.OneAttachment ap.Attachment0 = att ap.MaxForce = math.huge ap.MaxVelocity = 350 ap.Responsiveness = 85 ap.Parent = part activeProps[part] = { Part = part, Att = att, AO = ao, AP = ap, Tier = math.random(1, 3), Offset = math.random(1, 100) / 10 } end Workspace.ChildAdded:Connect(function(child) if not isActive then return end if child.Name == "GrabParts" then task.spawn(function() local success, grabbedPart = pcall(function() local grabPart = child:WaitForChild("GrabPart", 1.5) local weld = grabPart:WaitForChild("WeldConstraint", 1.5) return weld.Part1 end) if success and grabbedPart and isValidProp(grabbedPart) then attachPhysicsToProp(grabbedPart) end end) end end) local function triggerCompressAndBlast() if not isActive or isCompressing then return end isCompressing = true local char = LocalPlayer.Character if not char then isCompressing = false return end local root = char:FindFirstChild("HumanoidRootPart") if not root then isCompressing = false return end local compressPoint = root.Position + Vector3.new(0, 10, 0) for part, data in pairs(activeProps) do if part and part:IsDescendantOf(workspace) then data.AP.Position = compressPoint end end task.wait(1) local exp = Instance.new("Explosion") exp.Position = compressPoint exp.BlastRadius = 20 exp.BlastPressure = 0 exp.Parent = workspace local propsToBlast = {} for part, _ in pairs(activeProps) do table.insert(propsToBlast, part) end for _, part in ipairs(propsToBlast) do if part and part:IsDescendantOf(workspace) then removePropPhysics(part) explodedBlacklist[part] = true task.delay(2.5, function() explodedBlacklist[part] = nil end) pcall(function() part:SetNetworkOwner(LocalPlayer) end) local randomDirection = Vector3.new( math.random(-100, 100), math.random(30, 120), math.random(-100, 100) ).Unit local blastSpeed = math.random(350, 600) part.AssemblyLinearVelocity = randomDirection * blastSpeed part.AssemblyAngularVelocity = Vector3.new( math.random(-100, 100), math.random(-100, 100), math.random(-100, 100) ) end end isCompressing = false end local function startTornado() local char = LocalPlayer.Character if not char then return end local root = char:FindFirstChild("HumanoidRootPart") if not root then return end isActive = true btn.Text = "TORNADO: ON (R)" btn.BackgroundColor3 = Color3.fromRGB(40, 200, 40) end local function toggleTornado() if isActive then stopTornado() else startTornado() end end btn.Activated:Connect(toggleTornado) blastBtn.Activated:Connect(triggerCompressAndBlast) UserInputService.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.R then toggleTornado() elseif input.KeyCode == Enum.KeyCode.T then triggerCompressAndBlast() elseif input.KeyCode == Enum.KeyCode.M then mainFrame.Visible = not mainFrame.Visible end end) RunService.Stepped:Connect(function() if not isActive or isCompressing then return end local char = LocalPlayer.Character if not char then return end local root = char:FindFirstChild("HumanoidRootPart") if not root then return end local rootPos = root.Position local timeSeconds = workspace.DistributedGameTime for part, data in pairs(activeProps) do if not part or not part:IsDescendantOf(workspace) or part.Anchored then removePropPhysics(part) else local angle = (timeSeconds * 3.5) + data.Offset local height = 12 local radius = 4 if data.Tier == 1 then height = 14 + math.sin(angle * 2) * 1.5 radius = 4 + (data.Offset % 2) elseif data.Tier == 2 then height = 24 + math.sin(angle * 2) * 2 radius = 9 + (data.Offset % 3) elseif data.Tier == 3 then height = 36 + math.sin(angle * 2) * 2.5 radius = 16 + (data.Offset % 4) end local targetPos = rootPos + Vector3.new( math.cos(angle) * radius, height, math.sin(angle) * radius ) data.AP.Position = targetPos data.AO.CFrame = CFrame.new(part.Position, targetPos) end end end) LocalPlayer.CharacterAdded:Connect(function() stopTornado() end)