Hello,
I have a massive problem.
the players data won’t always save(skins, gears, traps only)
Script:
Players.PlayerAdded:Connect(function(Player)
print('new plr')
BadgeGiver:AwardBadge(Player,2124598270)
Player.CharacterAdded:Connect(function(Character)
print('new char')
Character.Humanoid.Died:Connect(function()
print('char')
if not Player:FindFirstChild('DogeTag') then
print('not doge')
if table.find(PlayingPlayers,Player) then
if Player.PlayerGui:FindFirstChild('CollectGems') then
Player.PlayerGui.CollectGems:Destroy()
end
if Player.PlayerGui:FindFirstChild('IndicatorGui') then
Player.PlayerGui.IndicatorGui:Destroy()
end
print('is playing')
if Player:FindFirstChild('ContestantTag') then
Player.ContestantTag:Destroy()
end
Player.CanSpectate.Value = true
Values.KillFeed.Value = Player.Name..' was killed by the Doge!'
local ReturnValue = table.find(PlayingPlayers,Player)
table.remove(PlayingPlayers,ReturnValue)
end
end
end)
end)
print('calculating')
if Player.UserId == 1761967232 then
for _, OtherPlayer in pairs(Players:GetPlayers()) do
BadgeGiver:AwardBadge(OtherPlayer,2124598282)
end
end
if Player.UserId == 191080541 then
for _, OtherPlayer in pairs(Players:GetPlayers()) do
BadgeGiver:AwardBadge(OtherPlayer,2124598283)
end
end
local Leaderstats = Instance.new('Folder',Player)
Leaderstats.Name = 'Leaderstats'
local Gems = Instance.new('IntValue',Leaderstats)
Gems.Name = 'Gems'
Gems.Value = DefaultGemsValue
local MapVoted = Instance.new('IntValue',Player)
MapVoted.Name = 'MapVoted'
local EquippedSkin = Instance.new('StringValue',Player)
EquippedSkin.Name = 'EquippedSkin'
EquippedSkin.Value = 'Default'
local TrapCount = Instance.new('IntValue',Player)
TrapCount.Name = 'TrapCount'
if not MarketplaceService:UserOwnsGamePassAsync(Player.UserId,11471437) then
TrapCount.Value = 7
else
TrapCount.Value = 14
end
local EquippedTrap = Instance.new('StringValue',Player)
EquippedTrap.Name = 'EquippedTrap'
EquippedTrap.Value = 'Default'
local TrapDebounce = Instance.new('BoolValue',Player)
TrapDebounce.Name = 'TrapDebounce'
TrapDebounce.Value = false
local SeenLuke = Instance.new('BoolValue',Player)
SeenLuke.Name = 'SeenLuke'
SeenLuke.Value = false
local OwnedSkins = Instance.new('Folder',Player)
OwnedSkins.Name = 'OwnedSkins'
local DefaultSkin = Instance.new('StringValue',OwnedSkins)
DefaultSkin.Name = 'Default'
local OwnedTraps = Instance.new('Folder',Player)
OwnedTraps.Name = 'OwnedTraps'
local DefaultTrap = Instance.new('StringValue',OwnedTraps)
DefaultTrap.Name = 'Default'
local OwnedGears = Instance.new('Folder',Player)
OwnedGears.Name = 'OwnedGears'
local EquippedGear = Instance.new('StringValue',Player)
EquippedGear.Name = 'EquippedGear'
EquippedGear.Value = 'Default'
local DefaultGear = Instance.new('StringValue',OwnedGears)
DefaultGear.Name = 'Default'
local CanCrouch = Instance.new('BoolValue',Player)
CanCrouch.Name = 'CanCrouch'
CanCrouch.Value = true
local GemCount = Instance.new('IntValue',Player)
GemCount.Name = 'GemCount'
GemCount.Value = 0
local MaxGems = Instance.new('IntValue',Player)
MaxGems.Name = 'MaxGems'
if MarketplaceService:UserOwnsGamePassAsync(Player.UserId,11502286) or MarketplaceService:UserOwnsGamePassAsync(Player.UserId,11291087) then
MaxGems.Value = 50
else
MaxGems.Value = 25
end
local Wins = Instance.new('IntValue',Player)
Wins.Name = 'Wins'
Wins.Value = 0
local Kills = Instance.new('IntValue',Player)
Kills.Name = 'Kills'
Kills.Value = 0
local Chance = Instance.new('IntValue',Player)
Chance.Name = 'DogeChance'
local CanSpectate = Instance.new('BoolValue',Player)
CanSpectate.Name = 'CanSpectate'
if GameRunning == true then
CanSpectate.Value = true
else
CanSpectate.Value = false
end
local FirstTrap = Instance.new('BoolValue',Player)
FirstTrap.Name = 'FirstTrap'
FirstTrap.Value = true
wait()
if MarketplaceService:UserOwnsGamePassAsync(Player.UserId,11291087) and not Player.OwnedSkins:FindFirstChild('VIP') then
Player.Leaderstats.Gems.Value += 5000
local VIP = Instance.new('StringValue',Player.OwnedSkins)
VIP.Name = 'VIP'
local ZombieAxe = Instance.new('StringValue',Player.OwnedGears)
ZombieAxe.Name = 'ZombieAxe'
wait(.3)
Player.MaxGems.Value = 50
Events.UpdateBackpack:FireClient(Player,'VIP')
wait(.3)
Events.UpdateBackpack:FireClient(Player,'ZombieAxe')
end
CalculateChances()
local GemsStore,EquippedSkinStore,EquippedTrapStore,SeenLukeStore,EquippedGearStore,WinsStore,KillsStore
local savedSkins = skinsDS:GetAsync(Player.UserId) or {}
local savedTraps = trapsDS:GetAsync(Player.UserId) or {}
local savedGears = gearsDS:GetAsync(Player.UserId) or {}
local Success, ErrorMessage = pcall(function()
GemsStore = dStore:GetAsync(Player.UserId.."Gems")
EquippedSkinStore = dStore:GetAsync(Player.UserId..'EquippedSkin')
EquippedTrapStore = dStore:GetAsync(Player.UserId..'EquippedTrap')
SeenLukeStore = dStore:GetAsync(Player.UserId..'SeenLuke')
EquippedGearStore = dStore:GetAsync(Player.UserId..'EquippedGear')
WinsStore = dStore:GetAsync(Player.UserId..'Wins')
KillsStore = dStore:GetAsync(Player.UserId..'Kills')
end)
if not Success then
warn('An error occured while getting '..Player.Name..'\'s data: '..ErrorMessage)
end
if GemsStore ~= nil then
Player.Leaderstats.Gems.Value = GemsStore
end
if EquippedSkinStore ~= nil then
Player:WaitForChild('EquippedSkin').Value = EquippedSkinStore
end
if EquippedTrapStore ~= nil then
Player.EquippedTrap.Value = EquippedTrapStore
end
if EquippedGearStore ~= nil then
Player.EquippedGear.Value = EquippedGearStore
end
if SeenLukeStore ~= nil then
Player.SeenLuke.Value = SeenLukeStore
end
if WinsStore ~= nil then
Player.Wins.Value = WinsStore
end
if KillsStore ~= nil then
Player.Kills.Value = KillsStore
end
for i, SavedSkin in pairs(savedSkins) do
local Skin = Instance.new('StringValue',Player.OwnedSkins)
Skin.Name = SavedSkin
wait()
game.ReplicatedStorage.Events.UpdateBackpack:FireClient(Player,SavedSkin)
end
for i, SavedTrap in pairs(savedTraps) do
local Trap = Instance.new('StringValue',Player.OwnedTraps)
Trap.Name = SavedTrap
wait()
game.ReplicatedStorage.Events.UpdateBackpack:FireClient(Player,SavedTrap)
end
for _, SavedGear in pairs(savedGears) do
local Gear = Instance.new('StringValue',Player.OwnedGears)
Gear.Name = SavedGear
wait()
game.ReplicatedStorage.Events.UpdateBackpack:FireClient(Player,SavedGear)
end
end)
Events.RemovePlayer.OnServerEvent:Connect(function(Player)
if table.find(PlayingPlayers,Player) then
if not Player:FindFirstChild('DogeTag') then
Values.KillFeed.Value = Player.Name..' was killed by the Doge!'
local ReturnValue = table.find(PlayingPlayers,Player)
table.remove(PlayingPlayers,ReturnValue)
wait(.5)
print(#PlayingPlayers)
end
end
end)
Players.PlayerRemoving:Connect(function(Player)
CalculateChances()
if table.find(PlayingPlayers,Player) then
local ReturnValue = table.find(PlayingPlayers,Player)
table.remove(PlayingPlayers,ReturnValue)
end
local Gems = Player.Leaderstats.Gems
local EquippedSkin = Player.EquippedSkin
local EquippedTrap = Player.EquippedTrap
local SeenLuke = Player.SeenLuke
local OwnedSkins = Player.OwnedSkins
local OwnedTraps = Player.OwnedTraps
local OwnedGears = Player.OwnedGears
local EquippedGear = Player.EquippedGear
local Wins = Player.Wins
local Kills = Player.Kills
local SavedSkins = {}
local SavedTraps = {}
local SavedGears = {}
for i, SavedSkin in pairs(OwnedSkins:GetChildren()) do
table.insert(SavedSkins,SavedSkin.Name)
end
for i, SavedTrap in pairs(OwnedTraps:GetChildren()) do
table.insert(SavedTraps,SavedTrap.Name)
end
for i, SavedGear in pairs(OwnedGears:GetChildren()) do
table.insert(SavedGears,SavedGear.Name)
end
local Success, ErrorMessage = pcall(function()
dStore:SetAsync(Player.UserId.."Gems",Gems.Value)
dStore:SetAsync(Player.UserId..'EquippedSkin',EquippedSkin.Value)
dStore:SetAsync(Player.UserId..'EquippedTrap',EquippedTrap.Value)
dStore:SetAsync(Player.UserId..'SeenLuke',SeenLuke.Value)
skinsDS:SetAsync(Player.UserId,SavedSkins)
trapsDS:SetAsync(Player.UserId,SavedTraps)
gearsDS:SetAsync(Player.UserId,SavedGears)
dStore:SetAsync(Player.UserId..'EquippedGear',EquippedGear.Value)
dStore:SetAsync(Player.UserId..'Wins',Wins.Value)
dStore:SetAsync(Player.UserId..'Kills',Kills.Value)
end)
if not Success then
warn('An error occured while saving '..Player.Name..'\'s data: '..ErrorMessage)
end
end)
game:BindToClose(function()
for _, Player in pairs(game.Players:GetPlayers()) do
spawn(function()
local Gems = Player.Leaderstats.Gems
local EquippedSkin = Player.EquippedSkin
local EquippedTrap = Player.EquippedTrap
local SeenLuke = Player.SeenLuke
local OwnedSkins = Player.OwnedSkins
local OwnedTraps = Player.OwnedTraps
local OwnedGears = Player.OwnedGears
local EquippedGear = Player.EquippedGear
local Wins = Player.Wins
local Kills = Player.Kills
local SavedSkins = {}
local SavedTraps = {}
local SavedGears = {}
for i, SavedSkin in pairs(OwnedSkins:GetChildren()) do
table.insert(SavedSkins,SavedSkin.Name)
end
for i, SavedTrap in pairs(OwnedTraps:GetChildren()) do
table.insert(SavedTraps,SavedTrap.Name)
end
for i, SavedGear in pairs(OwnedGears:GetChildren()) do
table.insert(SavedGears,SavedGear.Name)
end
local Success, ErrorMessage = pcall(function()
dStore:SetAsync(Player.UserId.."Gems",Gems.Value)
dStore:SetAsync(Player.UserId..'EquippedSkin',EquippedSkin.Value)
dStore:SetAsync(Player.UserId..'EquippedTrap',EquippedTrap.Value)
dStore:SetAsync(Player.UserId..'SeenLuke',SeenLuke.Value)
skinsDS:SetAsync(Player.UserId,SavedSkins)
trapsDS:SetAsync(Player.UserId,SavedTraps)
gearsDS:SetAsync(Player.UserId,SavedGears)
dStore:SetAsync(Player.UserId..'EquippedGear',EquippedGear.Value)
dStore:SetAsync(Player.UserId..'Wins',Wins.Value)
dStore:SetAsync(Player.UserId..'Kills',Kills.Value)
end)
if not Success then
warn('An error occured while saving '..Player.Name..'\'s data: '..ErrorMessage)
end
end)
end
wait(10)
end)
I don’t know why this happens, anyone know why? People are complaining due to this!