MoreUNC Simplified
Key Required VerifiedUniversal

MoreUNC Simplified

Universal Scriptvxstyvxsty 150.5K views 20 executesUpdated Jul 2, 2024
1.0/ 5(24 votes)
51921% Positive
Lua Script•1694 lines (55472 chars)
--[[ hello very cool incognito / solara (mostly incognito because solara has most of these functions, just not all) script showcase!! 
pls dont steal source code :( 
also join https://discord.gg/gYhqMRBeZV because yes    
]]
--[[
 math support update because math is kewl
 new update:
 table loop update!!
]]
if getgenv and getgenv().MoreUNC then return end

-- Definitions
local table = table.clone(table) -- Prevent modifications from other scripts
local debug = table.clone(debug) -- ^^^^
local bit32 = table.clone(bit32)
local bit = bit32
local os = table.clone(os)
local math = table.clone(math)
local utf8 = table.clone(utf8)
local string = table.clone(string)
local task = table.clone(task)

local game = game -- game is game
local oldGame = game

local Version = '1.1.6'

local isDragging = false -- rconsole
local dragStartPos = nil -- rconsole
local frameStartPos = nil -- rconsole

local Data = game:GetService("TeleportService"):GetLocalPlayerTeleportData()
local TeleportData
if Data and Data.MOREUNCSCRIPTQUEUE then
	TeleportData = Data.MOREUNCSCRIPTQUEUE
end
if TeleportData then
	local func = loadstring(TeleportData)
	local s, e = pcall(func)
	if not s then task.spawn(error, e) end
end


print = print
warn = warn
error = error
pcall = pcall
printidentity = printidentity
ipairs = ipairs
pairs = pairs
tostring = tostring
tonumber = tonumber
setmetatable = setmetatable
rawget = rawget
rawset = rawset
getmetatable = getmetatable
type = type
version = version

-- Services / Instances
local HttpService = game:GetService('HttpService');
local Log = game:GetService('LogService');

local vim = Instance.new("VirtualInputManager");

local DrawingDict = Instance.new("ScreenGui") -- For drawing.new

local ClipboardUI = Instance.new("ScreenGui") -- For setclipboard

local hui = Instance.new("Folder") -- For gethui
hui.Name = '\0'

local ClipboardBox = Instance.new('TextBox', ClipboardUI) -- For setclipboard
ClipboardBox.Position = UDim2.new(100, 0, 100, 0) -- VERY off screen

-- All the following are for rconsole
local Console = Instance.new("ScreenGui")
local ConsoleFrame = Instance.new("Frame")
local Topbar = Instance.new("Frame")
local _CORNER = Instance.new("UICorner")
local ConsoleCorner = Instance.new("UICorner")
local CornerHide = Instance.new("Frame")
local DontModify = Instance.new("Frame")
local UICorner = Instance.new("UICorner")
local CornerHide2 = Instance.new("Frame")
local Title = Instance.new("TextLabel")
local UIPadding = Instance.new("UIPadding")
local ConsoleIcon = Instance.new("ImageLabel")
local Holder = Instance.new("ScrollingFrame")
local MessageTemplate = Instance.new("TextLabel")
local InputTemplate = Instance.new("TextBox")
local UIListLayout = Instance.new("UIListLayout")
local HolderPadding = Instance.new("UIPadding")

Console.Name = "Console"
Console.Parent = nil
Console.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

ConsoleFrame.Name = "ConsoleFrame"
ConsoleFrame.Parent = Console
ConsoleFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
ConsoleFrame.BorderColor3 = Color3.fromRGB(0, 0, 0)
ConsoleFrame.BorderSizePixel = 0
ConsoleFrame.Position = UDim2.new(0.0963890627, 0, 0.220791712, 0)
ConsoleFrame.Size = UDim2.new(0, 888, 0, 577)

Topbar.Name = "Topbar"
Topbar.Parent = ConsoleFrame
Topbar.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Topbar.BorderColor3 = Color3.fromRGB(0, 0, 0)
Topbar.BorderSizePixel = 0
Topbar.Position = UDim2.new(0, 0, -0.000463640812, 0)
Topbar.Size = UDim2.new(1, 0, 0, 32)

_CORNER.Name = "_CORNER"
_CORNER.Parent = Topbar

ConsoleCorner.Name = "ConsoleCorner"
ConsoleCorner.Parent = ConsoleFrame

CornerHide.Name = "CornerHide"
CornerHide.Parent = ConsoleFrame
CornerHide.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
CornerHide.BorderColor3 = Color3.fromRGB(0, 0, 0)
CornerHide.BorderSizePixel = 0
CornerHide.Position = UDim2.new(0, 0, 0.0280000009, 0)
CornerHide.Size = UDim2.new(1, 0, 0, 12)

DontModify.Name = "DontModify"
DontModify.Parent = ConsoleFrame
DontModify.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
DontModify.BorderColor3 = Color3.fromRGB(0, 0, 0)
DontModify.BorderSizePixel = 0
DontModify.Position = UDim2.new(0.98169291, 0, 0.0278581586, 0)
DontModify.Size = UDim2.new(-0.00675675692, 21, 0.972141862, 0)

UICorner.Parent = DontModify

CornerHide2.Name = "CornerHide2"
CornerHide2.Parent = ConsoleFrame
CornerHide2.AnchorPoint = Vector2.new(1, 0)
CornerHide2.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
CornerHide2.BorderColor3 = Color3.fromRGB(0, 0, 0)
CornerHide2.BorderSizePixel = 0
CornerHide2.Position = UDim2.new(1, 0, 0.0450000018, 0)
CornerHide2.Size = UDim2.new(0, 9, 0.955023408, 0)

Title.Name = "Title"
Title.Parent = ConsoleFrame
Title.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Title.BackgroundTransparency = 1.000
Title.BorderColor3 = Color3.fromRGB(0, 0, 0)
Title.BorderSizePixel = 0
Title.Position = UDim2.new(0.0440017432, 0, 0, 0)
Title.Size = UDim2.new(0, 164, 0, 30)
Title.Font = Enum.Font.GothamMedium
Title.Text = "rconsole title"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 17.000
Title.TextXAlignment = Enum.TextXAlignment.Left

UIPadding.Parent = Title
UIPadding.PaddingTop = UDim.new(0, 5)

ConsoleIcon.Name = "ConsoleIcon"
ConsoleIcon.Parent = ConsoleFrame
ConsoleIcon.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
ConsoleIcon.BackgroundTransparency = 1.000
ConsoleIcon.BorderColor3 = Color3.fromRGB(0, 0, 0)
ConsoleIcon.BorderSizePixel = 0
ConsoleIcon.Position = UDim2.new(0.00979213417, 0, 0.000874322082, 0)
ConsoleIcon.Size = UDim2.new(0, 31, 0, 31)
ConsoleIcon.Image = "http://www.roblox.com/asset/?id=11843683545"

Holder.Name = "Holder"
Holder.Parent = ConsoleFrame
Holder.Active = true
Holder.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Holder.BackgroundTransparency = 1.000
Holder.BorderColor3 = Color3.fromRGB(0, 0, 0)
Holder.BorderSizePixel = 0
Holder.Position = UDim2.new(0, 0, 0.054600548, 0)
Holder.Size = UDim2.new(1, 0, 0.945399463, 0)
Holder.ScrollBarThickness = 8
Holder.CanvasSize = UDim2.new(0,0,0,0)
Holder.AutomaticCanvasSize = Enum.AutomaticSize.XY

MessageTemplate.Name = "MessageTemplate"
MessageTemplate.Parent = Holder
MessageTemplate.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
MessageTemplate.BackgroundTransparency = 1.000
MessageTemplate.BorderColor3 = Color3.fromRGB(0, 0, 0)
MessageTemplate.BorderSizePixel = 0
MessageTemplate.Size = UDim2.new(0.9745, 0, 0.030000001, 0)
MessageTemplate.Visible = false
MessageTemplate.Font = Enum.Font.RobotoMono
MessageTemplate.Text = "TEMPLATE"
MessageTemplate.TextColor3 = Color3.fromRGB(255, 255, 255)
MessageTemplate.TextSize = 20.000
MessageTemplate.TextXAlignment = Enum.TextXAlignment.Left
MessageTemplate.TextYAlignment = Enum.TextYAlignment.Top
MessageTemplate.RichText = true

UIListLayout.Parent = Holder
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0, 4)

