How to make a game-title system

I want to make it so every time you reach a certain level (put 00 for when i change it to the level I want it to be) it gives a new title (put n/a for the title) Please put all the steps cuz I have no brain. Here’s the level up script

local badgeService = game:GetService("BadgeService")
local DataStore = game:GetService("DataStoreService")
local Level1 = DataStore:GetDataStore("Levels001")
local Beli11 = DataStore:GetDataStore("Beli001")
local Exp1 = DataStore:GetDataStore("Exp001")
local ExpNeed1 = DataStore:GetDataStore("ExpNeed001")
local DefenseP1 = DataStore:GetDataStore("DefenseP001")
local SwordP1 = DataStore:GetDataStore("SwordP001")
local LuckP1 = DataStore:GetDataStore("LuckP001")
local SpecialP1 = DataStore:GetDataStore("Special001")
local Defense1 = DataStore:GetDataStore("Defense001")
local Sword1 = DataStore:GetDataStore("Sword001")
local Luck1 = DataStore:GetDataStore("Luck001")
local Special1 = DataStore:GetDataStore("Special001")
local Points1 = DataStore:GetDataStore("Points001")

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"
	Levels.Value = 1
	local Exp = Instance.new("IntValue", stats)
	Exp.Name = "Exp"
	Exp.Value = 0
	local ExpNeed = Instance.new("IntValue", stats)
	ExpNeed.Name = "ExpNeed"
	ExpNeed.Value = 200
	--- Money System
	local Beli = Instance.new("IntValue", stats)
	Beli.Name = "Gold"
	Beli.Value = 0
	--- Stats Text
	local DefenseP = Instance.new("IntValue", stats)
	DefenseP.Name = "DefenseP"
	DefenseP.Value = 1
	local SwordP = Instance.new("IntValue", stats)
	SwordP.Name = "SwordP"
	SwordP.Value = 1
	local LuckP = Instance.new("IntValue", stats)
	LuckP.Name = "LuckP"
	LuckP.Value = 1
	local SpecialP = Instance.new("IntValue", stats)
	SpecialP.Name = "SpecialP"
	SpecialP.Value = 1
	--- Stats System
	local Points = Instance.new("IntValue", stats)
	Points.Name = "Points"
	Points.Value = 0
	local PointsS = Instance.new("IntValue", stats)
	PointsS.Name = "PointsS"
	PointsS.Value = 1
	local Defense = Instance.new("IntValue", stats)
	Defense.Name = "Defense"
	Defense.Value = 0
	local Sword = Instance.new("IntValue", stats)
	Sword.Name = "Sword"
	Sword.Value = 0
	local Luck = Instance.new("IntValue", stats)
	Luck.Name = "Luck"
	Luck.Value = 0
	local Special = Instance.new("IntValue", stats)
	Special.Name = "Special"
	Special.Value = 0

	Levels.Changed:Connect(function()
		if Levels.Value == 10 then
			badgeService:AwardBadge(Player.UserId, 2126367643)
		end
	end)
	---- Datastore ----
	--- Levels
	Levels.Value = Level1:GetAsync(Plr.UserId) or Levels.Value
	Level1:SetAsync(Plr.UserId, Levels.Value)
	Levels.Changed:connect(function()
		Level1:SetAsync(Plr.UserId, Levels.Value)
	end)
	--- Gold
	Beli.Value = Beli11:GetAsync(Plr.UserId) or Beli.Value
	Beli11:SetAsync(Plr.UserId, Beli.Value)
	Beli.Changed:connect(function()
		Beli11:SetAsync(Plr.UserId, Beli.Value)
	end)
	--- Exp
	Exp.Value = Exp1:GetAsync(Plr.UserId) or Exp.Value
	Exp1:SetAsync(Plr.UserId, Exp.Value)
	Exp.Changed:connect(function()
		Exp1:SetAsync(Plr.UserId, Exp.Value)
	end)
	--- ExpNeed
	ExpNeed.Value = ExpNeed1:GetAsync(Plr.UserId) or ExpNeed.Value
	ExpNeed1:SetAsync(Plr.UserId, ExpNeed.Value)
	ExpNeed.Changed:connect(function()
		ExpNeed1:SetAsync(Plr.UserId, ExpNeed.Value)
	end)
	--- SwordP
	SwordP.Value = SwordP1:GetAsync(Plr.UserId) or SwordP.Value
	SwordP1:SetAsync(Plr.UserId, SwordP.Value)
	SwordP.Changed:connect(function()
		SwordP1:SetAsync(Plr.UserId, SwordP.Value)
	end)
	--- DefenseP
	DefenseP.Value = DefenseP1:GetAsync(Plr.UserId) or DefenseP.Value
	DefenseP1:SetAsync(Plr.UserId, DefenseP.Value)
	DefenseP.Changed:connect(function()
		DefenseP1:SetAsync(Plr.UserId, DefenseP.Value)
	end)
	--- LuckP
	ExpNeed.Value = ExpNeed1:GetAsync(Plr.UserId) or ExpNeed.Value
	ExpNeed1:SetAsync(Plr.UserId, ExpNeed.Value)
	ExpNeed.Changed:connect(function()
		ExpNeed1:SetAsync(Plr.UserId, ExpNeed.Value)
	end)
	--- SpecialP
	ExpNeed.Value = ExpNeed1:GetAsync(Plr.UserId) or ExpNeed.Value
	ExpNeed1:SetAsync(Plr.UserId, ExpNeed.Value)
	ExpNeed.Changed:connect(function()
		ExpNeed1:SetAsync(Plr.UserId, ExpNeed.Value)
	end)
	--- Sword
	Sword.Value = Sword1:GetAsync(Plr.UserId) or Sword.Value
	Sword1:SetAsync(Plr.UserId, SwordP.Value)
	Sword.Changed:connect(function()
		Sword1:SetAsync(Plr.UserId, SwordP.Value)
	end)
	--- Defense
	Defense.Value = Defense1:GetAsync(Plr.UserId) or Defense.Value
	Defense1:SetAsync(Plr.UserId, Defense.Value)
	Defense.Changed:connect(function()
		Defense1:SetAsync(Plr.UserId, Defense.Value)
	end)
	--- Luck
	Luck.Value = Luck1:GetAsync(Plr.UserId) or Luck.Value
	Luck1:SetAsync(Plr.UserId, Luck.Value)
	Luck.Changed:connect(function()
		Luck1:SetAsync(Plr.UserId, Luck.Value)
	end)
	--- Special
	Special.Value = Special1:GetAsync(Plr.UserId) or Special.Value
	Special1:SetAsync(Plr.UserId, Special.Value)
	Special.Changed:connect(function()
		Special1:SetAsync(Plr.UserId, Special.Value)
	end)
	--- Points
	Points.Value = Points1:GetAsync(Plr.UserId) or Points.Value
	Points1:SetAsync(Plr.UserId, Points.Value)
	Points.Changed:connect(function()
		Points1:SetAsync(Plr.UserId, Points.Value)
	end)
