Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How do I make punching do random damage?

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

0

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

0

Thanks

1 answer

✓ Accepted answer

Well this is incredibly easy, as wookey said, you got use math.random. this is really helpful, it will generate a number between the 2 given arguments giveb which are obviously a number valule. If you put in 0, 10 it will generate a random number betwenn 0 and 10, it can be 6, 5, 8, 4, 10.. Now if you put in 1 argument it will generate a number between that given number and 0. math.random(5) will return either 1, 4, 3..

Now I think you got the idea! All you gotta do in your script is

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 - math.random(0, 10)
        script.Disabled = true
        wait(1.4)
        script.Disabled = false
    end
end)

and that's it! you may wanna also check math.randomseed() which is also related to this! Here!

2 comments

0

Thank you that was easy.

0

np!

This discussion is preserved as it was. New answers, comments, and votes are closed.