· 6 years ago · Nov 01, 2019, 05:34 PM
1-- Press the "Home" or "Right shift" key to toggle it
2-- Sadly never made an editor, maybe someone can improve this
3-- An api (not mine) was used to make syntax highlighting work since my way was stupid
4-- Yeas this ui is just like dnspy i did that on purpose
5
6local version = "1.4.15"
7local changelog = [[
8-- Expect a value editor and other implementations in a future update!!
9
10[v 1.4.15]
11-- Modified for public release yaaay
12-- Deobfuscated
13-- Final update?? Who knows??
14
15[v 1.4.14]
16-- Updated to use Synapse X's new decompiler
17
18[v 1.4.13]
19-- Removed tostring hook
20
21[v 1.4.12]
22-- The source is now obfuscated
23
24[v 1.4.11]
25-- "Operators" are now highlighted
26
27[v 1.4.10]
28-- UI color changes
29-- Environment editor sneak peek
30
31[v 1.4.8 - 9]
32-- Internal changes
33-- CoreGui check updates
34
35[v 1.4.7]
36-- UI title updates
37-- Login instructions
38-- New CoreGui detection bypass
39-- Changes with name handling
40
41[v 1.4.3]
42-- Improved whitelist
43
44[v 1.4.2]
45-- Internal fixes
46-- New CoreGui detection bypass
47-- New toolbar functionality
48-- New whitelist & login UI!
49
50[v 1.2.3]
51-- Internal fixes
52-- Slightly faster decompiling
53
54[v 1.2.1]
55-- UI total recolor
56-- Fixed empty lines not appearing
57
58[v 1.1.4]
59-- New syntax highlighting API
60-- Optimized decompiling
61-- Detects services containing scripts
62-- Fixed horizontal scrolling bug]]
63
64--============================================================--
65
66--local screenGui = script.Parent
67local screenGui = game:GetObjects("rbxassetid://2971927607")[1]
68local backdrop = screenGui.Backdrop
69local cSource, cName = "", ""
70local localPlayer = game:GetService("Players").LocalPlayer
71
72local meta = getrawmetatable(game)
73setreadonly(meta, false)
74
75screenGui.Parent = game.CoreGui.RobloxGui
76backdrop.Parent = game:GetService("CoreGui")
77setreadonly(meta, true)
78
79backdrop.Position = UDim2.new(0.5, 0, 1, 2)
80backdrop.Size = UDim2.new(0.25, 0, 0.25, 0)
81
82--// for new users
83local StarterGui = game:GetService("StarterGui")
84StarterGui:SetCore("SendNotification", {
85 Title = "ScriptView loaded",
86 Text = "Press the Home button or Right Shift to open!",
87})
88
89--\\ the stuff
90local loginGui = screenGui.Login
91local blank = loginGui.Value.Value
92
93local UIS = game:GetService("UserInputService")
94local localPlayer = game:GetService("Players").LocalPlayer
95local m = localPlayer:GetMouse()
96local debuggerFrame = backdrop.Debugger
97 local scriptList = debuggerFrame.Scripts
98
99 local debugScrollUp = debuggerFrame.VerticalFrame.ScrollUp
100 local debugScrollDown = debuggerFrame.VerticalFrame.ScrollDown
101 local debugScrollLeft = debuggerFrame.HorizontalFrame.ScrollLeft
102 local debugScrollRight = debuggerFrame.HorizontalFrame.ScrollRight
103
104 local debugTemplate = scriptList.Template; debugTemplate.Parent = nil;
105
106
107local toolbarFrame = backdrop.Toolbar
108 local Edit = toolbarFrame.Edit
109 local File = toolbarFrame.File
110
111local toolbarArea = backdrop.ToolbarArea
112
113
114local scriptFrame = backdrop.ScriptFrame
115 local sourceFrame = scriptFrame.Source
116
117 local scriptScrollUp = scriptFrame.VerticalFrame.ScrollUp
118 local scriptScrollDown = scriptFrame.VerticalFrame.ScrollDown
119 local scriptScrollLeft = scriptFrame.HorizontalFrame.ScrollLeft
120 local scriptScrollRight = scriptFrame.HorizontalFrame.ScrollRight
121
122 local lineTemplate = sourceFrame.Line; lineTemplate.Parent = nil;
123 local wordTemplate = lineTemplate.Word; wordTemplate.Parent = nil;
124
125
126local tabsFrame = backdrop.Tabs
127 local tabTemplate = tabsFrame.Deselected; tabTemplate.Parent = nil
128 local ttemp = tabsFrame.Selected; ttemp.Parent = nil
129
130--// explorer icons
131local textures = {
132 ['folder'] = "2950788693";
133
134 ['localscript'] = "99340858";
135 ['modulescript'] = "413367412";
136
137 ['function'] = "2759601950";
138 ['variable'] = "2759602224";
139 ['table'] = "2757039628";
140
141 ['constant'] = "2717878542";
142 ['upvalue'] = "2717876089";
143}
144
145--// customization for u guys
146local operators = {
147 ['bracket'] = Color3.fromRGB(204, 104, 147); -- () {} []
148 ['math'] = Color3.fromRGB(204, 104, 147); -- + - * /
149 ['compare'] = Color3.fromRGB(204, 104, 147); -- = == > <
150 ['misc'] = Color3.fromRGB(204, 104, 147); -- other symbols
151}
152
153local highlight = {
154 ['builtin'] = Color3.fromRGB(255, 255, 255); -- wait, workspace
155 ['keyword'] = Color3.fromRGB(79, 117, 255); -- true, function
156 ['string'] = Color3.fromRGB(152, 203, 248); -- "hi"
157 ['number'] = Color3.fromRGB(69, 255, 187); -- 123
158 ['comment'] = Color3.fromRGB(85, 85, 85); -- --comment
159
160 ['('] = operators.bracket;
161 [')'] = operators.bracket;
162 ['['] = operators.bracket;
163 [']'] = operators.bracket;
164 ['{'] = operators.bracket;
165 ['}'] = operators.bracket;
166
167 ['+'] = operators.math;
168 ['-'] = operators.math;
169 ['/'] = operators.math;
170 ['*'] = operators.math;
171
172 ['='] = operators.compare;
173 ['=='] = operators.compare;
174 ['>='] = operators.compare;
175 ['<='] = operators.compare;
176 ['~='] = operators.compare;
177 ['<'] = operators.compare;
178 ['>'] = operators.compare;
179
180 ['.'] = operators.misc;
181 [','] = operators.misc;
182 ['#'] = operators.misc;
183 ['%'] = operators.misc;
184 ['^'] = operators.misc;
185 [';'] = operators.misc;
186 ['~'] = operators.misc;
187}
188
189--============================================================--
190
191local aa = " " -- storing the tab button because its annoying
192local otherdone = 1 -- idk what to name it
193local syntax = true -- syntax highlight toggle
194
195local module = game:GetObjects('rbxassetid://2798231692')[1]
196local lexer = loadstring(module.Source)()
197
198function GVT(v, def) --getValueType
199 return (type(v) == "function" and "function") or (type(v) == "table" and "table") or def or "variable"
200end
201
202function getEnv(scr)
203 if getsenv and not getmenv then
204 return getsenv(scr)
205 elseif getsenv and getmenv then
206 return (scr:IsA("LocalScript") and getsenv(scr)) or getmenv(scr)
207 else
208 return {SCRIPT_ENVIRONMENT_ERROR = true}
209 end
210end
211
212function getTextSize(label)
213 local service = game:GetService("TextService")
214 local vec2 = service:GetTextSize(label.Text, label.TextSize, label.Font, Vector2.new(10000, 25))
215 return vec2
216end
217
218function replacestr(str, old, new)
219 return str:gsub(old, new)
220end
221
222function c3(r,g,b)
223 return Color3.new(r/255,g/255,b/255)
224end
225
226function selection(tab)
227 local sName = tab:FindFirstChild("ScriptName")
228 if not sName then return end
229
230 Tween(tab, "Out", "Sine", 0.1, {
231 BackgroundColor3 = ttemp.BackgroundColor3;
232 BorderColor3 = ttemp.BackgroundColor3
233 })
234
235 Tween(sName, "Out", "Sine", 0.1, {
236 TextColor3 = ttemp.ScriptName.TextColor3;
237 })
238end
239
240function deselection(tab)
241 local sName = tab:FindFirstChild("ScriptName")
242 if not sName then return end
243
244 Tween(tab, "Out", "Sine", 0.15, {
245 BackgroundColor3 = tabTemplate.BackgroundColor3;
246 BorderColor3 = tabTemplate.BackgroundColor3
247 })
248
249 Tween(sName, "Out", "Sine", 0.15, {
250 TextColor3 = tabTemplate.ScriptName.TextColor3;
251 })
252end
253
254function bumpTabs(num)
255 for i, v in pairs(tabsFrame:GetChildren()) do
256 if v:IsA("TextButton") then
257 v.LayoutOrder = v.LayoutOrder + num
258 end
259 end
260end
261
262function createTab(info, key)
263 for i, v in pairs(tabsFrame:GetChildren()) do
264 deselection(v)
265 end
266
267 local class = info.Type:lower()
268 local identity = (info.Class and info.Class:lower()) or info.Type:lower()
269 local name = info.Name
270 local value = info.Value
271 local obj = info.Obj
272
273 local tab = tabTemplate:Clone()
274 local selected = false
275 tab.ScriptName.Text = " "..name:gsub("\n", ""):gsub("\r", ""):gsub(" ", " ")
276 tab.Name = tostring(key)
277
278 local x = getTextSize(tab.ScriptName)
279 tab.Size = UDim2.new(0, ((x.X < 400 and x.X) or 400) + 20, 1, 0)
280
281 bumpTabs(1)
282 tab.Parent = tabsFrame
283
284 tab.MouseButton1Click:Connect(function()
285 for i, v in pairs(tabsFrame:GetChildren()) do
286 deselection(v)
287 end
288
289 selection(tab)
290 loadSourceFromInfo(info, key)
291 end)
292
293 tab.Close.MouseButton1Click:Connect(function()
294 if #tabsFrame:GetChildren() <= 2 then
295 loadSource("")
296 return
297 end
298 --bumpTabs(1)
299 tab:Destroy()
300
301 if otherdone == key then
302 for i, v in pairs(sourceFrame:GetChildren()) do
303 if v.Name == "Line" then
304 v:Destroy()
305 end
306 end
307 end
308 end)
309
310 selection(tab)
311end
312
313function sortString(str)
314 str = str:gsub(aa, blank .. "")
315 local lines = {}
316 local newLine, curLine, tblLine = 1, 1, {}
317 local lex = lexer.scan(str)
318 local num = 0
319
320 local gm = str:gmatch("[^\n]+")
321
322 for typ, word in ( ( syntax and lexer.scan(str) ) or gm ) do
323 num = num + 1
324 if not syntax then
325 word = typ
326 newLine = newLine + 1
327 end
328 if word:find("\n") then
329 word = word:gsub("\n", "")
330 if word == "" then word = " " end
331 newLine = newLine + 1
332 end
333
334 local wordTable = {typ, word}
335 table.insert(tblLine, wordTable)
336
337 if newLine ~= curLine then
338 curLine = newLine
339 table.insert(lines, tblLine)
340 tblLine = {}
341 end
342 end
343 table.insert(lines, tblLine)
344 return lines
345end
346
347function arrayToString(t, a, b)
348 local s = ""
349 for i = 1, #t do
350 s = s..tostring(t[i])
351 end
352 return s:sub(a, b)
353end
354
355function loadSource(source)
356 cSource = source
357 for i, v in pairs(sourceFrame:GetChildren()) do
358 if v.Name == "Line" then
359 v:Destroy()
360 end
361 end
362
363 local linesDictionary = sortString(source)
364 local uilistlayout = sourceFrame.UIListLayout
365 uilistlayout.Parent = nil
366
367 for num = 1, #linesDictionary do
368 local lineTable = linesDictionary[num]
369 local line = lineTemplate:Clone()
370 local wordLayout = line.UIListLayout
371
372 line.LineNumber.Text = tostring(num).." "
373 line.Parent = sourceFrame
374 wordLayout.Parent = nil
375
376 for i = 1, #lineTable do
377 local wordTable = lineTable[i]
378 local typ, str = wordTable[1], wordTable[2]
379 local word = wordTemplate:Clone()
380 word.Parent = line
381 word.String.Text = str
382
383 local txtSize = getTextSize(word.String)
384 word.String.Size = UDim2.new(0, txtSize.X, 1, 0)
385 word.Size = word.String.Size
386 line.Size = UDim2.new(0, line.Size.X.Offset + txtSize.X, 0, 25)
387
388 if syntax then
389 local col = highlight[typ]
390 if col then
391 word.String.TextColor3 = highlight[typ]
392 end
393 end
394 end
395 wordLayout.Parent = line
396 end
397
398 uilistlayout.Parent = sourceFrame
399end
400
401function loadSourceFromInfo(info, k)
402 pcall(function()
403 otherdone = k
404 local class = info.Type:lower()
405 local identity = (info.Class and info.Class:lower()) or info.Type:lower()
406 local name = info.Name
407 local value = info.Value
408 local obj = info.Obj
409
410 cName = name
411
412 if class == "localscript" or class == "modulescript" then
413 loadSource(decompile(obj), "new")
414 elseif class == "function" then
415 loadSource(decompile(value), "new")
416 elseif class == "folder" then
417 loadSource("-- Container for scripts parented to ".. tostring(obj))
418 elseif class == "text" then
419 loadSource(value)
420 elseif class == "constant" then
421 loadSource("<"..identity.."> "..value)
422 else
423 loadSource("<"..identity.."> "..name.." = <"..type(value).."> "..tostring(value))
424 end
425 end)
426end
427
428function Tween(Obj, Dir, Style, Duration, Goal)
429 local tweenService = game:GetService("TweenService")
430 local tweenInfo = TweenInfo.new(
431 Duration,
432 Enum.EasingStyle[Style],
433 Enum.EasingDirection[Dir]
434 )
435 local tween = tweenService:Create(Obj,tweenInfo,Goal)
436 tween:Play()
437 return tween
438end
439
440function updateScrollingFrame(frame)
441 local elementSize = frame.UIListLayout.AbsoluteContentSize
442 local canvasSize = elementSize + Vector2.new(50,50)
443 local f = function(n) return frame.Parent:FindFirstChild(n,true) end
444
445 local Up, Down, Left, Right = f("ScrollUp"),f("ScrollDown"),f("ScrollLeft"),f("ScrollRight")
446
447 if Up and Down and canvasSize.Y <= frame.AbsoluteSize.Y then
448 Up.ImageTransparency, Down.ImageTransparency = 0.5, 0.5
449 Up.AutoButtonColor, Down.AutoButtonColor = false, false
450 else
451 Up.ImageTransparency, Down.ImageTransparency = 0, 0
452 Up.AutoButtonColor, Down.AutoButtonColor = true, true
453 end
454
455 if Left and Right and canvasSize.X <= frame.AbsoluteSize.X then
456 Left.ImageTransparency, Right.ImageTransparency = 0.5, 0.5
457 Left.AutoButtonColor, Right.AutoButtonColor = false, false
458 else
459 Left.ImageTransparency, Right.ImageTransparency = 0, 0
460 Left.AutoButtonColor, Right.AutoButtonColor = true, true
461 end
462end
463
464function getScriptsOfParent(p)
465 local list = {}
466 local objs = (p == nil and getnilinstances and getnilinstances()) or p:GetDescendants()
467 if p == game then objs = (getscripts and getscripts()) or game:GetDescendants() end
468
469 for i = 1, #objs do
470 local v = objs[i]
471 if (v.ClassName == "LocalScript" or v.ClassName == "ModuleScript") then
472 if v.ClassName == "ModuleScript" then
473 pcall(function()
474 unlockmodulescript(v)
475 end)
476 end
477 table.insert(list, v)
478 end
479 end
480
481 return list
482end
483
484old = decompile
485
486function createButton(parent, info)
487 local key = math.random(10000000,99999999)
488 local expand = false
489 local button = debugTemplate:Clone()
490 local par = (parent:FindFirstChild("Contents")) or parent
491
492 local class = info.Type:lower()
493 local identity = (info.Class and info.Class:lower()) or info.Type:lower()
494 local name = info.Name
495 local value = info.Value
496 local obj = info.Obj
497
498 button.Label.Text = name:gsub("\n", ""):gsub("\r", ""):gsub(" ", " ")
499 button.Icon.Image = "rbxassetid://"..textures[class:lower()]
500 button.Parent = par
501 button.Name = name
502 button.LayoutOrder = #par:GetChildren()
503
504 button.Clicked.MouseButton1Click:Connect(function()
505 if tabsFrame:FindFirstChild(tostring(key)) then
506 for i, v in pairs(tabsFrame:GetChildren()) do
507 deselection(v)
508 end
509 selection(tabsFrame[tostring(key)])
510 else
511 createTab(info, key)
512 end
513 loadSourceFromInfo(info)
514 end)
515
516 button.Clicked.MouseEnter:Connect(function()
517 Tween(button.Clicked, "Out", "Quint", 0.25, {
518 Transparency = 0.9
519 })
520 end)
521
522 button.Clicked.MouseLeave:Connect(function()
523 Tween(button.Clicked, "Out", "Quint", 0.25, {
524 Transparency = 1
525 })
526 end)
527
528 button.Expand.MouseButton1Down:Connect(function()
529 pcall(function()
530 expand = not expand
531 button.Contents.Visible = expand
532 if expand then
533 button.Expand.Image = "rbxassetid://2757012309"
534 else
535 button.Expand.Image = "rbxassetid://2757012592"
536 end
537
538
539 local contents = button.Contents:GetChildren()
540 for i = 1, #contents do
541 local v = contents[i]
542 if v:IsA("Frame") then
543 v:Destroy()
544 end
545 end
546 if not expand then return end
547
548 if class == "folder" then
549 for i, v in pairs(getScriptsOfParent(obj)) do
550 createButton(button, {
551 Name = v.Name,
552 Type = v.ClassName,
553 Obj = v
554 })
555 end
556 elseif class == "table" then
557 for i, v in pairs(value) do
558 createButton(button, {
559 Name = i,
560 Type = GVT(v),
561 Value = v
562 })
563 end
564 elseif class == "localscript" or class == "modulescript" then
565 pcall(function()
566 local env = getEnv(obj)
567 for i, v in pairs(env) do
568 createButton(button, {
569 Name = i,
570 Type = GVT(v),
571 Value = v
572 })
573 end
574 end)
575 elseif class == "function" then
576 pcall(function() --getupvalues
577 local env = (debug.getupvalues and debug.getupvalues(value)) or {ERROR_GETTING_UPVALUES = true}
578 for i, v in pairs(env) do
579 createButton(button, {
580 Name = i,
581 Type = GVT(v, "upvalue"),
582 Class = "upvalue",
583 Value = v
584 })
585 end
586 end)
587 pcall(function() --getconstants
588 local env = (debug.getconstants and debug.getconstants(value)) or {ERROR_GETTING_CONSTANTS = true}
589 for i, v in pairs(env) do
590 createButton(button, {
591 Name = tostring(v),
592 Type = GVT(v, "constant"),
593 Class = "constant",
594 Value = v
595 })
596 end
597 end)
598 end
599 end)
600 end)
601
602 local UILL = button.Contents.UIListLayout
603 UILL.Changed:Connect(function(p)
604 local a = UILL.AbsoluteContentSize
605 button.Size = UDim2.new(0, 300, 0, 25 + a.Y)
606 end)
607
608 return button
609end
610
611--============================================================--
612
613do
614 local function bindToButton(button, func)
615 button.MouseButton1Click:Connect(func)
616 button.MouseEnter:Connect(function()
617 Tween(button, "Out", "Sine", 0.1, {
618 BackgroundColor3 = Color3.fromRGB(20, 20, 20)
619 })
620 end)
621 button.MouseLeave:Connect(function()
622 Tween(button, "Out", "Sine", 0.1, {
623 BackgroundColor3 = Color3.fromRGB(27, 27, 27)
624 })
625 end)
626 end
627
628 local function openToolbar(toolbar)
629 Tween(toolbar.Selection, "InOut", "Sine", 0.25, {
630 Size = UDim2.new(0, 183, 0, 50)
631 })
632 Tween(toolbar, "InOut", "Sine", 0.25, {
633 BackgroundTransparency = 0
634 })
635 end
636
637 local function shutToolbar(toolbar)
638 Tween(toolbar.Selection, "InOut", "Sine", 0.25, {
639 Size = UDim2.new(0, 183, 0, 0)
640 })
641 Tween(toolbar, "InOut", "Sine", 0.25, {
642 BackgroundTransparency = 1
643 })
644 end
645
646 local function bindToolbar(bar)
647 bar.MouseButton1Down:Connect(function()
648 for i, v in pairs(toolbarFrame:GetChildren()) do
649 if v.Name ~= "UIListLayout" then
650 shutToolbar(v)
651 end
652 end
653 openToolbar(bar)
654 end)
655 end
656
657 bindToButton(Edit.Selection.Highlighting, function()
658 syntax = not syntax
659 Edit.Selection.Highlighting.Icon.Image = (syntax and "rbxassetid://2762412562") or "rbxassetid://2762412069"
660 end)
661
662 bindToButton(Edit.Selection.Clear, function()
663 loadSource("")
664 end)
665
666 bindToButton(File.Selection.CopyStr, function()
667 setclipboard(cSource)
668 end)
669
670 bindToButton(File.Selection.SaveStr, function()
671 writefile(tostring(cName) .. ".lua", cSource)
672 end)
673
674 toolbarArea.MouseLeave:Connect(function()
675 for i, v in pairs(toolbarFrame:GetChildren()) do
676 if v.Name ~= "UIListLayout" then
677 shutToolbar(v)
678 end
679 end
680 end)
681
682 for i, v in pairs(toolbarFrame:GetChildren()) do
683 if v.Name ~= "UIListLayout" then
684 bindToolbar(v)
685 end
686 end
687end
688
689do
690 scriptScrollUp.MouseButton1Down:Connect(function()
691 local sF, canvas = sourceFrame, sourceFrame.CanvasPosition
692 Tween(sF, "Out", "Sine", 0.25, {
693 CanvasPosition = Vector2.new(canvas.X, canvas.Y - 25)
694 })
695 end)
696
697 scriptScrollDown.MouseButton1Down:Connect(function()
698 local sF, canvas = sourceFrame, sourceFrame.CanvasPosition
699 Tween(sF, "Out", "Sine", 0.25, {
700 CanvasPosition = Vector2.new(canvas.X, canvas.Y + 25)
701 })
702 end)
703
704 scriptScrollLeft.MouseButton1Down:Connect(function()
705 local sF, canvas = sourceFrame, sourceFrame.CanvasPosition
706 Tween(sF, "Out", "Sine", 0.25, {
707 CanvasPosition = Vector2.new(canvas.X + 25, canvas.Y)
708 })
709 end)
710
711 scriptScrollRight.MouseButton1Down:Connect(function()
712 local sF, canvas = sourceFrame, sourceFrame.CanvasPosition
713 Tween(sF, "Out", "Sine", 0.25, {
714 CanvasPosition = Vector2.new(canvas.X - 25, canvas.Y)
715 })
716 end)
717
718 debugScrollUp.MouseButton1Down:Connect(function()
719 local sF, canvas = scriptList, scriptList.CanvasPosition
720 Tween(sF, "Out", "Sine", 0.25, {
721 CanvasPosition = Vector2.new(canvas.X, canvas.Y - 25)
722 })
723 end)
724
725 debugScrollDown.MouseButton1Down:Connect(function()
726 local sF, canvas = scriptList, scriptList.CanvasPosition
727 Tween(sF, "Out", "Sine", 0.25, {
728 CanvasPosition = Vector2.new(canvas.X, canvas.Y + 25)
729 })
730 end)
731
732 debugScrollLeft.MouseButton1Down:Connect(function()
733 local sF, canvas = scriptList, scriptList.CanvasPosition
734 Tween(sF, "Out", "Sine", 0.25, {
735 CanvasPosition = Vector2.new(canvas.X + 25, canvas.Y)
736 })
737 end)
738
739 debugScrollRight.MouseButton1Down:Connect(function()
740 local sF, canvas = scriptList, scriptList.CanvasPosition
741 Tween(sF, "Out", "Sine", 0.25, {
742 CanvasPosition = Vector2.new(canvas.X - 25, canvas.Y)
743 })
744 end)
745end
746
747--============================================================--
748
749local open = false
750
751local about = "--\ ScriptView " .. version .. "\--\n--\ Developed by Litten \--".."\n\n"..changelog
752
753backdrop.Title.Label.Text = "ScriptView "..version
754
755local aboutinfo = {Name="About", Type="Text", Obj=nil, Value=about}
756
757createButton(scriptList,
758 {Name="Active Scripts", Type="Folder", Obj=game}
759)
760
761createButton(scriptList,
762 {Name="LocalPlayer", Type="Folder", Obj=game:GetService("Players").LocalPlayer}
763)
764
765createButton(scriptList,
766 {Name="Nil", Type="Folder", Obj=nil}
767)
768
769for i, v in pairs(game:GetChildren()) do
770 pcall(function()
771 if v:FindFirstChildWhichIsA("LocalScript", true) or v:FindFirstChildWhichIsA("ModuleScript", true) then
772 createButton(scriptList,
773 {Name=v.ClassName, Type="Folder", Obj=v}
774 )
775 end
776 end)
777end
778
779local aboutButton = createTab(aboutinfo, 1)
780
781loadSourceFromInfo(aboutinfo)
782
783game:GetService("RunService").RenderStepped:Connect(function()
784 do
785 screenGui.Cursor.Position = UDim2.new(0, m.X, 0, m.Y)
786 screenGui.Cursor.Visible = open
787 end
788
789 do
790 updateScrollingFrame(scriptList)
791 local elementSize = scriptList.UIListLayout.AbsoluteContentSize
792 local canvasSize = elementSize + Vector2.new(25,25)
793
794 scriptList.CanvasSize = UDim2.new(0, canvasSize.X, 0, canvasSize.Y)
795 end
796
797 do
798 updateScrollingFrame(sourceFrame)
799 local elementSize = sourceFrame.UIListLayout.AbsoluteContentSize
800 local canvasSize = elementSize + Vector2.new(50,50)
801
802 sourceFrame.CanvasSize = UDim2.new(0, canvasSize.X, 0, canvasSize.Y)
803 end
804end)
805
806function Close()
807 Tween(backdrop, "Out", "Sine", 0.2, {
808 Position = UDim2.new(0.5, 0, 1, 2),
809 Size = UDim2.new(0.25, 0, 0.25, 0),
810 })
811end
812
813function Open()
814 Tween(backdrop, "Out", "Sine", 0.2, {
815 Position = UDim2.new(0.5, 0, 0, -35),
816 Size = UDim2.new(1, -2, 1, -2 + 36),
817 })
818end
819
820--======--
821
822UIS.InputBegan:Connect(function(input)
823 if input.KeyCode == Enum.KeyCode.Home or input.KeyCode == Enum.KeyCode.RightShift then
824 open = not open
825 if open then
826 Open()
827 else
828 Close()
829 end
830 end
831end)
832
833while wait() do
834 do
835 if backdrop.Position == UDim2.new(0.5, 0, 1, 2) then
836 backdrop.Parent = game:GetService("CoreGui")
837 else
838 backdrop.Parent = screenGui
839 end
840 end
841end