--========================================================-- -- STACK HUB VIP + 32 AURAS + MODO PETS + MODO MINION + MODO COBRA 🐍 --========================================================-- local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local running = false local steppedConnection local rightArm, leftArm, rightLeg, leftLeg local rootPart, humanoid, character, torso local fakeLimbs = {} local limbTrails = {} local currentRightArmCFrame, currentLeftArmCFrame local currentRightLegCFrame, currentLeftLegCFrame local hubGui local mainPanel, statusLabel, auraButton, secondaryButton, petsButton, minionButton, snakeBtn local panelOpen = true local isAuraActive = false local isSecondaryActive = false local isPetsActive = false local isMinionActive = false local isSnakeActive = false local targetPlayerName = "" local selectedAura = "Basico" local selectedSecondary = "Braços no Lugar" local snakeHistory = {} local snakeHiddenParts = {} --========================================================-- -- SISTEMA DA COBRA (INVISIBILIDADE E RASTRO) 🐍 --========================================================-- local function hideBodyForSnake() local char = player.Character if not char then return end local safeParts = {["Right Arm"]=true, ["Left Arm"]=true, ["Right Leg"]=true, ["Left Leg"]=true, ["HumanoidRootPart"]=true} for _, v in pairs(char:GetDescendants()) do if v:IsA("BasePart") and not safeParts[v.Name] and not v.Name:match("Fake") then if v.Transparency < 1 then snakeHiddenParts[v] = v.Transparency v.Transparency = 1 end elseif (v:IsA("Decal") or v:IsA("Texture")) then if v.Parent and safeParts[v.Parent.Name] then continue end if v.Parent and v.Parent.Name:match("Fake") then continue end if v.Transparency < 1 then snakeHiddenParts[v] = v.Transparency v.Transparency = 1 end end end end local function showBodyForSnake() for part, trans in pairs(snakeHiddenParts) do if part and part.Parent then part.Transparency = trans end end snakeHiddenParts = {} end --========================================================-- -- BUSCAR ALVO DA AURA --========================================================-- local function getTargetCenter() if targetPlayerName ~= "" then for _, p in ipairs(Players:GetPlayers()) do if p.Name:lower():sub(1, #targetPlayerName) == targetPlayerName:lower() or (p.DisplayName and p.DisplayName:lower():sub(1, #targetPlayerName) == targetPlayerName:lower()) then if p.Character and p.Character:FindFirstChild("HumanoidRootPart") then return p.Character.HumanoidRootPart.CFrame end end end end return rootPart and rootPart.CFrame or CFrame.new() end --========================================================-- -- CONFIGURAÇÃO DE COLISÃO, POSIÇÃO E RASTROS --========================================================-- local function createTrail(part) if not part then return end local att0 = Instance.new("Attachment"); att0.Name = "TrailAtt0"; att0.Position = Vector3.new(0, 1, 0); att0.Parent = part local att1 = Instance.new("Attachment"); att1.Name = "TrailAtt1"; att1.Position = Vector3.new(0, -1, 0); att1.Parent = part local trail = Instance.new("Trail") trail.Name = "LimbTrail" trail.Attachment0 = att0 trail.Attachment1 = att1 trail.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 180, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(150, 0, 255)) }) trail.Lifetime = 0.4 trail.MinLength = 0.1 trail.Parent = part table.insert(limbTrails, trail) end local function bindR15Part(fakeLimb, part, yOffset) if part then for _, obj in ipairs(part:GetChildren()) do if obj:IsA("Motor6D") or obj:IsA("Weld") or obj:IsA("WeldConstraint") then obj:Destroy() end end part.CFrame = fakeLimb.CFrame * CFrame.new(0, yOffset, 0) local w = Instance.new("WeldConstraint"); w.Part0 = fakeLimb; w.Part1 = part; w.Parent = fakeLimb end end local function startAnimation() if steppedConnection then steppedConnection:Disconnect(); steppedConnection = nil end fakeLimbs = {}; limbTrails = {}; character = player.Character; if not character then return end humanoid = character:FindFirstChildOfClass("Humanoid"); rootPart = character:FindFirstChild("HumanoidRootPart") if not humanoid or not rootPart then return end local isR15 = humanoid.RigType == Enum.HumanoidRigType.R15 if isR15 then torso = character:FindFirstChild("UpperTorso") local function createFakeLimb(name, p1, p2, p3) local fake = Instance.new("Part"); fake.Name = "Fake" .. name; fake.Size = Vector3.new(1, 2, 1); fake.Transparency = 1; fake.CanCollide = false; fake.Massless = false; fake.CFrame = rootPart.CFrame; fake.Parent = character; table.insert(fakeLimbs, fake) for _, partName in ipairs({p1, p2, p3}) do local realPart = character:FindFirstChild(partName) if realPart then if name:match("Arm") then realPart.CanCollide = true else realPart.CanCollide = false end end end bindR15Part(fake, character:FindFirstChild(p1), 0.4) bindR15Part(fake, character:FindFirstChild(p2), -0.2) bindR15Part(fake, character:FindFirstChild(p3), -0.85) createTrail(fake) return fake end rightArm = createFakeLimb("RightArm", "RightUpperArm", "RightLowerArm", "RightHand") leftArm = createFakeLimb("LeftArm", "LeftUpperArm", "LeftLowerArm", "LeftHand") rightLeg = createFakeLimb("RightLeg", "RightUpperLeg", "RightLowerLeg", "RightFoot") leftLeg = createFakeLimb("LeftLeg", "LeftUpperLeg", "LeftLowerLeg", "LeftFoot") else torso = character:FindFirstChild("Torso") rightArm = character:FindFirstChild("Right Arm"); leftArm = character:FindFirstChild("Left Arm") rightLeg = character:FindFirstChild("Right Leg"); leftLeg = character:FindFirstChild("Left Leg") for _, jName in ipairs({"Right Shoulder", "Left Shoulder", "Right Hip", "Left Hip"}) do local j = torso:FindFirstChild(jName); if j then j:Destroy() end end rightArm.CanCollide = true; leftArm.CanCollide = true rightLeg.CanCollide = false; leftLeg.CanCollide = false rightArm.Massless = false; leftArm.Massless = false rightLeg.Massless = true; leftLeg.Massless = true createTrail(rightArm); createTrail(leftArm); createTrail(rightLeg); createTrail(leftLeg) end if not torso or not rightArm or not leftArm or not rightLeg or not leftLeg then return end running = true; humanoid.BreakJointsOnDeath = false currentRightArmCFrame = rightArm.CFrame; currentLeftArmCFrame = leftArm.CFrame currentRightLegCFrame = rightLeg.CFrame; currentLeftLegCFrame = leftLeg.CFrame snakeHistory = {} steppedConnection = RunService.Stepped:Connect(function(_, _) if not running or not character or not rootPart or not humanoid or humanoid.Health <= 0 then return end local now = os.clock() local velocity = rootPart.AssemblyLinearVelocity local speed = Vector3.new(velocity.X, 0, velocity.Z).Magnitude local movement = math.clamp(speed / 16, 0, 1) local targetRightArm, targetLeftArm, targetRightLeg, targetLeftLeg if isSnakeActive then local currentPos = rootPart.Position local moveSpeed = speed if #snakeHistory == 0 then for i = 1, 35 do local offset = rootPart.CFrame.LookVector * ((i - 1) * 0.45) table.insert(snakeHistory, CFrame.lookAt(currentPos - Vector3.new(0, 2.7, 0) - offset, currentPos - Vector3.new(0, 2.7, 0) - offset + rootPart.CFrame.LookVector)) end end if (currentPos - snakeHistory[1].Position).Magnitude > 0.12 then local look = rootPart.CFrame.LookVector local flatLook = Vector3.new(look.X, 0, look.Z) if flatLook.Magnitude < 0.01 then flatLook = Vector3.new(0, 0, -1) else flatLook = flatLook.Unit end local newPos = currentPos - Vector3.new(0, 2.7, 0) local newCF = CFrame.lookAt(newPos, newPos + flatLook) table.insert(snakeHistory, 1, newCF) if #snakeHistory > 35 then table.remove(snakeHistory) end end local snakeTime = now local moving = moveSpeed > 1 local waveSpeed = moveSpeed < 5 and 4 or (moveSpeed < 14 and 8 or 14) local waveAmplitude = moving and math.clamp(moveSpeed / 12, 0.35, 1.25) or 0.12 local function getSnakeSegment(index, phase, sideOffset) local baseCF = snakeHistory[index] or snakeHistory[#snakeHistory] local wave = math.sin(snakeTime * waveSpeed - phase) * waveAmplitude local verticalWave = math.sin(snakeTime * waveSpeed * 0.5 - phase) * 0.12 local stretched = baseCF * CFrame.new(wave, verticalWave, sideOffset) local bend = math.cos(snakeTime * waveSpeed - phase) * waveAmplitude * 0.25 return stretched * CFrame.Angles(bend, 0, wave * 0.18) * CFrame.Angles(math.rad(90), 0, 0) end local headCF = snakeHistory[1] or rootPart.CFrame * CFrame.new(0, -2.7, 0) local headWave = math.sin(snakeTime * waveSpeed) * waveAmplitude * 0.35 targetRightArm = headCF * CFrame.new(headWave, 0, 0) * CFrame.Angles(math.rad(90), 0, headWave * 0.15) targetLeftArm = getSnakeSegment(7, 1.4, 0) targetRightLeg = getSnakeSegment(15, 2.8, 0) targetLeftLeg = getSnakeSegment(23, 4.2, 0) if not moving then local breathe = math.sin(now * 2.5) * 0.08 targetRightArm = targetRightArm * CFrame.new(0, breathe, 0) targetLeftArm = targetLeftArm * CFrame.new(0, breathe * 0.8, 0) targetRightLeg = targetRightLeg * CFrame.new(0, breathe * 0.6, 0) targetLeftLeg = targetLeftLeg * CFrame.new(0, breathe * 0.4, 0) end elseif isMinionActive then local groundCF = rootPart.CFrame * CFrame.new(0, -2.5, 0) local minionWalkSpeed = movement > 0.05 and 20 or 5 local minionCycle = now * minionWalkSpeed local stepR1 = math.max(0, math.sin(minionCycle)) * 0.6 local stepL1 = math.max(0, math.sin(minionCycle + math.pi)) * 0.6 local stepR2 = math.max(0, math.sin(minionCycle + math.pi * 0.5)) * 0.6 local stepL2 = math.max(0, math.sin(minionCycle + math.pi * 1.5)) * 0.6 local sway = math.sin(minionCycle * 0.5) * 0.15 targetRightArm = groundCF * CFrame.new(3, stepR1, -1.5) * CFrame.Angles(0, sway, math.rad(math.sin(minionCycle) * 15)) targetLeftArm = groundCF * CFrame.new(-3, stepL1, -1.5) * CFrame.Angles(0, -sway, math.rad(math.sin(minionCycle + math.pi) * 15)) targetRightLeg = groundCF * CFrame.new(1.5, stepR2, 3) * CFrame.Angles(0, sway, math.rad(math.sin(minionCycle + math.pi * 0.5) * 15)) targetLeftLeg = groundCF * CFrame.new(-1.5, stepL2, 3) * CFrame.Angles(0, -sway, math.rad(math.sin(minionCycle + math.pi * 1.5) * 15)) elseif isPetsActive then local centerCF = rootPart.CFrame local p1 = movement > 0.05 and math.abs(math.sin(now * 12)) * 1 or 0 local p2 = movement > 0.05 and math.abs(math.sin(now * 12 + 1)) * 1 or 0 local p3 = movement > 0.05 and math.abs(math.sin(now * 12 + 2)) * 1 or 0 local p4 = movement > 0.05 and math.abs(math.sin(now * 12 + 3)) * 1 or 0 local tilt = CFrame.Angles(math.rad(movement * -15), 0, 0) targetRightArm = centerCF * CFrame.new(2.5, -2 + p1, 1.5) * tilt targetLeftArm = centerCF * CFrame.new(-2.5, -2 + p2, 1.5) * tilt targetRightLeg = centerCF * CFrame.new(1.2, -2 + p3, 3) * tilt targetLeftLeg = centerCF * CFrame.new(-1.2, -2 + p4, 3) * tilt elseif isAuraActive then local organicX = math.noise(now * 0.4, 0, 0) * 0.8 local organicY = math.noise(0, now * 0.4, 0) * 0.8 local organicZ = math.noise(0, 0, now * 0.4) * 0.8 local centerCF = getTargetCenter() * CFrame.new(organicX, organicY, organicZ) local t = now * 4 if selectedAura == "Basico" then targetRightLeg = centerCF * CFrame.new(math.cos(t) * 2, math.sin(t * 1.3) * 1.5, math.sin(t) * 2) * CFrame.Angles(t, t, 0) targetLeftLeg = centerCF * CFrame.new(math.cos(t + 1.5) * 2, math.sin(t * 1.7) * 1.5, math.sin(t + 1.5) * 2) * CFrame.Angles(0, t, t) targetRightArm = centerCF * CFrame.new(math.cos(t + 3.0) * 2.5, math.sin(t * 1.1) * 2, math.sin(t + 3.0) * 2.5) * CFrame.Angles(t, 0, t) targetLeftArm = centerCF * CFrame.new(math.cos(t + 4.5) * 2.5, math.sin(t * 1.4) * 2, math.sin(t + 4.5) * 2.5) * CFrame.Angles(0, t, t) elseif selectedAura == "Minions no chão" then targetRightLeg = centerCF * CFrame.new(math.cos(t) * 2.5, -2 + math.sin(t * 2) * 0.3, math.sin(t) * 2.5) * CFrame.Angles(t, 0, 0) targetLeftLeg = centerCF * CFrame.new(math.cos(t + 1.5) * 2.5, -2 + math.sin(t * 2 + 1) * 0.3, math.sin(t + 1.5) * 2.5) * CFrame.Angles(0, t, 0) targetRightArm = centerCF * CFrame.new(math.cos(t + 3) * 3, -2 + math.sin(t * 2 + 2) * 0.3, math.sin(t + 3) * 3) * CFrame.Angles(0, 0, t) targetLeftArm = centerCF * CFrame.new(math.cos(t + 4.5) * 3, -2 + math.sin(t * 2 + 3) * 0.3, math.sin(t + 4.5) * 3) * CFrame.Angles(t, t, 0) elseif selectedAura == "Braços grandes" then targetRightLeg = centerCF * CFrame.new(math.cos(t) * 3, math.sin(t) * 2, math.sin(t) * 3) * CFrame.Angles(t, t, 0) targetLeftLeg = centerCF * CFrame.new(math.cos(t + 1.5) * 3, math.sin(t) * 2, math.sin(t + 1.5) * 3) * CFrame.Angles(0, t, t) targetRightArm = centerCF * CFrame.new(math.cos(t + 3) * 4.5, math.sin(t * 1.5) * 3, math.sin(t + 3) * 4.5) * CFrame.Angles(t * 1.5, t, 0) targetLeftArm = centerCF * CFrame.new(math.cos(t + 4.5) * 4.5, math.sin(t * 1.5) * 3, math.sin(t + 4.5) * 4.5) * CFrame.Angles(0, t * 1.5, t) elseif selectedAura == "Aura bugada de bracos e pernas rapido" then local r1, r2, r3, r4 = math.random(-5,5), math.random(-2,3), math.random(-5,5), math.random(-2,3) targetRightLeg = centerCF * CFrame.new(r1, r2, r3) * CFrame.Angles(math.rad(math.random(0,360)), math.rad(math.random(0,360)), 0) targetLeftLeg = centerCF * CFrame.new(r3, r4, r1) * CFrame.Angles(0, math.rad(math.random(0,360)), math.rad(math.random(0,360))) targetRightArm = centerCF * CFrame.new(r2, r1, r4) * CFrame.Angles(math.rad(math.random(0,360)), 0, math.rad(math.random(0,360))) targetLeftArm = centerCF * CFrame.new(r4, r3, r2) * CFrame.Angles(math.rad(math.random(0,360)), math.rad(math.random(0,360)), math.rad(math.random(0,360))) --====================================================-- -- AURAS COM O EFEITO SINE PENDULAR (LENTO E SUAVE) --====================================================-- elseif selectedAura == "Orbitação (Vai e Vem)" then local st = math.sin(now * 0.9) * 5 local h = math.sin(st) * 3 targetRightLeg = centerCF * CFrame.new(math.cos(st) * (3 - h*0.3), h, math.sin(st) * (3 - h*0.3)) * CFrame.Angles(st, st, 0) targetLeftLeg = centerCF * CFrame.new(math.cos(st + 1.5) * (3 - h*0.3), h, math.sin(st + 1.5) * (3 - h*0.3)) * CFrame.Angles(0, st, st) targetRightArm = centerCF * CFrame.new(math.cos(st + 3) * (4 - h*0.3), h + 1, math.sin(st + 3) * (4 - h*0.3)) * CFrame.Angles(st, 0, st) targetLeftArm = centerCF * CFrame.new(math.cos(st + 4.5) * (4 - h*0.3), h + 1, math.sin(st + 4.5) * (4 - h*0.3)) * CFrame.Angles(0, st, st) elseif selectedAura == "Espiral (Vai e Vem)" then local st = math.sin(now * 0.9) * 4 targetRightLeg = centerCF * CFrame.new(2, math.sin(st) * 3, 2) * CFrame.Angles(st, 0, 0) targetLeftLeg = centerCF * CFrame.new(-2, math.cos(st) * 3, -2) * CFrame.Angles(0, st, 0) targetRightArm = centerCF * CFrame.new(3, math.sin(st + 1.5) * 3, -3) * CFrame.Angles(0, 0, st) targetLeftArm = centerCF * CFrame.new(-3, math.cos(st + 1.5) * 3, 3) * CFrame.Angles(st, st, 0) elseif selectedAura == "Escudo (Vai e Vem)" then local st = math.sin(now * 0.8) * 6 targetRightLeg = centerCF * CFrame.new(math.cos(st) * 1.2, 0, math.sin(st) * 1.2) * CFrame.Angles(0, st, 0) targetLeftLeg = centerCF * CFrame.new(math.cos(st + math.pi) * 1.2, 0, math.sin(st + math.pi) * 1.2) * CFrame.Angles(0, st, 0) targetRightArm = centerCF * CFrame.new(math.cos(st + math.pi/2) * 1.8, 0.5, math.sin(st + math.pi/2) * 1.8) * CFrame.Angles(st, 0, 0) targetLeftArm = centerCF * CFrame.new(math.cos(st + math.pi*1.5) * 1.8, 0.5, math.sin(st + math.pi*1.5) * 1.8) * CFrame.Angles(st, 0, 0) elseif selectedAura == "Plasma (Vai e Vem)" then local st = math.sin(now * 0.7) * 7 local r = 1.5 + math.sin(now * 2) * 1 targetRightLeg = centerCF * CFrame.new(math.cos(st)*r, math.sin(st)*2, math.sin(st)*r) * CFrame.Angles(st, st, 0) targetLeftLeg = centerCF * CFrame.new(math.cos(st + 1.57)*r, math.cos(st)*2, math.sin(st + 1.57)*r) * CFrame.Angles(0, st, st) targetRightArm = centerCF * CFrame.new(math.cos(st + 3.14)*r, -math.sin(st)*2, math.sin(st + 3.14)*r) * CFrame.Angles(st, 0, st) targetLeftArm = centerCF * CFrame.new(math.cos(st + 4.71)*r, -math.cos(st)*2, math.sin(st + 4.71)*r) * CFrame.Angles(0, st, st) elseif selectedAura == "Helicóptero (Vai e Vem)" then local spin = math.sin(now * 0.9) * 12 targetRightArm = centerCF * CFrame.new(0, 2.5, 0) * CFrame.Angles(0, spin, math.rad(90)) * CFrame.new(0, 1.5, 0) targetLeftArm = centerCF * CFrame.new(0, 2.5, 0) * CFrame.Angles(0, spin + math.pi/2, math.rad(90)) * CFrame.new(0, 1.5, 0) targetRightLeg = centerCF * CFrame.new(0, 2.5, 0) * CFrame.Angles(0, spin + math.pi, math.rad(90)) * CFrame.new(0, 1.5, 0) targetLeftLeg = centerCF * CFrame.new(0, 2.5, 0) * CFrame.Angles(0, spin + math.pi*1.5, math.rad(90)) * CFrame.new(0, 1.5, 0) elseif selectedAura == "Caos absoluto (Vai e Vem)" then local caosTime = math.sin(now * 0.8) * 12 local rx, ry, rz = math.sin(caosTime * 0.8) * 4, math.cos(caosTime * 0.6) * 3, math.sin(caosTime) * 4 targetRightLeg = centerCF * CFrame.new(rx, ry, rz) * CFrame.Angles(rx, ry, rz) targetLeftLeg = centerCF * CFrame.new(-rx, -ry, -rz) * CFrame.Angles(rz, ry, rx) targetRightArm = centerCF * CFrame.new(rz, rx, ry) * CFrame.Angles(ry, rz, rx) targetLeftArm = centerCF * CFrame.new(-rz, -rx, -ry) * CFrame.Angles(rx, rz, ry) elseif selectedAura == "Helicóptero nas Costas (Vai e Vem)" then -- Rotação pendular suave (vai e vem) com as mãos separadas nas costas local spinBack = math.sin(now * 1.2) * math.pi * 3 targetRightArm = centerCF * CFrame.new(0.9, 0.2, -1.1) * CFrame.Angles(math.rad(15), spinBack, math.rad(90)) targetLeftArm = centerCF * CFrame.new(-0.9, 0.2, -1.1) * CFrame.Angles(math.rad(15), spinBack + math.pi, math.rad(90)) targetRightLeg = centerCF * CFrame.new(0.4, -0.8, -0.9) * CFrame.Angles(0, spinBack + math.pi/2, 0) targetLeftLeg = centerCF * CFrame.new(-0.4, -0.8, -0.9) * CFrame.Angles(0, spinBack + math.pi*1.5, 0) --====================================================-- elseif selectedAura == "Explosão expansiva" then local pulse = 2 + math.sin(now * 5) * 2.5 targetRightLeg = centerCF * CFrame.new(math.cos(t) * pulse, 0, math.sin(t) * pulse) * CFrame.Angles(t, 0, 0) targetLeftLeg = centerCF * CFrame.new(math.cos(t + 1.5) * pulse, 0, math.sin(t + 1.5) * pulse) * CFrame.Angles(0, t, 0) targetRightArm = centerCF * CFrame.new(math.cos(t + 3) * (pulse * 1.3), 1, math.sin(t + 3) * (pulse * 1.3)) * CFrame.Angles(0, 0, t) targetLeftArm = centerCF * CFrame.new(math.cos(t + 4.5) * (pulse * 1.3), 1, math.sin(t + 4.5) * (pulse * 1.3)) * CFrame.Angles(t, t, 0) elseif selectedAura == "Dança caótica" then local dt = now * 8 targetRightLeg = centerCF * CFrame.new(math.sin(dt) * 2.5, math.cos(dt * 2) * 1, math.cos(dt) * 2.5) * CFrame.Angles(dt, dt, dt) targetLeftLeg = centerCF * CFrame.new(math.cos(dt) * 2.5, math.sin(dt * 2) * 1, math.sin(dt) * 2.5) * CFrame.Angles(-dt, dt, 0) targetRightArm = centerCF * CFrame.new(math.sin(dt + 2) * 3, math.cos(dt) * 1.5, math.cos(dt + 2) * 3) * CFrame.Angles(0, -dt, dt) targetLeftArm = centerCF * CFrame.new(math.cos(dt + 2) * 3, math.sin(dt) * 1.5, math.sin(dt + 2) * 3) * CFrame.Angles(dt, 0, -dt) elseif selectedAura == "Cyber Neon" then local st = now * 7 targetRightLeg = centerCF * CFrame.new(math.cos(st)*2.2, 1, math.sin(st)*2.2) * CFrame.Angles(0, st, st) targetLeftLeg = centerCF * CFrame.new(math.cos(st + math.pi)*2.2, 1, math.sin(st + math.pi)*2.2) * CFrame.Angles(st, 0, st) targetRightArm = centerCF * CFrame.new(math.sin(st)*2.8, -1, math.cos(st)*2.8) * CFrame.Angles(st, st, 0) targetLeftArm = centerCF * CFrame.new(math.sin(st + math.pi)*2.8, -1, math.cos(st + math.pi)*2.8) * CFrame.Angles(0, st, st) elseif selectedAura == "Glitch Destruidor" then local cycleTime = (now * 0.7) % 14 local glitchAngle = 0 if cycleTime < 2.5 then glitchAngle = cycleTime * 1.5 elseif cycleTime < 6 then glitchAngle = 3.75 + (cycleTime - 2.5) * 6.5 elseif cycleTime < 7.5 then glitchAngle = 26.5 + (cycleTime - 6) * 1.5 elseif cycleTime < 9.5 then glitchAngle = 28.75 - (cycleTime - 7.5) * 7 elseif cycleTime < 12 then glitchAngle = 14.75 - (cycleTime - 9.5) * 1.5 else glitchAngle = 11 + (cycleTime - 12) * 5 end local snap = math.floor(now * 15) local gx = (math.noise(snap, 1) * 0.8) local gy = (math.noise(1, snap) * 0.8) targetRightLeg = centerCF * CFrame.new(gx, gy, -0.6) * CFrame.Angles(0, 0, glitchAngle) targetLeftLeg = centerCF * CFrame.new(gx, gy, -0.2) * CFrame.Angles(0, 0, glitchAngle) targetRightArm = centerCF * CFrame.new(gx, gy, 0.2) * CFrame.Angles(0, 0, glitchAngle) targetLeftArm = centerCF * CFrame.new(gx, gy, 0.6) * CFrame.Angles(0, 0, glitchAngle) elseif selectedAura == "Colosso Mecânico" then local st = now * 1.5 targetRightLeg = centerCF * CFrame.new(3, math.sin(st)*0.5 - 1, 0) * CFrame.Angles(0, 0, math.rad(15)) targetLeftLeg = centerCF * CFrame.new(-3, math.cos(st)*0.5 - 1, 0) * CFrame.Angles(0, 0, math.rad(-15)) targetRightArm = centerCF * CFrame.new(4, math.sin(st)*0.5 + 1, 0) * CFrame.Angles(0, 0, math.rad(-15)) targetLeftArm = centerCF * CFrame.new(-4, math.cos(st)*0.5 + 1, 0) * CFrame.Angles(0, 0, math.rad(15)) elseif selectedAura == "Fuga Gravitacional" then local floatY = (math.sin(now * 3) + 1) * 2.5 targetRightLeg = centerCF * CFrame.new(1.2, floatY, 0) * CFrame.Angles(now, 0, 0) targetLeftLeg = centerCF * CFrame.new(-1.2, floatY + 0.5, 0) * CFrame.Angles(0, now, 0) targetRightArm = centerCF * CFrame.new(0, floatY + 1.5, 1.2) * CFrame.Angles(0, 0, now) targetLeftArm = centerCF * CFrame.new(0, floatY + 1.5, -1.2) * CFrame.Angles(now, now, 0) elseif selectedAura == "Asas Angelicais" then local flap = math.sin(now * 6) * 0.4 targetRightArm = centerCF * CFrame.new(0.8, 1, 1) * CFrame.Angles(math.rad(30), math.rad(45), flap + math.rad(30)) targetRightLeg = centerCF * CFrame.new(1.2, -0.5, 1.2) * CFrame.Angles(math.rad(15), math.rad(60), flap + math.rad(45)) targetLeftArm = centerCF * CFrame.new(-0.8, 1, 1) * CFrame.Angles(math.rad(30), math.rad(-45), -flap - math.rad(30)) targetLeftLeg = centerCF * CFrame.new(-1.2, -0.5, 1.2) * CFrame.Angles(math.rad(15), math.rad(-60), -flap - math.rad(45)) elseif selectedAura == "Asas Demoníacas" then local flap = math.sin(now * 14) * 0.7 targetRightArm = centerCF * CFrame.new(1.2, 1.5, 0.5) * CFrame.Angles(math.rad(-30), math.rad(20), flap + math.rad(60)) targetRightLeg = centerCF * CFrame.new(1.8, 0, 0.8) * CFrame.Angles(math.rad(-50), math.rad(35), flap + math.rad(80)) targetLeftArm = centerCF * CFrame.new(-1.2, 1.5, 0.5) * CFrame.Angles(math.rad(-30), math.rad(-20), -flap - math.rad(60)) targetLeftLeg = centerCF * CFrame.new(-1.8, 0, 0.8) * CFrame.Angles(math.rad(-50), math.rad(-35), -flap - math.rad(80)) elseif selectedAura == "Horror Rastejante" then local twitch = math.floor(now * 20) local nx = math.noise(twitch, 1) * 0.6 targetRightArm = centerCF * CFrame.new(2 + nx, -2, -1) * CFrame.Angles(nx, 0, math.rad(90)) targetLeftArm = centerCF * CFrame.new(-2 - nx, -2, -1) * CFrame.Angles(nx, 0, math.rad(-90)) targetRightLeg = centerCF * CFrame.new(2.5 + nx, -2, 1.5) * CFrame.Angles(-nx, 0, math.rad(90)) targetLeftLeg = centerCF * CFrame.new(-2.5 - nx, -2, 1.5) * CFrame.Angles(-nx, 0, math.rad(-90)) elseif selectedAura == "Vulto Sombrio" then local sh = math.sin(now * 5) targetRightArm = centerCF * CFrame.new(0, 3 + sh, 2) * CFrame.Angles(math.rad(90), now * 10, 0) targetLeftArm = centerCF * CFrame.new(0, 2 - sh, 2.5) * CFrame.Angles(math.rad(90), -now * 8, 0) targetRightLeg = centerCF * CFrame.new(0.5, 4 + sh, 1.5) * CFrame.Angles(math.rad(90), now * 12, 0) targetLeftLeg = centerCF * CFrame.new(-0.5, 4 - sh, 1.5) * CFrame.Angles(math.rad(90), -now * 15, 0) elseif selectedAura == "Macaco Louco" then local swing = math.sin(now * 8) * 1.5 targetRightArm = centerCF * CFrame.new(1.5, -2, -1 + swing) * CFrame.Angles(swing*0.5, 0, math.rad(15)) targetLeftArm = centerCF * CFrame.new(-1.5, -2, -1 - swing) * CFrame.Angles(-swing*0.5, 0, math.rad(-15)) targetRightLeg = centerCF * CFrame.new(1.5, 1 + swing, 1) * CFrame.Angles(0, 0, math.rad(15)) targetLeftLeg = centerCF * CFrame.new(-1.5, 1 - swing, 1) * CFrame.Angles(0, 0, math.rad(-15)) elseif selectedAura == "Mira Precisa" then targetRightArm = centerCF * CFrame.new(0.6, 0.5, -2.5) * CFrame.Angles(math.rad(-90), 0, 0) targetLeftArm = centerCF * CFrame.new(-0.6, 0.5, -2.5) * CFrame.Angles(math.rad(-90), 0, 0) targetRightLeg = centerCF * CFrame.new(1.5, -2, 1) * CFrame.Angles(math.rad(30), 0, math.rad(20)) targetLeftLeg = centerCF * CFrame.new(-1.5, -2, 1) * CFrame.Angles(math.rad(30), 0, math.rad(-20)) elseif selectedAura == "Formação Tática" then local breath = math.sin(now * 3) * 0.5 targetRightArm = centerCF * CFrame.new(2 + breath, 0, -2 - breath) * CFrame.Angles(0, math.rad(45), 0) targetLeftArm = centerCF * CFrame.new(-2 - breath, 0, -2 - breath) * CFrame.Angles(0, math.rad(-45), 0) targetRightLeg = centerCF * CFrame.new(2 + breath, 0, 2 + breath) * CFrame.Angles(0, math.rad(135), 0) targetLeftLeg = centerCF * CFrame.new(-2 - breath, 0, 2 + breath) * CFrame.Angles(0, math.rad(-135), 0) elseif selectedAura == "Escudo de Espadas" then local rot = now * 5 local spin2 = now * 20 targetRightArm = centerCF * CFrame.Angles(0, rot, math.rad(45)) * CFrame.new(3, 0, 0) * CFrame.Angles(0, spin2, 0) targetLeftArm = centerCF * CFrame.Angles(0, rot + math.pi/2, math.rad(45)) * CFrame.new(3, 0, 0) * CFrame.Angles(0, spin2, 0) targetRightLeg = centerCF * CFrame.Angles(0, rot + math.pi, math.rad(45)) * CFrame.new(3, 0, 0) * CFrame.Angles(0, spin2, 0) targetLeftLeg = centerCF * CFrame.Angles(0, rot + math.pi*1.5, math.rad(45)) * CFrame.new(3, 0, 0) * CFrame.Angles(0, spin2, 0) elseif selectedAura == "Aura Divina" then local haloRot = now * 2 targetRightArm = centerCF * CFrame.new(0, 2.8, 0) * CFrame.Angles(0, haloRot, 0) * CFrame.new(1.5, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) targetLeftArm = centerCF * CFrame.new(0, 2.8, 0) * CFrame.Angles(0, haloRot + math.pi/2, 0) * CFrame.new(1.5, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) targetRightLeg = centerCF * CFrame.new(0, 2.8, 0) * CFrame.Angles(0, haloRot + math.pi, 0) * CFrame.new(1.5, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) targetLeftLeg = centerCF * CFrame.new(0, 2.8, 0) * CFrame.Angles(0, haloRot + math.pi*1.5, 0) * CFrame.new(1.5, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) -- ================= 5 AURAS SUS ================= -- elseif selectedAura == "Sarrada Suspeita" then local thrust = math.sin(now * 15) * 1.5 targetRightLeg = centerCF * CFrame.new(0.6, -1.5, thrust) * CFrame.Angles(math.rad(-45), 0, 0) targetLeftLeg = centerCF * CFrame.new(-0.6, -1.5, thrust) * CFrame.Angles(math.rad(-45), 0, 0) targetRightArm = centerCF * CFrame.new(1.2, 0, thrust) * CFrame.Angles(math.rad(30), 0, 0) targetLeftArm = centerCF * CFrame.new(-1.2, 0, thrust) * CFrame.Angles(math.rad(30), 0, 0) elseif selectedAura == "Mão Boba" then local wander = math.sin(now * 6) * 1.5 local bob = math.cos(now * 8) * 0.5 targetRightArm = centerCF * CFrame.new(wander, -1 + bob, 1.2) * CFrame.Angles(math.rad(-60), math.rad(-90), 0) targetLeftArm = centerCF * CFrame.new(-wander, -1 - bob, -1.2) * CFrame.Angles(math.rad(60), math.rad(90), 0) targetRightLeg = centerCF * CFrame.new(1.5, -2, 0) * CFrame.Angles(0, 0, math.rad(10)) targetLeftLeg = centerCF * CFrame.new(-1.5, -2, 0) * CFrame.Angles(0, 0, math.rad(-10)) elseif selectedAura == "Pernas na Cabeça" then local earFlap = math.sin(now * 8) * 0.5 targetRightLeg = centerCF * CFrame.new(0.6, 2.5, 0) * CFrame.Angles(0, 0, earFlap) targetLeftLeg = centerCF * CFrame.new(-0.6, 2.5, 0) * CFrame.Angles(0, 0, -earFlap) targetRightArm = centerCF * CFrame.new(0.6, -2, 0) * CFrame.Angles(0, 0, 0) targetLeftArm = centerCF * CFrame.new(-0.6, -2, 0) * CFrame.Angles(0, 0, 0) elseif selectedAura == "Espasmo Desconfortável" then local rx, ry, rz = (math.random()-0.5)*0.5, (math.random()-0.5)*0.5, (math.random()-0.5)*0.5 targetRightArm = centerCF * CFrame.new(0.6+rx, ry, -0.6+rz) * CFrame.Angles(math.rad(-30), math.rad(-45), 0) targetLeftArm = centerCF * CFrame.new(-0.6+rx, ry, -0.6+rz) * CFrame.Angles(math.rad(-30), math.rad(45), 0) targetRightLeg = centerCF * CFrame.new(0.6+rx, -1+ry, 0.6+rz) * CFrame.Angles(math.rad(30), math.rad(-45), 0) targetLeftLeg = centerCF * CFrame.new(-0.6+rx, -1+ry, 0.6+rz) * CFrame.Angles(math.rad(30), math.rad(45), 0) elseif selectedAura == "Centopeia Bizarra" then local snake = math.sin(now * 10) * 1.5 local snake2 = math.sin(now * 10 - 1) * 1.5 local snake3 = math.sin(now * 10 - 2) * 1.5 local snake4 = math.sin(now * 10 - 3) * 1.5 targetRightArm = centerCF * CFrame.new(snake, -2, 1.5) * CFrame.Angles(math.rad(-90), 0, 0) targetLeftArm = centerCF * CFrame.new(snake2, -2, 3) * CFrame.Angles(math.rad(-90), 0, 0) targetRightLeg = centerCF * CFrame.new(snake3, -2, 4.5) * CFrame.Angles(math.rad(-90), 0, 0) targetLeftLeg = centerCF * CFrame.new(snake4, -2, 6) * CFrame.Angles(math.rad(-90), 0, 0) end else local walkCycle = now * 8 local legStep = math.sin(walkCycle) local leftLegStep = math.sin(walkCycle + math.pi) local armStep = math.sin(walkCycle + math.pi) local leftArmStep = math.sin(walkCycle) if movement > 0.05 then local bounce = math.abs(math.sin(walkCycle * 2)) * 0.4 * movement local sway = math.sin(walkCycle) * 0.1 * movement targetRightLeg = rootPart.CFrame * CFrame.new(0.5, -2 + math.max(0, legStep)*0.6 + bounce, legStep * 1.2 * movement) * CFrame.Angles(math.rad(legStep * 50 * movement), 0, sway) targetLeftLeg = rootPart.CFrame * CFrame.new(-0.5, -2 + math.max(0, leftLegStep)*0.6 + bounce, leftLegStep * 1.2 * movement) * CFrame.Angles(math.rad(leftLegStep * 50 * movement), 0, -sway) targetRightArm = rootPart.CFrame * CFrame.new(1.5, -0.5 + bounce, armStep * 1.2 * movement) * CFrame.Angles(math.rad(armStep * 45 * movement), 0, math.rad(5)) targetLeftArm = rootPart.CFrame * CFrame.new(-1.5, -0.5 + bounce, leftArmStep * 1.2 * movement) * CFrame.Angles(math.rad(leftArmStep * 45 * movement), 0, math.rad(-5)) else local breathe = math.sin(now * 3) * 0.08 local idleSway = math.sin(now * 1.5) * 0.04 targetRightLeg = rootPart.CFrame * CFrame.new(0.5, -2, 0) targetLeftLeg = rootPart.CFrame * CFrame.new(-0.5, -2, 0) targetRightArm = rootPart.CFrame * CFrame.new(1.5, -0.5 + breathe, 0) * CFrame.Angles(0, 0, math.rad(5) + idleSway) targetLeftArm = rootPart.CFrame * CFrame.new(-1.5, -0.5 + breathe, 0) * CFrame.Angles(0, 0, math.rad(-5) - idleSway) end end if isSecondaryActive then local secTime = now * 8 if selectedSecondary == "Braços no Lugar" then if torso then targetRightArm = torso.CFrame * CFrame.new(1.3, 0.2, 0) * CFrame.Angles(0, 0, 0) targetLeftArm = torso.CFrame * CFrame.new(-1.3, 0.2, 0) * CFrame.Angles(0, 0, 0) end elseif selectedSecondary == "Pulso Vertical" then local pulse = math.sin(secTime) * 1.2 targetRightLeg = targetRightLeg * CFrame.new(0, pulse, 0) targetLeftLeg = targetLeftLeg * CFrame.new(0, pulse, 0) targetRightArm = targetRightArm * CFrame.new(0, pulse, 0) targetLeftArm = targetLeftArm * CFrame.new(0, pulse, 0) elseif selectedSecondary == "Tremor Sísmico" then local jx = (math.random() - 0.5) * 0.8 local jy = (math.random() - 0.5) * 0.8 targetRightLeg = targetRightLeg * CFrame.new(jx, jy, 0) targetLeftLeg = targetLeftLeg * CFrame.new(-jx, jy, 0) targetRightArm = targetRightArm * CFrame.new(jx, -jy, 0) targetLeftArm = targetLeftArm * CFrame.new(-jx, -jy, 0) elseif selectedSecondary == "Órbita Secundária" then local rot = secTime * 3 targetRightLeg = targetRightLeg * CFrame.Angles(0, rot, 0) targetLeftLeg = targetLeftLeg * CFrame.Angles(0, rot, 0) targetRightArm = targetRightArm * CFrame.Angles(0, rot, 0) targetLeftArm = targetLeftArm * CFrame.Angles(0, rot, 0) elseif selectedSecondary == "Balanço Lateral" then local tilt = math.cos(secTime) * 0.6 targetRightLeg = targetRightLeg * CFrame.Angles(0, 0, tilt) targetLeftLeg = targetLeftLeg * CFrame.Angles(0, 0, -tilt) targetRightArm = targetRightArm * CFrame.Angles(0, 0, tilt) targetLeftArm = targetLeftArm * CFrame.Angles(0, 0, -tilt) end end currentRightArmCFrame = currentRightArmCFrame:Lerp(targetRightArm, 0.25) currentLeftArmCFrame = currentLeftArmCFrame:Lerp(targetLeftArm, 0.25) currentRightLegCFrame = currentRightLegCFrame:Lerp(targetRightLeg, 0.25) currentLeftLegCFrame = currentLeftLegCFrame:Lerp(targetLeftLeg, 0.25) rightArm.CFrame = currentRightArmCFrame; leftArm.CFrame = currentLeftArmCFrame rightLeg.CFrame = currentRightLegCFrame; leftLeg.CFrame = currentLeftLegCFrame rightArm.AssemblyLinearVelocity = Vector3.zero; leftArm.AssemblyLinearVelocity = Vector3.zero rightLeg.AssemblyLinearVelocity = Vector3.zero; leftLeg.AssemblyLinearVelocity = Vector3.zero end) end local function stopAnimation() running = false; isAuraActive = false; isSecondaryActive = false; isPetsActive = false; isMinionActive = false if isSnakeActive then isSnakeActive = false showBodyForSnake() if character and character:FindFirstChild("Humanoid") then character.Humanoid.CameraOffset = Vector3.new(0, 0, 0) end if snakeBtn then snakeBtn.Text = "🐍 MODO COBRA: OFF"; snakeBtn.BackgroundColor3 = Color3.fromRGB(20, 120, 60) end end if steppedConnection then steppedConnection:Disconnect(); steppedConnection = nil end if fakeLimbs then for _, f in ipairs(fakeLimbs) do if f then f:Destroy() end end; fakeLimbs = {} end if limbTrails then for _, t in ipairs(limbTrails) do if t then t:Destroy() end end; limbTrails = {} end if statusLabel then statusLabel.Text = "Status: OFF (Dê Reset/Spawn)" end if auraButton then auraButton.Text = "AURA DE MEMBROS: OFF"; auraButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150) end if secondaryButton then secondaryButton.Text = "EFEITO SECUNDÁRIO: OFF"; secondaryButton.BackgroundColor3 = Color3.fromRGB(50, 120, 150) end if petsButton then petsButton.Text = "MODO PETS: OFF"; petsButton.BackgroundColor3 = Color3.fromRGB(150, 80, 20) end if minionButton then minionButton.Text = "MODO MINION: OFF"; minionButton.BackgroundColor3 = Color3.fromRGB(180, 120, 20) end end --========================================================-- -- FUNÇÃO PARA TORNAR ELEMENTOS ARRASTÁVEIS (MOUSE E TOQUE) --========================================================-- local function makeDraggable(guiObject) local dragging, dragInput, dragStart, startPos guiObject.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = guiObject.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) guiObject.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart guiObject.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) end --========================================================-- -- INTRO DO HUB --========================================================-- local function playIntro(onComplete) local introGui = Instance.new("ScreenGui"); introGui.Name = "StackHubIntro"; introGui.ResetOnSpawn = false; introGui.IgnoreGuiInset = true; introGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling; introGui.Parent = player:WaitForChild("PlayerGui") local bgFrame = Instance.new("Frame", introGui); bgFrame.Size = UDim2.fromScale(1, 1); bgFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12); bgFrame.BackgroundTransparency = 1 local container = Instance.new("Frame", introGui); container.Size = UDim2.new(0, 350, 0, 150); container.Position = UDim2.fromScale(0.5, 0.5); container.AnchorPoint = Vector2.new(0.5, 0.5); container.BackgroundColor3 = Color3.fromRGB(20, 20, 25); container.BorderSizePixel = 0; container.BackgroundTransparency = 1; Instance.new("UICorner", container).CornerRadius = UDim.new(0, 16) local containerStroke = Instance.new("UIStroke", container); containerStroke.Thickness = 2; containerStroke.Color = Color3.fromRGB(80, 80, 80); containerStroke.Transparency = 1 local titleLabel = Instance.new("TextLabel", container); titleLabel.Size = UDim2.new(1, 0, 0, 40); titleLabel.Position = UDim2.new(0, 0, 0.05, 0); titleLabel.BackgroundTransparency = 1; titleLabel.Text = "STACK HUB VIP"; titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255); titleLabel.TextScaled = true; titleLabel.Font = Enum.Font.GothamBlack; titleLabel.TextTransparency = 1 local playerName = player.DisplayName or player.Name local creditsLabel = Instance.new("TextLabel", container); creditsLabel.Size = UDim2.new(1, 0, 0, 20); creditsLabel.Position = UDim2.new(0, 0, 0.22, 0); creditsLabel.BackgroundTransparency = 1; creditsLabel.Text = "Criado por " .. playerName; creditsLabel.TextColor3 = Color3.fromRGB(0, 200, 255); creditsLabel.TextScaled = true; creditsLabel.Font = Enum.Font.GothamBold; creditsLabel.TextTransparency = 1 local howItWorksLabel = Instance.new("TextLabel", container); howItWorksLabel.Size = UDim2.new(1, -40, 0, 50); howItWorksLabel.Position = UDim2.new(0, 20, 0, 95); howItWorksLabel.BackgroundTransparency = 1; howItWorksLabel.Text = "✨ Hub VIP Moderno com Helicóptero nas Costas e UI Arrastável!"; howItWorksLabel.TextColor3 = Color3.fromRGB(180, 180, 180); howItWorksLabel.TextWrapped = true; howItWorksLabel.TextScaled = true; howItWorksLabel.TextXAlignment = Enum.TextXAlignment.Left; howItWorksLabel.Font = Enum.Font.GothamMedium; howItWorksLabel.TextTransparency = 1 local skipButton = Instance.new("TextButton", container); skipButton.Size = UDim2.new(0, 220, 0, 45); skipButton.Position = UDim2.new(0.5, -110, 0, 160); skipButton.BackgroundColor3 = Color3.fromRGB(0, 120, 200); skipButton.BorderSizePixel = 0; skipButton.Text = "ENTRAR NO HUB"; skipButton.TextColor3 = Color3.fromRGB(255, 255, 255); skipButton.TextScaled = true; skipButton.Font = Enum.Font.GothamBold; skipButton.TextTransparency = 1; skipButton.BackgroundTransparency = 1; Instance.new("UICorner", skipButton).CornerRadius = UDim.new(0, 8) TweenService:Create(bgFrame, TweenInfo.new(0.4), { BackgroundTransparency = 0.3 }):Play() TweenService:Create(container, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { BackgroundTransparency = 0, Size = UDim2.new(0, 420, 0, 230) }):Play() TweenService:Create(containerStroke, TweenInfo.new(0.4), { Transparency = 0.2 }):Play(); TweenService:Create(titleLabel, TweenInfo.new(0.5), { TextTransparency = 0 }):Play(); TweenService:Create(creditsLabel, TweenInfo.new(0.5), { TextTransparency = 0 }):Play(); TweenService:Create(howItWorksLabel, TweenInfo.new(0.5), { TextTransparency = 0 }):Play(); TweenService:Create(skipButton, TweenInfo.new(0.5), { TextTransparency = 0, BackgroundTransparency = 0 }):Play() local skipped = false skipButton.Activated:Connect(function() if skipped then return end; skipped = true TweenService:Create(bgFrame, TweenInfo.new(0.4), { BackgroundTransparency = 1 }):Play(); TweenService:Create(container, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.In), { BackgroundTransparency = 1, Size = UDim2.new(0, 350, 0, 150) }):Play(); TweenService:Create(containerStroke, TweenInfo.new(0.4), { Transparency = 1 }):Play(); TweenService:Create(titleLabel, TweenInfo.new(0.3), { TextTransparency = 1 }):Play(); TweenService:Create(creditsLabel, TweenInfo.new(0.3), { TextTransparency = 1 }):Play(); TweenService:Create(howItWorksLabel, TweenInfo.new(0.3), { TextTransparency = 1 }):Play(); TweenService:Create(skipButton, TweenInfo.new(0.3), { TextTransparency = 1, BackgroundTransparency = 1 }):Play() task.wait(0.4); introGui:Destroy(); if onComplete then onComplete() end end) end --========================================================-- -- HUB PRINCIPAL MAIOR, ARRASTÁVEL E COM ARCO-ÍRIS --========================================================-- local function createHub() hubGui = Instance.new("ScreenGui"); hubGui.Name = "StackHubVIP"; hubGui.ResetOnSpawn = false; hubGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling; hubGui.Parent = player:WaitForChild("PlayerGui") -- Botão Flutuante [ S ] Arrastável local openButton = Instance.new("TextButton", hubGui) openButton.Size = UDim2.new(0, 50, 0, 50) openButton.Position = UDim2.new(0, 20, 0, 20) openButton.BackgroundColor3 = Color3.fromRGB(20, 20, 25) openButton.BackgroundTransparency = 0.2 openButton.BorderSizePixel = 0 openButton.Text = "S" openButton.TextColor3 = Color3.fromRGB(0, 200, 255) openButton.TextScaled = true openButton.Font = Enum.Font.GothamBlack openButton.ZIndex = 100 Instance.new("UICorner", openButton).CornerRadius = UDim.new(0, 14) local openStroke = Instance.new("UIStroke", openButton) openStroke.Thickness = 2 openStroke.Color = Color3.fromRGB(0, 150, 255) makeDraggable(openButton) -- Painel Principal Maior (340x480) Arrastável mainPanel = Instance.new("Frame", hubGui) mainPanel.Size = UDim2.new(0, 340, 0, 480) mainPanel.Position = UDim2.new(0.5, -170, 0.5, -240) mainPanel.BackgroundColor3 = Color3.fromRGB(18, 18, 24) mainPanel.BackgroundTransparency = 0.08 mainPanel.BorderSizePixel = 0 mainPanel.ZIndex = 50 Instance.new("UICorner", mainPanel).CornerRadius = UDim.new(0, 18) -- Borda com Arco-Íris Animado no Painel Principal local panelStroke = Instance.new("UIStroke", mainPanel) panelStroke.Thickness = 2.5 task.spawn(function() while mainPanel and mainPanel.Parent do local hue = (os.clock() * 0.2) % 1 panelStroke.Color = Color3.fromHSV(hue, 0.8, 1) task.wait(0.05) end end) makeDraggable(mainPanel) local title = Instance.new("TextLabel", mainPanel); title.Size = UDim2.new(1, -55, 0, 36); title.Position = UDim2.new(0, 12, 0, 6); title.BackgroundTransparency = 1; title.Text = "STACK HUB VIP"; title.TextColor3 = Color3.fromRGB(255, 255, 255); title.TextScaled = true; title.Font = Enum.Font.GothamBlack; title.ZIndex = 51 local closeButton = Instance.new("TextButton", mainPanel); closeButton.Size = UDim2.new(0, 30, 0, 30); closeButton.Position = UDim2.new(1, -38, 0, 8); closeButton.BackgroundTransparency = 1; closeButton.Text = "×"; closeButton.TextColor3 = Color3.fromRGB(255, 100, 100); closeButton.TextScaled = true; closeButton.Font = Enum.Font.GothamBold; closeButton.ZIndex = 100 statusLabel = Instance.new("TextLabel", mainPanel); statusLabel.Size = UDim2.new(1, -24, 0, 20); statusLabel.Position = UDim2.new(0, 12, 0, 38); statusLabel.BackgroundTransparency = 1; statusLabel.Text = "Status: OFF"; statusLabel.TextColor3 = Color3.fromRGB(180, 180, 180); statusLabel.TextScaled = true; statusLabel.Font = Enum.Font.Gotham; statusLabel.ZIndex = 51 local tabsContainer = Instance.new("Frame", mainPanel); tabsContainer.Size = UDim2.new(1, -24, 0, 34); tabsContainer.Position = UDim2.new(0, 12, 0, 62); tabsContainer.BackgroundTransparency = 1 local contentContainer = Instance.new("Frame", mainPanel); contentContainer.Size = UDim2.new(1, -24, 1, -108); contentContainer.Position = UDim2.new(0, 12, 0, 102); contentContainer.BackgroundTransparency = 1 local tabs = {"Anim", "Player", "Mundo", "Scripts"} local tabPages = {} for i, tabName in ipairs(tabs) do local tabBtn = Instance.new("TextButton", tabsContainer) tabBtn.Size = UDim2.new(1 / #tabs, -3, 1, 0); tabBtn.Position = UDim2.new((i - 1) / #tabs, i > 1 and 3 or 0, 0, 0) tabBtn.BackgroundColor3 = (i == 1) and Color3.fromRGB(0, 120, 200) or Color3.fromRGB(35, 35, 45) tabBtn.BorderSizePixel = 0; tabBtn.Text = tabName; tabBtn.TextColor3 = Color3.new(1, 1, 1); tabBtn.TextScaled = true; tabBtn.Font = Enum.Font.GothamBold; Instance.new("UICorner", tabBtn).CornerRadius = UDim.new(0, 8) local page = Instance.new("ScrollingFrame", contentContainer) page.Size = UDim2.fromScale(1, 1); page.BackgroundTransparency = 1; page.Visible = (i == 1); page.CanvasSize = UDim2.new(0, 0, 0, 750); page.ScrollBarThickness = 4 tabPages[tabName] = {btn = tabBtn, page = page} tabBtn.Activated:Connect(function() for name, data in pairs(tabPages) do data.page.Visible = (name == tabName) data.btn.BackgroundColor3 = (name == tabName) and Color3.fromRGB(0, 120, 200) or Color3.fromRGB(35, 35, 45) end end) end -- ABA 1: ANIMAÇÃO local p1 = tabPages["Anim"].page local execute = Instance.new("TextButton", p1) execute.Size = UDim2.new(1, 0, 0, 36); execute.Position = UDim2.new(0, 0, 0, 5) execute.BackgroundColor3 = Color3.fromRGB(0, 140, 70); execute.BorderSizePixel = 0 execute.Text = "INICIAR ANIMAÇÃO"; execute.TextColor3 = Color3.new(1, 1, 1); execute.TextScaled = true; execute.Font = Enum.Font.GothamBold Instance.new("UICorner", execute).CornerRadius = UDim.new(0, 8) execute.Activated:Connect(function() startAnimation(); if running then statusLabel.Text = "Status: ON" end end) auraButton = Instance.new("TextButton", p1) auraButton.Size = UDim2.new(1, 0, 0, 36); auraButton.Position = UDim2.new(0, 0, 0, 48) auraButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150); auraButton.BorderSizePixel = 0 auraButton.Text = "AURA DE MEMBROS: OFF"; auraButton.TextColor3 = Color3.new(1, 1, 1); auraButton.TextScaled = true; auraButton.Font = Enum.Font.GothamBold Instance.new("UICorner", auraButton).CornerRadius = UDim.new(0, 8) auraButton.Activated:Connect(function() isAuraActive = not isAuraActive; isPetsActive = false; isMinionActive = false if isAuraActive then auraButton.Text = "AURA DE MEMBROS: ON"; auraButton.BackgroundColor3 = Color3.fromRGB(160, 70, 220) petsButton.Text = "MODO PETS: OFF"; petsButton.BackgroundColor3 = Color3.fromRGB(150, 80, 20) minionButton.Text = "MODO MINION: OFF"; minionButton.BackgroundColor3 = Color3.fromRGB(180, 120, 20) else auraButton.Text = "AURA DE MEMBROS: OFF"; auraButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150) end end) local dropdownBtn = Instance.new("TextButton", p1) dropdownBtn.Size = UDim2.new(1, 0, 0, 36); dropdownBtn.Position = UDim2.new(0, 0, 0, 91) dropdownBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 55); dropdownBtn.BorderSizePixel = 0 dropdownBtn.Text = "Aura: Basico ▾"; dropdownBtn.TextColor3 = Color3.new(1, 1, 1); dropdownBtn.TextScaled = true; dropdownBtn.Font = Enum.Font.GothamBold Instance.new("UICorner", dropdownBtn).CornerRadius = UDim.new(0, 8) local dropdownList = Instance.new("ScrollingFrame", p1) dropdownList.Size = UDim2.new(1, 0, 0, 160); dropdownList.Position = UDim2.new(0, 0, 0, 131) dropdownList.BackgroundColor3 = Color3.fromRGB(25, 25, 32); dropdownList.BorderSizePixel = 0 dropdownList.Visible = false; dropdownList.CanvasSize = UDim2.new(0, 0, 0, 32 * 29); dropdownList.ScrollBarThickness = 4 Instance.new("UICorner", dropdownList).CornerRadius = UDim.new(0, 8) Instance.new("UIStroke", dropdownList).Color = Color3.fromRGB(70, 70, 90) local auras = { "Basico", "Minions no chão", "Braços grandes", "Aura bugada de bracos e pernas rapido", "Orbitação (Vai e Vem)", "Explosão expansiva", "Espiral (Vai e Vem)", "Dança caótica", "Escudo (Vai e Vem)", "Caos absoluto (Vai e Vem)", "Helicóptero nas Costas (Vai e Vem)", "Cyber Neon", "Glitch Destruidor", "Colosso Mecânico", "Fuga Gravitacional", "Plasma (Vai e Vem)", "Asas Angelicais", "Asas Demoníacas", "Horror Rastejante", "Vulto Sombrio", "Helicóptero (Vai e Vem)", "Macaco Louco", "Mira Precisa", "Formação Tática", "Escudo de Espadas", "Aura Divina", "Sarrada Suspeita", "Mão Boba", "Pernas na Cabeça", "Espasmo Desconfortável", "Centopeia Bizarra" } local dropdownOpen = false dropdownBtn.Activated:Connect(function() dropdownOpen = not dropdownOpen; dropdownList.Visible = dropdownOpen end) for idx, auraName in ipairs(auras) do local optBtn = Instance.new("TextButton", dropdownList) optBtn.Size = UDim2.new(1, -6, 0, 28); optBtn.Position = UDim2.new(0, 3, 0, (idx - 1) * 29) optBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50); optBtn.BorderSizePixel = 0 optBtn.Text = auraName; optBtn.TextColor3 = Color3.new(1, 1, 1); optBtn.TextScaled = true; optBtn.Font = Enum.Font.Gotham Instance.new("UICorner", optBtn).CornerRadius = UDim.new(0, 6) optBtn.Activated:Connect(function() selectedAura = auraName; dropdownBtn.Text = "Aura: " .. auraName .. " ▾" dropdownOpen = false; dropdownList.Visible = false end) end -- SISTEMA SECUNDÁRIO secondaryButton = Instance.new("TextButton", p1) secondaryButton.Size = UDim2.new(1, 0, 0, 36); secondaryButton.Position = UDim2.new(0, 0, 0, 298) secondaryButton.BackgroundColor3 = Color3.fromRGB(50, 120, 150); secondaryButton.BorderSizePixel = 0 secondaryButton.Text = "EFEITO SECUNDÁRIO: OFF"; secondaryButton.TextColor3 = Color3.new(1, 1, 1); secondaryButton.TextScaled = true; secondaryButton.Font = Enum.Font.GothamBold Instance.new("UICorner", secondaryButton).CornerRadius = UDim.new(0, 8) secondaryButton.Activated:Connect(function() isSecondaryActive = not isSecondaryActive if isSecondaryActive then secondaryButton.Text = "EFEITO SECUNDÁRIO: ON"; secondaryButton.BackgroundColor3 = Color3.fromRGB(70, 170, 210) else secondaryButton.Text = "EFEITO SECUNDÁRIO: OFF"; secondaryButton.BackgroundColor3 = Color3.fromRGB(50, 120, 150) end end) local secDropdownBtn = Instance.new("TextButton", p1) secDropdownBtn.Size = UDim2.new(1, 0, 0, 36); secDropdownBtn.Position = UDim2.new(0, 0, 0, 341) secDropdownBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 55); secDropdownBtn.BorderSizePixel = 0 secDropdownBtn.Text = "Modo: Braços no Lugar ▾"; secDropdownBtn.TextColor3 = Color3.new(1, 1, 1); secDropdownBtn.TextScaled = true; secDropdownBtn.Font = Enum.Font.GothamBold Instance.new("UICorner", secDropdownBtn).CornerRadius = UDim.new(0, 8) local secDropdownList = Instance.new("ScrollingFrame", p1) secDropdownList.Size = UDim2.new(1, 0, 0, 120); secDropdownList.Position = UDim2.new(0, 0, 0, 381) secDropdownList.BackgroundColor3 = Color3.fromRGB(25, 25, 32); secDropdownList.BorderSizePixel = 0 secDropdownList.Visible = false; secDropdownList.CanvasSize = UDim2.new(0, 0, 0, 5 * 29); secDropdownList.ScrollBarThickness = 4 Instance.new("UICorner", secDropdownList).CornerRadius = UDim.new(0, 8) Instance.new("UIStroke", secDropdownList).Color = Color3.fromRGB(70, 70, 90) local secondaryModes = {"Braços no Lugar", "Pulso Vertical", "Tremor Sísmico", "Órbita Secundária", "Balanço Lateral"} local secDropdownOpen = false secDropdownBtn.Activated:Connect(function() secDropdownOpen = not secDropdownOpen; secDropdownList.Visible = secDropdownOpen end) for idx, modeName in ipairs(secondaryModes) do local optBtn = Instance.new("TextButton", secDropdownList) optBtn.Size = UDim2.new(1, -6, 0, 28); optBtn.Position = UDim2.new(0, 3, 0, (idx - 1) * 29) optBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50); optBtn.BorderSizePixel = 0 optBtn.Text = modeName; optBtn.TextColor3 = Color3.new(1, 1, 1); optBtn.TextScaled = true; optBtn.Font = Enum.Font.Gotham Instance.new("UICorner", optBtn).CornerRadius = UDim.new(0, 6) optBtn.Activated:Connect(function() selectedSecondary = modeName; secDropdownBtn.Text = "Modo: " .. modeName .. " ▾" secDropdownOpen = false; secDropdownList.Visible = false end) end -- MODO PETS petsButton = Instance.new("TextButton", p1) petsButton.Size = UDim2.new(1, 0, 0, 36); petsButton.Position = UDim2.new(0, 0, 0, 510) petsButton.BackgroundColor3 = Color3.fromRGB(150, 80, 20); petsButton.BorderSizePixel = 0 petsButton.Text = "MODO PETS: OFF"; petsButton.TextColor3 = Color3.new(1, 1, 1); petsButton.TextScaled = true; petsButton.Font = Enum.Font.GothamBold Instance.new("UICorner", petsButton).CornerRadius = UDim.new(0, 8) petsButton.Activated:Connect(function() isPetsActive = not isPetsActive; isAuraActive = false; isMinionActive = false if isPetsActive then petsButton.Text = "MODO PETS: ON"; petsButton.BackgroundColor3 = Color3.fromRGB(220, 120, 30) auraButton.Text = "AURA DE MEMBROS: OFF"; auraButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150) minionButton.Text = "MODO MINION: OFF"; minionButton.BackgroundColor3 = Color3.fromRGB(180, 120, 20) else petsButton.Text = "MODO PETS: OFF"; petsButton.BackgroundColor3 = Color3.fromRGB(150, 80, 20) end end) -- MODO MINION minionButton = Instance.new("TextButton", p1) minionButton.Size = UDim2.new(1, 0, 0, 36); minionButton.Position = UDim2.new(0, 0, 0, 552) minionButton.BackgroundColor3 = Color3.fromRGB(180, 120, 20); minionButton.BorderSizePixel = 0 minionButton.Text = "MODO MINION: OFF"; minionButton.TextColor3 = Color3.new(1, 1, 1); minionButton.TextScaled = true; minionButton.Font = Enum.Font.GothamBold Instance.new("UICorner", minionButton).CornerRadius = UDim.new(0, 8) minionButton.Activated:Connect(function() isMinionActive = not isMinionActive; isAuraActive = false; isPetsActive = false if isMinionActive then minionButton.Text = "MODO MINION: ON"; minionButton.BackgroundColor3 = Color3.fromRGB(240, 160, 30) auraButton.Text = "AURA DE MEMBROS: OFF"; auraButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150) petsButton.Text = "MODO PETS: OFF"; petsButton.BackgroundColor3 = Color3.fromRGB(150, 80, 20) else minionButton.Text = "MODO MINION: OFF"; minionButton.BackgroundColor3 = Color3.fromRGB(180, 120, 20) end end) -- BARRA DE ALVO (TEXTBOX) local playerBox = Instance.new("TextBox", p1) playerBox.Size = UDim2.new(1, 0, 0, 36); playerBox.Position = UDim2.new(0, 0, 0, 598) playerBox.BackgroundColor3 = Color3.fromRGB(35, 35, 45); playerBox.BorderSizePixel = 0 playerBox.PlaceholderText = "Nome do jogador alvo (vazio = você)" playerBox.Text = ""; playerBox.TextColor3 = Color3.new(1, 1, 1); playerBox.TextScaled = true; playerBox.Font = Enum.Font.GothamMedium Instance.new("UICorner", playerBox).CornerRadius = UDim.new(0, 8) playerBox:GetPropertyChangedSignal("Text"):Connect(function() targetPlayerName = playerBox.Text end) local stop = Instance.new("TextButton", p1) stop.Size = UDim2.new(1, 0, 0, 38); stop.Position = UDim2.new(0, 0, 0, 642) stop.BackgroundColor3 = Color3.fromRGB(150, 40, 40); stop.BorderSizePixel = 0 stop.Text = "PARAR ANIMAÇÃO"; stop.TextColor3 = Color3.new(1, 1, 1); stop.TextScaled = true; stop.Font = Enum.Font.GothamBold Instance.new("UICorner", stop).CornerRadius = UDim.new(0, 8) stop.Activated:Connect(function() stopAnimation() end) -- ABA 2: PLAYER local p2 = tabPages["Player"].page snakeBtn = Instance.new("TextButton", p2) snakeBtn.Size = UDim2.new(1, 0, 0, 40) snakeBtn.Position = UDim2.new(0, 0, 0, 5) snakeBtn.BackgroundColor3 = Color3.fromRGB(20, 120, 60) snakeBtn.BorderSizePixel = 0 snakeBtn.Text = "🐍 MODO COBRA: OFF" snakeBtn.TextColor3 = Color3.new(1, 1, 1) snakeBtn.TextScaled = true snakeBtn.Font = Enum.Font.GothamBold Instance.new("UICorner", snakeBtn).CornerRadius = UDim.new(0, 8) snakeBtn.Activated:Connect(function() if not running then startAnimation() end isSnakeActive = not isSnakeActive if isSnakeActive then isAuraActive = false; isPetsActive = false; isMinionActive = false auraButton.Text = "AURA DE MEMBROS: OFF"; auraButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150) petsButton.Text = "MODO PETS: OFF"; petsButton.BackgroundColor3 = Color3.fromRGB(150, 80, 20) minionButton.Text = "MODO MINION: OFF"; minionButton.BackgroundColor3 = Color3.fromRGB(180, 120, 20) snakeBtn.Text = "🐍 MODO COBRA: ON" snakeBtn.BackgroundColor3 = Color3.fromRGB(40, 180, 80) hideBodyForSnake() if character and character:FindFirstChild("Humanoid") then character.Humanoid.CameraOffset = Vector3.new(0, -2.5, 0) end else snakeBtn.Text = "🐍 MODO COBRA: OFF" snakeBtn.BackgroundColor3 = Color3.fromRGB(20, 120, 60) showBodyForSnake() if character and character:FindFirstChild("Humanoid") then character.Humanoid.CameraOffset = Vector3.new(0, 0, 0) end end end) local function createStatBtn(y, text, callback) local btn = Instance.new("TextButton", p2); btn.Size = UDim2.new(1, 0, 0, 40); btn.Position = UDim2.new(0, 0, 0, y); btn.BackgroundColor3 = Color3.fromRGB(40, 40, 50); btn.BorderSizePixel = 0; btn.Text = text; btn.TextColor3 = Color3.new(1, 1, 1); btn.TextScaled = true; btn.Font = Enum.Font.GothamBold; Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) btn.Activated:Connect(callback) end createStatBtn(52, "Speed: 16 (Normal)", function() if character and character:FindFirstChildOfClass("Humanoid") then character:FindFirstChildOfClass("Humanoid").WalkSpeed = 16 end end) createStatBtn(98, "Speed: 32 (Rápido)", function() if character and character:FindFirstChildOfClass("Humanoid") then character:FindFirstChildOfClass("Humanoid").WalkSpeed = 32 end end) createStatBtn(144, "Speed: 64 (Super)", function() if character and character:FindFirstChildOfClass("Humanoid") then character:FindFirstChildOfClass("Humanoid").WalkSpeed = 64 end end) createStatBtn(190, "JumpPower: 50 (Normal)", function() if character and character:FindFirstChildOfClass("Humanoid") then character:FindFirstChildOfClass("Humanoid").JumpPower = 50 end end) createStatBtn(236, "JumpPower: 120 (Alto)", function() if character and character:FindFirstChildOfClass("Humanoid") then character:FindFirstChildOfClass("Humanoid").JumpPower = 120 end end) -- ABA 3: MUNDO local p3 = tabPages["Mundo"].page createStatBtn(5, "Gravidade: Normal (196.2)", function() Workspace.Gravity = 196.2 end) createStatBtn(52, "Gravidade: Baixa (50)", function() Workspace.Gravity = 50 end) createStatBtn(98, "Gravidade: Zero (0)", function() Workspace.Gravity = 0 end) createStatBtn(144, "Iluminação: Noite", function() Lighting.ClockTime = 0 end) createStatBtn(190, "Iluminação: Dia (Meio-dia)", function() Lighting.ClockTime = 14 end) -- ABA 4: SCRIPTS (GIST) local p4 = tabPages["Scripts"].page local gistBtn = Instance.new("TextButton", p4); gistBtn.Size = UDim2.new(1, 0, 0, 50); gistBtn.Position = UDim2.new(0, 0, 0, 10); gistBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 200); gistBtn.BorderSizePixel = 0; gistBtn.Text = "🚀 EXECUTAR SCRIPT EXTERNO"; gistBtn.TextColor3 = Color3.new(1, 1, 1); gistBtn.TextScaled = true; gistBtn.Font = Enum.Font.GothamBold; Instance.new("UICorner", gistBtn).CornerRadius = UDim.new(0, 10) gistBtn.Activated:Connect(function() pcall(function() loadstring(game:HttpGet("https://gist.githubusercontent.com/nicolasanacletoluz121-collab/a1c59aab42c2101251140cf93719c31a/raw"))() end) end) closeButton.Activated:Connect(function() panelOpen = false; mainPanel.Visible = false end) openButton.Activated:Connect(function() panelOpen = not panelOpen; mainPanel.Visible = panelOpen end) end playIntro(function() createHub() end)