end)

game.Players.PlayerAdded:Connect(function(plr)
	wait(.1)
	local Exp = plr.Data.Exp
	local Levels = plr.Data.Levels
	local ExpNeed = plr.Data.ExpNeed
	local Points = plr.Data.Points

	while wait() do
		if Exp.Value >= (100 * (Levels.Value + 1)) then
			Levels.Value = Levels.Value + 1
			Points.Value = Points.Value + 3
			Exp.Value = Exp.Value - ExpNeed.Value
			ExpNeed.Value = ExpNeed.Value + 100
			game.ReplicatedStorage.LevelSystem.LevelUpGui:FireClient(plr)
		end
	end
end)

game.Players.PlayerRemoving:connect(function(Player)
	Level1:SetAsync(Player.UserId, Player.Data.Levels.Value)
	Beli11:SetAsync(Player.UserId, Player.Data.Beli.Value)
	Exp1:SetAsync(Player.UserId, Player.Data.Exp.Value)
	ExpNeed1:SetAsync(Player.UserId, Player.Data.ExpNeed.Value)
	SwordP1:SetAsync(Player.UserId, Player.Data.SwordP.Value)
	DefenseP1:SetAsync(Player.UserId, Player.Data.DefenseP.Value)
	LuckP1:SetAsync(Player.UserId, Player.Data.LuckP.Value)
	SpecialP1:SetAsync(Player.UserId, Player.Data.SpecialP.Value)
	Sword1:SetAsync(Player.UserId, Player.Data.Sword.Value)
	Defense1:SetAsync(Player.UserId, Player.Data.Defense.Value)
	Luck1:SetAsync(Player.UserId, Player.Data.Luck.Value)
	Special1:SetAsync(Player.UserId, Player.Data.Special.Value)
	Points1:SetAsync(Player.UserId, Player.Data.Points.Value)
end)

Oh man, there are too many GetAsync calls here,
Can easily cause to Data Loss.

Use tables.

alright! I don’t need a lot of the asyncs cause its for a menu that I deleted the gui but forgot to delete the script! Just pay attention where it says -level system-

I don’t know where people get this script from, cause it’s not the first time I’ve see it. Copy and paste doesn’t fix everything.

  1. You have a datastore for every value?
  2. You have a GetAsync for each value?
  3. You’re saving it every time it changes?
  4. Not using pcalls?
  5. Using wait instead of task.wait?

Clearly you don’t know how to use datastores.

https://developer.roblox.com/en-us/api-reference/class/DataStoreService

1 Like

I used a kit so I litterly don’t know what I’m doing- I did spend a year on other stuff. It’s still in alpha and I don’t know where to start

This kit is going to cause your data to be lost. I recommend you legitimately learn datastoreservice.

Wdym by my data being lost??? Do you mean the WHOLE game!!!

Whats with so many question marks and exclamation points? Yes, your data is going to be lost. You have a datastore for every value. You’re loading like 10 keys upon every players’ join, saving all of them EVERY TIME they change, and saving them when they leave

I had so many question marks and exclamation points because of char limit. Can you rewrite the whole script without the menu stuff. Like the points. Keep the xp and gold though.

I understand if its too much work tho-

Asking for scripts is against the rules, so no. Just learn it yourself. You’re not gonna get spoon-fed everything in life.

Alright I guess I’ll try but since when was giving scripts against the rules… I don’t understand simple scripting. Tutorials? Heck, even those don’t make any sense.

All figured out but can someone please solve the main question?