--[[ SISTEMA COMPLETO DE ANIMAÇÕES COM MENU Autor: Assistente Descrição: Menu interativo com animações, modos Normal/Raiva e habilidade de soco --]] -- CRIAR O MENU (INTERFACE) local screenGui = Instance.new("ScreenGui") screenGui.Name = "MenuPrincipal" screenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui") screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true -- Fundo do Menu local frame = Instance.new("Frame") frame.Name = "MenuFrame" frame.Size = UDim2.new(0, 300, 0, 500) frame.Position = UDim2.new(0.5, -150, 0.5, -250) frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) frame.BackgroundTransparency = 0.1 frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true frame.Parent = screenGui -- Borda arredondada local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = frame -- Título local titulo = Instance.new("TextLabel") titulo.Name = "Titulo" titulo.Size = UDim2.new(1, 0, 0, 40) titulo.Position = UDim2.new(0, 0, 0, 0) titulo.BackgroundColor3 = Color3.fromRGB(50, 50, 50) titulo.Text = "⚡ MENU DE ANIMAÇÕES ⚡" titulo.TextColor3 = Color3.fromRGB(255, 255, 255) titulo.TextScaled = true titulo.Font = Enum.Font.GothamBold titulo.Parent = frame -- SEÇÃO DE VELOCIDADE local speedLabel = Instance.new("TextLabel") speedLabel.Name = "SpeedLabel" speedLabel.Size = UDim2.new(1, -20, 0, 25) speedLabel.Position = UDim2.new(0, 10, 0, 50) speedLabel.BackgroundTransparency = 1 speedLabel.Text = "🎮 Aumentar WalkSpeed:" speedLabel.TextColor3 = Color3.fromRGB(200, 200, 200) speedLabel.TextXAlignment = Enum.TextXAlignment.Left speedLabel.Font = Enum.Font.GothamSemibold speedLabel.TextSize = 16 speedLabel.Parent = frame -- Caixa de texto local textBox = Instance.new("TextBox") textBox.Name = "SpeedInput" textBox.Size = UDim2.new(0.6, -15, 0, 35) textBox.Position = UDim2.new(0.05, 0, 0, 80) textBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60) textBox.TextColor3 = Color3.fromRGB(255, 255, 255) textBox.PlaceholderText = "Digite um número" textBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150) textBox.Text = "" textBox.Font = Enum.Font.Gotham textBox.TextSize = 16 textBox.ClearTextOnFocus = false textBox.Parent = frame -- Botão aplicar velocidade local speedButton = Instance.new("TextButton") speedButton.Name = "SpeedButton" speedButton.Size = UDim2.new(0.3, -5, 0, 35) speedButton.Position = UDim2.new(0.7, 5, 0, 80) speedButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255) speedButton.Text = "Aplicar" speedButton.TextColor3 = Color3.fromRGB(255, 255, 255) speedButton.Font = Enum.Font.GothamBold speedButton.TextSize = 16 speedButton.Parent = frame -- BOTÕES DE MODO -- Modo Normal local normalButton = Instance.new("TextButton") normalButton.Name = "NormalButton" normalButton.Size = UDim2.new(0.45, -5, 0, 40) normalButton.Position = UDim2.new(0.05, 0, 0, 130) normalButton.BackgroundColor3 = Color3.fromRGB(0, 200, 0) normalButton.Text = "⚪ MODO NORMAL" normalButton.TextColor3 = Color3.fromRGB(255, 255, 255) normalButton.Font = Enum.Font.GothamBold normalButton.TextSize = 14 normalButton.Parent = frame -- Modo Raiva local raivaButton = Instance.new("TextButton") raivaButton.Name = "RaivaButton" raivaButton.Size = UDim2.new(0.45, -5, 0, 40) raivaButton.Position = UDim2.new(0.5, 5, 0, 130) raivaButton.BackgroundColor3 = Color3.fromRGB(255, 50, 50) raivaButton.Text = "🔥 MODO RAIVA" raivaButton.TextColor3 = Color3.fromRGB(255, 255, 255) raivaButton.Font = Enum.Font.GothamBold raivaButton.TextSize = 14 raivaButton.Parent = frame -- Botão Soco local socoButton = Instance.new("TextButton") socoButton.Name = "SocoButton" socoButton.Size = UDim2.new(0.9, 0, 0, 50) socoButton.Position = UDim2.new(0.05, 0, 0, 185) socoButton.BackgroundColor3 = Color3.fromRGB(255, 170, 0) socoButton.Text = "👊 ATIVAR SOCO (F)" socoButton.TextColor3 = Color3.fromRGB(0, 0, 0) socoButton.Font = Enum.Font.GothamBold socoButton.TextSize = 18 socoButton.Parent = frame -- INDICADOR DE MODO ATUAL local modoIndicator = Instance.new("TextLabel") modoIndicator.Name = "ModoIndicator" modoIndicator.Size = UDim2.new(0.9, 0, 0, 35) modoIndicator.Position = UDim2.new(0.05, 0, 0, 250) modoIndicator.BackgroundColor3 = Color3.fromRGB(40, 40, 40) modoIndicator.Text = "⚪ Modo Atual: NORMAL" modoIndicator.TextColor3 = Color3.fromRGB(255, 255, 0) modoIndicator.Font = Enum.Font.GothamBold modoIndicator.TextSize = 16 modoIndicator.Parent = frame -- COOLDOWN VISUAL local cooldownBar = Instance.new("Frame") cooldownBar.Name = "CooldownBar" cooldownBar.Size = UDim2.new(0.9, 0, 0, 30) cooldownBar.Position = UDim2.new(0.05, 0, 0, 295) cooldownBar.BackgroundColor3 = Color3.fromRGB(60, 60, 60) cooldownBar.Parent = frame local cooldownFill = Instance.new("Frame") cooldownFill.Name = "CooldownFill" cooldownFill.Size = UDim2.new(1, 0, 1, 0) cooldownFill.BackgroundColor3 = Color3.fromRGB(0, 255, 0) cooldownFill.BorderSizePixel = 0 cooldownFill.Parent = cooldownBar local cooldownText = Instance.new("TextLabel") cooldownText.Name = "CooldownText" cooldownText.Size = UDim2.new(1, 0, 1, 0) cooldownText.BackgroundTransparency = 1 cooldownText.Text = "✅ PRONTO" cooldownText.TextColor3 = Color3.fromRGB(255, 255, 255) cooldownText.Font = Enum.Font.GothamBold cooldownText.TextScaled = true cooldownText.Parent = cooldownBar -- INFORMAÇÕES ADICIONAIS local infoLabel = Instance.new("TextLabel") infoLabel.Name = "InfoLabel" infoLabel.Size = UDim2.new(0.9, 0, 0, 70) infoLabel.Position = UDim2.new(0.05, 0, 0, 340) infoLabel.BackgroundTransparency = 1 infoLabel.Text = "Tecla F: Soco | Z: Modo Raiva | X: Modo Normal\nWalkfling só ativa no soco | Speed 3 na animação" infoLabel.TextColor3 = Color3.fromRGB(180, 180, 180) infoLabel.Font = Enum.Font.Gotham infoLabel.TextSize = 13 infoLabel.LineHeight = 1.5 infoLabel.Parent = frame -- BOTÃO FECHAR local closeButton = Instance.new("TextButton") closeButton.Name = "CloseButton" closeButton.Size = UDim2.new(0, 35, 0, 35) closeButton.Position = UDim2.new(1, -45, 0, 3) closeButton.BackgroundColor3 = Color3.fromRGB(255, 50, 50) closeButton.Text = "✕" closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) closeButton.Font = Enum.Font.GothamBold closeButton.TextSize = 20 closeButton.Parent = frame -- Arredondar botões for _, btn in ipairs({speedButton, normalButton, raivaButton, socoButton, closeButton}) do local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 8) btnCorner.Parent = btn end -- Arredondar inputs local inputCorner = Instance.new("UICorner") inputCorner.CornerRadius = UDim.new(0, 8) inputCorner.Parent = textBox local barCorner = Instance.new("UICorner") barCorner.CornerRadius = UDim.new(0, 5) barCorner.Parent = cooldownBar local fillCorner = Instance.new("UICorner") fillCorner.CornerRadius = UDim.new(0, 5) fillCorner.Parent = cooldownFill --[[ ========================================== PARTE 2: LÓGICA DO SISTEMA (VERSÃO FINAL) ========================================== --]] local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local rootPart = character:WaitForChild("HumanoidRootPart") -- IDs das Animações (CORRIGIDO - walk2 em ambos os modos) local animacoes = { Normal = { Idle = "rbxassetid://125722696765151", -- Parado normal Walk = "rbxassetid://99498309796580" -- walk2 (agora no modo normal também) }, Raiva = { Ativacao = "rbxassetid://105324675849142", -- Raiva 1 (5 segundos) Idle = "rbxassetid://81229486815853", -- Parado da raiva (parado 2) Walk = "rbxassetid://99498309796580" -- walk2 (igual ao normal) }, Soco = "rbxassetid://110979677723900" } -- Variáveis de Estado local modoAtual = "Normal" local emCooldown = false local emTransformacao = false local emSoco = false local cooldownSoco = 4 local forcaEmpurrao = 8 local forcaFling = 6 -- Velocidade original local velocidadeOriginal = humanoid.WalkSpeed local ultimoEstado = "Idle" -- Referências da UI local speedInput = textBox local speedButton = speedButton local normalButton = normalButton local raivaButton = raivaButton local socoButton = socoButton local modoIndicator = modoIndicator local cooldownFill = cooldownFill local cooldownText = cooldownText local closeButton = closeButton -- Fechar menu closeButton.MouseButton1Click:Connect(function() frame.Visible = not frame.Visible end) -- FUNÇÃO PARA DESATIVAR ANIMAÇÕES PADRÃO function desativarAnimacoesRoblox() local animacoesPadrao = { "rbxassetid://507767789", -- Idle "rbxassetid://507766666", -- Walk "rbxassetid://507765000", -- Run "rbxassetid://507768618", -- Jump "rbxassetid://507769098", -- Fall } for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do for _, id in ipairs(animacoesPadrao) do if track.Animation.AnimationId == id then track:Stop() break end end end end -- FUNÇÕES DE ANIMAÇÃO function tocarAnimacao(animId, velocidade, loop) velocidade = velocidade or 1.0 loop = loop or false for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do track:Stop() end local anim = Instance.new("Animation") anim.AnimationId = animId local track = humanoid:LoadAnimation(anim) track.Looped = loop track:Play() track:AdjustSpeed(velocidade) return track end -- FUNÇÃO PARA DETECTAR MOVIMENTO function estaAndando() return humanoid.WalkSpeed > 0 and humanoid.MoveDirection.Magnitude > 0.1 end function atualizarAnimacaoModo() desativarAnimacoesRoblox() if emTransformacao or emSoco then return end local novoEstado if estaAndando() then novoEstado = "Walk" else novoEstado = "Idle" end if novoEstado == ultimoEstado then return end ultimoEstado = novoEstado local animId if modoAtual == "Normal" then animId = animacoes.Normal[novoEstado] else animId = animacoes.Raiva[novoEstado] end if animId then tocarAnimacao(animId, 1.0, true) end end -- WALKFLING (só ativa no soco) function aplicarWalkfling() for _, outroPlayer in ipairs(game.Players:GetPlayers()) do if outroPlayer ~= player and outroPlayer.Character and outroPlayer.Character:FindFirstChild("HumanoidRootPart") then local outroRoot = outroPlayer.Character.HumanoidRootPart local outroHumanoid = outroPlayer.Character:FindFirstChild("Humanoid") local distancia = (rootPart.Position - outroRoot.Position).Magnitude if distancia < 10 then local direcao = (outroRoot.Position - rootPart.Position).Unit local forcaAtual = modoAtual == "Raiva" and forcaFling * 1.3 or forcaFling outroRoot.AssemblyLinearVelocity = Vector3.new( direcao.X * forcaAtual * 1.5, 8 + forcaAtual * 0.5, direcao.Z * forcaAtual * 1.5 ) if outroHumanoid then outroHumanoid.PlatformStand = true task.delay(0.2, function() if outroHumanoid then outroHumanoid.PlatformStand = false end end) end end end end end -- FUNÇÃO DO SOCO (Speed 3 para passar 2 segundos mais rápido) function ativarSoco() if emCooldown or emTransformacao or emSoco then return end emCooldown = true emSoco = true local cooldownTotal = modoAtual == "Raiva" and 10 or 4 cooldownText.Text = "⏳ CARREGANDO..." cooldownFill.Size = UDim2.new(0, 0, 1, 0) cooldownFill.BackgroundColor3 = Color3.fromRGB(255, 100, 0) local speedAtual = humanoid.WalkSpeed humanoid.WalkSpeed = 0 -- Toca animação do soco com VELOCIDADE 3 (mais rápido) tocarAnimacao(animacoes.Soco, 3.0, false) local startTime = tick() local cooldownLoop cooldownLoop = game:GetService("RunService").Heartbeat:Connect(function() local elapsed = tick() - startTime local progress = elapsed / cooldownTotal local restante = math.max(0, cooldownTotal - elapsed) cooldownFill.Size = UDim2.new(math.clamp(progress, 0, 1), 0, 1, 0) cooldownText.Text = string.format("⏱️ %.1fs", restante) if progress >= 1 then cooldownLoop:Disconnect() cooldownFill.Size = UDim2.new(1, 0, 1, 0) cooldownFill.BackgroundColor3 = Color3.fromRGB(0, 255, 0) cooldownText.Text = "✅ PRONTO!" emCooldown = false end end) -- AGUARDA 2 SEGUNDOS (com speed 3, a animação passa mais rápido) task.wait(2) -- APLICA EFEITOS (incluindo walkfling) local forcaAtualEmpurrao = modoAtual == "Raiva" and forcaEmpurrao * 1.3 or forcaEmpurrao rootPart.AssemblyLinearVelocity = rootPart.CFrame.LookVector * forcaAtualEmpurrao * 12 -- Walkfling só ativa aqui aplicarWalkfling() task.wait(3) humanoid.WalkSpeed = speedAtual emSoco = false ultimoEstado = nil atualizarAnimacaoModo() end -- MUDAR MODO function mudarModo(novoModo) if novoModo == modoAtual or emTransformacao or emSoco then return end if novoModo == "Raiva" then emTransformacao = true modoAtual = "Raiva" modoIndicator.Text = "🔥 Modo Atual: RAIVA (Transformando...)" modoIndicator.TextColor3 = Color3.fromRGB(255, 0, 0) velocidadeOriginal = humanoid.WalkSpeed humanoid.WalkSpeed = 0 tocarAnimacao(animacoes.Raiva.Ativacao, 1.0, false) task.wait(5) humanoid.WalkSpeed = velocidadeOriginal cooldownSoco = 10 forcaEmpurrao = 10 forcaFling = 8 modoIndicator.Text = "🔥 Modo Atual: RAIVA" emTransformacao = false ultimoEstado = nil atualizarAnimacaoModo() elseif novoModo == "Normal" then modoAtual = "Normal" modoIndicator.Text = "⚪ Modo Atual: NORMAL" modoIndicator.TextColor3 = Color3.fromRGB(255, 255, 0) cooldownSoco = 4 forcaEmpurrao = 8 forcaFling = 6 if humanoid.WalkSpeed == 0 then humanoid.WalkSpeed = velocidadeOriginal end ultimoEstado = nil atualizarAnimacaoModo() end end -- AUMENTAR WALKSPEED speedButton.MouseButton1Click:Connect(function() local valor = tonumber(speedInput.Text) if valor and valor > 0 then if valor > 50 then valor = 50 end humanoid.WalkSpeed = valor velocidadeOriginal = valor speedInput.Text = "" speedInput.PlaceholderText = "Speed: " .. valor else speedInput.Text = "Inválido!" task.wait(0.5) speedInput.Text = "" end end) -- BOTÕES normalButton.MouseButton1Click:Connect(function() mudarModo("Normal") end) raivaButton.MouseButton1Click:Connect(function() mudarModo("Raiva") end) socoButton.MouseButton1Click:Connect(function() ativarSoco() end) -- ATALHOS DE TECLADO game:GetService("UserInputService").InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.F then ativarSoco() elseif input.KeyCode == Enum.KeyCode.Z then mudarModo("Raiva") elseif input.KeyCode == Enum.KeyCode.X then mudarModo("Normal") end end) -- LOOP PRINCIPAL game:GetService("RunService").Heartbeat:Connect(function() desativarAnimacoesRoblox() if not emTransformacao and not emSoco then local andando = estaAndando() local estadoEsperado = andando and "Walk" or "Idle" if estadoEsperado ~= ultimoEstado then atualizarAnimacaoModo() end end end) -- Inicialização atualizarAnimacaoModo() velocidadeOriginal = humanoid.WalkSpeed -- Reconectar quando renascer player.CharacterAdded:Connect(function(newChar) character = newChar humanoid = newChar:WaitForChild("Humanoid") rootPart = newChar:WaitForChild("HumanoidRootPart") modoAtual = "Normal" cooldownSoco = 4 forcaEmpurrao = 8 forcaFling = 6 emCooldown = false emTransformacao = false emSoco = false velocidadeOriginal = humanoid.WalkSpeed ultimoEstado = nil atualizarAnimacaoModo() modoIndicator.Text = "⚪ Modo Atual: NORMAL" modoIndicator.TextColor3 = Color3.fromRGB(255, 255, 0) cooldownFill.Size = UDim2.new(1, 0, 1, 0) cooldownFill.BackgroundColor3 = Color3.fromRGB(0, 255, 0) cooldownText.Text = "✅ PRONTO!" end) print("🚀 Sistema de Animações carregado com sucesso!") print("🎮 Atalhos: F (Soco) | Z (Modo Raiva) | X (Modo Normal)") print("👊 Soco: Speed 3 | Walkfling ativo | Walk2 em ambos modos")