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

Backpack.Sword.SwordScript:20: attempt to index global 'hithumanoid' (a nil value) error, help?

I get this error: 20:10:13.193 - Players.Player1.Backpack.Sword.SwordScript:20: attempt to index global 'hithumanoid' (a nil value)

Script:

tool = script.Parent
local handle = tool:WaitForChild("Handle")
local event = tool:WaitForChild("RemoteEvent")
local speedboost = 1.25
local damage = 50
local swingtime = 1
local lastclick = tick()
local combowindow = .5
local combo = 0
local SlashSound = handle:WaitForChild("SlashSound")
local OverheadSound = handle:WaitForChild("OverheadSound")
local LungeSound = handle:WaitForChild("LungeSound")

handle.Touched:connect(function(hit)
	if equipped and character and humanoid and humanoid.Health > 0 and hit and not hit:IsDescendantOf(character) then
		local targethumanoid = hit.Parent:FindFirstChild("Humanoid")
		if targethumanoid and targethumanoid.Health > 0 and not hithumanoid[targethumanoid] then
			hithumanoids[targethumanoid] = true
			targethumanoid:TakeDamage(damage * combo)
		end
		end
end)

tool.Activated:connect(function()
	local clickdelta = tick() - lastclick
	if clickdelta > swingtime then
	lastclick = tick()
	local hithumanoids = {}
	if clickdelta < slashtime + combowindow then
		combo = combo + 1 % 3
		else combo = 0
	end
	if player then
		if combo == 0 then 
			event:FireClient(player, "RunAnimation", "SlashAnim2")
			SlashSound:Play()
		elseif combo == 1 then
			event:FireClient(player, "RunAnimation", "ThrustAnim2")
			OverheadSound:Play()
		elseif combo == 2 then
		event:FireClient(player, "RunAnimation", "OverheadAnim2")
		LungeSound:Play()
		end
	end
	end
	end)

tool.Equipped:connect(function()
	equipped = true
	lastclick = tick()
	combo = 0
	character = tool.Parent
	player = game.Players:GetPlayerFromCharacter(character)
	humanoid = character:FindFirstChild("Humanoid")
	if humanoid then humanoid.WalkSpeed = humanoid.WalkSpeed * speedboost
		else character = nil
	end
end)

tool.Unequipped:connect(function()
	equipped = false
	if humanoid then humanoid.WalkSpeed = humanoid.WalkSpeed / speedboost
	end
	character = nil
	humanoid = nil
end)

1 answer

✓ Accepted answer

It's the wrong variable: it should be hithumanoids, not hithumanoid (line 17 in the script you've provided).

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