HolderPadding.Name = "HolderPadding"
HolderPadding.Parent = Holder
HolderPadding.PaddingLeft = UDim.new(0, 15)
HolderPadding.PaddingTop = UDim.new(0, 15)

InputTemplate.Name = "InputTemplate"
InputTemplate.Parent = nil
InputTemplate.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
InputTemplate.BackgroundTransparency = 1.000
InputTemplate.BorderColor3 = Color3.fromRGB(0, 0, 0)
InputTemplate.BorderSizePixel = 0
InputTemplate.Size = UDim2.new(0.9745, 0, 0.030000001, 0)
InputTemplate.Visible = false
InputTemplate.RichText = true
InputTemplate.Font = Enum.Font.RobotoMono
InputTemplate.Text = ""
InputTemplate.PlaceholderText = ''
InputTemplate.TextColor3 = Color3.fromRGB(255, 255, 255)
InputTemplate.TextSize = 20.000
InputTemplate.TextXAlignment = Enum.TextXAlignment.Left
InputTemplate.TextYAlignment = Enum.TextYAlignment.Top

-- Variables
local Identity = -1
local active = true
-- Others
local oldLoader = loadstring
-- Empty Tables
local clonerefs = {}
local protecteduis = {}
local gc = {}
local Instances = {} -- for nil instances
local funcs = {} -- main table
local names = {} -- protected gui names
local Cache = {} -- for cached instances
local Drawings = {} -- for cleardrawcache
-- Non empty tables
local colors = {
	BLACK = Color3.fromRGB(50, 50, 50),
	BLUE = Color3.fromRGB(0, 0, 204),
	GREEN = Color3.fromRGB(0, 255, 0),
	CYAN = Color3.fromRGB(0, 255, 255),
	RED = Color3.fromHex('#5A0101'),
	MAGENTA = Color3.fromRGB(255, 0, 255),
	BROWN = Color3.fromRGB(165, 42, 42),
	LIGHT_GRAY = Color3.fromRGB(211, 211, 211),
	DARK_GRAY = Color3.fromRGB(169, 169, 169),
	LIGHT_BLUE = Color3.fromRGB(173, 216, 230),
	LIGHT_GREEN = Color3.fromRGB(144, 238, 144),
	LIGHT_CYAN = Color3.fromRGB(224, 255, 255),
	LIGHT_RED = Color3.fromRGB(255, 204, 203),
	LIGHT_MAGENTA = Color3.fromRGB(255, 182, 193),
	YELLOW = Color3.fromRGB(255, 255, 0),
	WHITE = Color3.fromRGB(255, 255, 255),
	ORANGE = Color3.fromRGB(255, 186, 12)
}
local patterns = {
	{ pattern = '(%w+)%s*%+=%s*(%w+)', format = "%s = %s + %s" },
	{ pattern = '(%w+)%s*%-=%s*(%w+)', format = "%s = %s - %s" },
	{ pattern = '(%w+)%s*%*=%s*(%w+)', format = "%s = %s * %s" },
	{ pattern = '(%w+)%s*/=%s*(%w+)', format = "%s = %s / %s" }
}
local patterns2 = {
	{ pattern = 'for%s+(%w+)%s*,%s*(%w+)%s*in%s*(%w+)%s*do', format = "for %s, %s in pairs(%s) do" }
}
local renv = {
	print, warn, error, assert, collectgarbage, load, require, select, tonumber, tostring, type, xpcall, pairs, next, ipairs,
	newproxy, rawequal, rawget, rawset, rawlen, setmetatable, PluginManager,
	coroutine.create, coroutine.resume, coroutine.running, coroutine.status, coroutine.wrap, coroutine.yield,
	bit32.arshift, bit32.band, bit32.bnot, bit32.bor, bit32.btest, bit32.extract, bit32.lshift, bit32.replace, bit32.rshift, bit32.xor,
	math.abs, math.acos, math.asin, math.atan, math.atan2, math.ceil, math.cos, math.cosh, math.deg, math.exp, math.floor, math.fmod, math.frexp, math.ldexp, math.log, math.log10, math.max, math.min, math.modf, math.pow, math.rad, math.random, math.randomseed, math.sin, math.sinh, math.sqrt, math.tan, math.tanh,
	string.byte, string.char, string.find, string.format, string.gmatch, string.gsub, string.len, string.lower, string.match, string.pack, string.packsize, string.rep, string.reverse, string.sub, string.unpack, string.upper,
	table.concat, table.insert, table.pack, table.remove, table.sort, table.unpack,
	utf8.char, utf8.charpattern, utf8.codepoint, utf8.codes, utf8.len, utf8.nfdnormalize, utf8.nfcnormalize,
	os.clock, os.date, os.difftime, os.time,
	delay, elapsedTime, require, spawn, tick, time, typeof, UserSettings, version, wait,
	task.defer, task.delay, task.spawn, task.wait,
	debug.traceback, debug.profilebegin, debug.profileend
}
local keys={[0x08]=Enum.KeyCode.Backspace,[0x09]=Enum.KeyCode.Tab,[0x0C]=Enum.KeyCode.Clear,[0x0D]=Enum.KeyCode.Return,[0x10]=Enum.KeyCode.LeftShift,[0x11]=Enum.KeyCode.LeftControl,[0x12]=Enum.KeyCode.LeftAlt,[0x13]=Enum.KeyCode.Pause,[0x14]=Enum.KeyCode.CapsLock,[0x1B]=Enum.KeyCode.Escape,[0x20]=Enum.KeyCode.Space,[0x21]=Enum.KeyCode.PageUp,[0x22]=Enum.KeyCode.PageDown,[0x23]=Enum.KeyCode.End,[0x24]=Enum.KeyCode.Home,[0x2D]=Enum.KeyCode.Insert,[0x2E]=Enum.KeyCode.Delete,[0x30]=Enum.KeyCode.Zero,[0x31]=Enum.KeyCode.One,[0x32]=Enum.KeyCode.Two,[0x33]=Enum.KeyCode.Three,[0x34]=Enum.KeyCode.Four,[0x35]=Enum.KeyCode.Five,[0x36]=Enum.KeyCode.Six,[0x37]=Enum.KeyCode.Seven,[0x38]=Enum.KeyCode.Eight,[0x39]=Enum.KeyCode.Nine,[0x41]=Enum.KeyCode.A,[0x42]=Enum.KeyCode.B,[0x43]=Enum.KeyCode.C,[0x44]=Enum.KeyCode.D,[0x45]=Enum.KeyCode.E,[0x46]=Enum.KeyCode.F,[0x47]=Enum.KeyCode.G,[0x48]=Enum.KeyCode.H,[0x49]=Enum.KeyCode.I,[0x4A]=Enum.KeyCode.J,[0x4B]=Enum.KeyCode.K,[0x4C]=Enum.KeyCode.L,[0x4D]=Enum.KeyCode.M,[0x4E]=Enum.KeyCode.N,[0x4F]=Enum.KeyCode.O,[0x50]=Enum.KeyCode.P,[0x51]=Enum.KeyCode.Q,[0x52]=Enum.KeyCode.R,[0x53]=Enum.KeyCode.S,[0x54]=Enum.KeyCode.T,[0x55]=Enum.KeyCode.U,[0x56]=Enum.KeyCode.V,[0x57]=Enum.KeyCode.W,[0x58]=Enum.KeyCode.X,[0x59]=Enum.KeyCode.Y,[0x5A]=Enum.KeyCode.Z,[0x5D]=Enum.KeyCode.Menu,[0x60]=Enum.KeyCode.KeypadZero,[0x61]=Enum.KeyCode.KeypadOne,[0x62]=Enum.KeyCode.KeypadTwo,[0x63]=Enum.KeyCode.KeypadThree,[0x64]=Enum.KeyCode.KeypadFour,[0x65]=Enum.KeyCode.KeypadFive,[0x66]=Enum.KeyCode.KeypadSix,[0x67]=Enum.KeyCode.KeypadSeven,[0x68]=Enum.KeyCode.KeypadEight,[0x69]=Enum.KeyCode.KeypadNine,[0x6A]=Enum.KeyCode.KeypadMultiply,[0x6B]=Enum.KeyCode.KeypadPlus,[0x6D]=Enum.KeyCode.KeypadMinus,[0x6E]=Enum.KeyCode.KeypadPeriod,[0x6F]=Enum.KeyCode.KeypadDivide,[0x70]=Enum.KeyCode.F1,[0x71]=Enum.KeyCode.F2,[0x72]=Enum.KeyCode.F3,[0x73]=Enum.KeyCode.F4,[0x74]=Enum.KeyCode.F5,[0x75]=Enum.KeyCode.F6,[0x76]=Enum.KeyCode.F7,[0x77]=Enum.KeyCode.F8,[0x78]=Enum.KeyCode.F9,[0x79]=Enum.KeyCode.F10,[0x7A]=Enum.KeyCode.F11,[0x7B]=Enum.KeyCode.F12,[0x90]=Enum.KeyCode.NumLock,[0x91]=Enum.KeyCode.ScrollLock,[0xBA]=Enum.KeyCode.Semicolon,[0xBB]=Enum.KeyCode.Equals,[0xBC]=Enum.KeyCode.Comma,[0xBD]=Enum.KeyCode.Minus,[0xBE]=Enum.KeyCode.Period,[0xBF]=Enum.KeyCode.Slash,[0xC0]=Enum.KeyCode.Backquote,[0xDB]=Enum.KeyCode.LeftBracket,[0xDD]=Enum.KeyCode.RightBracket,[0xDE]=Enum.KeyCode.Quote} -- for keypress
local Fonts = { -- Drawing.Fonts
	[0] = Enum.Font.Arial,
	[1] = Enum.Font.BuilderSans,
	[2] = Enum.Font.Gotham,
	[3] = Enum.Font.RobotoMono
}
-- rconsole
local MessageColor = colors['WHITE']
local ConsoleClone = nil
-- functions
local function Descendants(tbl)
	local descendants = {}

	local function process_table(subtbl, prefix)
		for k, v in pairs(subtbl) do
			local index = prefix and (prefix .. "." .. tostring(k)) or tostring(k)
			descendants[index] = v
			if type(v) == 'table' then
				process_table(v, index)
			else
				descendants[index] = v
			end
		end
	end

	if type(tbl) ~= 'table' then
		descendants[tostring(1)] = tbl
	else
		process_table(tbl, nil)
	end

	return descendants
