OnJoinPlayer help

So I want the player to join and then to fire thing so then it does other stuff. BUT for some reason the exceutioneraxe does not work and it is the local exicutioneraxe part that does not work, and it is not the spelling i have checked. Line19 btw.

local rp = game:GetService("ReplicatedStorage")
local plr = game:GetService("Players")
local re = game.ReplicatedStorage.OnJoin.Normalaxe
local rr = game.ReplicatedStorage.OnJoin.Diamondaxe
local rt = game.ReplicatedStorage.OnJoin.Lumberjackaxe
local ry = game.ReplicatedStorage.OnJoin.Executioneraxe
local ru = game.ReplicatedStorage.OnJoin.Doubleaxe
local ri = game.ReplicatedStorage.OnJoin.Steampunkaxe
local ro = game.ReplicatedStorage.OnJoin.Voidaxe

plr.PlayerAdded:Connect(function(player: Player)
	local axes = player:WaitForChild("axes")  -- I'm assuming this is some folder in player 
	if not axes then player:Kick("Data could not load, please rejoin.") end 

	local normalAxe = axes:WaitForChild("Normalaxe")
	local diamondAxe = axes:WaitForChild("Diamondaxe")
	local lumberjackAxe = axes:WaitForChild("Lumerjackaxe")
	local ExecutionerAxe = axes:WaitForChild("Executioneraxe")
	local DoubleAxe = axes:FindFirstChild("Doubleaxe")
	local SteampunkAxe = axes:FindFirstChild("Steampunkaxe")
	local VoidAxe = axes:FindFirstChild("Voidaxe")
	print("a")
	if not normalAxe then return end
	if not diamondAxe then return end
	if not lumberjackAxe then return end
	if not ExecutionerAxe then return end
	if not DoubleAxe then return end
	if not SteampunkAxe then return end
	if not VoidAxe then return end
	
	wait(0.01)
	
	if  normalAxe.Value == true then
		re:FireClient(player)
		print("aa")
	end	
	if  diamondAxe.Value == true then
		rr:FireClient(player)
		print("100")
	end	
	if lumberjackAxe.Value == true then
		rt:FireClient(player)
	end	
	if ExecutionerAxe.Value == true then
		ry:FireClient(player)
	end	
	if DoubleAxe.Value == true then 
		ru:FireClient(player)
	end	
	if SteampunkAxe.Value == true then
		ri:FireClient(player)
	end	
	if VoidAxe.Value == true then
		ro:FireClient(player)
	end	
end)

Could you explain what the script is for? And I also highly recommend you name your variables something that is easily understandable. For example: why is an executioneraxe called ry, and why do 90% of your variables start with r and end in one of the top row letters? Sorry I’m ranting a little bit but writing your script like this makes it a nightmare to read. Also you should type check variables / explain what they do. Are the R variables bindable events?

It doesn’t look like anything is wrong with the script you posted.

Whatever is creating the axes in the Player seems to be where the problem is.

Here is a test file that shows your code above works fine:

Axes.rbxl (54.7 KB)