So instead of editing my last thread, I just decided to put it into a new Question because I changed it so much. It still doesn't work, but it's a lot cleaner, and in two scripts now. So, if you didn't see the last thread, I'm trying to script an RPG game. I want it so that when a player connects, a function assigns a bunch of BoolValues and NumberValues to represent Experience, Levels, HP, etc. Whenever I test it, it gives me in the output "Gold is not a valid member of Player", "Gems is not a valid member of Player" etc, for each of the Values, and I'm not sure what I did wrong. Here's the code:
--THIS IS IN A REGULAR SCRIPT, NOT LOCALSCRIPT
--Player value Variables
Gold = Instance.new("NumberValue")
Gems = Instance.new("NumberValue")
PlayerLevel = Instance.new("NumberValue")
Exp = Instance.new("NumberValue")
HP = Instance.new("NumberValue")
Quest1 = Instance.new("BoolValue")
Quest2 = Instance.new("BoolValue")
Quest3 = Instance.new("BoolValue")
Quest4 = Instance.new("BoolValue")
Quest5 = Instance.new("BoolValue")
Player = game.Players.LocalPlayer
Gold = 10
Gems = 0
PlayerLevel = 1
--Gui frame variables
ScreenGui = game.StarterGui.ScreenGui
ShopBG = ScreenGui.ShopBG
QuestsBG = ScreenGui.QuestsBG
StatsBG = ScreenGui.StatsBG
OptionsBG = ScreenGui.OptionsBG
--Start of functions
wait(3)
a = game.Players.LocalPlayer:GetChildren()
function assignValues() --assigns LocalPlayer all necessary values
repeat wait() until Player --waits until Player is loaded before assigning values
for i,v in pairs(a) do
if v:IsA("BoolValue" or "NumberValue") then --makes sure that the Player doesn't have values assigned already
Player.MaxHealth = Player.HP.Value
else --if they don't have values, then it assigns them values
Gold.Parent = Player
Gold.Name = "Gold"
Gold.Value = 10
Gems.Parent = Player
Gems.Name = "Gems"
Gems.Value = 0
PlayerLevel.Parent = Player
PlayerLevel.Name = "PlayerLevel"
PlayerLevel.Value = 1
Exp.Parent = Player
Exp.Name = "Exp"
HP.Parent = Player
HP.Name = "HP"
Quest1.Parent = Player
Quest1.Name = "Quest1"
Quest1.Value = false
Quest2.Parent = Player
Quest2.Name = "Quest2"
Quest2.Value = false
Quest3.Parent = Player
Quest3.Name = "Quest3"
Quest3.Value = false
Quest4.Parent = Player
Quest4.Name = "Quest4"
Quest4.Value = false
Quest5.Parent = Player
Quest5.Name = "Quest5"
Quest5.Value = false
end
end
end
game.Players.PlayerAdded:connect(assignValues)
There is another script that assigns XP and Levels up the Player. I'm not sure if you need to see that too, but I'll include the code:
--THIS IS IN A LOCALSCRIPT
--Player value Variables
Gold = Instance.new("NumberValue")
Gems = Instance.new("NumberValue")
PlayerLevel = Instance.new("NumberValue")
Exp = Instance.new("NumberValue")
HP = Instance.new("NumberValue")
Quest1 = Instance.new("BoolValue")
Quest2 = Instance.new("BoolValue")
Quest3 = Instance.new("BoolValue")
Quest4 = Instance.new("BoolValue")
Quest5 = Instance.new("BoolValue")
Player = game.Players.LocalPlayer
Gold = 10
Gems = 0
PlayerLevel = 1
--Gui frame variables
ScreenGui = game.StarterGui.ScreenGui
ShopBG = ScreenGui.ShopBG
QuestsBG = ScreenGui.QuestsBG
StatsBG = ScreenGui.StatsBG
OptionsBG = ScreenGui.OptionsBG
--Start of functions
wait(3)
while true do
local xps = {0, 100, 300, 600, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6500, 8000, 9500, 11000, 12500, 14000, 15500, 18000, 21000, 25000, 30000, 35000, 40000, 45000, 50000, 57500, 65000, 72500, 82500, 100000};
local xp = Player.Exp.Value;
local level = 1;
while xps[level] and xps[level] <= xp do
level = level + 1;
end
Player.HP.Value = 200 + 100 * Player.PlayerLevel.Value;
end

2 comments
What script is triggering the error? What line? Because there remains to be nothing which could trigger it in any of these scripts
I'm not getting anything in the output but "Gold is not a valid member of Player" for all of my Variables I set.