Variables on player

G’day, I’ve been trying to add a lockout function to an ATM system. It all works, however if one person locks himself out, everyone else is locked out. Here is the code:



pl.attempts = 0

concommand.Add( "rp_atm_login", function( pl, cmd, args, ply )
	if ( !AreWeNearATM( pl ) ) then pl:ChatPrint( "You must be near an ATM to use it!" ) return end
if pl.attempts ~=4 then
	for k, v in pairs( player.GetAll() ) do
		if tostring( args[2] ) == tostring( v:UniqueID() ) || v:UniqueID() == "1" then /* In SP on Server, UniqueID is 1 */
			if args[1] == util.CRC( v:GetPData( "pin" ) ) && tostring( v:GetPData( "pin" ) ) != "100500" then 
				pl:ConCommand("rp_atm_account " .. args[1] .. " " .. args[2] .. " " .. v:GetPData( "bankmoney" ) )
				pl.attempts = 0
			else
				pl:ChatPrint( "Entered incorrect PIN!" )
				pl.attempts = self.attempts + 1

					if self.attempts > 3 then
					timer.Simple( 10, function () pl:ChatPrint("Attempts reset") pl.attempts = 0 end) 
					pl:ChatPrint("Too many incorrect attempts!") end
					
			end
		end
	end
end
end )


I have tried pl, ply and self. All still have to same outcome. Help is appreciated!
Bamp ;_;