local player = game.Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local hum = char:WaitForChild("Humanoid") local rep = game:GetService("ReplicatedStorage") local input = game:GetService("UserInputService") local PunchEvent = rep:WaitForChild("PunchEvent") local DashRemote = rep:WaitForChild("DashRemote") local gui = Instance.new("ScreenGui") gui.Name = "ActionGui" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local punch = Instance.new("TextButton") punch.Size = UDim2.new(0, 130, 0, 55) punch.Position = UDim2.new(1, -150, 0.4, -27) punch.BackgroundColor3 = Color3.fromRGB(0, 110, 255) punch.Text = "Punch (FE)" punch.TextColor3 = Color3.fromRGB(10, 10, 10) punch.Font = Enum.Font.GothamBold punch.TextSize = 20 punch.BorderSizePixel = 0 punch.Parent = gui local dash = Instance.new("TextButton") dash.Size = UDim2.new(0, 130, 0, 55) dash.Position = UDim2.new(1, -150, 0.55, -27) dash.BackgroundColor3 = Color3.fromRGB(255, 50, 50) dash.Text = "Dash (FE)" dash.TextColor3 = Color3.fromRGB(10, 10, 10) dash.Font = Enum.Font.GothamBold dash.TextSize = 20 dash.BorderSizePixel = 0 dash.Parent = gui for _, b in pairs({punch, dash}) do local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = b local stroke = Instance.new("UIStroke") stroke.Thickness = 2 stroke.Color = Color3.fromRGB(255, 255, 255) stroke.Parent = b end local anims = { "rbxassetid://204062532", "rbxassetid://218504594", "rbxassetid://204062532", "rbxassetid://218504594" } local dmg = {35, 35, 35, 35} local sfx = { "rbxassetid://8595980577", "rbxassetid://8278630896", "rbxassetid://9117969687", "rbxassetid://9117969717" } local miss = "rbxassetid://5835032207" local combo = 0 local ready = true local function checkHit() local o = char.Head.Position local d = char.PrimaryPart.CFrame.LookVector * 5 local ray = Ray.new(o, d) local part = workspace:FindPartOnRay(ray, char) if part and part.Parent then local h = part.Parent:FindFirstChild("Humanoid") return h end return nil end local function punchAction() if not ready then return end ready = false local anim = Instance.new("Animation") anim.AnimationId = anims[combo + 1] local track = hum:LoadAnimation(anim) if combo == 1 then local extra = Instance.new("Animation") extra.AnimationId = "rbxassetid://128853357" local t2 = hum:LoadAnimation(extra) if track then track:Play() end if t2 then t2:Play() end else if track then track:Play() end end local h = checkHit() if h then local s = Instance.new("Sound", char) s.SoundId = sfx[combo + 1] s:Play() s.Ended:Connect(function() s:Destroy() end) else local s = Instance.new("Sound", char) s.SoundId = miss s:Play() s.Ended:Connect(function() s:Destroy() end) end PunchEvent:FireServer(dmg[combo + 1]) combo += 1 if combo >= #anims then combo = 0 end task.delay(1.5, function() ready = true end) end local function dashAction() DashRemote:FireServer() end punch.MouseButton1Click:Connect(punchAction) dash.MouseButton1Click:Connect(dashAction) if not input.TouchEnabled then input.InputBegan:Connect(function(k, t) if t then return end if k.KeyCode == Enum.KeyCode.F then punchAction() elseif k.KeyCode == Enum.KeyCode.G then dashAction() end end) end