Advertisement
Tinybang_Studio

Untitled

Sep 30th, 2019
2,618
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local Player = game:GetService("Players")["LocalPlayer"]
  2.  
  3. local function load(text)
  4.     if text == "Yes" then
  5.         local gui = game:GetObjects("rbxassetid://3072675153")[1]
  6.         local textserv = game:GetService('TextService')
  7.         local screen = gui
  8.         local lua = screen.Bin.Background
  9.         local frame = lua.BGExec
  10.         local read = frame.Read
  11.         local write = frame.Write
  12.         local execbtn = lua.Execute
  13.         local clearbtn = lua.Clear
  14.  
  15.         for i, v in next, {screen, lua, frame, read, write, execbtn, clearbtn} do
  16.             -- // anti pasted detection
  17.             v.Name = game:GetService("HttpService"):GenerateGUID(false)
  18.         end
  19.  
  20.         gui.Parent = game:GetService("CoreGui")
  21.         local replacements = {['\r'] = '', ['\t'] = '    '}
  22.         local keyword_list = {'and', 'break', 'do', 'else', 'elseif', 'end', 'false', 'for', 'function', 'if', 'in', 'local', 'nil', 'not', 'or', 'repeat', 'return', 'self', 'then', 'true', 'until', 'while'}
  23.         local globals_list = {}
  24.         local colors = {
  25.             Comment = Color3.fromRGB(32, 96, 32),
  26.             Global = Color3.fromRGB(77, 198, 155),
  27.             Keyword = Color3.fromRGB(86, 156, 214),
  28.             Number = Color3.fromRGB(0, 255, 0),
  29.             String = Color3.fromRGB(224, 112, 112),
  30.             Symbol = Color3.fromRGB(255, 255, 255),
  31.             Word = Color3.fromRGB(255, 255, 255)
  32.         }
  33.  
  34.         do
  35.             local env = getfenv(0)
  36.  
  37.             local function recurse(s, t)
  38.                 for i, v in next, t do
  39.                     local name = s .. '.' .. i
  40.                     globals_list[name] = true
  41.                     if type(v) == 'table' then
  42.                         recurse(name, v)
  43.                     end
  44.                 end
  45.             end
  46.            
  47.             setmetatable(globals_list, {
  48.                 __index = function(self, what)
  49.                     local got = env[what]
  50.                     local rl = got ~= nil
  51.                     if rl and type(got) == 'table' then
  52.                         recurse(what, got)
  53.                     end
  54.                     self[what] = rl
  55.                     return rl
  56.                 end
  57.             })
  58.         end
  59.  
  60.         local function normalize(t)
  61.             for i = 1, #t do
  62.                 t[t[i]] = true
  63.                 t[i] = nil
  64.             end
  65.         end
  66.  
  67.         normalize(keyword_list)
  68.  
  69.         local function text_size(str, size)
  70.             return textserv:GetTextSize(str, 14, Enum.Font.Code, size)
  71.         end
  72.  
  73.         local function cut_off(word, n, t)
  74.             if t == "[" then
  75.                 warn(word:sub(n, n))
  76.                 warn(word:sub(n + 1, n + 1))
  77.             end
  78.             return word:sub(n, n) == t and word:sub(n + 1, n + 1) == t
  79.         end
  80.  
  81.         local function is_long(words, s)
  82.             if words:sub(s, s) == '[' then
  83.                 local k = s + 1
  84.                 while words:sub(k, k) == '=' do
  85.                     k = k + 1
  86.                 end
  87.                 return words:sub(k, k) == '[', k - s + 1
  88.             end
  89.             return false, 0
  90.         end
  91.  
  92.         local function read_long(words, s, n)
  93.             local reached
  94.             for i = s, #words do
  95.                 local ch = words:sub(i, i)
  96.                 if ch == ']' then
  97.                     for j = i + 1, #words do
  98.                         local wh = words:sub(j, j)
  99.                         if wh ~= '=' then
  100.                             if wh == ']' and ((j - i - 1) == n) then
  101.                                 reached = j
  102.                             end
  103.                             break
  104.                         end
  105.                     end
  106.                 end
  107.                 if reached then
  108.                     break
  109.                 end
  110.             end
  111.             return (reached or #words) - s + 1
  112.         end
  113.  
  114.         local function read_comment(words, s)
  115.             local len = s + 2
  116.             local wlen = #words
  117.             local long, longlen = is_long(words, len)
  118.             if long then
  119.                 return read_long(words, len + longlen, longlen - 2) + longlen + 2
  120.             else
  121.                 local ch
  122.                 repeat
  123.                     ch = words:sub(len, len)
  124.                     len = len + 1
  125.                 until len > wlen or ch == '\n'
  126.                 return len - s
  127.             end
  128.         end
  129.  
  130.         local function read_string(words, s, q)
  131.             local ret = #words
  132.             local esc = false
  133.             for i = s, ret do
  134.                 local c = words:sub(i, i)
  135.                 if c == '\\' and not esc then
  136.                     esc = true
  137.                 elseif c == q and not esc then
  138.                     ret = i
  139.                     break
  140.                 else
  141.                     esc = false
  142.                 end
  143.             end
  144.             return ret - s + 1
  145.         end
  146.  
  147.         local function read_alphanum(words, s)
  148.             local len = 0
  149.             while words:sub(s + len, s + len):match('[%w_.:]') do
  150.                 len = len + 1
  151.             end
  152.             return len
  153.         end
  154.  
  155.         local function read_symbols(words, s)
  156.             local len = 0
  157.             local word
  158.             repeat
  159.                 local nx = s + len
  160.                 if cut_off(words, nx, '-') or is_long(words, nx) or cut_off(words, nx+1, "[") then
  161.                     break
  162.                 end
  163.                 word = words:sub(nx, nx)
  164.                 len = len + 1
  165.                 wait();
  166.             until not word:match('[^%s%w_\'"]')
  167.            return len - 1
  168.        end
  169.  
  170.        local function read_whitespace(words, s)
  171.            local len = 0
  172.            while words:sub(s + len, s + len):match('%s') do
  173.                len = len + 1
  174.            end
  175.            return len
  176.        end
  177.  
  178.        local function parse_words(words)
  179.            local pos = 1
  180.            local wlen = #words
  181.            local list = {}
  182.  
  183.            while pos <= wlen do
  184.                local ch = words:sub(pos, pos)
  185.                local frm = read:Clone()
  186.                local col, len
  187.  
  188.                local long, longlen = is_long(words, pos)
  189.  
  190.                if long then
  191.                    len = read_long(words, pos + longlen, longlen - 2) + longlen
  192.                    col = colors.String
  193.                elseif cut_off(words, pos, '-') then
  194.                    len = read_comment(words, pos)
  195.                    col = colors.Comment
  196.                elseif ch == '"' or ch == '\'' then
  197.                     len = read_string(words, pos + 1, ch) + 1
  198.                     col = colors.String
  199.                 elseif ch:match('[%w_.:]') then
  200.                     local word
  201.                     len = read_alphanum(words, pos)
  202.                     word = words:sub(pos, pos + len - 1)
  203.                     if tonumber(word) then
  204.                         col = colors.Number
  205.                     elseif keyword_list[word] then
  206.                         col = colors.Keyword
  207.                     else
  208.                         local rln = 0
  209.                         for cnk in string.gmatch(word, '[^.:]+') do
  210.                             local nx = rln + #cnk
  211.                             if globals_list[word:sub(1, nx)] then
  212.                                 rln = nx + 1
  213.                             else
  214.                                 break
  215.                             end
  216.                         end
  217.                         if rln ~= 0 then
  218.                             len = rln - 1
  219.                             col = colors.Global
  220.                         else
  221.                             col = colors.Word
  222.                         end
  223.                     end
  224.                 elseif ch:match('[^%s%w_\'"]') then
  225.                    len = 1 -- fucking bandaid shit for a crash
  226.                    col = colors.Symbol
  227.                elseif ch:match('%s') then
  228.                    len = read_whitespace(words, pos)
  229.                    col = colors.Word
  230.                else
  231.                    error('uwu we did a fucky wucky and the code seems to have failed~!')
  232.                end
  233.                table.insert(list, {
  234.                    str = words:sub(pos, pos + len - 1),
  235.                    col = col
  236.                })
  237.                pos = pos + len
  238.            end
  239.  
  240.            return list
  241.        end
  242.  
  243.        local function highlight()
  244.            local wtext = write.Text:gsub('[\r\t]', replacements)
  245.            local parsed = parse_words(wtext)
  246.            local x, y = 0, 0
  247.            
  248.            write:ClearAllChildren()
  249.            write.Text = wtext
  250.  
  251.            local function new_frame(str, col, last, j)
  252.                local txt = str:sub(last, j)
  253.                local sz = text_size(txt, frame.AbsoluteSize)
  254.                local num = (frame.CanvasPosition.Y + frame.AbsoluteSize.Y)
  255.                local num2 = (frame.CanvasPosition.Y - frame.AbsoluteSize.Y)
  256.                
  257.                if (y > num) or (y < num2) then
  258.                    print'what the nig'
  259.                    return sz;
  260.                end
  261.                
  262.                if col ~= colors.Word then
  263.                    local rd = read:Clone()
  264.                    rd.Text = txt
  265.                    rd.TextColor3 = col
  266.                    rd.Position = UDim2.new(0, x, 0, y)
  267.                    rd.Size = UDim2.new(0, sz.X, 0, sz.Y)
  268.                    rd.Parent = write
  269.                end
  270.  
  271.                return sz
  272.            end
  273.            
  274.            
  275.            for i = 1, #parsed do
  276.                local word = parsed[i]
  277.                local str = word.str
  278.                local wl = #str
  279.                local tx = {}
  280.                local last = 1
  281.                    
  282.                for j = 1, wl do
  283.                    local c = str:sub(j, j)
  284.                    if c == '\n' then
  285.                        local rd = new_frame(str, word.col, last, j - 1)
  286.                        y = y + rd.Y
  287.                        x = 0
  288.                        last = j + 1
  289.                    elseif j == wl then
  290.                        local rd = new_frame(str, word.col, last, j)
  291.                        x = x + rd.X
  292.                    end
  293.                end
  294.            end
  295.        end
  296.  
  297.        local function dispatch_job()
  298.            highlight()
  299.        end
  300.  
  301.        write:GetPropertyChangedSignal('Text'):Connect(function()
  302.            frame.CanvasSize = UDim2.new(0, write.TextBounds.X, 0, write.TextBounds.Y)
  303.            coroutine.wrap(dispatch_job)()
  304.        end)
  305.  
  306.        coroutine.resume(coroutine.create(function()
  307.            local size = frame.CanvasPosition;
  308.            local floor = math.floor;
  309.            local wait = wait;
  310.            while wait(1) do
  311.                local new = frame.CanvasPosition
  312.                local vec1 = Vector2.new(size.X, size.Y)
  313.                local vec2 = Vector2.new(new.X, new.Y)
  314.                local distance = floor((vec1 - vec2).magnitude)
  315.                
  316.                if distance > 0 then
  317.                    coroutine.wrap(dispatch_job)()
  318.                end
  319.                
  320.                size = new;
  321.            end
  322.        end))
  323.  
  324.        execbtn.MouseButton1Click:connect(function()
  325.            local chunk = string.sub(string.lower(game:GetService("HttpService"):GenerateGUID(false)), 1, 8)
  326.            local results = {loadstring(write.Text, ("[%s]"):format(chunk))}
  327.  
  328.            if (not results[1]) then
  329.                warn("[" .. chunk .. "] Syntax Error: " .. tostring(results[2]) .. ".")
  330.                return;
  331.            end
  332.  
  333.            spawn(results[1])
  334.        end)
  335.  
  336.        clearbtn.MouseButton1Click:Connect(function()
  337.            write:ClearAllChildren()
  338.            write.Text = ''
  339.        end)
  340.  
  341.        do
  342.            local UserInputService = game:GetService("UserInputService")
  343.            local gui = lua.Dragger;
  344.            
  345.            local dragging
  346.            local dragInput
  347.            local dragStart
  348.            local startPos
  349.            local offset
  350.            
  351.            local function update(input)
  352.                local delta = input.Position - dragStart
  353.                gui.Position = UDim2.new(0, startPos.X + delta.X, 0, startPos.Y + delta.Y)
  354.            end
  355.            
  356.            gui.InputBegan:Connect(function(input)
  357.                if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  358.                    dragging = true
  359.                    dragStart = input.Position
  360.                    startPos = gui.AbsolutePosition
  361.                    
  362.                    local mouse = UserInputService:GetMouseLocation()
  363.                    mouse = Vector2.new(mouse.X, mouse.Y - 36);
  364.                    offset = (startPos - mouse);
  365.                    
  366.                    input.Changed:Connect(function()
  367.                        if input.UserInputState == Enum.UserInputState.End then
  368.                            dragging = false
  369.                            coroutine.wrap(highlight)()
  370.                        end
  371.                    end)
  372.                end
  373.            end)
  374.            
  375.            gui.InputChanged:Connect(function(input)
  376.                if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
  377.                    dragInput = input
  378.                end
  379.            end)
  380.            
  381.            UserInputService.InputChanged:Connect(function(input)
  382.                if input == dragInput and dragging then
  383.                    update(input)
  384.                end
  385.            end)
  386.            
  387.            UserInputService.InputBegan:Connect(function(input)
  388.                if input.KeyCode == Enum.KeyCode.Insert then
  389.                    lua.Visible = not lua.Visible;
  390.                end
  391.            end)
  392.  
  393.            local sizing = false;
  394.            local function resize()
  395.                local obj = gui
  396.                local obj2 = lua
  397.                
  398.                local mouse = UserInputService:GetMouseLocation()
  399.                mouse = Vector2.new(mouse.X, mouse.Y - 36);
  400.                
  401.                local x = mouse.X - obj2.AbsolutePosition.X - offset.X
  402.                local y = mouse.Y - obj2.AbsolutePosition.Y - offset.Y
  403.                
  404.                if x < 400 then
  405.                    x = 400
  406.                end
  407.                
  408.                if y < 280 then
  409.                    y = 280
  410.                end
  411.                obj2.Size = UDim2.new(0, x, 0, y)
  412.                obj.Position = UDim2.new(1, -20, 1, -20)
  413.            end
  414.            
  415.            gui:GetPropertyChangedSignal("Position"):connect(resize)
  416.        end
  417.       bindableFunction:Destroy()
  418.    elseif text == "No" then
  419.        bindableFunction:Destroy()
  420.    end
  421. end
  422.  
  423. local bindableFunction = Instance.new("BindableFunction")
  424. bindableFunction.OnInvoke = load
  425.  
  426. if Player:GetRankInGroup(3521992) >= 4 then
  427.    game.StarterGui:SetCore("SendNotification", {
  428.         Title = "Whitelisted!";
  429.         Text = "Do you want to Load?";
  430.         Icon = "";
  431.         Callback = bindableFunction;
  432.         Button1 = "Yes";
  433.         Button2 = "No";
  434.     })
  435. else
  436.     Player:Kick("You are not whitelisted")
  437. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement