Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Player gets a random data wipe?

I have a Data script that holds the players levels, exp and money (and a lot more, stats etc..) and the saving worked perfectly fine. But I've had it twice now when the data randomly resets to the old values.

Here is my script:

local DataStore = game:GetService("DataStoreService")
local Data = DataStore:GetDataStore("ManageData")

local prefix = 'user_'

game.Players.PlayerAdded:Connect(function(Plr)
	
	local stats = Instance.new("Folder", Plr)
	stats.Name = "Data"
	
	--- Level System
	
	local Levels = Instance.new("IntValue", stats)
	Levels.Name = "Levels"
	
	local Exp = Instance.new("IntValue", stats)
	Exp.Name = "Exp"
	
	local ExpNeed = Instance.new("IntValue", stats)
	ExpNeed.Name = "ExpNeed"
	
	--- Money System
	local Zeni = Instance.new("IntValue", stats)
	Zeni.Name = "Zeni"
	
	--- Stats Text
	local HealthP = Instance.new("IntValue", stats)
	HealthP.Name = "HealthPoints"

	local MeleeP = Instance.new("IntValue", stats)
	MeleeP.Name = "MeleePoints"
	
	local SpeedP = Instance.new("IntValue", stats)
	SpeedP.Name = "SpeedPoints"
	
	local KiMaxP = Instance.new("IntValue", stats)
	KiMaxP.Name = "KiMaxPoints"
	
	--- Stats System
	local Points = Instance.new("IntValue", stats)
	Points.Name = "Points"
	
	local MaxHealth = Instance.new("IntValue", stats)
	MaxHealth.Name = "Health Max"
	
	local Melee = Instance.new("IntValue", stats)
	Melee.Name = "Melee Damage"
	
	local Speed = Instance.new("NumberValue", stats)
	Speed.Name = "Speed"
	
	local KiMax = Instance.new("IntValue", stats)
	KiMax.Name = "Ki Max"
	
	-- KI DAMAGE --
	
	local KiDamage = Instance.new("IntValue", stats)
	KiDamage.Name = "Ki Damage"
	
	-- KI CONTROL --
	
	local KiControl = Instance.new("IntValue", stats)
	KiControl.Name = "Ki Control"
	
	-- HEALING POWER  --
	
	local HPower = Instance.new("IntValue", stats)
	HPower.Name = "Healing Power"
		
	-- POWER LVLS --
	local powerLvl = Instance.new("IntValue", stats)
	powerLvl.Name = "PowerLevel"
	
	-- STAMINA --
	
	local Stam = Instance.new("IntValue", stats)
	Stam.Name = "Stamina"
	
	-- START VALUES --
	
	Levels.Value = 1
	Exp.Value = 0
	ExpNeed.Value = 100
	Zeni.Value = 200
	HealthP.Value = 1
	MeleeP.Value = 1
	SpeedP.Value = 1
	KiMaxP.Value = 1
	Points.Value = 0
	MaxHealth.Value = 100
	Melee.Value = 5
	Speed.Value = 16
	KiMax.Value = 100
	KiDamage.Value = 5
	KiControl.Value = 5
	HPower.Value = 5
	powerLvl.Value = 5
	Stam.Value = 100
	
	-- SET DATA --
	
	local plrData = Data:GetAsync(prefix .. tostring(Plr.UserId))
	
	if plrData then
		Levels.Value = plrData[1] or 1
		Exp.Value = plrData[2] or 0
		ExpNeed.Value = plrData[3] or 100
		Zeni.Value = plrData[4] or 200
		HealthP.Value = plrData[5] or 1
		MeleeP.Value = plrData[6] or 1
		SpeedP.Value = plrData[7] or 1
		KiMaxP.Value = plrData[8] or 1
		Points.Value = plrData[9] or 0
		MaxHealth.Value = plrData[10] or 100
		Melee.Value = plrData[11] or 5
		Speed.Value = plrData[12] or 16
		KiMax.Value = plrData[13] or 100
		KiDamage.Value = plrData[14] or 5
		KiControl.Value = plrData[15] or 5
		HPower.Value = plrData[16] or 5
		powerLvl.Value = plrData[17] or 5
		Stam.Value = plrData[18] or 100
		
	else
		
		Data:SetAsync(prefix .. tostring(Plr.UserId), {
			Plr.Data.Levels.Value,
			Plr.Data.Exp.Value,
			Plr.Data.ExpNeed.Value,
			Plr.Data.Zeni.Value,
			Plr.Data.HealthPoints.Value,
			Plr.Data.MeleePoints.Value,
			Plr.Data.SpeedPoints.Value,
			Plr.Data.KiMaxPoints.Value,
			Plr.Data.Points.Value,
			Plr.Data["Health Max"].Value,
			Plr.Data["Melee Damage"].Value,
			Plr.Data.Speed.Value,
			Plr.Data["Ki Max"].Value,
			Plr.Data["Ki Damage"].Value,
			Plr.Data["Ki Control"].Value,
			Plr.Data["Healing Power"].Value,
			Plr.Data.PowerLevel.Value,
			Plr.Data.Stamina.Value
		})	
	end

-- SAVE STATS ON LEAVING --

game.Players.PlayerRemoving:Connect(function(Plr)
	Data:SetAsync(prefix .. tostring(Plr.UserId), {
			Plr.Data.Levels.Value,
			Plr.Data.Exp.Value,
			Plr.Data.ExpNeed.Value,
			Plr.Data.Zeni.Value,
			Plr.Data.HealthPoints.Value,
			Plr.Data.MeleePoints.Value,
			Plr.Data.SpeedPoints.Value,
			Plr.Data.KiMaxPoints.Value,
			Plr.Data.Points.Value,
			Plr.Data["Health Max"].Value,
			Plr.Data["Melee Damage"].Value,
			Plr.Data.Speed.Value,
			Plr.Data["Ki Max"].Value,
			Plr.Data["Ki Damage"].Value,
			Plr.Data["Ki Control"].Value,
			Plr.Data["Healing Power"].Value,
			Plr.Data.PowerLevel.Value,
			Plr.Data.Stamina.Value
		})
end)

Is there anything wrong with the script? Please let me know.

2 comments

0

try adding wait() inside the functions for saving and loading stats?

0

Will try it out, I wont get a full answer unless it happens again sadly. I will let you know if it works.

1 answer

This discussion is preserved as it was. New answers, comments, and votes are closed.