Run it
Copy the script and paste it into your executor.
().Gui2Lua
(().Gui2Lua.Cleanup)
UserInputService = :()
MarketplaceService = :()
Players = :()
CoreGui = :()
RunService = :()
hasFileSystemAccess = (writefile) ==
(makefolder) ==
hasDecompiler = (decompile) ==
getAbsPath = (getcurrentexecutorpath) ==
getcurrentexecutorpath ()
config = {
convertLocalScripts =
}
()
success, result = (()
MarketplaceService:(.PlaceId)
)
name = (success result result.Name)
name name:(, )
(path)
path path ==
current =
_, partName (path:())
newCurrent = current:(partName)
newCurrent
current == Players partName ==
newCurrent = Players.LocalPlayer
current = newCurrent
current
(name)
sanitized = name:(, )
sanitized:()
sanitized = sanitized:(,):(,)
:(,):(,):(,)
:(,):(,):(,)
sanitized
Serializer = {}
IGNORED_PROPS = {, , , ,
, , ,
, , }
FORMATTERS = {
= (v) .(, v) ,
Content = (v) .(, v) ,
= (v) .(,
.(v.R*), .(v.G*), .(v.B*)) ,
= (v) .(, v.X, v.Y) ,
= (v) .(, v.X, v.Y, v.Z) ,
= (v) .(,
v.X.Scale, v.X.Offset, v.Y.Scale, v.Y.Offset) ,
Rect = (v) .(,
v.Min.X, v.Min.Y, v.Max.X, v.Max.Y) ,
EnumItem = (v) .(, v.EnumType.Name, v.Name) ,
NumberSequence = (v) p={}; _,k (v.Keypoints)
.(p,.(,k.Time,k.Value,k.Envelope))
; .(,.(p,)) ,
ColorSequence = (v) p={}; _,k (v.Keypoints) c=k.Value
.(p,.(,
k.Time,.(c.R*),.(c.G*),.(c.B*)))
; .(,.(p,)) ,
= ()
}
(v)
(FORMATTERS[(v)] FORMATTERS[(v)](v)) (v)
Serializer:(target, path)
output, varMap, usedNames = {}, {}, {}
(inst)
varMap[inst] varMap[inst]
base = inst.Name:() inst.Name inst.ClassName
name, i = base,
usedNames[name] i+=; name=base....(i)
usedNames[name]=; varMap[inst]=name
name
(inst, indent)
inst:() inst:()
var, ind = (inst), .(, indent)
code = {.(, ind, var, inst.ClassName)}
props, temp = {}, .(inst.ClassName)
.(props, .(, ind, var, inst.Name))
(() p,_ (inst:())
.(IGNORED_PROPS,p) .(debug.(inst[p]).what,) inst[p]~=temp[p]
.(props, .(,ind,var,p,(inst[p])))
)
temp:(); .(code, .(props,))
config.convertLocalScripts inst:()
ok, src = (hasDecompiler decompile, inst)
ok src src== src=inst.Source; .(code,ind..)
.(code,ind..)
src src~= .(code,.(,ind,var,src))
children=inst:()
#children>
_,c (children) .(code, (c,indent))
.(code, )
_,c (children) (c:() c:())
.(code,.(,ind,(c),var))
.(code,)
.(output,); .(output,.(,path)); .(output,.(,())); .(output,.(,.()))
.(output,); .(output,(target,)); .(output,.(,(target))); .(output,)
.(output,)
Gui2Lua=.(); Gui2Lua.Name=; Gui2Lua.ZIndexBehavior=.ZIndexBehavior.Global; Gui2Lua.ResetOnSpawn=
Main=.(); Main.Name=; Main.Parent=Gui2Lua; Main.AnchorPoint=.(,); Main.Position=.(,); Main.Size=.(,); Main.BackgroundColor3=.(,,); Main.BorderSizePixel=
Corner=.(,Main); Corner.CornerRadius=.(,)
Stroke=.(,Main); Stroke.ApplyStrokeMode=.ApplyStrokeMode.Border; Stroke.Color=.(,,); Stroke.Thickness=
AnimatedGradient=.(,Main); AnimatedGradient.Rotation=; AnimatedGradient.Color=ColorSequence.({ColorSequenceKeypoint.(,.(,,)),ColorSequenceKeypoint.(,.(,,)),ColorSequenceKeypoint.(,.(,,))})
TitleBar=.(); TitleBar.Name=; TitleBar.Parent=Main; TitleBar.BackgroundTransparency=; TitleBar.Size=.(,,,);
Title=.(); Title.Name=; Title.Parent=TitleBar; Title.BackgroundTransparency=; Title.Size=.(,-,,); Title.Position=.(,); Title.Font=.Font.GothamBold; Title.Text=; Title.TextColor3=.(,,); Title.TextSize=; Title.TextXAlignment=.TextXAlignment.Left
CloseBtn=.(); CloseBtn.Name=; CloseBtn.Parent=TitleBar; CloseBtn.BackgroundTransparency=; CloseBtn.AnchorPoint=.(,); CloseBtn.Position=.(,-,,); CloseBtn.Size=.(,); CloseBtn.Image=; CloseBtn.ImageColor3=.(,,)
Content=.(); Content.Name=; Content.Parent=Main; Content.BackgroundTransparency=; Content.Position=.(,,,); Content.Size=.(,-,,-); Content.AnchorPoint=.(,)
ListLayout=.(,Content); ListLayout.FillDirection=.FillDirection.Vertical; ListLayout.SortOrder=.SortOrder.LayoutOrder; ListLayout.Padding=.(,)
PathInput=.(); PathInput.Name=; PathInput.Parent=Content; PathInput.BackgroundColor3=.(,,); PathInput.Size=.(,,,); PathInput.Font=.Font.Code; PathInput.PlaceholderText=; PathInput.TextColor3=.(,,); PathInput.TextSize=; PathInput.ClearTextOnFocus=; PathInput.LayoutOrder=
InputCorner=.(,PathInput); InputCorner.CornerRadius=.(,)
InputStroke=.(,PathInput); InputStroke.Color=.(,,)
InputPadding=.(,PathInput); InputPadding.PaddingLeft=.(,); InputPadding.PaddingRight=.(,)
ToggleFrame=.(); ToggleFrame.Name=; ToggleFrame.Parent=Content; ToggleFrame.BackgroundTransparency=; ToggleFrame.Size=.(,,,); ToggleFrame.LayoutOrder=
ToggleLabel=.(,ToggleFrame); ToggleLabel.BackgroundTransparency=; ToggleLabel.Size=.(,,,); ToggleLabel.Font=.Font.Gotham; ToggleLabel.Text=; ToggleLabel.TextSize=; ToggleLabel.TextColor3=.(,,); ToggleLabel.TextXAlignment=.TextXAlignment.Left
ToggleButton=.(,ToggleFrame); ToggleButton.Name=; ToggleButton.AnchorPoint=.(,); ToggleButton.Position=.(,); ToggleButton.Size=.(,); ToggleButton.BackgroundColor3=config.convertLocalScripts .(,,) .(,,); ToggleButton.Text=
TBCorner=.(,ToggleButton); TBCorner.CornerRadius=.(,)
TBKnob=.(,ToggleButton); TBKnob.Name=; TBKnob.AnchorPoint=.(,); TBKnob.Position=config.convertLocalScripts .(,) .(,); TBKnob.Size=.(,); TBKnob.BackgroundColor3=.(,,); TBKnob.BorderSizePixel=
TBKCorner=.(,TBKnob); TBKCorner.CornerRadius=.(,)
ConvertBtn=.(); ConvertBtn.Name=; ConvertBtn.Parent=Content; ConvertBtn.BackgroundColor3=.(,,); ConvertBtn.Size=.(,,,); ConvertBtn.Font=.Font.GothamBold; ConvertBtn.Text=; ConvertBtn.TextColor3=.(,,); ConvertBtn.TextSize=; ConvertBtn.LayoutOrder=
BtnCorner=.(,ConvertBtn); BtnCorner.CornerRadius=.(,)
StatusLabel=.(); StatusLabel.Name=; StatusLabel.Parent=Content; StatusLabel.BackgroundTransparency=; StatusLabel.Size=.(,,,); StatusLabel.Font=.Font.Gotham; StatusLabel.Text=; StatusLabel.TextColor3=.(,,); StatusLabel.TextSize=; StatusLabel.TextWrapped=; StatusLabel.TextYAlignment=.TextYAlignment.Top; StatusLabel.LayoutOrder=
connections={}
(message,color)
StatusLabel.Text=message; StatusLabel.TextColor3=color
.(, () StatusLabel.Text==message StatusLabel.Text= )
gradientAnim; gradientAnim=RunService.Heartbeat:(()
t=()*
AnimatedGradient.Offset=.(.(t)*, .(t)*)
)
.(connections, gradientAnim)
.(connections,TitleBar.InputBegan:((inp) inp.UserInputType==.UserInputType.MouseButton1 inp.UserInputType==.UserInputType.Touch s,p=inp.Position,Main.Position; c; c=UserInputService.InputChanged:((i) i.UserInputType==.UserInputType.MouseMovement i.UserInputType==.UserInputType.Touch Main.Position=.(p.X.Scale,p.X.Offset+(i.Position-s).X,p.Y.Scale,p.Y.Offset+(i.Position-s).Y) ); inp.Changed:(() inp.UserInputState==.UserInputState.End c:() ) ))
.(connections,CloseBtn.MouseButton1Click:(() ().Gui2Lua.() ))
.(connections,ToggleButton.MouseButton1Click:(()
config.convertLocalScripts = config.convertLocalScripts
properties = {BackgroundColor3 = config.convertLocalScripts .(,,) .(,,)}
knobProperties = {Position = config.convertLocalScripts .(,) .(,)}
:():(ToggleButton, TweenInfo.(), properties):()
:():(TBKnob, TweenInfo.(, .EasingStyle.Back), knobProperties):()
))
.(connections,ConvertBtn.MouseButton1Click:(()
hasFileSystemAccess (,.(,,))
path=PathInput.Text; path path:(,)== (,.(,,))
target=(path); target target:() (,.(,,))
(,.(,,))
.()
luaScript=Serializer:(target,path)
timestamp=.()
fileName=.(,(target.Name),(),timestamp)
folder=; (folder); filePath=folder....fileName
ok,err=(writefile,filePath,luaScript)
ok (..()..filePath,.(,,))
(,.(,,)); (..(err))
))
Gui2Lua.Parent=CoreGui
env=(); env.Gui2Lua={GUI=Gui2Lua,Cleanup=() _,c (connections) c:() ; Gui2Lua:(); env.Gui2Lua= }This is just a test & open source, so you guys can use it anywhere and edit the scripts.. - Required: Infinite Yield (command: 'dex/explorer'), to copy the ScreenGui path (supported: 'StarterGui', 'PlayerGui' & 'CoreGui'). - Rename copied path from 'game:GetService("CoreGui").<ScreenGui_name>' to 'CoreGui.<ScreenGui_name>' (Example: 'game:GetService("CoreGui").ExperienceChat' to 'CoreGui.ExperienceChat'). - The Localscript toggle works fine if your executor has decompiler in it. - It used XML saving methods & not everything it save, so idk. Credits all to me, thanks! :D