Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Kill Script Error? - Easy Question!

Asked by 7 years ago
Edited by M39a9am3R 7 years ago

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:

local Part = script.Parent

function local onTouch(hit)
human = hit.Parent:FindFirstChild("Humanoid") -- Finds the "Humanoid" part
if h ~= nil then
human.Health = 0
end
end

if Part.Touched then -- If something is touching the part
    onTouch(Part.Touched) -- Invokes the "onTouch" function with the character's leg being it's parameter
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

2 answers

Log in to vote
2
Answered by
anerth 25
7 years ago
Edited 7 years ago

Hey! Welcome to scripting! I put the changes in the code. If you've got questions, I'm right here!

local Part = script.Parent -- Set the part

function onTouch(hit)
    if hit ~= nil then -- Check if hit is not nil
        human = hit.Parent:FindFirstChild("Humanoid") -- Finds the "Humanoid" part
        if human ~= nil then -- check if human is not nil
            human.Health = 0 -- kill player
        end
    end
end

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:

while true do
    --Code here
    wait() -- you can leave the brackets blank.
end
0
You could also do: `while wait() do end` Vingam_Securis 213 — 7y
0
Also, if you were checking for something, 'repeat wait() until' anerth 25 — 7y
0
I have a question, wouldn't the line "script.Parent.Touched:connect(onTouch)" require a loop to constantly check it? blueboy90780 74 — 7y
0
I also found that removing the if statement works as well, but creates more lag. blueboy90780 74 — 7y
0
Touched is one more of an event, not a property. This means anytime anything touches the brick, the event will fire. The event requires a function to process any code, with the Touched event it will provide a brick that touched it. If you're just waiting for an event to happen, you could do game.Workspace.Part.Touched:Wait() and it will wait until part in workspace is touched. M39a9am3R 3210 — 7y
Ad
Log in to vote
0
Answered by 7 years ago

Here is my simplified version,

script.Parent.Touched:connect(function(hit)
local human = hit.Parent:WaitForChild("Humanoid") -- variable for the humanoid
human.Health = 0 -- kills the player
end)

this should work

Answer this question