Hi, so I'm a bit new to Programming and just dived into Roblox. The goal I'm trying to accomplish here is making a script for a part in which will insta-kill any roblox player that steps on it.
Here is my code:
01 | local Part = script.Parent |
02 |
03 | function local onTouch(hit) |
04 | human = hit.Parent:FindFirstChild( "Humanoid" ) -- Finds the "Humanoid" part |
05 | if h ~ = nil then |
06 | human.Health = 0 |
07 | end |
08 | end |
09 |
10 | if Part.Touched then -- If something is touching the part |
11 | onTouch(Part.Touched) -- Invokes the "onTouch" function with the character's leg being it's parameter |
12 | end |
I've written down an explanation (or what I think it means at least). However it does not work, I also tried putting an infinite while loop on the if statement but that just crashes the game. If someone can spot the error to my code or suggest me a new form of code I would really appreciate it.
I would also like to note, that I'm currently a noob, so an explanation on each line would help and why you chose this etc etc. Thank you very much
Hey! Welcome to scripting! I put the changes in the code. If you've got questions, I'm right here!
01 | local Part = script.Parent -- Set the part |
02 |
03 | function onTouch(hit) |
04 | if hit ~ = nil then -- Check if hit is not nil |
05 | human = hit.Parent:FindFirstChild( "Humanoid" ) -- Finds the "Humanoid" part |
06 | if human ~ = nil then -- check if human is not nil |
07 | human.Health = 0 -- kill player |
08 | end |
09 | end |
10 | end |
11 |
12 | script.Parent.Touched:connect(onTouch) -- You can just use this line rather than the if Part.Touched statement |
Also, if you do a while loop, be sure to do this:
1 | while true do |
2 | --Code here |
3 | wait() -- you can leave the brackets blank. |
4 | end |
Here is my simplified version,
1 | script.Parent.Touched:connect( function (hit) |
2 | local human = hit.Parent:WaitForChild( "Humanoid" ) -- variable for the humanoid |
3 | human.Health = 0 -- kills the player |
4 | end ) |
this should work