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

How do i know if it is the player who touched the brick or some part?

Asked by 10 years ago

Help me out, I used somthing like this

function onTouched()
script.Parent.Brickcolor = Brickcolor.new(Really green)
end

2 answers

Log in to vote
2
Answered by
Perci1 4988 Trusted Moderation Voter Community Moderator
10 years ago

If this is your entire code, there is nothing to make the function run. Functions only run when they are called, and since you never call it, it will never run.

If you want a function connected to an event, so it is in effect called each time the event is fired, then you use the connect() method of events.


On line two, you are changing the brick color incorrectly. BrickColor.new() takes a string as the argument.

BrickColor.new("Really red")

To check if the brick that touched it is an actual player, we must use the hit parameter. This parameter is built in to all Touched events and is equal to the specific Part that touched it. Although you can name this parameter whatever the heck you want, it will always equal the same thing.

If the Part that touched it belongs to a Player, it's Left Leg for example, the Parent of that Part will be the Player's character model.

From there, we can check if a Humanoid exists in hit.Parent. If hit is a Part that belongs to a character, it will have a Humanoid in its character model.

Unfortunately, checking for a Humanoid doesn't always work. If an NPC (non-player character) touches the brick with the Touched event, it will have a Humanoid, but it won't belong to any player. To get around this, we use the GetPlayerFromCharacter(character) method of the Players service. If hit.Parent equals a character model, this method will return the Player who is controlling that character. But if it doesn't equal a character model, it will return nil. We can therefore use this to make sure the person touching it is actually a Player.


Final product:

function onTouch(partThatTouchedIt)
    if game.Players:GetPlayerFromCharacter(partThatTouchedIt.Parent) then
        script.Parent.BrickColor = BrickColor.new("Really green")
    end
end

script.Parent.Touched:connect(onTouch)
0
Thanks for all the big help! buoyantair 123 — 10y
Ad
Log in to vote
1
Answered by 10 years ago
script.Parent.Touched:connect(function(hit) -- hit Is a Parameter you can use inside this script only
if hit.Parent:FindFirstChild("Humanoid") then -- Checks for a humanoid as only players have them
script.Parent.Brickcolor = Brickcolor.new(Really green) -- Changes Brick Color
end -- Ends the Function
0
But even a Zombie has one? buoyantair 123 — 9y

Answer this question