Many issues are sprouting

So… … … I have a game called

Which is obviously a tycoon. I am making an update with Achievements, a custom Player List, and a Premium feature. I have 3 issues though:

  1. the leaderstats is not showing and when you type in a command that has to do with the leaderstats the output shows this:
    09:48:17 -- leaderstats is not a valid member of Player
    so basically the leaderstats script is not working.
  2. The tycoon datastore isn’t working anymore but it used to.
  3. Basically any script that has to do with datastores ^^ is not working. The achievements script has this error:
    09:48:17 -- Achievements is not a valid member of Player
    and the tycoon datastore just doesn’t work.

All of these issues (leaderstats, achievements, tycoon saving) used to work before. But now they just don’t.

Here are my scripts:

leaderstats (just a little snippet)
local stats = Instance.new("IntValue")
		stats.Name = "leaderstats"
		local kills = false
		if Settings.LeaderboardSettings.KOs then
			kills = Instance.new("IntValue")
			kills.Name = Settings.LeaderboardSettings.KillsName
			kills.Value = 0
		end
		local deaths = false
		if Settings.LeaderboardSettings.WOs then
			deaths = Instance.new("IntValue")
			deaths.Name = Settings.LeaderboardSettings.DeathsName
			deaths.Value = 0
		end
		
		local cash = false
		if Settings.LeaderboardSettings.ShowCurrency then
			cash = Instance.new("StringValue")
			cash.Name = Settings.CurrencyName
			cash.Value = 0
		end
		
		local cash2 = false
		if Settings.Currency2.CurrencyShowed then
			cash2 = Instance.new("NumberValue")
			cash2.Name = Settings.Currency2.Name
			cash2.Value = 0
		end
		
		local cash3 = false
		if Settings.Currency3.CurrencyShowed then
			cash3 = Instance.new("IntValue")
			cash3.Name = Settings.Currency3.Name
			cash3.Value = 0
		end
Achievements (long, whole script)
local players = game:GetService("Players")
local Datastoreservice = game:GetService("DataStoreService")
local dataStore = Datastoreservice:GetDataStore("AchievementProgressTestII")

local function SaveData(plr)
	local key = "plr-"..plr.UserId
	
	local save = {
		
 		["Achievement1"] = plr["Achievements"]["Cocoa Collecting 1"],
		["Achievement2"] = plr["Achievements"]["Grass Parkour"],
		["Achievement3"] = plr["Achievements"]["Sand Parkour"],
		["Achievement4"] = plr["Achievements"]["Snow Parkour"],
		["Achievement5"] = plr["Achievements"]["Lava Parkour"]
		
	}
	
	local success, err = pcall(function()
		dataStore:SetAsync(key, save)
	end)
	
	if not success then
		warn("Failed to overwrite data: "..tostring(err))
	end
end

function LoadData(plr)

	local AchievementSettings = require(script.Parent.Settings2)

	local achievementsFolder = Instance.new("Folder", plr)
	achievementsFolder.Name = AchievementSettings.AchievementSettings.Name
		
	local achievement1 = Instance.new("NumberValue", achievementsFolder)
	achievement1.Name = AchievementSettings.AchievementSettings.Achievements["1"]
	achievement1.Value = 0
	
	local achievement2 = Instance.new("NumberValue", achievementsFolder)
	achievement1.Name = AchievementSettings.AchievementSettings.Achievements["2"]
	achievement1.Value = 0
	
	local achievement3 = Instance.new("NumberValue", achievementsFolder)
	achievement1.Name = AchievementSettings.AchievementSettings.Achievements["3"]
	achievement1.Value = 0
	
	local achievement4 = Instance.new("NumberValue", achievementsFolder)
	achievement1.Name = AchievementSettings.AchievementSettings.Achievements["4"]
	achievement1.Value = 0
	
	local achievement5 = Instance.new("NumberValue", achievementsFolder)
	achievement1.Name = AchievementSettings.AchievementSettings.Achievements["5"]
	achievement1.Value = 0

	--[[local achievement2 = Instance.new("NumberValue", achievementsFolder)
	achievement2.Name = AchievementSettings.AchievementSettings.Achievements["2"]
	achievement2.Value = 0--]]
	
	local key = "plr-"..plr.UserId
	
	local savedData
	
	local success, err = pcall(function()
		savedData = dataStore:GetAsync(key)
	end)
	
	if not success then
		warn("Failed to save data: "..tostring(err))
		return
	end
	
	if savedData then
		achievement1.Value = savedData.Cash
	else
		SaveData(plr)
	end

end

game.Players.PlayerAdded:Connect(LoadData)
game.Players.PlayerRemoving:Connect(SaveData)

I’d rather not put the tycoon saving script in because it is very long.


Pictures:


Thank you!

1 Like

Could you post some code snippets relevant to the errors you’re getting?

Also, you won’t have the leaderstats option if you make a custom player list. Of course, you can call anything that, but it won’t automatically put it into the player list for you, as the default leaderboard has a listener for leaderstats.

I edited the post showing pictures and some code!