This is the punch script in ServerScriptService:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local punchEvent = Instance.new("RemoteEvent", ReplicatedStorage)
punchEvent.Name = "PunchEvent"
local animations = {2837975148, 2837983710}
local function onPunchFired(plr)
local char = game.Workspace:FindFirstChild(plr.Name)
local humanoid = char.Humanoid
local animation = Instance.new("Animation")
local picked = math.random(1, #animations)
animation.AnimationId = "http://roblox.com/asset/?id="..animations[picked]
local animTrack = humanoid:LoadAnimation(animation)
animTrack:Play()
local dmgScript = script.DmgScript:Clone()
if picked == 1 then
dmgScript.Parent = char.RightHand
elseif picked == 2 then
dmgScript.Parent = char.LeftHand
end
dmgScript.Disabled = false
wait(1.4)
dmgScript:Destroy()
end
punchEvent.OnServerEvent:Connect(onPunchFired)
Then this is the damage script inside of the punch script:
script.Parent.Touched:Connect(function(hit)
local char = hit.Parent
local hum = char:FindFirstChild("Humanoid")
if hum and char.Name ~= script.Parent.Parent.Name then
hum.Health = hum.Health - 10
script.Disabled = true
wait(1.4)
script.Disabled = false
end
end)
Here is the script to tell which key to hit to punch:
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local punchEvent = ReplicatedStorage:WaitForChild("PunchEvent")
local ready = true
local function punch(inputObject, gameProcessed)
if inputObject.KeyCode == Enum.KeyCode.Q and ready then
punchEvent:FireServer()
ready = false
wait(0.5)
ready = true
end
end
UserInputService.InputBegan:Connect(punch)

2 comments
math.random(0,10) -- picks a random number 0-10
Thanks