Class weapon giver is broken

Every time a person is an a specific class. Most of the time, everyone either receives the same gear or not. I’m not entirely sure what to do."

-- // Variables

local player1 
local classofplr
local serverstorage = game.ServerStorage

-- // Function

local function loadchar(player1)
	player1.Character:Destroy()

	wait(1)

	local clone = game.ReplicatedStorage.LoadScreen:Clone()
	clone.Parent = player1.PlayerGui

	wait(2.5)

	clone:Destroy()

	player1:LoadCharacter()

end

-- // Remote Event Code

game.ReplicatedStorage.TGE:WaitForChild("TeamGearEvent").OnServerEvent:Connect(function(plr, class)
	player1 = plr
	if plr then
		classofplr = class
		class.Value = "RKR"
		loadchar(plr)
	end
end)

game.ReplicatedStorage.TGE:WaitForChild("TeamGearEvent2").OnServerEvent:Connect(function(plr, class)
	if plr then
		classofplr = class
		class.Value = "SHS"
		loadchar(plr)
	end
end)

game.ReplicatedStorage.TGE:WaitForChild("TeamGearEvent3").OnServerEvent:Connect(function(plr, class)
	if plr then
		classofplr = class
		class.Value = "OFI"
		loadchar(plr)
	end
end)

-- // Main Code

game.Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function(character)
		
		local backpack = player.Backpack or player1.Backpack
	
		if classofplr.Value == "RKR" then
			local musket = serverstorage:WaitForChild("Musket"):Clone()
			musket.Parent = backpack
		elseif classofplr.Value == "SHS" then
			local rifle = serverstorage:WaitForChild("Rifle"):Clone()
			rifle.Parent = backpack
			local sword = serverstorage:WaitForChild("Sword"):Clone()
			sword.Parent = backpack
		elseif classofplr.Value == "OFI" then
			local rifle = serverstorage:WaitForChild("Pistol"):Clone()
			rifle.Parent = backpack
			local sword = serverstorage:WaitForChild("Sword"):Clone()
			sword.Parent = backpack
		end
	end)