Variable not being replaced

My brain hurt please help me

local roomZone = zone.new(v:FindFirstChild("Zone"))
	local ID = v:GetAttribute("RoomID")
	
	local ID1 = v:GetAttribute("Player1")
	local ID2 = v:GetAttribute("Player2")
	
	local char1 = nil
	local char2 = nil
	
	if ID1 ~= 0 then
		char1 = game.Players:GetPlayerByUserId(ID2)
	end
	
	if ID2 ~= 0 then
		char2 = game.Players:GetPlayerByUserId(ID2)
	end
	
	if char1 == nil or char2 == nil then
		continue
	end
	
	dormZones[ID] = {Zone = roomZone, Part = v:FindFirstChild("Zone"), Players = {player1 = char1, player2 = char2}}

It should be working right?
That’s what I thought too but for what ever reason
The char1 or char2 tag is not changing
does the if statement work? yeah
is this a engine problem? i dunno

Edit: I replaced the char 1 and char 2 tags with a number and it seems to be only turning to nil when it attempts to get the player through user id

Do your conditions run? What does ID1 and ID2 print?

does the if statement work? yeah

oh yeah forgot about the other half but ID1 and ID2 mainly prints the user ID of the players

I looked at my code and I just realized I’m pretty dumb

if ID1 ~= 0 then
	char1 = game.Players:GetPlayerByUserId(ID2)
end