Simple function to check if value might contain a nan value, checks vectors, CFrames and complex tables.
https://create.roblox.com/docs/scripting/security/security-tactics#the-danger-of-nan
local function Get(TableCheck: {})
local Checked = {}
local out = {}
local function recursive(t)
if Checked[t] then return end
Checked[t] = true
for k, v in t do
if type(v) == "table" then
recursive(v)
else
out[#out + 1] = v
end
end
end
recursive(TableCheck)
table.clear(Checked);Checked=nil
return out
end
local function check(value: vector | number | {number?} | CFrame)
if type(value) == "number" and value ~= value then
return false
end
if typeof(value):lower():find("vector") then
for _,v in {value.X, value.Y, typeof(value) == "Vector3" and value.Z or 1} do
if v ~= v then
return false
end
end
return true
end
if type(value) == "table" then
for _,v in Get(value) do
if type(v) == "number" and v ~= v then
return false
end
end
end
if typeof(value) == "CFrame" then
for _,v in value:GetComponents() do
if v ~= v then
return false
end
end
end
return true
end