Hello. I'm trying to make a hammer that has to be charged by .Activated before being able to be swung by .Deactivated. It also has to have a knockback effect after swinging.

Client:

local tool = script.Parent

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local rootPart = character:WaitForChild("HumanoidRootPart")

local remoteEvent = tool.RemoteEvent

local charge = script.Charge
local smash = script.Smash

local chargeTrack = animator:LoadAnimation(charge)
local smashTrack = animator:LoadAnimation(smash)

local cooldown = false
local charged = false
local hanging = false
local canKnockback = false

tool.Activated:Connect(function()
	if not cooldown and not hanging then
		cooldown = true
		
		if not charged then
			smashTrack:Stop()
			chargeTrack:Play()
			
			delay(chargeTrack.Length - 0.02999, function()
				chargeTrack:AdjustSpeed(0)
			end)
			
			charged = true
		end
		
		wait(1)
		cooldown = false
	end
end)

tool.Deactivated:Connect(function()
	chargeTrack:Stop()
	
	remoteEvent:FireServer(canKnockback)

	if charged then		
		smashTrack:Play()
		
		delay(smashTrack.Length - 0.02999, function()
			smashTrack:AdjustSpeed(0)
			
			rootPart.Anchored = true
			hanging = true
			canKnockback = true
			
			wait(1)
			smashTrack:Stop()
			
			rootPart.Anchored = false
			hanging = false
			canKnockback = false
		end)
		
		charged = false
	end
end)

Server:

local tool = script.Parent
local head = tool.Handle

local remoteEvent = tool.RemoteEvent

remoteEvent.OnServerEvent:Connect(function(player, command)
	print(player)
	if command then
		head.Touched:Connect(function(hit)
			local humanoid = hit.Parent:FindFirstChild("Humanoid")
			local character = humanoid.Parent
			local torso = character:WaitForChild("UpperTorso")

			if humanoid then
				torso.Transparency = 0.5
			end
		end)
	end
end)

1 comment

0

You just did it, if it returns nil from the server then it was the local scripts fault, rather than the server, cause it should pass through Bool values.