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

My NPC Death Sequence Script won't work?

After this NPC is killed, it is supposed to turn into rust and then explode. It won't work for some reason and it isn't giving me anything on output. Any help?

script.Parent:WaitForChild("Humanoid").Health.Changed:Connect(Check)

function Check()
if script.Parent.Humanoid.Health <= 0 then
	local Children = script.Parent:GetChildren()
	if Children:IsA("BasePart") or ("UnionOperation") then
		Children.Material = Enum.Material.CorrodedMetal
		Children.BrickColor = BrickColor.new("Cork")
	end
		elseif script.Parent:WaitForChild("Humanoid").Health >= 0 then
		print("boss is chilling")
	end
end

1 comment

0

Correction: It did give me something in the output: 23:16:13.450 - Workspace.Tutorial_Miniboss.DeathSequence:1: attempt to index field 'Health' (a number value)

1 answer

✓ Accepted answer

Hey!

Your problem here is that you're trying to connect the Changed event to a property rather than an instance. Changed is actually connected to the instance itself and the connected function will be called with the property's key as its parameter. A code example is shown below...

function Check(param)
	if param == "Health" then
		-- your code here
	end
end

humanoid.Changed:Connect(Check)

Alternatively, you can use the GetPropertyChangedSignal method where you can connect changed signals to certain properties. It works exactly like the Changed event, although it will only be fired when the specified property changes, eliminating the need for an if statement to make sure the changed property is the one you want. A code example for that is also shown below...

-- I'll break this down so it's easier to understand.
local event = humanoid:GetPropertyChangedSignal("Health") -- An event is returned, we just need to connect it.

event:Connect (function() -- Connecting the event defined above.
	-- your code here
end)

Apart from that, I also see that you're trying to invoke IsA on Children, which is a table value. :GetChildren() returns a table with all children of said instance. You'll have to iterate through Children with a for loop or find a singular instance by its index. (e.g. Children[1])

If you have any other questions, feel free to ask.

If this helped, please remember to accept the answer. :)

5 comments

0

Alright I'll try and see if it works

0

First example doesn't work for some reason. Nothing about it on the output. I'll try to do the second example

0

Both examples don't work for some reason.. Nothing on the output as well

0

How are you using it? If you would like to contact me on discord, it's Samuel#0440.

0

Alright, I contacted you on Discord

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