local successCount = 0 local failCount = 0 local bugCount = 0 local function runTest(name, callback) local env = getgenv() local exists = env[name] or _G[name] if not exists and name:find("debug.") then local lib, func = name:match("([^.]+)%.([^.]+)") if debug and debug[func] then exists = debug[func] end end if not exists and name == "bit32" then exists = bit32 end if not exists and name == "Drawing" then exists = Drawing end if not exists then warn("⛔ " .. name .. "") failCount = failCount + 1 return end local ok, result = pcall(callback) if ok and result then print("✅ " .. name) successCount = successCount + 1 elseif not ok then warn("⛔ " .. name .. " (Error: " .. tostring(result) .. ")") failCount = failCount + 1 else warn("⚠️ " .. name .. " (Logic Bug)") bugCount = bugCount + 1 end end print("--- [ VUNC IDE ] ---") runTest("getrawmetatable", function() local t = {} local mt = { __index = "success" } setmetatable(t, mt) local rawMt = getrawmetatable(t) if type(rawMt) ~= "table" then return false end if rawMt.__index ~= "success" then return false end local protected = setmetatable({}, { __metatable = "protected" }) local rawProtected = getrawmetatable(protected) if type(rawProtected) ~= "table" or rawProtected == "protected" then return false end return true end) runTest("getgenv", function() local g = getgenv() local key = "_UNC_" .. tostring(math.random(1e5, 9e5)) g[key] = {status = true} local check1 = type(g[key]) == "table" and g[key].status == true local check2 = (g == getgenv()) local check3 = (g._G ~= nil) local success = check1 and check2 and check3 g[key] = nil return success end) runTest("getrenv", function() local renv = getrenv() local genv = getgenv() local ok = type(renv) == "table" and renv.game == game local isIsolated = (renv ~= genv) local hasNatives = renv.spawn ~= nil and renv.print ~= nil local s, res = pcall(function() return renv.shared end) return ok and isIsolated and hasNatives and s end) runTest("bit32", function() local b = bit32 if not b then return false end local checks = { b.bxor(0x0F, 0xF0) == 255, b.rshift(0x10, 2) == 4, b.lshift(0x01, 8) == 256, b.band(0xFF, 0x0F) == 0x0F, b.bor(0xF0, 0x0F) == 0xFF, b.bnot(0) == 4294967295, b.rrotate(0x01, 1) == 2147483648 } for _, v in ipairs(checks) do if not v then return false end end return true end) runTest("identifyexecutor", function() local name, ver = identifyexecutor() local ok = type(name) == "string" and #name > 0 if ver then ok = ok and (type(ver) == "string" or type(ver) == "number") end local s, name2 = pcall(identifyexecutor) return ok and s and name2 == name end) runTest("writefile", function() local path = "unc_test_" .. tostring(math.random(100, 999)) .. ".txt" local data = "orig_" .. tostring(math.random(100, 999)) local ok = false local s = pcall(function() writefile(path, data) if isfile(path) and readfile(path) == data then ok = true if appendfile then appendfile(path, "_appended") ok = (readfile(path) == data .. "_appended") end end delfile(path) if isfile(path) then ok = false end end) return s and ok end) runTest("makefolder", function() local name = "unc_test_" .. tostring(math.random(100, 999)) local ok = false local s, err = pcall(function() makefolder(name) local exists = isfolder(name) local found = false if listfiles then for _, v in ipairs(listfiles("")) do if v:find(name) or v == name then found = true break end end else found = true end if exists and found then ok = true end delfolder(name) end) return ok and not isfolder(name) end) runTest("hookfunction", function() local target = function(v) return v + 1 end local old local success, err = pcall(function() old = hookfunction(target, function(v) return old(v + 10) end) end) if not success or type(old) ~= "function" then return false end local res1 = target(1) == 12 local res2 = false pcall(function() hookfunction(target, old) res2 = target(1) == 2 end) return res1 and res2 end) runTest("hookmetamethod", function() local intercepted = false local old old = hookmetamethod(game, "__namecall", function(self, ...) local method = getnamecallmethod() if method == "IsA" then intercepted = true end return old(self, ...) end) local _ = game:IsA("DataModel") local check1 = intercepted == true local check2 = type(old) == "function" hookmetamethod(game, "__namecall", old) return check1 and check2 end) runTest("setreadonly", function() local t = table.freeze({data = 1}) local ok = true local function checkRO(tbl) if isreadonly then return isreadonly(tbl) end return pcall(function() tbl.data = 9 end) == false end setreadonly(t, false) t.data = 2 ok = ok and t.data == 2 and not checkRO(t) setreadonly(t, true) ok = ok and checkRO(t) local mt = getrawmetatable(game) local oldRO = isreadonly(mt) setreadonly(mt, false) ok = ok and not isreadonly(mt) setreadonly(mt, true) ok = ok and isreadonly(mt) setreadonly(mt, oldRO) return ok end) runTest("checkcaller", function() local isExecutor = checkcaller() if type(isExecutor) ~= "boolean" then return false end local threadCheck = false task.spawn(function() threadCheck = checkcaller() end) task.wait(0.05) local gameCheck = false local s = pcall(function() local script = Instance.new("LocalScript") script.Source = "return" gameCheck = checkcaller() end) return isExecutor == true and threadCheck == true end) runTest("getinstances", function() local all = getinstances() if type(all) ~= "table" or #all < 10 then return false end local sample = all[math.random(1, #all)] return typeof(sample) == "Instance" end) runTest("fireclickdetector", function() local part = Instance.new("Part", workspace) local cd = Instance.new("ClickDetector", part) local state = false local conn = cd.MouseClick:Connect(function() state = true end) fireclickdetector(cd, 0) local start = os.clock() repeat task.wait() until state or (os.clock() - start) > 0.5 conn:Disconnect() cd:Destroy() part:Destroy() return state end) runTest("fireproximityprompt", function() local part = Instance.new("Part", workspace) local pp = Instance.new("ProximityPrompt", part) local state = false pp.HoldDuration = 0 pp.Enabled = true local conn = pp.Triggered:Connect(function() state = true end) task.spawn(function() fireproximityprompt(pp) end) local start = os.clock() repeat task.wait() until state or (os.clock() - start) > 0.5 conn:Disconnect() pp:Destroy() part:Destroy() return state end) runTest("Drawing", function() local lib = Drawing if type(lib) ~= "table" or not lib.new then return false end local ok = true local function check(a, b) if type(a) == "number" and type(b) == "number" then return math.abs(a - b) < 0.01 elseif typeof(a) == "Color3" and typeof(b) == "Color3" then return math.abs(a.R - b.R) < 0.01 and math.abs(a.G - b.G) < 0.01 and math.abs(a.B - b.B) < 0.01 elseif typeof(a) == "Vector2" and typeof(b) == "Vector2" then return math.abs(a.X - b.X) < 0.01 and math.abs(a.Y - b.Y) < 0.01 end return a == b end local square = lib.new("Square") square.Visible, square.ZIndex, square.Transparency = true, 10, 0.44 square.Color, square.Position, square.Size = Color3.new(1, 0.5, 0), Vector2.new(50, 50), Vector2.new(150, 150) square.Filled, square.Thickness = true, 3 ok = ok and check(square.Visible, true) and check(square.ZIndex, 10) and check(square.Transparency, 0.44) ok = ok and check(square.Color, Color3.new(1, 0.5, 0)) and check(square.Position, Vector2.new(50, 50)) ok = ok and check(square.Size, Vector2.new(150, 150)) and check(square.Filled, true) and check(square.Thickness, 3) square:Remove() local circle = lib.new("Circle") circle.Visible, circle.Transparency, circle.Color = true, 0.75, Color3.new(0, 1, 1) circle.Position, circle.Radius, circle.Thickness, circle.NumSides, circle.Filled = Vector2.new(200, 200), 75, 5, 128, false ok = ok and check(circle.Visible, true) and check(circle.Transparency, 0.75) and check(circle.Color, Color3.new(0, 1, 1)) ok = ok and check(circle.Position, Vector2.new(200, 200)) and check(circle.Radius, 75) and check(circle.Thickness, 5) ok = ok and (circle.NumSides == 128 or not circle.NumSides) and check(circle.Filled, false) circle:Remove() local line = lib.new("Line") line.Visible, line.From, line.To, line.Thickness, line.Transparency = true, Vector2.new(0, 0), Vector2.new(400, 400), 2, 0.5 ok = ok and check(line.Visible, true) and check(line.From, Vector2.new(0, 0)) and check(line.To, Vector2.new(400, 400)) ok = ok and check(line.Thickness, 2) and check(line.Transparency, 0.5) line:Remove() local text = lib.new("Text") text.Visible, text.Text, text.Size, text.Center, text.Outline = true, "UNC_VERIFY", 18, true, true text.Position, text.Color, text.OutlineColor = Vector2.new(100, 100), Color3.new(1, 1, 1), Color3.new(0, 0, 0) local sF, _ = pcall(function() text.Font = 0 end) if sF then ok = ok and (tonumber(text.Font) == 0) else pcall(function() text.Font = Enum.Font.Legacy end) end ok = ok and check(text.Visible, true) and text.Text == "UNC_VERIFY" and check(text.Size, 18) ok = ok and check(text.Position, Vector2.new(100, 100)) text:Remove() local tri = lib.new("Triangle") tri.PointA, tri.PointB, tri.PointC = Vector2.new(0,0), Vector2.new(50,0), Vector2.new(25,50) tri.Filled, tri.Color, tri.Visible = true, Color3.new(1, 0, 1), true ok = ok and check(tri.PointA, Vector2.new(0,0)) and check(tri.PointB, Vector2.new(50,0)) and check(tri.PointC, Vector2.new(25,50)) tri:Remove() local quad = lib.new("Quad") quad.PointA, quad.PointB, quad.PointC, quad.PointD = Vector2.new(0,0), Vector2.new(10,0), Vector2.new(10,10), Vector2.new(0,10) quad.Visible, quad.Filled = true, false ok = ok and check(quad.PointA, Vector2.new(0,0)) and check(quad.PointC, Vector2.new(10,10)) quad:Remove() local s, _ = pcall(function() lib.new("Invalid") end) return ok and not s end) runTest("decompile", function() local player = game:GetService("Players").LocalPlayer local script = player.Character:FindFirstChild("Animate") or player.PlayerScripts:FindFirstChildOfClass("LocalScript") if not script then return true end local source = decompile(script) if type(source) ~= "string" or #source < 5 then return false end local invalidSigns = {"-- Failed", "Decompilation failed", "unable to decompile"} for _, sign in ipairs(invalidSigns) do if source:lower():find(sign:lower()) then return false end end return true end) runTest("request", function() local req = request or http_request or (http and http.request) if not req then return false end local httpService = game:GetService("HttpService") local ok = true local res = req({Url = "https://httpbin.org/get", Method = "GET", Headers = {["User-Agent"] = "UNC_Test"}}) if type(res) ~= "table" or res.StatusCode ~= 200 or not res.Success then return false end local s, body = pcall(function() return httpService:JSONDecode(res.Body) end) if not s or type(body) ~= "table" or not body.url:find("httpbin") then ok = false end local postRes = req({Url = "https://httpbin.org/post", Method = "POST", Headers = {["Content-Type"] = "application/json"}, Body = httpService:JSONEncode({test = "logic"})}) if type(postRes) ~= "table" or postRes.StatusCode ~= 200 then ok = false end local s2, body2 = pcall(function() return httpService:JSONDecode(postRes.Body) end) if not s2 or type(body2) ~= "table" or not body2.json or body2.json.test ~= "logic" then ok = false end local githubRes = req({Url = "https://api.github.com", Method = "GET"}) if type(githubRes) ~= "table" or githubRes.StatusCode ~= 200 then ok = false end local s3, body3 = pcall(function() return httpService:JSONDecode(githubRes.Body) end) if not s3 or type(body3) ~= "table" or not body3.current_user_url then ok = false end local jsonPlaceholder = req({Url = "https://jsonplaceholder.typicode.com/todos/1", Method = "GET"}) if type(jsonPlaceholder) ~= "table" or jsonPlaceholder.StatusCode ~= 200 then ok = false end local s4, body4 = pcall(function() return httpService:JSONDecode(jsonPlaceholder.Body) end) if not s4 or type(body4) ~= "table" or body4.id ~= 1 then ok = false end local googleRes = req({Url = "https://www.google.com", Method = "GET"}) if type(googleRes) ~= "table" or googleRes.StatusCode ~= 200 or type(googleRes.Body) ~= "string" then ok = false end return ok end) runTest("crypt", function() local lib = crypt if type(lib) ~= "table" then return false end local dec = (lib.base64 and lib.base64.decode) or lib.base64decode or lib.base64_decode or (base64 and base64.decode) or base64_decode local enc = (lib.base64 and lib.base64.encode) or lib.base64encode or lib.base64_encode or (base64 and base64.encode) or base64_encode if type(dec) ~= "function" or type(enc) ~= "function" then return false end if dec("dGVzdA==") ~= "test" or enc("test") ~= "dGVzdA==" then return false end if type(lib.generatekey) == "function" and type(lib.encrypt) == "function" and type(lib.decrypt) == "function" then local key, iv = lib.generatekey(), lib.generatekey() if type(key) ~= "string" or type(iv) ~= "string" then return false end local enc1 = lib.encrypt("test", key, iv, "CBC") if lib.decrypt(enc1, key, iv, "CBC") ~= "test" then return false end local enc2, iv2 = lib.encrypt("test", key, nil, "CBC") if not iv2 or lib.decrypt(enc2, key, iv2, "CBC") ~= "test" then return false end if type(lib.generatebytes) == "function" then local size = math.random(10, 100) local bytes = lib.generatebytes(size) if type(bytes) ~= "string" or #dec(bytes) ~= size then return false end end if #dec(key) ~= 32 then return false end if type(lib.hash) == "function" then local algos = {"sha1", "sha384", "sha512", "md5", "sha256", "sha3-224", "sha3-256", "sha3-512"} for _, algo in ipairs(algos) do local s, r = pcall(lib.hash, "test", algo) if not s or type(r) ~= "string" then return false end end end end return true end) runTest("getscriptbytecode", function() if type(getscriptbytecode) ~= "function" then return false end local players = game:GetService("Players") local player = players.LocalPlayer if not player then return false end local ps = player:FindFirstChildOfClass("PlayerScripts") local char = player.Character local script = (ps and ps:FindFirstChildOfClass("LocalScript")) or (char and char:FindFirstChildOfClass("LocalScript")) if not script then return true end local ok1, bc1 = pcall(getscriptbytecode, script) if not ok1 or type(bc1) ~= "string" or #bc1 < 4 then return false end local ok2, bc2 = pcall(getscriptbytecode, script) if not ok2 or bc1 ~= bc2 then return false end local looksValid = bc1:match("^%z") or bc1:match("^\27") or #bc1 > 10 if not looksValid then return false end local entropyCheck = bc1 ~= string.rep(string.sub(bc1,1,1),#bc1) return entropyCheck end) runTest("cleardrawcache", function() if typeof(cleardrawcache) ~= "function" then return false end local line = Drawing.new("Line") line.Visible = true line.From = Vector2.new(0, 0) line.To = Vector2.new(100, 100) local success = pcall(function() cleardrawcache() end) return success end) runTest("replicatesignal", function() local player: Player = game:GetService("Players").LocalPlayer local signal = player.ConnectDiedSignalBackend if signal then replicatesignal(signal) return true end local success: boolean = pcall(function() replicatesignal(player.DescendantAdded) end) return success end) runTest("getconnections", function() local bindable: BindableEvent = Instance.new("BindableEvent") local connection: RBXScriptConnection = bindable.Event:Connect(function() end) local connections = getconnections(bindable.Event) local success: boolean = type(connections) == "table" and #connections > 0 and type(connections[1].Function) == "function" connection:Disconnect() bindable:Destroy() return success end) runTest("firesignal", function() local bindable: BindableEvent = Instance.new("BindableEvent") local fired: boolean = false local connection: RBXScriptConnection = bindable.Event:Connect(function(value) fired = value end) firesignal(bindable.Event, true) task.wait(0.05) connection:Disconnect() bindable:Destroy() return fired == true end) runTest("getfunctionhash", function() local func = function() return "test" end local hash = getfunctionhash(func) local success = type(hash) == "string" and #hash > 0 local hash2 = getfunctionhash(func) return success and hash == hash2 end) runTest("debug.getupvalues", function() local upvalue = function() end local function testf() print(upvalue) end local upvalues = debug.getupvalues(testf) local isTable = type(upvalues) == "table" if not isTable then return false end local success = upvalues[1] == upvalue local upvalues2 = debug.getupvalues(testf) local consistent = type(upvalues2) == "table" and upvalues2[1] == upvalues[1] return success and consistent end) runTest("debug.getproto",function() local function testf() local function proto() return true; end; end; local proto=(debug.getproto(testf,1,true))[1]; local realproto=debug.getproto(testf,1); if not proto then return false; end; if proto()~=true then return false; end; if not realproto() then return "Proto return values are disabled on this executor"; end; return true; end) runTest("debug.getconstant",function() local function testf() print("Hello, world!"); end; if debug.getconstant(testf,1)~="print" then return false; end; if debug.getconstant(testf,2)~=nil then return false; end; if debug.getconstant(testf,3)~="Hello, world!" then return false; end; return true; end) runTest("debug.getconstants", function() local function testf() local num = 5000 .. 50000 print("Hello, world!", num, warn) end local constants = debug.getconstants(testf) if type(constants) ~= "table" then return false end local check1 = constants[1] == 50000 local check2 = constants[2] == "print" local check3 = constants[3] == nil local check4 = constants[4] == "Hello, world!" local check5 = constants[5] == "warn" return check1 and check2 and check3 and check4 and check5 end) runTest("debug.getinfo",function() local types={ source="string", short_src="string", func="function", what="string", currentline="number", name="string", nups="number", numparams="number", is_vararg="number" }; local function testf(...) print(...); end; local info=debug.getinfo(testf); if type(info)~="table" then return false; end; for k,v in pairs(types) do if info[k]==nil then return false; end; if type(info[k])~=v then return false; end; end; return true; end) runTest("debug.getprotos", function() local function testf() local function _1() return true end local function _2() return true end local function _3() return true end end local protos = debug.getprotos(testf) if type(protos) ~= "table" then return false end for i = 1, #protos do local raw = debug.getproto(testf, i, true) if type(raw) ~= "table" or not raw[1] then return false end local proto = raw[1] local realproto = debug.getproto(testf, i) if proto() ~= true then return false end if type(realproto) == "function" and not realproto() then return false end end return true end) runTest("debug.getstack",function() local _="a".."b"; if debug.getstack(1,1)~="ab" then return false; end; local stack=debug.getstack(1); if type(stack)~="table" then return false; end; if stack[1]~="ab" then return false; end; return true; end) runTest("debug.getupvalue",function() local upvalue=function() end; local function testf() print(upvalue); end; if debug.getupvalue(testf,1)~=upvalue then return false; end; return true; end) runTest("debug.setconstant",function() local function testf() return "fail"; end; debug.setconstant(testf,1,"success"); if testf()~="success" then return false; end; return true; end) runTest("debug.setstack",function() local function testf() return "fail",debug.setstack(1,1,"success"); end; if testf()~="success" then return false; end; return true; end) runTest("debug.setupvalue", function() local function upvalue() return "fail" end local function testf() return upvalue() end local newFunc = function() return "success" end debug.setupvalue(testf, 1, newFunc) local result = testf() if result ~= "success" then return false end return true end) local total = successCount + failCount + bugCount local rate = (total > 0) and math.floor((successCount / total) * 100) or 0 print("UNC Summary"); print("✅ Passes: " .. successCount); print("⛔ Fails: " .. failCount); print("⚠️ Globals with missing aliases: " .. bugCount); print("Tested success rate: " .. rate .. "% (" .. successCount .. "/" .. total .. ")\n");