Help: Remote event returns Player Name instead of the correct value

I want 2 variables to be sent through a remote event, one being player who fired the event, and the name of a backpack.

The name of the backpack variable returns the player name for some reason is what my issue is

Here is the client script

-- local backpackname = script.Parent.Parent.Parent.Name
local plr = game.Players.LocalPlayer
local backpackfolder = game:GetService("ReplicatedStorage").Backpacks
local price = backpackfolder:FindFirstChild(backpackname).Config.Price
if plr.BackpackFolder.OwnedBackpacks:FindFirstChild(backpackname) then
	script.Parent.Text="Equip"
else
	script.Parent.Text=price.Value
	end

script.Parent.MouseButton1Click:Connect(function()
	---	if script.Parent.Text==price.Value then--
	if plr.leaderstats.Coins.Value>=price.Value then
		local Player=plr
				game:GetService("ReplicatedStorage").Events.PurchaseBackpack:FireServer(Player, backpackname) --e	vent fired here
			else
				print("player dosent have enough")
				
			
	
			

			
			end
		
		
	
	
	end)

Here is the server side script

--game:GetService("ReplicatedStorage").Events.PurchaseBackpack.OnServerEvent:Connect(function(Player, backpackname)
	print(Player)
	print(backpackname)
	
end)

The player is always the first parameter from RemoteEvent.OnServerEvent so you should not be passing the player instance on the client.