-- // MoreUNC V2.0.0, Have fun skidding devs! local Operations = { -- Fixes executors that only use lua, not luau Addition = {'(%w+)(%s*)%+=(%s*)(%w+)', '%1%2=%3%1%2+%3%4'}, -- v1+=v2 -> v1=v1+v2 Subtraction = {'(%w+)(%s*)%-=(%s*)(%w+)', '%1%2=%3%1%2-%3%4'}, -- v1-=v2 Multiplication = {'(%w+)(%s*)%*=(%s*)(%w+)', '%1%2=%3%1%2*%3%4'}, -- v1*=v2 Division = {'(%w+)(%s*)/=(%s*)(%w+)', '%1%2=%3%1%2/%3%4'}, -- v1/=v2 Modulus = {'(%w+)(%s*)%%=(%s*)(%w+)','%1%2=%3%1%2%%%3%4'}, -- v1%=v2 Concatenation = {'(%w+)(%s*)%.%.=(%s*)(%w+)', '%1%2=%3%1%2..%3%4'} -- v1..=v2 } local forceoverride = {} function replace(Code) for _, t in next, Operations do Code = string.gsub(Code, t[1], t[2]) end return Code end local Options = { OverrideFunctions = true, -- If the executor Overrides already existing functions enviroment = setmetatable({}, {__protected = 'This metatable is protected'}),-- i don't really care if you unprotect it. OverrideIgnore = {'loadstring', 'checkcaller', 'isexecutorclosure', 'isourclosure', 'isexecclosure'} -- Functions you don't wanna override if they already exist } -- // Localization: local rawget = rawget local loadstring = loadstring local oldLoadstring = loadstring local setmetatable = setmetatable local type = type local pairs = pairs local next = next local typeof = typeof local debug = debug local table = table local string = string local bit32 = bit32 local require = require 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 local ClipboardQueue = Queue.new() -- // Instances: local Players = game:GetService("Players") local ScriptType = script.ClassName == 'Script' and 'Server' or script.ClassName == 'LocalScript' and 'Client' or script.ClassName == 'ModuleScript' and 'Module' local lp = ScriptType == 'Client' and Players.LocalPlayer or Players.PlayerAdded:Wait() getgenv = getgenv or function() return getfenv(0) end -- // Variables local hui = nil local valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' local nilinstances, CachedInstances, DrawingCache = {Instance.new("LocalScript")}, {}, {} 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} local vim; -- // Drawing: local FakeFonts = setmetatable({ UI = 0, System = 1, Plex = 2, Monospace = 3, }, { __call = function(s) return s end }) local Fonts = { [0] = Enum.Font.Arial, [1] = Enum.Font.BuilderSans, [2] = Enum.Font.Gotham, [3] = Enum.Font.RobotoMono } local Base = { Visible = false, Color = Color3.new(0,0,0), ClassName = nil, Remove = function(self) for i, v in next, DrawingCache do if v == self then local a = i i:Destroy() DrawingCache[a] = nil end end end } Base.Destroy = Base.Remove -- // Drawing end local function try(fn, ...) return (pcall(fn, ...)) end local function newcclosure(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 local function getthreadidentity() local securityChecks = { { name = "None", number = 0, canAccess = try(function() return game.Name end) }, { name = "PluginSecurity", number = 1, canAccess = try(function() return game:GetService("CoreGui").Name end) }, { name = "LocalUserSecurity", number = 3, canAccess = try(function() return game.DataCost end) }, { name = "WritePlayerSecurity", number = 4, canAccess = try(Instance.new, "Player") }, { name = "RobloxScriptSecurity", number = 5, canAccess = try(function() return game:GetService("CorePackages").Name end) }, { name = "RobloxSecurity", number = 6, canAccess = try(function() return Instance.new("SurfaceAppearance").TexturePack end) }, { name = "NotAccessibleSecurity", number = 7, canAccess = try(function() Instance.new("MeshPart").MeshId = "" end) } } local lasti = 1 for i = 1, #securityChecks do if securityChecks[i].canAccess then lasti = i else return lasti end end return lasti end if getthreadidentity() >= 3 then vim = Instance.new("VirtualInputManager") end local RBXActive = true local ClipboardUI = Instance.new("ScreenGui") local ClipboardBox = Instance.new('TextBox') -- For setclipboard ClipboardBox.Position = UDim2.new(100, 0, 100, 0) -- VERY off screen ClipboardBox.Parent = ClipboardUI local HttpService, DrawingUI = game:GetService('HttpService'), Instance.new("ScreenGui") -- // Libararies: local protected_guis = {} -- // Events: game.DescendantRemoving:Connect(function(d) table.insert(nilinstances, d) end) game:FindFirstChildOfClass('UserInputService').WindowFocused:Connect(function() RBXActive = true end) game:FindFirstChildOfClass('UserInputService').WindowFocusReleased:Connect(function() RBXActive = false end) function rawlength(t1) if type(t1) ~= 'table' then return 0 end local count = 0 for _, _ in next, t1 do count = count + 1 end end function shallowequals(t1, t2) if t1 == nil or t2 == nil then return false end if type(t1) ~= 'table' or type(t2) ~= 'table' then return false end for key, value in next, t1 do if t2[key] ~= value then return false end end for key, value in next, t2 do if t1[key] ~= value then return false end end return true end function SetAliases(func, aliases) for _, Name in next, aliases do Options.enviroment[Name] = getgenv()[func] or Options.enviroment[func] end end function AddElement(name, val, aliases, forcebypass) if forcebypass == true then table.insert(forceoverride, name) end Options.enviroment[name] = val if typeof(aliases) == 'table' then SetAliases(name, aliases) end return val end function AddEnviroment() local env = (getgenv and getgenv()) or getfenv(0) for Name, Value in next, Options.enviroment do if Options.OverrideFunctions or not env[Name] or table.find(forceoverride, Name) or (type(Value) == 'table' and (not shallowequals(env[Name], Value) or rawlength(Value) > rawlength(env[Name]))) and not table.find(Options.OverrideIgnore, Name) then print("✅ Added",Name) env[Name] = Value elseif env[Name] and not table.find(forceoverride, Name) and not Options.OverrideFunctions or (type(Value) == 'table' and (shallowequals(env[Name], Value) or rawlength(Value) <= rawlength(env[Name]))) or table.find(Options.OverrideIgnore, Name) then print("âŒ",Name,'already exists.') end end end local Base64 = AddElement('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, 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 }) AddElement('base64encode', Base64.encode, {'base64_encode'}) AddElement('base64decode', Base64.decode, {'base64_decode'}) AddElement('debug', { getinfo = function(f) assert(type(f)=='number' or type(f) == 'function', 'invalid argument #1 to \'getinfo\', number or function expected, got ' .. tostring(typeof(f))) local ParamCount, IsVararg = debug.info(f, 'a') local n = debug.info(f, 'n') ~= '' and debug.info(f, 'n') or '' local source = debug.info(f, 's') return{ numparams = ParamCount, is_vararg = IsVararg and 1 or 0, name = n, currentline = debug.info(f, 'l'), source = source, short_src = source:sub(1, 60), what = source == '[C]' and 'C' or 'Lua', func = f, nups = 0 } end }) -- // Sandboxing Game: -- // HTTP Requests Support function rqst(Options) assert(type(Options) == 'table', 'Argument #1 to \'request\' must be a table, got ' .. typeof(Options)) if typeof(script) == 'Instance' and script.ClassName == 'Script' then return HttpService:RequestAsync(Options) end local Timeout, Done, Time = 5, false, 0 local Return = { Success = false, StatusCode = 408, StatusMessage = 'Request Timeout', Headers = {}, Body = '' } local function Callback(Success, Response) Done = true Return.Success = Success Return.StatusCode = Response.StatusCode Return.StatusMessage = Response.StatusMessage Return.Headers = Response.Headers Return.Body = Response.Body end HttpService:RequestInternal(Options):Start(Callback) while not Done and Time < Timeout do -- probably a bad approach? Time = Time + .1 task.wait(.1) end return Return end AddElement('http', { request = rqst }) local s, e = pcall(function() return game.HttpGet end) local _game = game AddElement('request', rqst, {'http_request', 'syn_backup.request', 'syn.request'}) if not s then AddElement('game', setmetatable({}, { __index = function(self, key) if key == 'HttpGet' then return function(_, Url) return rqst({Url = Url, Method = "GET"}).Body end elseif key == 'HttpPost' then return function(Url, Data, contentType) local Args = {Url = Url, Method = "POST", Body = Data} if contentType then Args.Headers = {['Content-Type'] = contentType} end return rqst(Args).Body end else local k = _game[key] if type(k) == 'function' then return function(_, ...) local args = {...} if (key == 'GetService' or key == 'FindFirstChildOfClass') and args[1] == 'Players' then return setmetatable({}, { __index = function(_, t) if t == 'LocalPlayer' then return lp end local p = Players[t] if type(p) == 'function' then return function(_, ...) return Players[t](Players, ...) end else return p end end, }) end return k(_game, ...) end else return k end end end, __tostring = function() return tostring(game) end })) end local LoadSuccess, HashCode = pcall((not s and Options.enviroment.game.HttpGet or game.HttpGet), (not s and _game or game), "https://pastebin.com/raw/iRDTgy7w", true) local LoadSuccessV2, rconsolecode = pcall((not s and Options.enviroment.game.HttpGet or game.HttpGet), (not s and _game or game), "https://pastebin.com/raw/haqApsFE", true) local rconsole if not LoadSuccess then Hash = {} else Hash = loadstring(HashCode)() end if LoadSuccessV2 then rconsole = loadstring(rconsolecode)() else warn("Hey! rconsole did not successfully load, This could be due to an HTTP error, Message:",rconsolecode) end local HashLib = setmetatable({}, { __metatable = 'HashLib // Protected', __index = function(self, key) -- Make it work for both _ and - local k1 = key:gsub('_', '-') local k2 = key:gsub('%-', '_') local m1, m2 = Hash[k1], Hash[k2] if m1 then return m1 end if m2 then return m2 end return rawget(self, key) end }) -- // crypt library AddElement('crypt', { hex = { encode = function(data) assert(type(data)=='string', 'argument #1 to \'hex.encode\' must be of type string, Received ' .. typeof(data)) local hex = '' for i = 1, #data do hex = hex .. string.format("%02x", string.byte(data, i)) end return hex end, decode = function(data) assert(type(data)=='string', 'argument #1 to \'hex.decode\' must be of type string, Received ' .. typeof(data)) local text = "" for i = 1, #data, 2 do local byte_str = string.sub(data, i, i+1) local byte = tonumber(byte_str, 16) text = text .. string.char(byte) end return text end }, custom = { hash = function(data, alg) local v1 = HashLib[alg] local v2 = HashLib[data] if not v1 and not v2 then error(string.format("No algorithm found with name '%s' or '%s'", alg, data)) end if v1 then return v1(data) elseif v2 then return v2(alg) end end }, hash = function(data, alg) local v1 = HashLib[alg] local v2 = HashLib[data] if not v1 and not v2 then error(string.format("No algorithm found with name '%s' or '%s'", alg, data)) end if v1 then return v1(data) elseif v2 then return v2(alg) end end, url = { encode = function(data) return game:GetService("HttpService"):UrlEncode(data) end, decode = function(data) -- replace + with space data = string.gsub(data, '%+', ' ') -- replace hexadecimals with the character for them data = string.gsub(data, "%%(%x%x)", function(hex) return string.char(tonumber(hex, 16)) end) data = string.gsub(data, "\r\n", "\n") -- obvious return data end }, base64 = Base64, base64_encode = Base64.encode, base64_decode = Base64.decode, base64encode = Base64.encode, base64decode = Base64.decode, random = function(len) assert(type(len) == 'number', 'Argument #1 to \'random\' must be a number, got ' .. typeof(len)) assert(len > 0 and len < 1025, 'Argument #1 to \'random\' must be over 0 and must not exceed 1024.') local a = {} for _=1,len do local r=math.random(1, #valid)table.insert(a,valid:sub(r,r))end;return table.concat(a) end, generatekey = function(len) len = len or 32 local key = '' local Valid = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' for _ = 1, len do local n = math.random(1, #Valid) key = key .. string.sub(Valid, n, n) end return Base64.encode(key) end, generatebytes = function(len) assert(type(len) == 'number', 'Argument #1 to \'generatebytes\' must be a number, got ' .. typeof(len)) local key = '' local Valid = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' for _ = 1, len do local n = math.random(1, #Valid) key = key .. string.sub(Valid, n, n) end return Base64.encode(key) end }, {'crypto', 'syn.crypto', 'syn_backup.crypto'}) -- // syn Library AddElement('syn', { is_beta = function() return true end, -- ???? i do not know why this is needed protect_gui = function(gui) -- Unofficial protect protected_guis[gui] = { Parent = gui.Parent, Name = gui.Name } gui.Parent = gethui() gui.Name = randomstring(math.random(8, 16)) end, unprotect_gui = function(gui) local Gui = rawget(protected_guis, gui) if not Gui then return error(`GUI {gui.Name} does not exist in the protected guis list.`, 1) end gui.Name = Gui.Name gui.Parent = Gui.Parent protected_guis[gui] = nil end, request = rqst, get_thread_identity = getthreadidentity, crypto = Options.enviroment.crypt }, {'syn_backup'}) -- // cache Library AddElement('cache', { iscached = function(d) return CachedInstances[d] ~= 'invalid' end, invalidate = function(d) CachedInstances[d] = 'invalid' d.Parent = nil end, replace = function(a, b) CachedInstances[a] = b b.Name = a.Name b.Parent = a.Parent a.Parent = nil end }) -- // Drawing Library AddElement('Drawing', { Fonts = FakeFonts, new = function(Type) local function SetBase(tbl) local baseProps = { Visible = false, Color = Color3.new(0,0,0), ClassName = nil, ZIndex = 1, Remove = function(self) for i, v in next, DrawingCache do if v == self then local a = i i:Destroy() DrawingCache[a] = nil end end end } baseProps.Destroy = baseProps.Remove for i, v in next, baseProps do rawset(tbl.__index, i, v) end end if Type == 'Line' then local a = Instance.new("Frame", DrawingUI) 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 = {} meta.ClassName = Type meta.__index = { Thickness = 1, From = Vector2.new(0, 0), To = Vector2.new(0, 0), Transparency = 0, 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 a.BackgroundTransparency = 1 - self.Transparency a.BackgroundColor3 = self.Color a.Visible = self.Visible a.ZIndex = self.ZIndex end } SetBase(meta) meta.__newindex = function(self, key, value) if not self then return end if typeof(meta.__index[key]) == typeof(value) then rawset(self, key, value) self:updateLine() end end meta.__metatable = 'This metatable is protected.' local meta1 = setmetatable({}, meta) DrawingCache[a] = meta1 return meta1 elseif Type == 'Square' then local a = Instance.new("Frame", DrawingUI) 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 = {} meta.ClassName = Type meta.__index = { Size = Vector2.new(0,0), Position = Vector2.new(0, 0), Filled = false, 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) b.Enabled = self.Filled b.Color = self.Color a.BackgroundColor3 = self.Color a.ZIndex = self.ZIndex end } SetBase(meta) meta.__newindex = function(self, key, value) if not self then return end if typeof(self[key]) == typeof(value) then rawset(self, key, value) self:updateSquare() end end local meta1 = setmetatable({}, meta) DrawingCache[a] = meta1 return meta1 elseif Type == 'Circle' then local a = Instance.new("Frame", DrawingUI) 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 = {} meta.ClassName = Type meta.__index = { Thickness = 1, Filled = false, NumSides = 0, Radius = 1, Position = Vector2.new(0, 0), Transparency = 0, updateCircle = function(self) if not b or not a then return end a.Visible = self.Visible a.BackgroundTransparency = self.Transparency - 1 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 a.ZIndex = self.ZIndex end } SetBase(meta) meta.__newindex = function(self, key, value) if not self then return end if typeof(self[key]) == typeof(value) then rawset(self, key, value) self:updateCircle() end end local meta1 = setmetatable({}, meta) DrawingCache[a] = meta1 return meta1 elseif Type == 'Text' then local a = Instance.new("TextLabel", DrawingUI) 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 = {} 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, 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.BackgroundTransparency = 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 a.ZIndex = self.ZIndex end } SetBase(meta) meta.__newindex = function(self, key, value) if not self then return end if typeof(self[key]) == typeof(value) then rawset(self, key, value) self:updateText() end end local meta1 = setmetatable({}, meta) DrawingCache[a] = meta1 return meta1 end end}) local old = Options.enviroment.Drawing.new Options.enviroment.Drawing.new = function(Type) if Type ~= 'Image' then return old(Type) else return old('Circle') end end AddElement('loadstring', function(code) local test = oldLoadstring('local result=3;result+=1;return result')() local test2 = oldLoadstring('local result="h";result..="i";return result')() if test ~= 4 or test2 ~= 'hi' then return oldLoadstring(replace(code)) elseif test == 4 and test2 == 'hi' then return oldLoadstring(code) end end, {}, true) AddElement('getrenderproperty', function(drawing, prop) return drawing[prop] end) AddElement('setrenderproperty', function(a, b, c) if Options.enviroment.isrenderobj(a) then a[b] = c end end) AddElement('isrenderobj', function(a) for c, b in next, DrawingCache do if b == a then return true end end return false end) AddElement('gethui', function() if not hui then local s, _ = pcall(function() local Path1 = _game:FindFirstChildOfClass('CoreGui') hui = Instance.new("Folder", Path1) hui.Name = 'hidden_ui\0' end) if not s then if lp then hui = Instance.new("Folder", lp:FindFirstChildOfClass("PlayerGui")) hui.Name = 'hidden_ui\0' else if #Players:GetChildren() == 0 then repeat task.wait() until #Players:GetChildren() > 0 end local random_player = Players:GetChildren()[math.random(1, #Players:GetChildren())] hui = Instance.new("Folder", random_player:FindFirstChild("PlayerGui")) -- Add it into a random player's PlayerGui if there isn't a local player hui.Name = 'hidden_ui\0' end end end return hui end, {'get_hidden_ui', 'gethiddenui'}) AddElement('randomstring', function(length) length = length or 32 local str = {} for i = 1, length do local r = math.random(1, #valid) str[i] = valid:sub(r, r) end return table.concat(str) end) AddElement('iscclosure', function(a) return debug.info(a, 's') == '[C]' end, {'is_c_closure'}) AddElement('islclosure', function(a) return debug.info(a, 's') ~= '[C]' end, {'is_l_closure'}) AddElement('isourclosure', function(a) -- Credits to empereans for this return debug.info(a, 's') == debug.info(1, 's') end, {'isexecclosure', 'isexeclosure', 'is_executor_closure', 'isexecutorclosure', 'checkclosure'}) AddElement('getinstances', function() return game:GetDescendants() end) AddElement('getnilinstances', function() return nilinstances end) AddElement('isreadonly', function(t) return table.isfrozen(t) end) AddElement('isscriptable', function(instance, prop) assert(typeof(instance) == 'Instance', 'Argument #1 to \'setscriptable\' must be an Instance, got ' .. typeof(instance)) return select(1, pcall(function() return instance[prop] end)) end, {'is_scriptable'}) AddElement('getscripts', function() local a = {}for _, v in next, game:GetDescendants() do if v.ClassName == 'ModuleScript' or v.ClassName == 'LocalScript' then table.insert(a, v) end end;return a end) AddElement('getloadedmodules', function() local a = {}for _, v in next, game:GetDescendants() do if v.ClassName == 'ModuleScript' then table.insert(a, v) end end;return a end) AddElement('getcallingscript', function() local Source = debug.info(1, 's') for i, v in next, game:GetDescendants() do if v:GetFullName() == Source then return v end end end, {'get_calling_script'}) AddElement('isrbxactive', function() return RBXActive end, {'isgameactive'}) AddElement('newcclosure', newcclosure) -- Credits to empereans and myworld for this AddElement('getthreadidentity', getthreadidentity, {'getthreadcontext', 'getidentity'}) AddElement('getrunningscripts', function() -- Purposely made ugly code to make it a 1 liner. local a={}for _,v in next,game:GetDescendants()do if v.ClassName=='LocalScript'or v.ClassName=='ModuleScript'then table.insert(a,v)end;end;return a end) AddElement('getexecutorname', function() return 'MoreUNC', '2.0.0' end, {'identifyexecutor'}) AddElement('cleardrawcache', function() for _, m in next, DrawingCache do m:Remove() end end) -- // File System: 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 AddElement('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) AddElement('makefolder', function(path) Files[path] = {} Files[path .. '/'] = Files[path] end) AddElement('isfolder', function(path) return type(Files[path]) == 'table' end) AddElement('isfile', function(path) return type(Files[path]) == 'string' end) AddElement('readfile', function(path) return Files[path] end) AddElement('appendfile', function(path, text2) writefile(path, readfile(path) .. text2) end) AddElement('loadfile', function(path) local content = 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) AddElement('delfolder', function(path) local f = Files[path] if type(f) == 'table' then Files[path] = nil end end) AddElement('delfile', function(path) local f = Files[path] if type(f) == 'string' then Files[path] = nil end end) AddElement('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_2 = {} 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_2, i) end end return Files_2 end) AddElement('checkcaller', function() local info = debug.info(getgenv, 'slnaf') return debug.info(1, 'slnaf')==info end) AddElement('clonefunction', function(f) return function(...) -- Probably a bad way to do this... return f(...) end end, {'newlclosure'}) AddElement('getscriptclosure', function(module) assert(typeof(module) ~= 'Instance', 'Argument #1 to \'getscriptclosure\' must be an Instance.') return function() return require(module) end end, {'getscriptfunction'}) AddElement('getgenv', function() return getfenv(0) end) if vim then AddElement('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) AddElement('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) AddElement('mouse1press', function(x, y) x = x or 0 y = y or 0 vim:SendMouseButtonEvent(x, y, 0, true, game, false) end) AddElement('mouse1release', function(x, y) x = x or 0 y = y or 0 vim:SendMouseButtonEvent(x, y, 0, false, game, false) end) AddElement('mouse2press', function(x, y) x = x or 0 y = y or 0 vim:SendMouseButtonEvent(x, y, 1, true, game, false) end) AddElement('mouse2release', function(x, y) x = x or 0 y = y or 0 vim:SendMouseButtonEvent(x, y, 1, false, game, false) end) AddElement('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) AddElement('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) AddElement('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) AddElement('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) AddElement('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) AddElement('mousemoveabs', function(x, y) x = x or 0 y = y or 0 vim:SendMouseMoveEvent(x, y, game) end) AddElement( "fireproximityprompt", function(ProximityPrompt) local Old, Text = game:GetService("UserInputService"):GetFocusedTextBox(), "" if Old then Text = Old.Text Old:ReleaseFocus() end local Properties = {"HoldDuration", "MaxActivationDistance", "Enabled", "RequiresLineOfSight"} local Values = {} for _, Property in next, Properties do Values[Property] = ProximityPrompt[Property] end -- * Change it's propreties so you can activate it from anywhere! ProximityPrompt.Enabled = true ProximityPrompt.RequiresLineOfSight = false ProximityPrompt.MaxActivationDistance = math.huge ProximityPrompt.HoldDuration = 0 vim:SendKeyEvent(true, ProximityPrompt.KeyboardKeyCode, false, game) task.wait() vim:SendKeyEvent(false, ProximityPrompt.KeyboardKeyCode, false, game) for PropertyName, PropertyValue in next, Values do ProximityPrompt[PropertyName] = PropertyValue end if Old then Old:CaptureFocus() Old.Text = Text end end ) AddElement('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, {'toclipboard', 'writeclipboard', 'setrbxclipboard', 'syn.write_clipboard'}) else warn("Your executor is not high level enough to support input functions (Including setclipboard & fireproximityprompt)") end local Consoles = {} AddElement('rconsolecreate', function() local cnsl = rconsole:init() table.insert(Consoles, cnsl) cnsl.Parent = gethui() end, {'consolecreate'}) AddElement('rconsoledestroy', function() for i, v in next, Consoles do v:Destroy() end end, {'consoledestroy'}) AddElement('rconsoleprint', function(msg) assert(type(msg) == 'string', 'Argument #1 to \'rconsoleprint\' must be a string, not ' .. type(msg)) rconsole:addmessage(msg) end, {'consoleprint'}) AddElement('rconsoleinput', function(text) assert(type(text) == 'string', 'Argument #1 to \'rconsoleinput\' must be a string, not ' .. type(text)) return rconsole:addinput(text) end, {'rconsoleinputasync', 'consoleinput'}) AddElement('rconsoleclear', function() local v = Consoles[#Consoles] if not v then return end if v:FindFirstChild('MainFrame') and v.MainFrame:FindFirstChild('Messages') then for _, q in next, v.MainFrame:FindFirstChild('Messages'):GetChildren() do if q.ClassName ~= 'UIListLayout' then q:Destroy() end end end end, {'consoleclear'}) AddElement("rconsolesettitle", function(title) assert(type(title) == 'string', 'Argument #1 to \'rconsoleinput\' must be a string, not ' .. type(title)) local v = Consoles[#Consoles] if not v then return end v:FindFirstChild("MainFrame"):FindFirstChild("TopBar"):FindFirstChild("Title").Text = title end, {"rconsolename", "consolesettitle"}) AddElement('getscripthash', function(scr) assert(typeof(scr) == 'Instance', 'Argument #1 to \'getscripthash\' must be an Instance, not ' .. typeof(scr)) assert(scr.ClassName ~= 'LocalScript' or scr.ClassName ~= 'Script', 'Argument #1 to \'getscripthash\' must be a LocalScript or Script') return scr:GetHash() end) AddElement('saveinstance', function() -- Not mine, But still wanted to add it local Params = { RepoURL = "https://raw.githubusercontent.com/luau/SynSaveInstance/main/", SSI = "saveinstance", } local synsaveinstance = loadstring(game:HttpGet(Params.RepoURL .. Params.SSI .. ".luau", true), Params.SSI)() local SaveOptions = { ReadMe = true, IsolatePlayers = true, FilePath = string.format("%d", tick()) } synsaveinstance(SaveOptions) end) -- Finalize: if not getgenv().MoreUNCV2 then AddEnviroment() getgenv().MoreUNCV2 = true syn.protect_gui(DrawingUI) syn.protect_gui(ClipboardUI) end