Dark_Agent

AnotherUNC-1

Aug 10th, 2024
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 38.79 KB | Fixit | 0 0
  1. --[[ hello very cool incognito / solara (mostly incognito because solara has most of these functions, just not all) script showcase!!
  2. pls dont steal source code :(
  3. also join https://discord.gg/gYhqMRBeZV because yes    
  4. ]]
  5. --idk who is created sorry no credits
  6. --MoreUNC booster.
  7. getgenv().bit = getgenv().bit or table.clone(bit32)
  8. local clonerefs = {}
  9. local protecteduis = {}
  10. local renv = {
  11.     print, warn, error, assert, collectgarbage, load, require, select, tonumber, tostring, type, xpcall, pairs, next, ipairs,
  12.     newproxy, rawequal, rawget, rawset, rawlen, setmetatable, PluginManager,
  13.     coroutine.create, coroutine.resume, coroutine.running, coroutine.status, coroutine.wrap, coroutine.yield,
  14.     bit32.arshift, bit32.band, bit32.bnot, bit32.bor, bit32.btest, bit32.extract, bit32.lshift, bit32.replace, bit32.rshift, bit32.xor,
  15.     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,
  16.     string.byte, string.char, string.dump, 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,
  17.     table.concat, table.insert, table.pack, table.remove, table.sort, table.unpack,
  18.     utf8.char, utf8.charpattern, utf8.codepoint, utf8.codes, utf8.len, utf8.nfdnormalize, utf8.nfcnormalize,
  19.     os.clock, os.date, os.difftime, os.time,
  20.     delay, elapsedTime, require, spawn, tick, time, typeof, UserSettings, version, wait,
  21.     task.defer, task.delay, task.spawn, task.wait,
  22.     debug.traceback, debug.profilebegin, debug.profileend
  23. }
  24.  
  25.  
  26. function ToEnum(a)
  27.  for i, v in pairs(Enum.KeyCode:GetEnumItems()) do if tostring(v) == a then return v end end
  28. end
  29. local Instances = {}
  30.  
  31. local renderObjs={"Part","MeshPart","UnionOperation","WedgePart","CornerWedgePart","TrussPart","Model","Decal","Texture","SurfaceGui","BillboardGui","TextLabel","TextButton","ImageLabel","ImageButton","ViewportFrame","ParticleEmitter","Beam","Trail","Fire","Smoke","Sparkles","Light","SpotLight","PointLight","SurfaceLight",'Image','EditableImage', 'Text', 'Square', 'Circle', 'Triangle', 'Line'}
  32.  
  33. 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}
  34.  
  35. local funcs = {}
  36. local names = {}
  37. local cache = {}
  38. local blockCache = {}
  39.  
  40. local vim = Instance.new("VirtualInputManager");
  41. local HttpService = game:GetService('HttpService');
  42.  
  43. function DescendantCount(tbl)
  44.     local count = 0
  45.     if type(tbl) ~= 'table' then
  46.         return 1
  47.     end
  48.     for _, v in pairs(tbl) do
  49.         count = count + 1
  50.         if type(v) == 'table' then
  51.             count = count + DescendantCount(v)
  52.         end
  53.     end
  54.     return count
  55. end
  56.  
  57.  
  58. function Descendants(tbl)
  59.     local descendants = {}
  60.    
  61.     local function process_table(subtbl, prefix)
  62.         for k, v in pairs(subtbl) do
  63.             local index = prefix and (prefix .. "." .. tostring(k)) or tostring(k)
  64.             descendants[index] = v  -- Include the table itself
  65.             if type(v) == 'table' then
  66.                 process_table(v, index)
  67.             else
  68.                 descendants[index] = v
  69.             end
  70.         end
  71.     end
  72.  
  73.     if type(tbl) ~= 'table' then
  74.         descendants[tostring(1)] = tbl
  75.     else
  76.         process_table(tbl, nil)
  77.     end
  78.    
  79.     return descendants
  80. end
  81.  
  82. game.DescendantRemoving:Connect(function(des)
  83.  table.insert(Instances, des)
  84.  blockCache[des] = true
  85. end)
  86. game.DescendantAdded:Connect(function(des)
  87.  cache[des] = true
  88. end)
  89.  
  90.  
  91. local Debug = loadstring(game:HttpGet('https://rawscripts.net/raw/Universal-Script-Basic-Functions-12707'))()
  92.  
  93. --[[ Libraries ]]
  94.  
  95.  
  96. funcs.base64 = {}
  97. funcs.crypt = {hex={},url={}}
  98. funcs.syn = {}
  99. funcs.syn_backup = {}
  100. funcs.http = {}
  101. funcs.Drawing = {}
  102. funcs.cache = {}
  103.  
  104. funcs.Drawing.Fonts = {
  105.   ['UI'] = 0,
  106.   ['System'] = 1,
  107.   ['Plex'] = 2,
  108.   ['Monospace'] = 3
  109. }
  110. local Fonts = {
  111.  [0] = Enum.Font.Arial,
  112.  [1] = Enum.Font.BuilderSans,
  113.  [2] = Enum.Font.Gotham,
  114.  [3] = Enum.Font.RobotoMono
  115. }
  116.  
  117. local DrawingDict = Instance.new("ScreenGui")
  118. local ClipboardUI = Instance.new("ScreenGui")
  119.  
  120. local ClipboardBox = Instance.new('TextBox', ClipboardUI)
  121. ClipboardBox.PlaceholderText = ''
  122. ClipboardBox.Text = ''
  123. ClipboardBox.ClearTextOnFocus = false
  124. ClipboardBox.Size = UDim2.new(.1, 0, .15, 0)
  125. ClipboardBox.Position = UDim2.new(10, 0, 10, 0)
  126. local Queue = {}
  127. Queue.__index = Queue
  128.  
  129. function Queue.new()
  130.     local self = setmetatable({}, Queue)
  131.     self.elements = {}
  132.     return self
  133. end
  134. function Queue:Queue(element)
  135.     table.insert(self.elements, element)
  136. end
  137.  
  138. function Queue:Update()
  139.     if #self.elements == 0 then
  140.         return nil
  141.     end
  142.     return table.remove(self.elements, 1)
  143. end
  144.  
  145. function Queue:IsEmpty()
  146.     return #self.elements == 0
  147. end
  148. function Queue:Current()
  149.     return self.elements
  150. end
  151. local ClipboardQueue = Queue.new()
  152.  
  153. -- [[ Functions ]]
  154.  
  155. funcs.clonefunction = function(a)
  156.  local proxy = newproxy(true)
  157.  local meta = getmetatable(proxy)
  158.  meta.__call = function(_, args)
  159.   return a(args)
  160.  end
  161.  
  162.  meta.__tostring = function(self)
  163.   return tostring(meta):gsub("table: ", "function: ")
  164.  end
  165.  
  166.  meta.__len = function(self)
  167.   return error('attempt to get length of a function value')
  168.  end
  169.  
  170.  meta.__type = 'function'
  171.  
  172.  return setmetatable({}, meta)
  173. end
  174. funcs.cloneref = function(a)
  175.     if not clonerefs[a] then clonerefs[a] = {} end
  176.     local Clone = {}
  177.  
  178.     local mt = {__type='Instance'} -- idk if this works ;(
  179.  
  180.     mt.__tostring = function()
  181.         return a.Name
  182.     end
  183.  
  184.     mt.__index = function(_, key)
  185.         local thing = a[key]
  186.         if type(thing) == 'function' then
  187.             return function(...)
  188.                 return thing(a, ...)
  189.             end
  190.         else
  191.             return thing
  192.         end
  193.     end
  194.     mt.__newindex = function(_, key, value)
  195.      a[key] = value
  196.     end
  197.     mt.__metatable = 'The metatable is locked'
  198.     mt.__len = function(self)
  199.      return error('attempt to get length of a userdata value')
  200.     end
  201.  
  202.     setmetatable(Clone, mt)
  203.  
  204.     table.insert(clonerefs[a], Clone)
  205.  
  206.     return Clone
  207. end
  208. funcs.compareinstances = function(a, b)
  209.  if not clonerefs[a] then
  210.   return a == b
  211.  else
  212.   if table.find(clonerefs[a], b) then return true end
  213.  end
  214.  return false
  215. end
  216. funcs.cache.iscached = function(thing)
  217.  if thing:IsDescendantOf(game) and not blockCache[thing] then return true else return false end
  218. end
  219. funcs.cache.invalidate = function(thing)
  220.  cache[thing] = nil
  221.  blockCache[thing] = true
  222.  thing.Parent = nil
  223. end
  224. funcs.cache.replace = function(a, b)
  225.  cache[a] = b
  226.  local n, p = a.Name, a.Parent
  227.  local np = b:Clone()
  228.  np.Parent = p np.Name = n
  229.  a.Parent = nil
  230. end
  231.  
  232. funcs.deepclone = function(a)
  233.  local Result = {}
  234.  for i, v in pairs(a) do
  235.   if type(v) == 'table' then
  236.     Result[i] = funcs.deepclone(v)
  237.   end
  238.   Result[i] = v
  239.  end
  240.  return Result
  241. end
  242. getgenv = getgenv or getfenv(2)
  243. if getgenv().MoreUNC then return end
  244. getgenv().MoreUNC = true
  245. function SafeOverride(a, b, c) --[[ Index, Data, Should override ]]
  246.  if getgenv()[a] and not c then return 1 end
  247.  getgenv()[a] = b
  248.  return 2
  249. end
  250. --[[ The base64 functions were made by https://scriptblox.com/u/yofriendfromschool1 , Credits to him.]]
  251. funcs.base64.encode = function(data)
  252.     local letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  253.     return ((data:gsub('.', function(x)
  254.         local r,b='',x:byte()
  255.         for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
  256.         return r;
  257.     end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
  258.         if (#x < 6) then return '' end
  259.         local c=0
  260.         for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
  261.         return letters:sub(c+1,c+1)
  262.     end)..({ '', '==', '=' })[#data%3+1])
  263. end
  264. funcs.base64.decode = function(data)
  265.     local b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  266.     data = string.gsub(data, '[^'..b..'=]', '')
  267.     return (data:gsub('.', function(x)
  268.         if x == '=' then return '' end
  269.         local r, f = '', (b:find(x) - 1)
  270.         for i = 6, 1, -1 do
  271.             r = r .. (f % 2^i - f % 2^(i - 1) > 0 and '1' or '0')
  272.         end
  273.         return r;
  274.     end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
  275.         if #x ~= 8 then return '' end
  276.         local c = 0
  277.         for i = 1, 8 do
  278.             c = c + (x:sub(i, i) == '1' and 2^(8 - i) or 0)
  279.         end
  280.         return string.char(c)
  281.     end))
  282. end
  283.  
  284. funcs.loadstring = loadstring
  285. funcs.getgenv = getgenv
  286. funcs.crypt.base64 = funcs.base64
  287. funcs.crypt.base64encode = funcs.base64.encode
  288. funcs.crypt.base64decode = funcs.base64.decode
  289. funcs.crypt.base64_encode = funcs.base64.encode
  290. funcs.crypt.base64_decode = funcs.base64.decode
  291. funcs.base64_encode = funcs.base64.encode
  292. funcs.base64_decode = funcs.base64.decode
  293.  
  294. funcs.crypt.hex.encode = function(txt)
  295.  txt = tostring(txt)
  296.  local hex = ''
  297.  for i = 1, #txt do
  298.     hex = hex .. string.format("%02x", string.byte(txt, i))
  299.  end
  300.  return hex
  301. end
  302. funcs.crypt.hex.decode = function(hex)
  303.     hex = tostring(hex)
  304.     local text = ""
  305.     for i = 1, #hex, 2 do
  306.         local byte_str = string.sub(hex, i, i+1)
  307.         local byte = tonumber(byte_str, 16)
  308.         text = text .. string.char(byte)
  309.     end
  310.     return text
  311. end
  312. funcs.crypt.url.encode = function(a)
  313.  return game:GetService("HttpService"):UrlEncode(a)
  314. end
  315. funcs.crypt.url.decode = function(a)
  316.     a = tostring(a)
  317.     a = string.gsub(a, "+", " ")
  318.     a = string.gsub(a, "%%(%x%x)", function(hex)
  319.         return string.char(tonumber(hex, 16))
  320.     end)
  321.     a = string.gsub(a, "\r\n", "\n")
  322.     return a
  323. end
  324. funcs.crypt.generatekey = function(optionalSize)
  325.  local key = ''
  326.  local a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  327.  for i = 1, optionalSize or 32 do local n = math.random(1, #a) key = key .. a:sub(n, n) end
  328.  return funcs.base64.encode(key)
  329. end
  330. funcs.crypt.generatebytes = function(size)
  331.  if type(size) ~= 'number' then return error('missing arguement #1 to \'generatebytes\' (number expected)') end
  332.  return funcs.crypt.generatekey(size)
  333. end
  334. --[[ Basic XOR encryption because i don't know wtf synapse uses for crypt.encrypt ]]
  335. funcs.crypt.encrypt = function(a, b)
  336.  local result = {}
  337.  a = tostring(a) b = tostring(b)
  338.  for i = 1, #a do
  339.     local byte = string.byte(a, i)
  340.     local keyByte = string.byte(b, (i - 1) % #b + 1)
  341.     table.insert(result, string.char(bit32.bxor(byte, keyByte)))
  342.  end
  343.  return table.concat(result)
  344. end
  345. funcs.crypt.decrypt = funcs.crypt.encrypt
  346. funcs.crypt.random = function(len)
  347.  return funcs.crypt.generatekey(len)
  348. end
  349.  
  350. local active = true
  351. game:GetService("UserInputService").WindowFocused:Connect(function()
  352.  active = true
  353. end)
  354.  
  355. game:GetService("UserInputService").WindowFocusReleased:Connect(function()
  356.  active = false
  357. end)
  358.  
  359. funcs.isrbxactive = function()
  360.  return active
  361. end
  362. funcs.isgameactive = funcs.isrbxactive
  363. funcs.gethui = function()
  364.  local s, H = pcall(function()
  365.   return game:GetService("CoreGui")
  366.  end)
  367.  return s and H or game:GetService("Players").LocalPlayer.PlayerGui
  368. end
  369. if getgenv().getrenv and #getgenv().getrenv() == 0 or not getgenv().getrenv then
  370.  getrenv = nil
  371.  getgenv().getrenv = function() -- Override incognito's getrenv
  372.   return renv -- couldn't think of a better way to implement it
  373.  end
  374. end
  375. funcs.setclipboard = function(data)
  376.     repeat task.wait() until ClipboardQueue:Current()[1] == data or ClipboardQueue:IsEmpty()
  377.     ClipboardQueue:Queue(data)
  378.     local old = game:GetService("UserInputService"):GetFocusedTextBox()
  379.     local copy = ClipboardQueue:Current()[1]
  380.     ClipboardBox:CaptureFocus()
  381.     ClipboardBox.Text = copy
  382.    
  383.     local KeyCode = Enum.KeyCode
  384.     local Keys = {KeyCode.RightControl, KeyCode.A}
  385.     local Keys2 = {KeyCode.RightControl, KeyCode.C, KeyCode.V}
  386.    
  387.     for _, v in ipairs(Keys) do
  388.         vim:SendKeyEvent(true, v, false, game)
  389.         task.wait()
  390.     end
  391.     for _, v in ipairs(Keys) do
  392.         vim:SendKeyEvent(false, v, false, game)
  393.         task.wait()
  394.     end
  395.     for _, v in ipairs(Keys2) do
  396.         vim:SendKeyEvent(true, v, false, game)
  397.         task.wait()
  398.     end
  399.     for _, v in ipairs(Keys2) do
  400.         vim:SendKeyEvent(false, v, false, game)
  401.         task.wait()
  402.     end
  403.     ClipboardBox.Text = ''
  404.     if old then old:CaptureFocus() end
  405.     task.wait(.18)
  406.     ClipboardQueue:Update()
  407. end
  408. funcs.syn.write_clipboard = funcs.setclipboard
  409. funcs.toclipboard = funcs.setclipboard
  410. funcs.writeclipboard = funcs.setclipboard
  411. funcs.setrbxclipboard = funcs.setclipboard
  412.  
  413. funcs.isrenderobj = function(thing)
  414.  if typeof(thing) == 'Instance' then
  415.   return table.find(renderObjs, thing.ClassName) ~= nil
  416.  else
  417.   return table.find(renderObjs, thing) ~= nil
  418.  end
  419. end
  420. funcs.getrenderproperty = function(thing, prop)
  421.  local success, p = pcall(function()
  422.   return thing[prop]
  423.  end)
  424.  return success and p or nil
  425. end
  426. funcs.setrenderproperty = function(thing, prop, val)
  427.  local success, err = pcall(function()
  428.   thing[prop] = val
  429.  end)
  430.  if not success and err then warn(err) end
  431. end
  432.  
  433. funcs.syn.protect_gui = function(gui)
  434.  names[gui] = {name=gui.Name,parent=gui.Parent}
  435.  protecteduis[gui] = gui
  436.  gui.Name = funcs.crypt.hash(funcs.crypt.random(64)) -- Hashed 64 byte string
  437.  gui.Parent = getgenv().gethui()
  438. end
  439. funcs.syn.unprotect_gui = function(gui)
  440.  if names[gui] then gui.Name = names[gui].name gui.Parent = names[gui].parent end protecteduis[gui] = nil
  441. end
  442. funcs.syn.protectgui = funcs.syn.protect_gui
  443. funcs.syn.unprotectgui = funcs.syn.unprotect_gui
  444. funcs.syn.secure_call = function(func) -- Does not do a secure call, just pcalls it.
  445.  return pcall(func)
  446. end
  447.  
  448.  
  449. funcs.isreadonly = function(tbl)
  450.  if type(tbl) ~= 'table' then return false end
  451.  return table.isfrozen(tbl)
  452. end
  453. funcs.setreadonly = function(tbl, cond)
  454.  if cond then
  455.   table.freeze(tbl)
  456.  else
  457.   return funcs.deepclone(tbl)
  458.  end
  459. end
  460. funcs.httpget = function(url)
  461.  return game:HttpGet(url)
  462. end
  463. funcs.httppost = function(url, body, contenttype)
  464.  return game:HttpPostAsync(url, body, contenttype)
  465. end
  466. funcs.request = function(args)
  467.  local Body = nil
  468.  local Timeout = 0
  469.  local function callback(success, body)
  470.   Body = body
  471.   Body['Success'] = success
  472.  end
  473.  HttpService:RequestInternal(args):Start(callback)
  474.  while not Body and Timeout < 10 do
  475.   task.wait(.1)
  476.   Timeout = Timeout + .1
  477.  end
  478.  return Body
  479. end
  480. funcs.mouse1click = function(x, y)
  481.  x = x or 0
  482.  y = y or 0
  483.  vim:SendMouseButtonEvent(x, y, 0, true, game, false)
  484.  task.wait()
  485.  vim:SendMouseButtonEvent(x, y, 0, false, game, false)
  486. end
  487. funcs.mouse2click = function(x, y)
  488.  x = x or 0
  489.  y = y or 0
  490.  vim:SendMouseButtonEvent(x, y, 1, true, game, false)
  491.  task.wait()
  492.  vim:SendMouseButtonEvent(x, y, 1, false, game, false)
  493. end
  494. funcs.mouse1press = function(x, y)
  495.  x = x or 0
  496.  y = y or 0
  497.  vim:SendMouseButtonEvent(x, y, 0, true, game, false)
  498. end
  499. funcs.mouse1release = function(x, y)
  500.  x = x or 0
  501.  y = y or 0
  502.  vim:SendMouseButtonEvent(x, y, 0, false, game, false)
  503. end
  504. funcs.mouse2press = function(x, y)
  505.  x = x or 0
  506.  y = y or 0
  507.  vim:SendMouseButtonEvent(x, y, 1, true, game, false)
  508. end
  509. funcs.mouse2release = function(x, y)
  510.  x = x or 0
  511.  y = y or 0
  512.  vim:SendMouseButtonEvent(x, y, 1, false, game, false)
  513. end
  514. funcs.mousescroll = function(x, y, a)
  515.  x = x or 0
  516.  y = y or 0
  517.  a = a and true or false
  518.  vim:SendMouseWheelEvent(x, y, a, game)
  519. end
  520. funcs.keyclick = function(key)
  521.  if typeof(key) == 'number' then
  522.  if not keys[key] then return error("Key "..tostring(key) .. ' not found!') end
  523.  vim:SendKeyEvent(true, keys[key], false, game)
  524.  task.wait()
  525.  vim:SendKeyEvent(false, keys[key], false, game)
  526.  elseif typeof(Key) == 'EnumItem' then
  527.   vim:SendKeyEvent(true, key, false, game)
  528.   task.wait()
  529.   vim:SendKeyEvent(false, key, false, game)
  530.  end
  531. end
  532. funcs.keypress = function(key)
  533.  if typeof(key) == 'number' then
  534.  if not keys[key] then return error("Key "..tostring(key) .. ' not found!') end
  535.  vim:SendKeyEvent(true, keys[key], false, game)
  536.  elseif typeof(Key) == 'EnumItem' then
  537.   vim:SendKeyEvent(true, key, false, game)
  538.  end
  539. end
  540. funcs.keyrelease = function(key)
  541.  if typeof(key) == 'number' then
  542.  if not keys[key] then return error("Key "..tostring(key) .. ' not found!') end
  543.  vim:SendKeyEvent(false, keys[key], false, game)
  544.  elseif typeof(Key) == 'EnumItem' then
  545.   vim:SendKeyEvent(false, key, false, game)
  546.  end
  547. end
  548. funcs.mousemoverel = function(relx, rely)
  549.  local Pos = workspace.CurrentCamera.ViewportSize
  550.  relx = relx or 0
  551.  rely = rely or 0
  552.  local x = Pos.X * relx
  553.  local y = Pos.Y * rely
  554.  vim:SendMouseMoveEvent(x, y, game)
  555. end
  556. funcs.mousemoveabs = function(x, y)
  557.  x = x or 0 y = y or 0
  558.  vim:SendMouseMoveEvent(x, y, game)
  559. end
  560.  
  561. funcs.isexecutorclosure = function(fnc)
  562.     for _, func2 in pairs(funcs) do if func2 == fnc then return true end end
  563.     for _, func2 in pairs(getgenv()) do if func2 == fnc then return true end end
  564.     for i = 1, 99 do
  565.         local s, environment = pcall(getfenv, i)
  566.         if not s or type(environment) ~= 'table' then
  567.             return false
  568.         end
  569.         for _, val in pairs(environment) do
  570.             if fnc == val then
  571.                 return true
  572.             end
  573.         end
  574.     end
  575.     return false
  576. end
  577.  
  578. funcs.iscclosure = function(fnc) return debug.info(fnc, 's') == '[C]' end
  579. funcs.islclosure = function(func) return not funcs.iscclosure(func) end
  580. funcs.is_l_closure = funcs.islclosure
  581. funcs.is_executor_closure = funcs.isexecutorclosure
  582. funcs.isourclosure = funcs.isexecutorclosure
  583. funcs.isexecclosure = funcs.isexecutorclosure
  584.  
  585. --[[ File system is something i do not know how to implement in roblox lua.
  586. UPDATE AT 18/5/2024:
  587. I figured out i can use temp file system with tables.
  588. ]]
  589. local files = {}
  590.  
  591. local function startswith(a, b)
  592.  return a:sub(1, #b) == b
  593. end
  594. local function endswith(hello, lo)
  595.     return hello:sub(#hello - #lo + 1, #hello) == lo
  596. end
  597.  
  598. funcs.writefile = function(path, content)
  599.  local Path = path:split('/')
  600.  local CurrentPath = {}
  601.  for i = 1, #Path do
  602.   local a = Path[i]
  603.   CurrentPath[i] = a
  604.   if not files[a] and i ~= #Path then
  605.    files[table.concat(CurrentPath, '/')] = {}
  606.    files[table.concat(CurrentPath, '/') .. '/'] = files[table.concat(CurrentPath, '/')]
  607.   elseif i == #Path then
  608.    files[table.concat(CurrentPath, '/')] = tostring(content)
  609.   end
  610.  end
  611. end
  612. funcs.makefolder = function(path)
  613.  files[path] = {}
  614.  files[path .. '/'] = files[path]
  615. end
  616. funcs.isfolder = function(path)
  617.  return type(files[path]) == 'table'
  618. end
  619. funcs.isfile = function(path)
  620.  return type(files[path]) == 'string'
  621. end
  622. funcs.readfile = function(path)
  623.  return files[path]
  624. end
  625. funcs.appendfile = function(path, text2)
  626.  funcs.writefile(path, funcs.readfile(path) .. text2)
  627. end
  628. funcs.loadfile = function(path)
  629.  local content = getgenv().readfile(path)
  630.  if not content then return error('no file called ' .. tostring(path) .. ' exists.') end
  631.  local _, func = pcall(loadstring, content)
  632.  return func
  633. end
  634. funcs.delfolder = function(path)
  635.  local f = files[path]
  636.  if type(f) == 'table' then files[path] = nil end
  637. end
  638. funcs.delfile = function(path)
  639.  local f = files[path]
  640.  if type(f) == 'string' then files[path] = nil end
  641. end
  642. funcs.listfiles = function(path)
  643.     if not path or path == '' then
  644.      local Files = {}
  645.      for i, v in pairs(files) do
  646.       if #i:split('/') == 1 then table.insert(Files, i) end
  647.      end
  648.      return Files
  649.     end
  650.     if type(files[path]) ~= 'table' then return error(path .. ' is not a folder.') end
  651.     local Files = {}
  652.     for i, v in pairs(files) do
  653.       if startswith(i, path .. '/') and not endswith(i, '/') and i ~= path and #i:split('/') == (#path:split('/') + 1) then table.insert(Files, i) end
  654.     end
  655.     return Files
  656. end
  657.  
  658. funcs.http.request = funcs.request
  659. funcs.syn.crypt = funcs.crypt
  660. funcs.syn.crypto = funcs.crypt
  661. funcs.syn_backup = funcs.syn
  662.  
  663.  
  664. funcs.getexecutorname = function()
  665.  return 'MoreUNC', '1'
  666. end
  667. funcs.identifyexecutor = funcs.getexecutorname
  668. funcs.http_request = getgenv().request or funcs.request
  669. funcs.getscripts = function()
  670.  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
  671. end
  672. funcs.get_scripts = function()
  673.  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
  674. end
  675. funcs.getmodules = function()
  676.  local a = {};for i, v in pairs(game:GetDescendants()) do if v:IsA("ModuleScript") then table.insert(a, v) end end return a
  677. end
  678. funcs.getloadedmodules = funcs.getmodules
  679. funcs.make_readonly = funcs.setreadonly
  680. funcs.makereadonly = funcs.setreadonly
  681. funcs.base64encode = funcs.crypt.base64encode
  682. funcs.base64decode = funcs.crypt.base64decode
  683. funcs.clonefunc = funcs.clonefunction
  684. funcs.getinstances = function()
  685.  return game:GetDescendants()
  686. end
  687. funcs.getnilinstances = function()
  688.  return Instances
  689. end
  690. funcs.iswriteable = function(tbl)
  691.  return not table.isfrozen(tbl)
  692. end
  693. funcs.makewriteable = function(tbl)
  694.  return funcs.setreadonly(tbl, false)
  695. end
  696. funcs.isscriptable = function(self, prop)
  697.  local s = pcall(function()
  698.   self[prop] = self[prop]
  699.  end)
  700.  return s
  701. end
  702. funcs.getrunningscripts = function()
  703.  local scripts = {}
  704.  for _, v in pairs(funcs.getinstances()) do
  705.   if v:IsA("LocalScript") and v.Enabled then table.insert(scripts, v) end
  706.  end
  707.  return scripts
  708. end
  709.  
  710. -- SHA256 Hashing
  711. 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
  712.  
  713. funcs.Drawing.new = function(Type) -- Drawing.new
  714.     local baseProps = {
  715.      Visible = false,
  716.      Color = Color3.new(0,0,0),
  717.      ClassName = nil
  718.     }
  719.     if Type == 'Line' then
  720.         local a = Instance.new("Frame", Instance.new("ScreenGui", DrawingDict))
  721.         a.Visible = false
  722.         a.Size = UDim2.new(0, 0, 0, 0)
  723.         a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  724.         a.BackgroundTransparency = 1
  725.         a.BorderSizePixel = 0
  726.  
  727.         local meta = baseProps
  728.         meta.ClassName = Type
  729.         meta.__index = {
  730.             Thickness = 1,
  731.             From = Vector2.new(0, 0),
  732.             To = Vector2.new(0, 0),
  733.             Transparency = 0,
  734.             Remove = function(a)
  735.                 a:Destroy()
  736.             end,
  737.             Destroy = function()
  738.                 a:Destroy()
  739.             end,
  740.             updateLine = function(self)
  741.              local from = self.From
  742.              local to = self.To
  743.              local distance = (to - from).Magnitude
  744.              local angle = math.deg(math.atan2(to.Y - from.Y, to.X - from.X))
  745.  
  746.              a.Size = UDim2.new(0, distance, 0, self.Thickness)
  747.              a.Position = UDim2.new(0, from.X, 0, from.Y)
  748.              a.Rotation = angle
  749.             end
  750.         }
  751.  
  752.         meta.__newindex = function(self, key, value)
  753.             if key == 'Thickness' and typeof(value) == 'number' then
  754.                 rawset(self, key, value)
  755.                 a.Size = UDim2.new(0, (self.To - self.From).Magnitude, 0, value)
  756.             elseif key == 'Visible' and typeof(value) == 'boolean' then
  757.                 rawset(self, key, value)
  758.                 a.Visible = value
  759.             elseif key == 'Color' and typeof(value) == 'Color3' then
  760.                 rawset(self, key, value)
  761.                 a.BackgroundColor3 = value
  762.             elseif key == 'Transparency' and typeof(value) == 'number' and value <= 1 then
  763.                 rawset(self, key, value)
  764.                 a.BackgroundTransparency = 1 - value
  765.             elseif key == 'From' and typeof(value) == 'Vector2' then
  766.                 rawset(self, key, value)
  767.                 self:updateLine()
  768.             elseif key == 'To' and typeof(value) == 'Vector2' then
  769.                 rawset(self, key, value)
  770.                 self:updateLine()
  771.             end
  772.         end
  773.  
  774.         return setmetatable({}, meta)
  775.     elseif Type == 'Square' then
  776.         local a = Instance.new("Frame", DrawingDict)
  777.         a.Visible = false
  778.         a.Size = UDim2.new(0, 0, 0, 0)
  779.         a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  780.         a.BackgroundTransparency = 1
  781.         a.BorderSizePixel = 0
  782.         local b = Instance.new("UIStroke", a)
  783.         b.Color = Color3.fromRGB(255, 255, 255)
  784.         b.Enabled = true
  785.  
  786.         local meta = baseProps
  787.         meta.ClassName = Type
  788.         meta.__index = {
  789.             Size = Vector2.new(0,0),
  790.             Position = Vector2.new(0, 0),
  791.             Remove = function()
  792.                 a:Destroy()
  793.             end,
  794.             Destroy = function()
  795.                 a:Destroy()
  796.             end,
  797.             updateSquare = function(self)
  798.              a.Size = UDim2.new(0, self.Size.X, 0, self.Size.Y)
  799.              a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
  800.             end
  801.         }
  802.  
  803.         meta.__newindex = function(self, key, value)
  804.             if key == 'Filled' and typeof(value) == 'boolean' then
  805.                 rawset(self, key, value)
  806.                 b.Enabled = not value
  807.                 a.BackgroundTransparency = value and 0 or 1
  808.             elseif key == 'Visible' and typeof(value) == 'boolean' then
  809.                 rawset(self, key, value)
  810.                 a.Visible = value
  811.             elseif key == 'Color' and typeof(value) == 'Color3' then
  812.                 rawset(self, key, value)
  813.                 a.BackgroundColor3 = value
  814.                 b.Color = value
  815.             elseif key == 'Position' and typeof(value) == 'Vector2' then
  816.                 rawset(self, key, value)
  817.                 self:updateSquare()
  818.             elseif key == 'Size' and typeof(value) == 'Vector2' then
  819.                 rawset(self, key, value)
  820.                 self:updateSquare()
  821.             end
  822.         end
  823.  
  824.         return setmetatable({}, meta)
  825.     elseif Type == 'Circle' then
  826.         local a = Instance.new("Frame", Instance.new("ScreenGui", DrawingDict))
  827.         a.Visible = false
  828.         a.Size = UDim2.new(0, 0, 0, 0)
  829.         a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  830.         a.BackgroundTransparency = 1
  831.         a.BorderSizePixel = 0
  832.         local b = Instance.new("UIStroke", a)
  833.         b.Color = Color3.fromRGB(255, 255, 255)
  834.         b.Enabled = false
  835.         b.Thickness = 1
  836.         local c = Instance.new("UICorner", a)
  837.         c.CornerRadius = UDim.new(1, 0)
  838.  
  839.         local meta = baseProps
  840.         meta.ClassName = Type
  841.         meta.__index = {
  842.             Thickness = 1,
  843.             Filled = false,
  844.             NumSides = 0,
  845.             Radius = 1,
  846.             Position = Vector2.new(0, 0),
  847.             Transparency = 0,
  848.             Remove = function()
  849.                 a:Destroy()
  850.             end,
  851.             Destroy = function()
  852.                 a:Destroy()
  853.             end,
  854.             updateCircle = function(self)
  855.              a.Size = UDim2.new(0, self.Radius, 0, self.Radius)
  856.              a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
  857.              b.Enabled = not self
  858.              b.Color = self.Color
  859.             end
  860.         }
  861.  
  862.         meta.__newindex = function(self, key, value)
  863.             if key == 'Thickness' and typeof(value) == 'number' then
  864.                 rawset(self, key, value)
  865.                 b.Thickness = value
  866.             elseif key == 'Visible' and typeof(value) == 'boolean' then
  867.                 rawset(self, key, value)
  868.                 a.Visible = value
  869.             elseif key == 'Color' and typeof(value) == 'Color3' then
  870.                 rawset(self, key, value)
  871.                 a.BackgroundColor3 = value
  872.                 a.Color = value
  873.             elseif key == 'Transparency' and typeof(value) == 'number' then
  874.                 rawset(self, key, value)
  875.                 a.BackgroundTransparency = 1 - value
  876.             elseif key == 'Position' and typeof(value) == 'Vector2' then
  877.                 rawset(self, key, value)
  878.                 self:updateCircle()
  879.             elseif key == 'Radius' and typeof(value) == 'number' then
  880.                 rawset(self, key, value)
  881.                 self:updateCircle()
  882.             elseif key == 'NumSides' and typeof(value) == 'number' then
  883.                 rawset(self, key, value)
  884.             elseif key == 'Filled' and typeof(value) == 'boolean' then
  885.                 rawset(self, key, value)
  886.                 self:updateCircle()
  887.             end
  888.         end
  889.  
  890.         return setmetatable({}, meta)
  891.     elseif Type == 'Text' then
  892.         local a = Instance.new("TextLabel", DrawingDict)
  893.         a.Visible = false
  894.         a.Size = UDim2.new(0, 0, 0, 0)
  895.         a.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  896.         a.BackgroundTransparency = 1
  897.         a.BorderSizePixel = 0
  898.         a.TextStrokeColor3 = Color3.new(0,0,0)
  899.         a.TextStrokeTransparency = 1
  900.  
  901.         local meta = baseProps
  902.         meta.ClassName = Type
  903.         meta.__index = {
  904.             Text = '',
  905.             Transparency = 0,
  906.             Size = 0,
  907.             Center = false,
  908.             Outline = false,
  909.             OutlineColor = Color3.new(0,0,0),
  910.             Position = Vector2.new(0,0),
  911.             Font = 3,
  912.             Remove = function()
  913.                 a:Destroy()
  914.             end,
  915.             Destroy = function()
  916.                 a:Destroy()
  917.             end,
  918.             updateText = function(self)
  919.              a.TextScaled = true
  920.              a.Size = UDim2.new(0, self.Size * 3, 0, self.Size / 2)
  921.              a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
  922.              a.Text = self.Text
  923.              a.Font = Fonts[self.Font]
  924.              a.Visible = self.Visible
  925.              a.TextColor3 = self.Color
  926.              a.TextTransparency = 1 - self.Transparency
  927.              a.BorderSizePixel = self.Outline and 1 or 0
  928.              if self.Center then
  929.               a.TextXAlignment = Enum.TextXAlignment.Center
  930.               a.TextYAlignment = Enum.TextYAlignment.Center
  931.              else
  932.               a.TextXAlignment = Enum.TextXAlignment.Left
  933.               a.TextYAlignment = Enum.TextYAlignment.Top
  934.              end
  935.              a.TextStrokeTransparency = self.Outline and 0 or 1
  936.              a.TextStrokeColor3 = self.OutlineColor
  937.             end
  938.         }
  939.  
  940.         meta.__newindex = function(self, key, value)
  941.             if key == 'Text' and typeof(value) == 'string' then
  942.                 rawset(self, key, value)
  943.             elseif key == 'Visible' and typeof(value) == 'boolean' then
  944.                 rawset(self, key, value)
  945.                 a.Visible = value
  946.             elseif key == 'Color' and typeof(value) == 'Color3' then
  947.                 rawset(self, key, value)
  948.             elseif key == 'Transparency' and typeof(value) == 'number' then
  949.                 rawset(self, key, value)
  950.             elseif key == 'Position' and typeof(value) == 'Vector2' then
  951.                 rawset(self, key, value)
  952.             elseif key == 'Size' and typeof(value) == 'number' then
  953.                 rawset(self, key, value)
  954.             elseif key == 'Outline' and typeof(value) == 'boolean' then
  955.                 rawset(self, key, value)
  956.             elseif key == 'Center' and typeof(value) == 'boolean' then
  957.                 rawset(self, key, value)
  958.             elseif key == 'OutlineColor' and typeof(value) == 'Color3' then
  959.                 rawset(self, key, value)
  960.             elseif key == 'Font' and typeof(value) == 'number' then
  961.                 rawset(self, key, value)
  962.             end
  963.             self:updateText()
  964.         end
  965.  
  966.         return setmetatable({}, meta)
  967.     elseif Type == 'Image' then
  968.         local a = Instance.new("ImageLabel", DrawingDict)
  969.         a.Visible = false
  970.         a.Size = UDim2.new(0, 0, 0, 0)
  971.         a.ImageColor3 = Color3.fromRGB(255,255,255)
  972.         a.BackgroundTransparency = 1
  973.         a.BorderSizePixel = 0
  974.  
  975.         local meta = baseProps
  976.         meta.ClassName = 'Image'
  977.         meta.__index = {
  978.             Text = '',
  979.             Transparency = 0,
  980.             Size = Vector2.new(0, 0),
  981.             Position = Vector2.new(0,0),
  982.             Color = Color3.fromRGB(255, 255, 255),
  983.             Image = '',
  984.             Remove = function()
  985.                 a:Destroy()
  986.             end,
  987.             Destroy = function()
  988.                 a:Destroy()
  989.             end,
  990.             updateImage = function(self)
  991.              a.Size = UDim2.new(0, self.Size.X, 0, self.Size.Y)
  992.              a.Position = UDim2.new(0, self.Position.X, 0, self.Position.Y)
  993.              a.Visible = self.Visible
  994.              a.ImageColor3 = self.Color
  995.              a.ImageTransparency = 1 - self.Transparency
  996.              a.BorderSizePixel = self.Outline and 1 or 0
  997.              a.Image = self.Image
  998.             end
  999.         }
  1000.  
  1001.         meta.__newindex = function(self, key, value)
  1002.             if key == 'Visible' and typeof(value) == 'boolean' then
  1003.                 rawset(self, key, value)
  1004.             elseif key == 'Color' and typeof(value) == 'Color3' then
  1005.                 rawset(self, key, value)
  1006.             elseif key == 'Transparency' and typeof(value) == 'number' then
  1007.                 rawset(self, key, value)
  1008.             elseif key == 'Position' and typeof(value) == 'Vector2' then
  1009.                 rawset(self, key, value)
  1010.             elseif key == 'Size' and typeof(value) == 'number' then
  1011.                 rawset(self, key, value)
  1012.             elseif key == 'Image' and typeof(value) == 'string' then
  1013.                 rawset(self, key, value)
  1014.             else
  1015.              return
  1016.             end
  1017.             self:updateImage()
  1018.         end
  1019.  
  1020.         return setmetatable({}, meta)
  1021.     end
  1022. end
  1023.  
  1024. funcs.randomstring = funcs.crypt.random
  1025. funcs.getprotecteduis = function()
  1026.  return protecteduis
  1027. end
  1028. funcs.getprotectedguis = funcs.getprotecteduis
  1029.  
  1030.  
  1031. local Count = 0
  1032. local Total = 0
  1033. for index, _ in pairs(Descendants(funcs)) do
  1034.  if not getgenv()[index] then
  1035.   Total = Total + 1
  1036.  end
  1037. end
  1038. print('Running MoreUNC | Roblox',version(),' | Discord https://discord.gg/gYhqMRBeZV')
  1039. for i, v in pairs(Descendants(funcs)) do
  1040.  if not getgenv()[i] then Count = Count + 1 end
  1041.  local Result = SafeOverride(i, v)
  1042.  local str = Result == 1 and ('%s %s already exists.'):format(type(v), i) or Result == 2 and ("Added %s %s to the global environment. (%d/%d)"):format(type(v), i, Count, Total) or Result ~= 1 and Result ~= 2 and ("Unknown result for function %s."):format(type(v), i)
  1043.  print(str)
  1044. end
  1045. funcs.syn.protect_gui(DrawingDict)
  1046. funcs.syn.protect_gui(ClipboardUI)
Add Comment
Please, Sign In to add comment