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

How do I use function(hit) as a different hit function?

Asked by
2_MMZ 1059 Moderation Voter
3 years ago
Edited 3 years ago

Hi, so, I'm making a game where if you touch a part, a GUI becomes visible. I get an error that says FireClient: player argument must be a Player object Could I possibly get some help? Any answer that works will do. It's a workspace script inside of the part. Also, if you were wondering, I have the GUI LocalScript in the target GUI, so that one isn't a problem. Here's the script that I have:

local remEvent = game.ReplicatedStorage:WaitForChild("RemoteEvent3")

local debounce = false

script.Parent.Touched:Connect(function(player)

    if not debounce then

    debounce = true

    remEvent:FireClient(player)

    wait(999.999)

    debounce = false

        end

end)
0
Hit refers to the Physical Instance that made contact with the respective BasePart. This would be the body part of a Player's Character Rig if it were to touch something. You need to reference the Model through Hit.Parent (as the body part is a Child of the Model), and then pass it through the 'GetPlayerFromCharacter' method of the 'Players' Service. Ziffixture 6913 — 3y

2 answers

Log in to vote
1
Answered by
0hsa 193
3 years ago

the hit isnt the player, its the object that touched it; use this

local remEvent = game.ReplicatedStorage:WaitForChild("RemoteEvent3")

local debounce = false

script.Parent.Touched:Connect(function(hit)
    local player = game.Players:getPlayerFromCharacter(hit.Parent)
    if player then
        if not debounce then
            debounce=true
            remEvent:fireClient(player)
        end
    end
end)
Ad
Log in to vote
0
Answered by
Desmondo1 121
3 years ago

So the problem is that you can't get the player through a touched event. Because when you write player, the game automatically thinks you're referring to the part that got touched. So what you woul need to do is this

    local remEvent = game.ReplicatedStorage:WaitForChild("RemoteEvent3")

    local debounce = false

    script.Parent.Touched:Connect(function(hit)
        local Humanoid = hit.Parent:FindFirstChild("Humanoid") 
                     if Humanoid then
                     local Player = game.Players:GetPlayerFromCharacter(hit.Parent)


        if not debounce then

        debounce = true

        remEvent:FireClient(Player)

        wait(999.999)

        debounce = false

                 end
           end
    end)

Answer this question