Since I didn't want players to be able to spectate while they are in a match I created if statements; however, that isn't the problem. The problem is that in order to create the if statement clearer or easier I created variables.
Here is a script inside of the spectate gui:
gui = script.Parent.Button local IsInMatch = game.player.IsInMatch.Value -- This is the variable which is recieveing the error message if IsInMatch == true then gui.Visible = false elseif IsInMatch == false then gui.Visible = true end
Each player has a BoolValue (IsInMatch) and changes from false to true when the player is in a match or dies.
Here is my output window of the problem:
player is not a valid member of DataModel
Inside of every spawn is a function when the player touches the part and then it sets the value of IsInMatch to true or false.
I am confused by what this means. Please help me out! What is the problem? What do I have to change?
BTW I am new to scripting so thanks!
If you think the problem is something else, and let me know.
If this is a local script...
local player = game.Players.LocalPlayer local IsInMatch = player.IsInMatch.Value
If this is a server script, you have to find another way to get the player. Assuming you wrote the rest of the code in your game, there are already events set up which contain that. You can obtain the local player by using events like PlayerAdded
of the Players service, MouseClick
of ClickDetectors, and many more. Here's an example with PlayerAdded
:
game.Players.PlayerAdded:Connect(function(player) print(player.Name) end)
Player objects are parented under the Players service. You may have forgotten to insert the Players service inside of the path, causing an error.
Instead of writing...
local IsInMatch = game.player.IsInMatch.Value
Try writing...
local IsInMatch = game:GetService("Players").player.IsInMatch.Value
and see if the problem persists.