end

local function rawlength(tbl)
	local a = 0
	for i, v in pairs(tbl) do
		a = a + 1
	end
	return a
end

local function ToPairsLoop(code)
	for _, p in ipairs(patterns2) do
		code = code:gsub(p.pattern, function(var1, var2, tbl)
			return p.format:format(var1, var2, tbl)
		end)
	end
	return code
end

local function SafeOverride(a, b, c) --[[ Index, Data, Should override ]]
	if getgenv()[a] and not c then return 1 end
	getgenv()[a] = b

	return 2
end

local function toluau(code)
	for _, p in ipairs(patterns) do
		code = code:gsub(p.pattern, function(var, value)
			return p.format:format(var, var, value)
		end)
	end
	code = ToPairsLoop(code)
	return code
end

local function handleInput(input, Object)
	if isDragging then
		local delta = input.Position - dragStartPos
		Object.Position = UDim2.new(
			frameStartPos.X.Scale, 
			frameStartPos.X.Offset + delta.X, 
			frameStartPos.Y.Scale, 
			frameStartPos.Y.Offset + delta.Y
		)
	end
end

local function startDrag(input, Object)
	isDragging = true
	dragStartPos = input.Position
	frameStartPos = Object.Position
	input.UserInputState = Enum.UserInputState.Begin
end

local function stopDrag(input)
	isDragging = false
	input.UserInputState = Enum.UserInputState.End
end

