all problems will be listed below open the script and find NOTE!]
local Module = require(game.ReplicatedStorage.ToolsM)
Tools = Module.SimpleNames
local DataStoreService = game:GetService("DataStoreService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local DataStore = DataStoreService:GetDataStore("101CandySimulatorGameStoreDevAlpha")
local DataTable = {}
local AutosaveInterval = 60*5 --the 5 means 5 mins
local AutosaveTick = 0
local PlayerList = Instance.new("Folder")
PlayerList.Name = "PlayerList"
PlayerList.Parent = ReplicatedStorage
game.Players.PlayerAdded:Connect(function(Player)
-- Getting the key via userid.
local PlayerKey = Player.UserId
-- Creating a folder for all the data.
local PlayerFolder = Instance.new("Folder")
PlayerFolder.Name = Player.Name
PlayerFolder.Parent = PlayerList
-- Checking if they have data.
local PlayerData = DataStore:GetAsync(PlayerKey)
if not PlayerData then
-- If they don't, we create data.
DataTable[Player] = {
Level = 1,
currentEXP = 0,
Cash = 0,
AlphaPlayer = 1, --Disable on full version
CandyCorn = true --[NOTE!]sets candycorn to true
}
for i = 1, #Tools do
print (Tools[i])
table.insert(DataTable[Player],Tools[i])
DataTable[Player][Tools[i]] = false
end
print (DataTable[Player]["CandyCorn"])
DataStore:SetAsync(PlayerKey, DataTable[Player])
wait(2.5)
Player:Kick("New Data Has Been Made Please Rejoin")
else
-- If they do, we set the data.
DataTable[Player] = PlayerData
end
-- Creating variables so other scripts can acess the data.
local RealLevel = Instance.new("NumberValue")
RealLevel.Name = "RealLevel"
RealLevel.Value = DataTable[Player]["Level"]
RealLevel.Parent = PlayerFolder
local RealEXP = Instance.new("NumberValue")
RealEXP.Name = "RealEXP"
RealEXP.Value = DataTable[Player]["currentEXP"]
RealEXP.Parent = PlayerFolder
local MaxEXP = Instance.new("NumberValue")
MaxEXP.Name = "MaxEXP"
MaxEXP.Value = RealLevel.Value * 10 + 70
MaxEXP.Parent = PlayerFolder
local RealCoins = Instance.new("NumberValue")
RealCoins.Name = "RealCoins"
RealCoins.Value = DataTable[Player]["Coins"]
RealCoins.Parent = PlayerFolder
--TESTING!!!
wait(1)
local Config = Instance.new ("Configuration")
Config.Name = "ToolsOwned"
Config.Parent = Player
local a = Instance.new ("Configuration")
a.Name = "Hidden"
a.Parent = Player:WaitForChild("Backpack")
a = Instance.new ("StringValue")
a.Name = "CurrentTool"
a.Parent = Config.Parent
for i = 1, #Tools do
a = Instance.new ("BoolValue")--[NOTE!] all of this prints the name in the thing and then nil this is what i am trying to fix
a.Name = Tools[i]
a.Parent = Config
print (Tools[i])
print (DataTable[Player][Tools[i]])
a.Value = DataTable[Player][Tools[i]]
end
--TESTING!!!
while wait() do
MaxEXP.Value = RealLevel.Value * 10 + 70
-- Leveling part of the loop.
if RealEXP.Value >= MaxEXP.Value then
RealEXP.Value = 0
RealLevel.Value = RealLevel.Value + 1
MaxEXP.Value = RealLevel.Value * 10 + 70
end
-- Doing the autosave for data.
wait(1)
AutosaveTick = AutosaveTick + 1
if AutosaveTick >= AutosaveInterval then
AutosaveTick = 0
-- Updating the data of the player.
DataTable[Player]["Level"] = PlayerFolder:FindFirstChild("RealLevel").Value
DataTable[Player]["currentEXP"] = PlayerFolder:FindFirstChild("RealEXP").Value
DataTable[Player]["Coins"] = PlayerFolder:FindFirstChild("RealCoins").Value
-- Saving the data of the player.
DataStore:SetAsync(PlayerKey, DataTable[Player])
end
end
end)
game.Players.PlayerRemoving:Connect(function(Player)
-- Getting the key via userid.
local PlayerKey = Player.UserId
-- Finding the data of the player.
local PlayerFolder = PlayerList:FindFirstChild(Player.Name)
if PlayerFolder then
-- Updating the data of the player.
DataTable[Player]["Level"] = PlayerFolder:FindFirstChild("RealLevel").Value
DataTable[Player]["currentEXP"] = PlayerFolder:FindFirstChild("RealEXP").Value
DataTable[Player]["Coins"] = PlayerFolder:FindFirstChild("RealCoins").Value
-- Saving the data of the player.
DataStore:SetAsync(PlayerKey, DataTable[Player])
-- Removing the folder, as we have saved data.
PlayerFolder:Remove()
end
end)
