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

Ontouch brick position with BadgeService?

Asked by 7 years ago

Hello, I'm trying to do a script but it dont work, I want that when someone touches the brick check if you have the badge and run the movement. What is wrong with this script?

BadgeId = 484963036

script.Parent.Head.Touched:connect(function(hit)
    if game:GetService("BadgeService"):UserHasBadge(hit.userId, BadgeId) then
        script.Parent.Position = Vector3.new(20.063, 0.76, 24.606)
    else
        script.Parent.Position = Vector3.new(20.063, -10, 24.606)
    end
end)

1 answer

Log in to vote
0
Answered by 7 years ago

Since you made a duplicate question, I figured I would go ahead and answer the original.

The problem is that userId (and the preferred UserId) are members of Player objects.
In this code, hit is a Part object.

To fix this, use the GetPlayerFromCharacter function to find the player from the part, like this:

BadgeId = 484963036

script.Parent.Head.Touched:connect(function(hit)
    local Player = game.Players:GetPlayerFromCharacter(hit.Parent)
    if Player then
        if game:GetService("BadgeService"):UserHasBadge(Player.UserId, BadgeId) then
            script.Parent.Position = Vector3.new(20.063, 0.76, 24.606)
        else
            script.Parent.Position = Vector3.new(20.063, -10, 24.606)
        end
    end
end)

0
Thank you very much! it worked DJBrianL 0 — 7y
Ad

Answer this question