-- Main Functions
function QueueGetIdentity()
	printidentity()
	task.wait(.1)
	local messages = Log:GetLogHistory()
	local message;
	if not messages[#messages].message:match("Current identity is") then
		for i = #messages, 1, -1 do
			if messages[i].message:match("Current identity is %d") then
				message = messages[i].message
				break
			end
		end
	else
		message = messages[#messages].message:match('Current identity is %d'):gsub("Current identity is ", '')
	end
	Identity = tonumber(message)
end
local Queue = {}
Queue.__index = Queue
function Queue.new()
	local self = setmetatable({}, Queue)
	self.elements = {}
	return self
end

function Queue:Queue(element)
	table.insert(self.elements, element)
end

function Queue:Update()
	if #self.elements == 0 then
		return nil
	end
	return table.remove(self.elements, 1)
end

function Queue:IsEmpty()
	return #self.elements == 0
end
function Queue:Current()
	return self.elements
end

-- Events
game.DescendantRemoving:Connect(function(des)
	table.insert(Instances, des)
	Cache[des] = 'REMOVE'
end)
game.DescendantAdded:Connect(function(des)
	Cache[des] = true
end)
game:GetService("UserInputService").WindowFocused:Connect(function()
	active = true
end)

game:GetService("UserInputService").WindowFocusReleased:Connect(function()
	active = false
end)

game:GetService("UserInputService").InputChanged:Connect(function(input)
	if not input then return end
	if isDragging and input.UserInputType == Enum.UserInputType.MouseMovement and ConsoleClone then
		handleInput(input, ConsoleClone.ConsoleFrame)
	end
end)

game:GetService("UserInputService").InputEnded:Connect(function(input)
	if not input then return end
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		stopDrag(input)
	end
end)
-- Libraries
funcs.base64 = {}
funcs.crypt = {hex={},url={}}
funcs.syn = {}
funcs.syn_backup = {}
funcs.http = {}
funcs.Drawing = {}
funcs.cache = {}
funcs.string = string
funcs.debug = debug
funcs.debug.getinfo = function(t)
	local CurrentLine = tonumber(debug.info(t, 'l'))
	local Source = debug.info(t, 's')
	local name = debug.info(t, 'n')
	local numparams, isvrg = debug.info(t, 'a')
	if #name == 0 then name = nil end
	local a, b = debug.info(t, 'a')
	return {
		['currentline'] = CurrentLine,
		['source'] = Source,
		['name'] = tostring(name),
		['numparams'] = tonumber(numparams),
		['is_vararg'] = isvrg and 1 or 0,
		['short_src'] = tostring(Source:sub(1, 60)),
		['what'] = Source == '[C]' and 'C' or 'Lua',
		['func'] = t,
		['nups'] = 0 -- i CANNOT make an upvalue thingy
	}
end

funcs.Drawing.Fonts = {
	['UI'] = 0,
	['System'] = 1,
	['Plex'] = 2,
	['Monospace'] = 3
}


local ClipboardQueue = Queue.new()
local ConsoleQueue = Queue.new()
local getgenv = getgenv or function() return getfenv(1) end
getgenv().getgenv = getgenv

-- [[ Functions ]]

--[[funcs.cloneref = function(a)
    if not clonerefs[a] then clonerefs[a] = {} end
    local Clone = {}

    local mt = {__type='Instance'} -- idk if this works ;(

    mt.__tostring = function()
        return a.Name
    end

    mt.__index = function(_, key)
        local thing = funcs.debug.getmetatable(a)[key]
        if type(thing) == 'function' then
            return function(...)
                return thing(a, ...)
            end
        else
            return thing
        end
    end
    mt.__newindex = function(_, key, value)
     a[key] = value
    end
    mt.__metatable = getmetatable(a)
    mt.__len = function(_)
     return error('attempt to get length of a userdata value')
    end

    setmetatable(Clone, mt)

    table.insert(clonerefs[a], Clone)

    return Clone
end
TEMPORARY REMOVED UNTIL WE FIND A FIX
]]
-- // The rest is made by me.

funcs.compareinstances = function(a, b)
	if not clonerefs[a] then
		return a == b
	else
		if table.find(clonerefs[a], b) then return true end
	end
	return false
end

funcs.clonefunction = function(a)
	assert(type(a)=='function', 'Invalid parameter 1 to \'clonefunction\', function expected got ' .. typeof(a))

	return function(...)
		local Copy = Sandbox(a, {}, {}, {}, 0, {...})
		return Copy.return_value
	end
end

funcs.cache.iscached = function(thing)
	return Cache[thing] ~= 'REMOVE' and thing:IsDescendantOf(game) or false -- If it's cache isnt 'REMOVE' and its a des of game (Usually always true) or if its cache is 'REMOVE' then its false.
end
funcs.cache.invalidate = function(thing)
	Cache[thing] = 'REMOVE'
	thing.Parent = nil
end
funcs.cache.replace = function(a, b)
	if Cache[a] then
		Cache[a] = b
	end
	local n, p = a.Name, a.Parent -- name, parent
	b.Parent = p
	b.Name = n
	a.Parent = nil
end
funcs.deepclone = function(a)
	local Result = {}
	for i, v in pairs(a) do
		if type(v) == 'table' then
			Result[i] = funcs.deepclone(v)
		end
		Result[i] = v
	end
	return Result
end
--[[ The base64 functions were made by https://scriptblox.com/u/yofriendfromschool1 , Credits to him.]]
funcs.base64.encode = function(data)
	local letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
	return ((data:gsub('.', function(x) 
		local r,b='',x:byte()
		for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
		return r;
	end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
		if (#x < 6) then return '' end
		local c=0
		for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
		return letters:sub(c+1,c+1)
	end)..({ '', '==', '=' })[#data%3+1])
end
funcs.base64.decode = function(data)
	local b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
	data = string.gsub(data, '[^'..b..'=]', '')
	return (data:gsub('.', function(x)
		if x == '=' then return '' end
		local r, f = '', (b:find(x) - 1)
		for i = 6, 1, -1 do
			r = r .. (f % 2^i - f % 2^(i - 1) > 0 and '1' or '0')
		end
		return r;
	end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
		if #x ~= 8 then return '' end
		local c = 0
		for i = 1, 8 do
			c = c + (x:sub(i, i) == '1' and 2^(8 - i) or 0)
		end
		return string.char(c)
	end))
end

funcs.loadstring = function(code)
	local s1, val1 = pcall(function()
		return loadstring('local v1=15;v1+=1;return v1')()
	end)
	local s2, val2 = pcall(function()
		return loadstring('local v1={"a"};for i, v in v1 do return v end')()
	end)
	if val1 ~= 16 and val2 ~= 'a' then
		return oldLoader(toluau(code))
	else
		return oldLoader(code)
	end
end
funcs.getgenv = getgenv
funcs.crypt.base64 = funcs.base64
funcs.crypt.base64encode = funcs.base64.encode
funcs.crypt.base64decode = funcs.base64.decode
funcs.crypt.base64_encode = funcs.base64.encode
funcs.crypt.base64_decode = funcs.base64.decode
funcs.base64_encode = funcs.base64.encode
funcs.base64_decode = funcs.base64.decode

funcs.crypt.hex.encode = function(txt)
	txt = tostring(txt)
	local hex = ''
	for i = 1, #txt do
		hex = hex .. string.format("%02x", string.byte(txt, i))
	end
	return hex
end
funcs.crypt.hex.decode = function(hex)
	hex = tostring(hex)
	local text = ""
	for i = 1, #hex, 2 do
		local byte_str = string.sub(hex, i, i+1)
		local byte = tonumber(byte_str, 16)
		text = text .. string.char(byte)
	end
	return text
end
funcs.crypt.url.encode = function(a)
	return game:GetService("HttpService"):UrlEncode(a)
end
funcs.crypt.url.decode = function(a)
	a = tostring(a)
	a = string.gsub(a, "+", " ")
	a = string.gsub(a, "%%(%x%x)", function(hex)
		return string.char(tonumber(hex, 16))
	end)
	a = string.gsub(a, "\r\n", "\n")
	return a
end
funcs.crypt.generatekey = function(optionalSize)
	local key = ''
	local a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
	for i = 1, optionalSize or 32 do local n = math.random(1, #a) key = key .. a:sub(n, n) end
	return funcs.base64.encode(key)
end
funcs.crypt.generatebytes = function(size)
	if type(size) ~= 'number' then return error('missing arguement #1 to \'generatebytes\' (number expected)') end
	return funcs.crypt.generatekey(size)
end
funcs.crypt.encrypt = function(a, b)
	local result = {}
	a = tostring(a) b = tostring(b)
	for i = 1, #a do
		local byte = string.byte(a, i)
		local keyByte = string.byte(b, (i - 1) % #b + 1)
		table.insert(result, string.char(bit32.bxor(byte, keyByte)))
	end
	return table.concat(result)
end
funcs.crypt.decrypt = funcs.crypt.encrypt
funcs.crypt.random = function(len)
	return funcs.crypt.generatekey(len)
end

funcs.isrbxactive = function()
	return active
end
funcs.isgameactive = funcs.isrbxactive
funcs.gethui = function()
	local s, H = pcall(function()
		return game:GetService("CoreGui").RobloxGui
	end)
	if H then
		if not hui.Parent then
			hui.Parent = H.Parent
		end
		return hui
	else
		if not hui.Parent then
			hui.Parent = game:GetService("Players").LocalPlayer.PlayerGui
		end
	end
	return hui
end
if getgenv().getrenv and #getgenv().getrenv() == 0 or not getgenv().getrenv then
	getgenv().getrenv = nil
	getgenv().getrenv = function() -- Override incognito's getrenv
		return renv -- couldn't think of a better way to implement it
	end
end
funcs.setclipboard = function(data)
	repeat task.wait() until ClipboardQueue:Current()[1] == data or ClipboardQueue:IsEmpty()
	ClipboardQueue:Queue(data)
	local old = game:GetService("UserInputService"):GetFocusedTextBox()
	local copy = ClipboardQueue:Current()[1]
	ClipboardBox:CaptureFocus()
	ClipboardBox.Text = copy

	local KeyCode = Enum.KeyCode
	local Keys = {KeyCode.RightControl, KeyCode.A}
	local Keys2 = {KeyCode.RightControl, KeyCode.C, KeyCode.V}

	for _, v in ipairs(Keys) do
		vim:SendKeyEvent(true, v, false, game)
		task.wait()
	end
	for _, v in ipairs(Keys) do
		vim:SendKeyEvent(false, v, false, game)
		task.wait()
	end
	for _, v in ipairs(Keys2) do
		vim:SendKeyEvent(true, v, false, game)
		task.wait()
	end
	for _, v in ipairs(Keys2) do
		vim:SendKeyEvent(false, v, false, game)
		task.wait()
	end
	ClipboardBox.Text = ''
	if old then old:CaptureFocus() end
	task.wait(.18)
	ClipboardQueue:Update()
end
funcs.syn.write_clipboard = funcs.setclipboard
funcs.toclipboard = funcs.setclipboard
funcs.writeclipboard = funcs.setclipboard
funcs.setrbxclipboard = funcs.setclipboard

funcs.isrenderobj = function(thing)
	return Drawings[thing] ~= nil
end
funcs.getrenderproperty = function(thing, prop)
	return thing[prop]
end
funcs.setrenderproperty = function(thing, prop, val)
	local success, err = pcall(function()
		thing[prop] = val
	end)
	if not success and err then warn(err) end
end

funcs.syn.protect_gui = function(gui)
	names[gui] = {name=gui.Name,parent=gui.Parent}
	protecteduis[gui] = gui
	gui.Name = funcs.crypt.random(64) -- 64 byte string, removed hashing cuz its useless lmao
	gui.Parent = gethui()
end
funcs.syn.unprotect_gui = function(gui)
	if names[gui] then gui.Name = names[gui].name gui.Parent = names[gui].parent end protecteduis[gui] = nil
end
funcs.syn.protectgui = funcs.syn.protect_gui
funcs.syn.unprotectgui = funcs.syn.unprotect_gui
funcs.syn.secure_call = function(func) -- Does not do a secure call, just pcalls it.
	return pcall(func)
end


funcs.isreadonly = function(tbl)
	if type(tbl) ~= 'table' then return false end
	return table.isfrozen(tbl)
end
funcs.setreadonly = function(tbl, cond)
	if cond then
		table.freeze(tbl)
	else
		return funcs.deepclone(tbl)
	end
end
funcs.httpget = function(url)
	return game:HttpGet(url)
end
funcs.httppost = function(url, body, contenttype)
	return game:HttpPostAsync(url, body, contenttype)
end
funcs.request = function(args)
	local Body = nil
	local Timeout = 0
	local function callback(success, body)
		Body = body
		Body['Success'] = success
	end
	HttpService:RequestInternal(args):Start(callback)
	while not Body and Timeout < 10 do
		task.wait(.1)
		Timeout = Timeout + .1
	end
	return Body
end
funcs.mouse1click = function(x, y)
	x = x or 0
	y = y or 0
	vim:SendMouseButtonEvent(x, y, 0, true, game, false)
	task.wait()
	vim:SendMouseButtonEvent(x, y, 0, false, game, false)
end
funcs.mouse2click = function(x, y)
	x = x or 0
	y = y or 0
	vim:SendMouseButtonEvent(x, y, 1, true, game, false)
	task.wait()
	vim:SendMouseButtonEvent(x, y, 1, false, game, false)
end
funcs.mouse1press = function(x, y)
	x = x or 0
	y = y or 0
	vim:SendMouseButtonEvent(x, y, 0, true, game, false)
end
funcs.mouse1release = function(x, y)
	x = x or 0
	y = y or 0
	vim:SendMouseButtonEvent(x, y, 0, false, game, false)
end
funcs.mouse2press = function(x, y)
	x = x or 0
	y = y or 0
	vim:SendMouseButtonEvent(x, y, 1, true, game, false)
end
funcs.mouse2release = function(x, y)
	x = x or 0
	y = y or 0
	vim:SendMouseButtonEvent(x, y, 1, false, game, false)
end
funcs.mousescroll = function(x, y, a)
	x = x or 0
	y = y or 0
	a = a and true or false
	vim:SendMouseWheelEvent(x, y, a, game)
end
funcs.keyclick = function(key)
	if typeof(key) == 'number' then
		if not keys[key] then return error("Key "..tostring(key) .. ' not found!') end
		vim:SendKeyEvent(true, keys[key], false, game)
		task.wait()
		vim:SendKeyEvent(false, keys[key], false, game)
	elseif typeof(Key) == 'EnumItem' then
		vim:SendKeyEvent(true, key, false, game)
		task.wait()
		vim:SendKeyEvent(false, key, false, game)
	end
end
funcs.keypress = function(key)
	if typeof(key) == 'number' then
		if not keys[key] then return error("Key "..tostring(key) .. ' not found!') end
		vim:SendKeyEvent(true, keys[key], false, game)
	elseif typeof(Key) == 'EnumItem' then
		vim:SendKeyEvent(true, key, false, game)
	end
end
funcs.keyrelease = function(key)
	if typeof(key) == 'number' then
		if not keys[key] then return error("Key "..tostring(key) .. ' not found!') end
		vim:SendKeyEvent(false, keys[key], false, game)
	elseif typeof(Key) == 'EnumItem' then
		vim:SendKeyEvent(false, key, false, game)
	end
end
funcs.mousemoverel = function(relx, rely)
	local Pos = workspace.CurrentCamera.ViewportSize
	relx = relx or 0
	rely = rely or 0
	local x = Pos.X * relx
	local y = Pos.Y * rely
	vim:SendMouseMoveEvent(x, y, game)
end
funcs.mousemoveabs = function(x, y)
	x = x or 0 y = y or 0
	vim:SendMouseMoveEvent(x, y, game)
end

funcs.newcclosure = function(f)
	local a = coroutine.wrap(function(...)
		local b = {coroutine.yield()}
		while true do
			b = {coroutine.yield(f(table.unpack(b)))}
		end
	end)
	a()
	return a
end -- Credits to myworld AND EMPER for this
funcs.iscclosure = function(fnc) return debug.info(fnc, 's') == '[C]' end
funcs.islclosure = function(func) return not funcs.iscclosure(func) end
funcs.isexecutorclosure = function(fnc)
	local found = false
	for i, v in pairs(getgenv()) do
		if v == fnc then return true end
	end
	for i = 1, math.huge do
		local s, env = pcall(getfenv, i)
		if not s or found then break end
		if type(env) == "table" then
			for _, v in pairs(env) do
				if v == fnc then
					found = true
					break
				end
			end
		end
		if found then break end
	end

	return found
end
funcs.newlclosure = function(fnc)
	return function(...) return fnc(...) end
end
funcs.clonefunction = funcs.newlclosure
funcs.is_l_closure = funcs.islclosure
funcs.is_executor_closure = funcs.isexecutorclosure
funcs.isourclosure = funcs.isexecutorclosure
funcs.isexecclosure = funcs.isexecutorclosure
funcs.checkclosure = funcs.isourclosure

--[[ File system is something i do not know how to implement in roblox lua.
UPDATE AT 18/5/2024:
I figured out i can use temp file system with tables.
]]
local files = {}

local function startswith(a, b)
	return a:sub(1, #b) == b
end
local function endswith(hello, lo) 
	return hello:sub(#hello - #lo + 1, #hello) == lo
end

funcs.writefile = function(path, content)
	local Path = path:split('/')
	local CurrentPath = {}
	for i = 1, #Path do
		local a = Path[i]
		CurrentPath[i] = a
		if not files[a] and i ~= #Path then
			files[table.concat(CurrentPath, '/')] = {}
			files[table.concat(CurrentPath, '/') .. '/'] = files[table.concat(CurrentPath, '/')]
		elseif i == #Path then
			files[table.concat(CurrentPath, '/')] = tostring(content)
		end
	end
end
funcs.makefolder = function(path)
	files[path] = {}
	files[path .. '/'] = files[path]
end
funcs.isfolder = function(path)
	return type(files[path]) == 'table'
end
funcs.isfile = function(path)
	return type(files[path]) == 'string'
end
funcs.readfile = function(path)
	return files[path]
end
funcs.appendfile = function(path, text2)
	funcs.writefile(path, funcs.readfile(path) .. text2)
end
funcs.loadfile = function(path)
	local content = funcs.readfile(path)
	if not content then error('File \'' .. tostring(path) .. '\' does not exist.') return '' end
	local s, func = pcall(function()
		return loadstring(content)
	end)
	return func, not s and func or nil
end
funcs.delfolder = function(path)
	local f = files[path]
	if type(f) == 'table' then files[path] = nil end
end
funcs.delfile = function(path)
	local f = files[path]
	if type(f) == 'string' then files[path] = nil end
end
funcs.listfiles = function(path)
	if not path or path == '' then
		local Files = {}
		for i, v in pairs(files) do
			if #i:split('/') == 1 then table.insert(Files, i) end
		end
		return Files
	end
	if type(files[path]) ~= 'table' then return error(path .. ' is not a folder.') end
	local Files = {}
	for i, v in pairs(files) do
		if startswith(i, path .. '/') and not endswith(i, '/') and i ~= path and #i:split('/') == (#path:split('/') + 1) then table.insert(Files, i) end
	end
	return Files
end

funcs.http.request = funcs.request
funcs.syn.crypt = funcs.crypt
funcs.syn.crypto = funcs.crypt
funcs.syn_backup = funcs.syn


funcs.getexecutorname = function()
	return 'MoreUNC', Version
end
funcs.identifyexecutor = funcs.getexecutorname
funcs.http_request = getgenv().request or funcs.request
funcs.getscripts = function()
	local a = {};for i, v in pairs(game:GetDescendants()) do if v:IsA("LocalScript") or v:IsA("ModuleScript") then table.insert(a, v) end end return a
end
funcs.get_scripts = function()
	local a = {};for i, v in pairs(game:GetDescendants()) do if v:IsA("LocalScript") or v:IsA("ModuleScript") then table.insert(a, v) end end return a
end
funcs.getmodules = function()
	local a = {};for i, v in pairs(game:GetDescendants()) do if v:IsA("ModuleScript") then table.insert(a, v) end end return a
end
funcs.getloadedmodules = funcs.getmodules
funcs.make_readonly = funcs.setreadonly
funcs.makereadonly = funcs.setreadonly
funcs.base64encode = funcs.crypt.base64encode
funcs.base64decode = funcs.crypt.base64decode
funcs.clonefunc = funcs.clonefunction
funcs.setsimulationradius = function(Distance, MaxDistance)
	local LocalPlayer = game:GetService("Players").LocalPlayer
	assert(type(Distance)=='number','Invalid arguement #1 to \'setsimulationradius\', Number expected got ' .. type(Distance))
	LocalPlayer.SimulationRadius = type(Distance) == 'number' and Distance or LocalPlayer.SimulationRadius
	if MaxDistance then
		assert(type(MaxDistance)=='number','Invalid arguement #2 to \'setsimulationradius\', Number expected got ' .. type(MaxDistance))
		LocalPlayer.MaxSimulationDistance = MaxDistance
	end
end
funcs.getinstances = function()
	return game:GetDescendants()
end
funcs.getnilinstances = function()
	return Instances
end
funcs.iswriteable = function(tbl)
	return not table.isfrozen(tbl)
end
funcs.makewriteable = function(tbl)
	return funcs.setreadonly(tbl, false)
end
funcs.isscriptable = function(self, prop)
	return table.find(Hidden, prop) == nil
end
funcs.getrunningscripts = function()
	local scripts = {}
	for _, v in pairs(funcs.getinstances()) do
		if v:IsA("LocalScript") and v.Enabled then table.insert(scripts, v) end
	end
	return scripts
end
funcs.fireproximityprompt = function(p)
	local Hold, Distance, Enabled, Thing, CFrame1= p.HoldDuration, p.MaxActivationDistance, p.Enabled, p.RequiresLineOfSight, nil
	-- Make it activatable from anywhere
	p.MaxActivationDistance = math.huge
	-- Make it take 0 seconds to activate
	p.HoldDuration = 0
	-- Make it enabled (so you can activate it)
	p.Enabled = true
	-- Disable RequiresLineOfSight
	p.RequiresLineOfSight = false
	-- Show the thingy
	local function get()
		local classes = {'BasePart', 'Part', 'MeshPart'}
		for _, v in pairs(classes) do
			if p:FindFirstAncestorOfClass(v) then
				return p:FindFirstAncestorOfClass(v)
			end
		end
	end
	local a = get()
	if not a then
		local parent = p.Parent
		p.Parent = Instance.new("Part", workspace)
		a = p.Parent
	end
	CFrame1 = a.CFrame
	a.CFrame = game:GetService("Players").LocalPlayer.Character.Head.CFrame + game:GetService("Players").LocalPlayer.Character.Head.CFrame.LookVector * 2
	task.wait()
	p:InputHoldBegin()
	task.wait()
	p:InputHoldEnd()
	p.HoldDuration = Hold
	p.MaxActivationDistance = Distance
	p.Enabled = Enabled
	p.RequiresLineOfSight = Thing
	a.CFrame = CFrame1
	p.Parent = parent or p.Parent
end
funcs.firetouchinterest = function(toTouch, TouchWith, on)
	if on == 0 then return end
	if toTouch.ClassName == 'TouchTransmitter' then
		local function get()
			local classes = {'BasePart', 'Part', 'MeshPart'}
			for _, v in pairs(classes) do
				if toTouch:FindFirstAncestorOfClass(v) then
					return toTouch:FindFirstAncestorOfClass(v)
				end
			end
		end
		toTouch = get()
	end
	local cf = toTouch.CFrame
	local anc = toTouch.CanCollide
	toTouch.CanCollide = false
	toTouch.CFrame = TouchWith.CFrame
	task.wait()
	toTouch.CFrame = cf
	toTouch.CanCollide = anc
end -- i admit its kinda bad dont fucking attack me

-- SHA256 Hashing
local function str2hexa(a)return string.gsub(a,".",function(b)return string.format("%02x",string.byte(b))end)end;local function num2s(c,d)local a=""for e=1,d do local f=c%256;a=string.char(f)..a;c=(c-f)/256 end;return a end;local function s232num(a,e)local d=0;for g=e,e+3 do d=d*256+string.byte(a,g)end;return d end;local function preproc(h,i)local j=64-(i+9)%64;i=num2s(8*i,8)h=h.."\128"..string.rep("\0",j)..i;assert(#h%64==0)return h end;local function k(h,e,l)local m={}local n={0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2}for g=1,16 do m[g]=s232num(h,e+(g-1)*4)end;for g=17,64 do local o=m[g-15]local p=bit.bxor(bit.rrotate(o,7),bit.rrotate(o,18),bit.rshift(o,3))o=m[g-2]local q=bit.bxor(bit.rrotate(o,17),bit.rrotate(o,19),bit.rshift(o,10))m[g]=(m[g-16]+p+m[g-7]+q)%2^32 end;local r,s,b,t,u,v,w,x=l[1],l[2],l[3],l[4],l[5],l[6],l[7],l[8]for e=1,64 do local p=bit.bxor(bit.rrotate(r,2),bit.rrotate(r,13),bit.rrotate(r,22))local y=bit.bxor(bit.band(r,s),bit.band(r,b),bit.band(s,b))local z=(p+y)%2^32;local q=bit.bxor(bit.rrotate(u,6),bit.rrotate(u,11),bit.rrotate(u,25))local A=bit.bxor(bit.band(u,v),bit.band(bit.bnot(u),w))local B=(x+q+A+n[e]+m[e])%2^32;x=w;w=v;v=u;u=(t+B)%2^32;t=b;b=s;s=r;r=(B+z)%2^32 end;l[1]=(l[1]+r)%2^32;l[2]=(l[2]+s)%2^32;l[3]=(l[3]+b)%2^32;l[4]=(l[4]+t)%2^32;l[5]=(l[5]+u)%2^32;l[6]=(l[6]+v)%2^32;l[7]=(l[7]+w)%2^32;l[8]=(l[8]+x)%2^32 end;funcs.crypt.hash=function(h)h=preproc(h,#h)local l={0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19}for e=1,#h,64 do k(h,e,l)end;return str2hexa(num2s(l[1],4)..num2s(l[2],4)..num2s(l[3],4)..num2s(l[4],4)..num2s(l[5],4)..num2s(l[6],4)..num2s(l[7],4)..num2s(l[8],4))end

funcs.Drawing.new = function(Type) -- Drawing.new
	local baseProps = {
		Visible = false,
		Color = Color3.new(0,0,0),
		ClassName = nil
	}
	if Type == 'Line' then
		local a = Instance.new("Frame", Instance.new("ScreenGui", DrawingDict))
		a.Visible = false
		a.Size = UDim2.new(0, 0, 0, 0)
		a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
		a.BackgroundTransparency = 1
		a.BorderSizePixel = 0

		local meta = baseProps
		meta.ClassName = Type
		meta.__index = {
			Thickness = 1,
			From = Vector2.new(0, 0),
			To = Vector2.new(0, 0),
			Transparency = 0,
			Remove = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			Destroy = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			updateLine = function(self)
				if not a then return end
				local from = self.From
				local to = self.To
				local distance = (to - from).Magnitude
				local angle = math.deg(math.atan2(to.Y - from.Y, to.X - from.X))

				a.Size = UDim2.new(0, distance, 0, self.Thickness)
				a.Position = UDim2.new(0, from.X, 0, from.Y)
				a.Rotation = angle
			end
		}

		meta.__newindex = function(self, key, value)
			if not self then return end
			if key == 'Thickness' and typeof(value) == 'number' then
				rawset(self, key, value)
				a.Size = UDim2.new(0, (self.To - self.From).Magnitude, 0, value)
			elseif key == 'Visible' and typeof(value) == 'boolean' then
				rawset(self, key, value)
				a.Visible = value
			elseif key == 'Color' and typeof(value) == 'Color3' then
				rawset(self, key, value)
				a.BackgroundColor3 = value
			elseif key == 'Transparency' and typeof(value) == 'number' and value <= 1 then
				rawset(self, key, value)
				a.BackgroundTransparency = 1 - value
			elseif key == 'From' and typeof(value) == 'Vector2' then
				rawset(self, key, value)
				self:updateLine()
			elseif key == 'To' and typeof(value) == 'Vector2' then
				rawset(self, key, value)
				self:updateLine()
			end
		end
		local meta1 = setmetatable({}, meta)
		Drawings[meta1] = meta1
		return meta1
	elseif Type == 'Square' then
		local a = Instance.new("Frame", DrawingDict)
		a.Visible = false
		a.Size = UDim2.new(0, 0, 0, 0)
		a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
		a.BackgroundTransparency = 1
		a.BorderSizePixel = 0
		local b = Instance.new("UIStroke", a)
		b.Color = Color3.fromRGB(255, 255, 255)
		b.Enabled = true

		local meta = baseProps
		meta.ClassName = Type
		meta.__index = {
			Size = Vector2.new(0,0),
			Position = Vector2.new(0, 0),
			Remove = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			Destroy = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			updateSquare = function(self)
				if not a then return end
				a.Size = UDim2.new(0, self.Size.X, 0, self.Size.Y)
				a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
			end
		}

		meta.__newindex = function(self, key, value)
			if not self then return end
			if key == 'Filled' and typeof(value) == 'boolean' then
				rawset(self, key, value)
				b.Enabled = not value
				a.BackgroundTransparency = value and 0 or 1
			elseif key == 'Visible' and typeof(value) == 'boolean' then
				rawset(self, key, value)
				a.Visible = value
			elseif key == 'Color' and typeof(value) == 'Color3' then
				rawset(self, key, value)
				a.BackgroundColor3 = value
				b.Color = value
			elseif key == 'Position' and typeof(value) == 'Vector2' then
				rawset(self, key, value)
				self:updateSquare()
			elseif key == 'Size' and typeof(value) == 'Vector2' then
				rawset(self, key, value)
				self:updateSquare()
			end
		end
		local meta1 = setmetatable({}, meta)
		Drawings[meta1] = meta1
		return meta1
	elseif Type == 'Circle' then
		local a = Instance.new("Frame", Instance.new("ScreenGui", DrawingDict))
		a.Visible = false
		a.Size = UDim2.new(0, 0, 0, 0)
		a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
		a.BackgroundTransparency = 1
		a.BorderSizePixel = 0
		local b = Instance.new("UIStroke", a)
		b.Color = Color3.fromRGB(255, 255, 255)
		b.Enabled = false
		b.Thickness = 1
		local c = Instance.new("UICorner", a)
		c.CornerRadius = UDim.new(1, 0)

		local meta = baseProps
		meta.ClassName = Type
		meta.__index = {
			Thickness = 1,
			Filled = false,
			NumSides = 0,
			Radius = 1,
			Position = Vector2.new(0, 0),
			Transparency = 0,
			Remove = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			Destroy = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			updateCircle = function(self)
				if not b or not a then return end
				a.Size = UDim2.new(0, self.Radius, 0, self.Radius)
				a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
				b.Enabled = not self
				b.Color = self.Color
			end
		}

		meta.__newindex = function(self, key, value)
			if not self then return end
			if key == 'Thickness' and typeof(value) == 'number' then
				rawset(self, key, value)
				b.Thickness = value
			elseif key == 'Visible' and typeof(value) == 'boolean' then
				rawset(self, key, value)
				a.Visible = value
			elseif key == 'Color' and typeof(value) == 'Color3' then
				rawset(self, key, value)
				a.BackgroundColor3 = value
				a.Color = value
			elseif key == 'Transparency' and typeof(value) == 'number' then
				rawset(self, key, value)
				a.BackgroundTransparency = 1 - value
			elseif key == 'Position' and typeof(value) == 'Vector2' then
				rawset(self, key, value)
				self:updateCircle()
			elseif key == 'Radius' and typeof(value) == 'number' then
				rawset(self, key, value)
				self:updateCircle()
			elseif key == 'NumSides' and typeof(value) == 'number' then
				rawset(self, key, value)
			elseif key == 'Filled' and typeof(value) == 'boolean' then
				rawset(self, key, value)
				self:updateCircle()
			end
		end
		local meta1 = setmetatable({}, meta)
		Drawings[meta1] = meta1
		return meta1
	elseif Type == 'Text' then
		local a = Instance.new("TextLabel", DrawingDict)
		a.Visible = false
		a.Size = UDim2.new(0, 0, 0, 0)
		a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
		a.BackgroundTransparency = 1
		a.BorderSizePixel = 0
		a.TextStrokeColor3 = Color3.new(0,0,0)
		a.TextStrokeTransparency = 1

		local meta = baseProps
		meta.ClassName = Type
		meta.__index = {
			Text = '',
			Transparency = 0,
			Size = 0,
			Center = false,
			Outline = false,
			OutlineColor = Color3.new(0,0,0),
			Position = Vector2.new(0,0),
			Font = 3,
			Remove = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			Destroy = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy() 
			end,
			updateText = function(self)
				if not a then return end
				a.TextScaled = true
				a.Size = UDim2.new(0, self.Size * 3, 0, self.Size / 2)
				a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
				a.Text = self.Text
				a.Font = Fonts[self.Font]
				a.Visible = self.Visible
				a.TextColor3 = self.Color
				a.TextTransparency = 1 - self.Transparency
				a.BorderSizePixel = self.Outline and 1 or 0
				if self.Center then
					a.TextXAlignment = Enum.TextXAlignment.Center
					a.TextYAlignment = Enum.TextYAlignment.Center
				else
					a.TextXAlignment = Enum.TextXAlignment.Left
					a.TextYAlignment = Enum.TextYAlignment.Top
				end
				a.TextStrokeTransparency = self.Outline and 0 or 1
				a.TextStrokeColor3 = self.OutlineColor
			end
		}

		meta.__newindex = function(self, key, value)
			if not self then return end
			if key == 'Text' and typeof(value) == 'string' then
				rawset(self, key, value)
			elseif key == 'Visible' and typeof(value) == 'boolean' then
				rawset(self, key, value)
				a.Visible = value
			elseif key == 'Color' and typeof(value) == 'Color3' then
				rawset(self, key, value)
			elseif key == 'Transparency' and typeof(value) == 'number' then
				rawset(self, key, value)
			elseif key == 'Position' and typeof(value) == 'Vector2' then
				rawset(self, key, value)
			elseif key == 'Size' and typeof(value) == 'number' then
				rawset(self, key, value)
			elseif key == 'Outline' and typeof(value) == 'boolean' then
				rawset(self, key, value)
			elseif key == 'Center' and typeof(value) == 'boolean' then
				rawset(self, key, value)
			elseif key == 'OutlineColor' and typeof(value) == 'Color3' then
				rawset(self, key, value)
			elseif key == 'Font' and typeof(value) == 'number' then
				rawset(self, key, value)
			end
			self:updateText()
		end

		local meta1 = setmetatable({}, meta)
		Drawings[meta1] = meta1
		return meta1
	elseif Type == 'Image' then
		local a = Instance.new("ImageLabel", DrawingDict)
		a.Visible = false
		a.Size = UDim2.new(0, 0, 0, 0)
		a.ImageColor3 = Color3.fromRGB(255,255,255)
		a.BackgroundTransparency = 1
		a.BorderSizePixel = 0

		local meta = baseProps
		meta.ClassName = 'Image'
		meta.__index = {
			Text = '',
			Transparency = 0,
			Size = Vector2.new(0, 0),
			Position = Vector2.new(0,0),
			Color = Color3.fromRGB(255, 255, 255),
			Image = '',
			Remove = function()
				for i, v in pairs(Drawings) do if v == meta then Drawings[i] = nil end end
				a:Destroy()
			end,
			Destroy = function()
				for i, v in pairs(Drawings) do
					if v == meta then Drawings[i] = nil end
				end
				a:Destroy()
			end,
			updateImage = function(self)
				if not a then return end
				a.Size = UDim2.new(0, self.Size.X, 0, self.Size.Y)
				a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
				a.Visible = self.Visible
				a.ImageColor3 = self.Color
				a.ImageTransparency = 1 - self.Transparency
				a.BorderSizePixel = self.Outline and 1 or 0
				a.Image = self.Image
			end
		}

		meta.__newindex = function(self, key, value)
			if not self then return end
			if key == 'Visible' and typeof(value) == 'boolean' then
				rawset(self, key, value)
			elseif key == 'Color' and typeof(value) == 'Color3' then
				rawset(self, key, value)
			elseif key == 'Transparency' and typeof(value) == 'number' then
				rawset(self, key, value)
			elseif key == 'Position' and typeof(value) == 'Vector2' then
				rawset(self, key, value)
			elseif key == 'Size' and typeof(value) == 'number' then
				rawset(self, key, value)
			elseif key == 'Image' and typeof(value) == 'string' then
				rawset(self, key, value)
			else
				return
			end
			self:updateImage()
		end

		local meta1 = setmetatable({}, meta)
		Drawings[meta1] = meta1
		return meta1
	end
end

funcs.randomstring = funcs.crypt.random
funcs.getprotecteduis = function()
	return protecteduis
end
funcs.getprotectedguis = funcs.getprotecteduis
funcs.cleardrawcache = function()
	for _, v in pairs(Drawings) do
		v:Remove()
	end
	table.clear(Drawings)
end
funcs.checkcaller = function()
	local info = debug.info(getgenv, 'slnaf')
	return debug.info(1, 'slnaf')==info
end
funcs.getthreadcontext = function() -- funny little way of getting this
	if coroutine.isyieldable(coroutine.running()) then -- check if u can use task.wait or not
		QueueGetIdentity()
		task.wait(.1)
		return tonumber(Identity)
	else
		if Identity == -1 then
			task.spawn(QueueGetIdentity)
			return 1
		else
			return tonumber(Identity)
		end
	end
end
funcs.getthreadidentity = funcs.getthreadcontext
funcs.getidentity = funcs.getthreadcontext
funcs.rconsolecreate = function()
	local Clone = Console:Clone()
	Clone.Parent = gethui()
	ConsoleClone = Clone
	ConsoleClone.ConsoleFrame.Topbar.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			startDrag(input, ConsoleClone.ConsoleFrame)
		end
	end)
end
funcs.rconsoledestroy = function()
	if ConsoleClone then ConsoleClone:Destroy() end
	ConsoleClone = nil
end
funcs.rconsoleprint = function(msg, cc)
	local CONSOLE = ConsoleClone or Console
	repeat task.wait() until ConsoleQueue:IsEmpty()
	msg = tostring(msg)
	local last_color = nil

	msg = msg:gsub('@@(%a+)@@', function(color)
		local colorName = color:upper()
		local rgbColor = colors[colorName]
		if rgbColor then
			local fontTag = string.format('<font color="rgb(%d,%d,%d)">', rgbColor.R * 255, rgbColor.G * 255, rgbColor.B * 255)
			local result = last_color and '</font>' .. fontTag or fontTag
			last_color = colorName
			return result
		else
			return '@@' .. color .. '@@'
		end
	end)

	if last_color then
		msg = msg .. '</font>'
	end

	if msg:match('<font color=".+">.+</font>') then
		if msg:match('<font color=".+"></font>') == msg then MessageColor = colors[last_color] return end
	end

	local tmp = MessageTemplate:Clone()
	tmp.Parent = CONSOLE.ConsoleFrame.Holder
	tmp.Text = msg
	tmp.Visible = true
	tmp.TextColor3 = cc and cc or MessageColor
end
funcs.rconsoleinput = function()
	local CONSOLE = ConsoleClone or Console
	repeat task.wait() until ConsoleQueue:IsEmpty()
	ConsoleQueue:Queue('input')
	local box = InputTemplate:Clone()
	local val
	box.Parent = CONSOLE.ConsoleFrame.Holder
	box.Visible = true
	box.TextEditable = true
	box.TextColor3 = MessageColor

	box.FocusLost:Connect(function(a)
		if not a then return end
		val = box.Text
		ConsoleQueue:Update()
	end)

	local FOCUSED = false
	while true do
		if box.Text:sub(#box.Text, #box.Text) == '_' or box.Text == '' or not box:IsFocused() then
			box.TextColor3 = Color3.fromRGB(255, 255, 255)
			box.Text = box.Text .. '_'

			for _ = 1, 100 do
				task.wait(1/2)
				if box:IsFocused() then
					FOCUSED = true
					box.TextColor3 = MessageColor
					break
				end
				box.Text = box.Text:sub(#box.Text, #box.Text) == '_' and box.Text:sub(#box.Text-1, #box.Text-1) or box.Text .. '_'
			end
			if FOCUSED then break end
		else
			task.wait(0.1)
		end
	end
	repeat task.wait() until val
	return val
end
funcs.rconsolename = function(a)
	if ConsoleClone then
		ConsoleClone.ConsoleFrame.Title.Text = a
	else
		Console.ConsoleFrame.Title.Text = a
	end
end
funcs.printconsole = function(msg, r, g, b)
	r = r or 0
	g = g or 0
	b = b or 0
	rconsoleprint(msg, Color3.fromRGB(r, g, b))
end
funcs.rconsoleclear = function()
	if ConsoleClone then
		for i, v in pairs(ConsoleClone.ConsoleFrame.Holder:GetChildren()) do
			if v.ClassName == 'TextLabel' or v.ClassName == 'TextBox' then v:Destroy() end
		end
	else
		for i, v in pairs(Console.ConsoleFrame.Holder:GetChildren()) do
			if v.ClassName == 'TextLabel' or v.ClassName == 'TextBox' then v:Destroy() end
		end
	end
end
funcs.rconsoleinfo = function(a)
	rconsoleprint('[INFO]: ' .. tostring(a))
end
funcs.rconsolewarn = function(a)
	rconsoleprint('[*]: ' .. tostring(a))
end
funcs.rconsoleerr = function(a)
	local clr = MessageColor
	local oldColor
	for i, v in pairs(colors) do
		if clr == v then oldColor = i break end
	end
	rconsoleprint(string.format('[@@RED@@*@@%s@@]: %s', oldColor, tostring(a)))
end
funcs.rconsoleinputasync = funcs.rconsoleinput
funcs.consolecreate = funcs.rconsolecreate
funcs.consoleclear = funcs.rconsoleclear
funcs.consoledestroy = funcs.rconsoledestroy
funcs.consoleinput = funcs.rconsoleinput
funcs.rconsolesettitle = funcs.rconsolename
funcs.consolesettitle = funcs.rconsolename

funcs.queue_on_teleport = function(scripttoexec) -- WARNING: MUST HAVE MOREUNC IN AUTO EXECUTE FOR THIS TO WORK.
	local newTPService = {
		__index = function(self, key)
			if key == 'Teleport' then
				return function(gameId, player, teleportData, loadScreen)
					teleportData = {teleportData, MOREUNCSCRIPTQUEUE=scripttoexec}
					return oldGame:GetService("TeleportService"):Teleport(gameId, player, teleportData, loadScreen)
				end
			end
		end
	}
	local gameMeta = {
		__index = function(self, key)
			if key == 'GetService' then
				return function(name)
					if name == 'TeleportService' then return newTPService end
				end
			elseif key == 'TeleportService' then return newTPService end
			return game[key]
		end,
		__metatable = 'The metatable is protected'
	}
	getgenv().game = setmetatable({}, gameMeta)
end
funcs.queueonteleport = funcs.queue_on_teleport

local Count = 0
local Total = 0
print('Running MoreUNC | Roblox', version(), ' | Discord https://discord.gg/gYhqMRBeZV')

local funcs2 = {}
for i, _ in pairs(funcs) do
	table.insert(funcs2, i)
end
table.sort(funcs2, function(a, b)
	return string.byte(a:lower())<string.byte(b:lower())
end)

for i, v in pairs(funcs2) do
	if not getgenv()[i] then
		Total = Total + 1
	end
end

for _, i in pairs(funcs2) do
	local v = funcs[i]
	local Result = SafeOverride(i, v)
	if Result == 2 then Count = Count + 1 end
	local str = Result == 1 and ('[⛔] %s already exists.'):format(i) or Result == 2 and ("[✅] Added %s%s to the global environment. (%d/%d)"):format(i, type(v)=='function' and '()' or '', Count, Total) or Result ~= 1 and Result ~= 2 and ("[⛔] Unknown result for %s."):format(i)
	--print(str)
end

getgenv().syn.protect_gui(DrawingDict)
getgenv().syn.protect_gui(ClipboardUI)
print('Done adding functions!')
QueueGetIdentity()
getgenv().MoreUNC = true

Features & Information

Simplifies MoreUNC to run on things like roblox studio and basic 0% unc executors. Original: https://scriptblox.com/script/Universal-Script-MoreUNC-13110 THO SOME FUNCTIONS MIGHT NOT WORK FOR <3 IDENTITY EXECUTORS.
#MoreUNC#OP#UNC

Community Comments (8)

DenzTheCoolManDenzTheCoolManJul 3, 2024(edited)

What does this do? Just asking.

playvoraplayvoraJul 3, 2024(edited)

38 out of 83 for roblox studio

vxstyvxstyJul 3, 2024(edited)

@playvora yea original gets less i believe

silly_silly_Jul 5, 2024(edited)

bro uploads alot of good quality scripts

sammy10990sammy10990Jul 6, 2024(edited)

Question, what does this script do?

avipfreeavipfreeJul 21, 2024(edited)

@sammy10990 this script logged your ip address and steal your roblox acc

jdicodkidjdicodkidNov 12, 2024(edited)

..... I shoulda read tha comment sooner

DrixpyDrixpyNov 14, 2024(edited)

It doesn't log your IP and steal your Roblox account everyone acts so autistic it just gives your executor more functions aka UNC hes just a little kid with 0 experience in coding that found this and decided to say that like the little skiddy he is if your not autistic you would know

More Scripts for Universal Scripts