Why is my rank system not working?

I want to write a rank script in my game to have special locations and I also want it to function as a whitelist system.

I’m getting kicked from the game but I’m sure I’ve correctly set up everything.

My ‘RankDB’:

{
    [3522406346] = 3
}

My code so far:

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")

local Database = DataStoreService:GetDataStore("General")
local RankDB = Database:GetAsync("RankData")

local ConnectionData = {}

local GUI = script.HeadGUI

local RankData = {
	[3] = {
		Name = "Admin",
		Color = Color3.new(1, 0.203922, 0.243137)
	},
	[2] = {
		Name = "Sınıf Başkanı",
		Color = Color3.new(0.831373, 1, 0.215686)
	},
	[1] = {
		Name = "Müdür",
		Color = Color3.new(0.729412, 0.0980392, 1)
	},
	[0] = {
		Name = "Öğrenci",
		Color = Color3.new(0, 0.6, 1)
	}
}


Players.PlayerAdded:Connect(function(player)
	local TempRankData = RankDB[player.UserId]
	
	for _, v in pairs(RankDB) do
		print(v)
	end
	
	if not TempRankData then player:Kick("Gökyüzü kolejinde kayıtlı değilsin") end
	if not RankData[TempRankData] then player:Kick("Geçerli bir role sahip değilsin.") end
	
	ConnectionData[player] = player.CharacterAdded:Connect(function(character)
		print("char added")
		local HeadGUI = GUI:Clone()
		HeadGUI.PlayerName.Text = player.DisplayName or ("@" .. player.Name)
		HeadGUI.Description.Text = RankData[TempRankData]["Name"]
		HeadGUI.Description.TextColor = RankData[TempRankData]["Color"]
		HeadGUI.Adornee = character.Head
		HeadGUI.Parent = character
	end)
end)

Players.PlayerRemoving:Connect(function(player)
	if not ConnectionData[player] then return end
	ConnectionData[player]:Disconnect()
	ConnectionData[player] = nil
end)

while wait(60) do
	RankDB = Database:GetAsync("RankData")
end

get the data from the database instead of saving a big table that has all of the players that has joined the server

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")

local Database = DataStoreService:GetDataStore("General")

local ConnectionData = {}

local GUI = script.HeadGUI

local RankData = {
	[3] = {
		Name = "Admin",
		Color = Color3.new(1, 0.203922, 0.243137)
	},
	[2] = {
		Name = "Sınıf Başkanı",
		Color = Color3.new(0.831373, 1, 0.215686)
	},
	[1] = {
		Name = "Müdür",
		Color = Color3.new(0.729412, 0.0980392, 1)
	},
	[0] = {
		Name = "Öğrenci",
		Color = Color3.new(0, 0.6, 1)
	}
}


Players.PlayerAdded:Connect(function(player)
	local TempRankData = Database:GetAsync(player.UserId)

	if not TempRankData then player:Kick("Gökyüzü kolejinde kayıtlı değilsin") end
	if not RankData[TempRankData] then player:Kick("Geçerli bir role sahip değilsin.") end

	ConnectionData[player] = player.CharacterAdded:Connect(function(character)
		print("char added")
		local HeadGUI = GUI:Clone()
		HeadGUI.PlayerName.Text = player.DisplayName or ("@" .. player.Name)
		HeadGUI.Description.Text = RankData[TempRankData]["Name"]
		HeadGUI.Description.TextColor = RankData[TempRankData]["Color"]
		HeadGUI.Adornee = character.Head
		HeadGUI.Parent = character
	end)
end)

Players.PlayerRemoving:Connect(function(player)
	if not ConnectionData[player] then return end
	ConnectionData[player]:Disconnect()
	ConnectionData[player] = nil
end)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.