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

Why wasn't this finding the Humanoid in Workspace before?

Hi, The code you are seeing below is the working piece of code the line which was not working before was the hit = game.Workspace line this code only started to work when I added in the .Player1 before I was just trying game.Workspace:FindFirstChild("Humanoid") which didn't work the error I received was the following -

Workspace.Part.Script:3: attempt to index local 'hit' (a nil value)

I tried making hit local but still no luck. I need to know why it wasn't working as I am experimenting to help me learn Lua better. Thanks in Advance!

function asfasga(hit)
	hit = game.Workspace.Player1:FindFirstChild("Humanoid")
	hit.JumpPower = 100
    hit.WalkSpeed = 60
	
end
	
script.Parent.Touched:connect(asfasga)

1 answer

Hi, you do realise that the Touched event will basically fire when it touches anything? You probably didn't anchor the part. So then it falls on the ground and BOOM the event fires.

If you want the Part to change a Player's JumpPower and WalkSpeed then do this.

-- ServerScript.

local WS = game:GetService("Workspace")
local PLAYERS =  game:GetService("Players")
local Part = WS:WaitForChild("Part")

Part.Touched:connect(function(Hit)
	local Plr = PLAYERS:GetPlayerFromCharacter(Hit.Parent)
	
	if Plr then
		-- We now know it's a Player not a NPC.
		
		local Char = Plr.Character
		
		if Char then
			local Hum = Char:FindFirstChild("Humanoid")

			if Hum then
				Hum.JumpPower = 100
				Hum.WalkSpeed = 60
			end
		end
	end
end)

1 comment

0

Hi, soved I tried anchoring the part but still no luck and the code you have put in your answer is a bit complicated can you please simplify it?

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