Untitled diff

Created Diff never expires
900 removals
Words removed2765
Total words2895
Words removed (%)95.51
969 lines
837 additions
Words added2393
Total words2523
Words added (%)94.85
909 lines
local gui = game:GetObjects("rbxassetid://1211789989")[1]
local D_E_X = CreateGui()
gui.Parent = game.CoreGui
D_E_X.Parent = game.Players.LocalPlayer.PlayerGui
local panel = gui.Panel.Holder
local properties = gui.Properties.Holder
local dragging = false
local mouse = game.Players.LocalPlayer:GetMouse()
local http = game:GetService("HttpService")
local rs = game:GetService("RunService").RenderStepped
local ts = game:GetService("TweenService")
local mousecounter = 0
local entered, direct = nil, nil
local dragged = false
local active = "Explorer"
local copied = nil
local optioned = nil
local loading = "SpriteSheet"
local ctrldown = false
local shiftdown = false
local primary = nil

spawn(function()
spawn(function()
while rs:wait() do
local Gui = D_E_X
if loading then
gui.Loading.Holder.Loading.Rotation = gui.Loading.Holder.Loading.Rotation+2
gui.Loading.Holder.Current.Text = "Loading "..loading
else
break
Text moved to lines 211-213
end
end
end)


loading = "Settings"
local IntroFrame = Gui:WaitForChild("IntroFrame")


local settings = {
local SideMenu = Gui:WaitForChild("SideMenu")
["Highlight Selected"] = false,
local OpenToggleButton = Gui:WaitForChild("Toggle")
["Click To Select"] = false,
local CloseToggleButton = SideMenu:WaitForChild("Toggle")
}
local OpenScriptEditorButton = SideMenu:WaitForChild("OpenScriptEditor")


local spritesheet = "https://www.roblox.com/asset/id?=483448923"
local ScriptEditor = Gui:WaitForChild("ScriptEditor")


loading = "Properties"
local SlideOut = SideMenu:WaitForChild("SlideOut")
local SlideFrame = SlideOut:WaitForChild("SlideFrame")
local Slant = SideMenu:WaitForChild("Slant")


local proplist = http:JSONDecode(game:HttpGet("https://anaminus.github.io/rbx/json/api/latest.json", true, "application/json"))
local ExplorerButton = SlideFrame:WaitForChild("Explorer")
local SettingsButton = SlideFrame:WaitForChild("Settings")


loading = "Icons"
local SelectionBox = Instance.new("SelectionBox")
SelectionBox.Parent = Gui


local sprites = {
local ExplorerPanel = Gui:WaitForChild("ExplorerPanel")
["nil"] = UDim2.new(0, 3, 0, 3),
local PropertiesFrame = Gui:WaitForChild("PropertiesFrame")
["BasePart"] = UDim2.new(0, 21, 0, 3),
local SaveMapWindow = Gui:WaitForChild("SaveMapWindow")
["Part"] = UDim2.new(0, 21, 0, 3),
local RemoteDebugWindow = Gui:WaitForChild("RemoteDebugWindow")
["CornerWedgePart"] = UDim2.new(0, 21, 0, 3),

["TrussPart"] = UDim2.new(0, 21, 0, 3),
local SettingsPanel = Gui:WaitForChild("SettingsPanel")
["WedgePart"] = UDim2.new(0, 21, 0, 3),
local SettingsListener = SettingsPanel:WaitForChild("GetSetting")
["Model"] = UDim2.new(0, 39, 0, 3),
local SettingTemplate = SettingsPanel:WaitForChild("SettingTemplate")
["OtherValues"] = UDim2.new(0 ,51, 0, 3),
local SettingList = SettingsPanel:WaitForChild("SettingList")
["BoolValue"] = UDim2.new(0, 75, 0, 3),

["BrickColorValue"] = UDim2.new(0, 75, 0, 3),
local SaveMapCopyList = SaveMapWindow:WaitForChild("CopyList")
["CFrameValue"] = UDim2.new(0, 75, 0, 3),
local SaveMapSettingFrame = SaveMapWindow:WaitForChild("MapSettings")
["Color3Value"] = UDim2.new(0, 75, 0, 3),
local SaveMapName = SaveMapWindow:WaitForChild("FileName")
["DoubleConstrainedValue"] = UDim2.new(0, 75, 0, 3),
local SaveMapButton = SaveMapWindow:WaitForChild("Save")
["IntConstrainedValue"] = UDim2.new(0, 75, 0, 3),
local SaveMapCopyTemplate = SaveMapWindow:WaitForChild("Entry")
["IntValue"] = UDim2.new(0, 75, 0, 3),
local SaveMapSettings = {
["NumberValue"] = UDim2.new(0, 75, 0, 3),
CopyWhat = {
["ObjectValue"] = UDim2.new(0, 75, 0, 3),
Workspace = true,
["RayValue"] = UDim2.new(0, 75, 0, 3),
Lighting = true,
["StringValue"] = UDim2.new(0, 75, 0, 3),
ReplicatedStorage = true,
["Vector3Value"] = UDim2.new(0, 75, 0, 3),
ReplicatedFirst = true,
["Camera"] = UDim2.new(0, 93, 0, 3),
StarterPack = true,
["Script"] = UDim2.new(0, 111, 0, 3),
StarterGui = true,
["Decal"] = UDim2.new(0, 129, 0, 3),
StarterPlayer = true
["SpecialMesh"] = UDim2.new(0, 147, 0, 3),
},
["BlockMesh"] = UDim2.new(0, 147, 0, 3),
SaveScripts = true,
["CylinderMesh"] = UDim2.new(0, 147, 0, 3),
SaveTerrain = true,
["MeshContentProvider"] = UDim2.new(0, 147, 0, 3),
LightingProperties = true,
["Humanoid"] = UDim2.new(0, 165, 0, 3),
CameraInstances = true
["Texture"] = UDim2.new(0, 183, 0, 3),
["Sound"] = UDim2.new(0, 201, 0, 3),
["Player"] = UDim2.new(0, 219, 0, 3),
["Lighting"] = UDim2.new(0, 237, 0, 3),
["PointLight"] = UDim2.new(0, 237, 0, 3),
["SpotLight"] = UDim2.new(0, 237, 0, 3),
["SurfaceLight"] = UDim2.new(0, 237, 0, 3),
["BodyForce"] = UDim2.new(0, 3, 0, 21),
["TweenService"] = UDim2.new(0, 3, 0, 21),
["BodyGyro"] = UDim2.new(0, 3, 0, 21),
["BodyPosition"] = UDim2.new(0, 3, 0, 21),
["BodyVelocity"] = UDim2.new(0, 3, 0, 21),
["BodyAngularVelocity"] = UDim2.new(0, 3, 0, 21),
["BodyThrust"] = UDim2.new(0, 3, 0, 21),
["NetworkServer"] = UDim2.new(0, 21, 0, 21),
["NetworkClient"] = UDim2.new(0, 39, 0, 21),
["Tool"] = UDim2.new(0, 57, 0, 21),
["LocalScript"] = UDim2.new(0, 75, 0, 21),
["Workspace"] = UDim2.new(0, 93, 0, 21),
["GamePassService"] = UDim2.new(0, 93, 0, 21),
["StarterPack"] = UDim2.new(0, 111, 0, 21),
["Backpack"] = UDim2.new(0, 111, 0, 21),
["StarterGear"] = UDim2.new(0, 111, 0, 21),
["Players"] = UDim2.new(0, 129, 0, 21),
["GroupService"] = UDim2.new(0, 129, 0, 21),
["FriendService"] = UDim2.new(0, 129, 0, 21),
["Hopperbin"] = UDim2.new(0, 147, 0, 21),
["Teams"] = UDim2.new(0, 165, 0, 21),
["Team"] = UDim2.new(0, 183, 0, 21),
["SpawnLocation"] = UDim2.new(0, 201, 0, 21),
["UIListLayout"] = UDim2.new(0, 219, 0, 21),
["UIGridLayout"] = UDim2.new(0, 219, 0, 21),
["UIAspectRatioLayout"] = UDim2.new(0, 219, 0, 21),
["UIPageLayout"] = UDim2.new(0, 219, 0, 21),
["UISizeConstraint"] = UDim2.new(0, 219, 0, 21),
["UITextSizeConstraint"] = UDim2.new(0, 219, 0, 21),
["GuiService"] = UDim2.new(0, 237, 0, 21),
["GuiRoot"] = UDim2.new(0, 237, 0, 21),
["NotificationService"] = UDim2.new(0, 237, 0, 21),
["Sky"] = UDim2.new(0, 3, 0, 39),
["ServerReplicator"] = UDim2.new(0, 21, 0, 39),
["ClientReplicator"] = UDim2.new(0, 21, 0, 39),
["RenderHooksService"] = UDim2.new(0, 21, 0, 39),
["Debris"] = UDim2.new(0, 39, 0, 39),
["CollectionService"] = UDim2.new(0, 39, 0, 39),
["SoundService"] = UDim2.new(0, 57, 0, 39),
["Accessory"] = UDim2.new(0, 75, 0, 39),
["Chat"] = UDim2.new(0, 93, 0, 39),
["FilteredSelection"] = UDim2.new(0, 93, 0, 39),
["Weld"] = UDim2.new(0, 111, 0, 39),
["JointsService"] = UDim2.new(0, 111, 0, 39),
["Seat"] = UDim2.new(0, 129, 0, 39),
["Explosion"] = UDim2.new(0, 147, 0, 39),
["ForceField"] = UDim2.new(0, 165, 0, 39),
["Flag"] = UDim2.new(0, 183, 0, 39),
["FlagStand"] = UDim2.new(0, 201, 0, 39),
["ShirtGraphic"] = UDim2.new(0, 219, 0, 39),
["ClickDetector"] = UDim2.new(0, 237, 0, 39),
["TouchInputService"] = UDim2.new(0, 237, 0, 39),
["ContextActionService"] = UDim2.new(0, 237, 0, 39),
["Sparkles"] = UDim2.new(0, 3, 0, 57),
["Shirt"] = UDim2.new(0, 21, 0, 57),
["Pants"] = UDim2.new(0, 39, 0, 57),
["Hat"] = UDim2.new(0, 57, 0, 57),
["StarterGui"] = UDim2.new(0, 75, 0, 57),
["CoreGui"] = UDim2.new(0, 75, 0, 57),
["PlayerGui"] = UDim2.new(0, 75, 0, 57),
["ScreenGui"] = UDim2.new(0, 93, 0, 57),
["Frame"] = UDim2.new(0, 111, 0, 57),
["ScrollingFrame"] = UDim2.new(0, 111, 0, 57),
["ImageLabel"] = UDim2.new(0, 129, 0, 57),
["TextLabel"] = UDim2.new(0, 147, 0, 57),
["TextService"] = UDim2.new(0, 147, 0, 57),
["TextButton"] = UDim2.new(0, 165, 0, 57),
["ImageButton"] = UDim2.new(0, 183, 0, 57),
["Handles"] = UDim2.new(0, 201, 0, 57),
["SelectionBox"] = UDim2.new(0, 219, 0, 57),
["SelectionSurface"] = UDim2.new(0, 237, 0, 57),
["Selection"] = UDim2.new(0, 237, 0, 57),
["ArcHandles"] = UDim2.new(0, 3, 0, 75),
["Lasso"] = UDim2.new(0, 21, 0, 75),
["GameSettings"] = UDim2.new(0, 39, 0, 75),
["Smoke"] = UDim2.new(0, 57, 0, 75),
["Animation"] = UDim2.new(0, 75, 0, 75),
["CharacterMesh"] = UDim2.new(0, 75, 0, 75),
["Fire"] = UDim2.new(0, 93, 0, 75),
["Dialog"] = UDim2.new(0, 111, 0, 75),
["DialogChoice"] = UDim2.new(0, 129, 0, 75),
["SurfaceGui"] = UDim2.new(0, 147, 0, 75),
["Terrain"] = UDim2.new(0, 165, 0, 75),
["Run Service"] = UDim2.new(0, 183, 0, 75),
["BindableFunction"] = UDim2.new(0, 183, 0, 75),
["BindableEvent"] = UDim2.new(0, 201, 0, 75),
["TestService"] = UDim2.new(0, 219, 0, 75),
["MarketplaceService"] = UDim2.new(0, 219, 0, 75),
["VRService"] = UDim2.new(0, 219, 0, 75),
["ParticleEmitter"] = UDim2.new(0, 237, 0, 75),
["Folder"] = UDim2.new(0, 3, 0, 93),
["ModuleScript"] = UDim2.new(0, 21, 0, 93),
["ReplicatedFirst"] = UDim2.new(0, 39, 0, 93),
["ReplicatedStorage"] = UDim2.new(0, 39, 0, 93),
["RobloxReplicatedStorage"] = UDim2.new(0, 39, 0, 93),
["ContentProvider"] = UDim2.new(0, 39, 0, 93),
["AssetService"] = UDim2.new(0, 39, 0, 93),
["InsertService"] = UDim2.new(0, 39, 0, 93),
["AdService"] = UDim2.new(0, 57, 0, 93),
["DataStoreService"] = UDim2.new(0, 75, 0, 93),
["ServerScriptService"] = UDim2.new(0, 75, 0, 93),
["ChangeHistoryService"] = UDim2.new(0, 75, 0, 93),
["ServerStorage"] = UDim2.new(0, 75, 0, 93),
["BadgeService"] = UDim2.new(0, 93, 0, 93),
["HttpService"] = UDim2.new(0, 111, 0, 93),
["HttpRbxApiService"] = UDim2.new(0, 111, 0, 93),
["UnionOperation"] = UDim2.new(0, 129, 0, 93),
["CSGDictionaryService"] = UDim2.new(0, 129, 0, 93),
["MeshPart"] = UDim2.new(0, 129, 0, 93),
["SolidModelContentProvider"] = UDim2.new(0, 129, 0, 93),
["NegateOperation"] = UDim2.new(0, 147, 0, 93),
["NonReplicatedCSGDictionaryService"] = UDim2.new(0, 147, 0, 93),
["RemoteFunction"] = UDim2.new(0, 165, 0, 93),
["RemoteEvent"] = UDim2.new(0, 183, 0, 93),
["TeleportService"] = UDim2.new(0, 201, 0, 93),
["Visit"] = UDim2.new(0, 201, 0, 93),
["StarterCharacterScripts"] = UDim2.new(0, 219, 0, 93),
["ScriptContext"] = UDim2.new(0, 219, 0, 93),
["PlayerScripts"] = UDim2.new(0, 219, 0, 93),
["StarterPlayerScripts"] = UDim2.new(0, 219, 0, 93),
["PointsService"] = UDim2.new(0, 237, 0, 93),
["HapticService"] = UDim2.new(0, 3, 0, 111),
["GamepadService"] = UDim2.new(0, 3, 0, 111),
["Instance"] = UDim2.new(0, 21, 0, 111),
["Pages"] = UDim2.new(0, 39, 0, 111),
["Geometry"] = UDim2.new(0, 39, 0, 111),
["LogService"] = UDim2.new(0, 57, 0, 111),
["Stats"] = UDim2.new(0, 57, 0, 111),
["StarterPlayer"] = UDim2.new(0, 75, 0, 111),
["BallSocketConstraint"] = UDim2.new(0, 93, 0, 111),
["HingeConstraint"] = UDim2.new(0, 93, 0, 111),
["PrismaticConstraint"] = UDim2.new(0, 93, 0, 111),
["RodConstraint"] = UDim2.new(0, 93, 0, 111),
["RopeConstraint"] = UDim2.new(0, 93, 0, 111),
["SpringConstraint"] = UDim2.new(0, 93, 0, 111),
["PhysicsService"] = UDim2.new(0, 93, 0, 111),
["Effect"] = UDim2.new(0, 111, 0, 111),
["CoreScript"] = UDim2.new(0, 129, 0, 111),
["Attachment"] = UDim2.new(0, 147, 0, 111),
["Plugin"] = UDim2.new(0, 147, 0, 111),
}
}


local objects = {}
local SelectionChanged = ExplorerPanel:WaitForChild("SelectionChanged")
local GetSelection = ExplorerPanel:WaitForChild("GetSelection")
local SetSelection = ExplorerPanel:WaitForChild("SetSelection")


mouse.Button1Down:connect(function()
local Player = game:GetService("Players").LocalPlayer
dragging = true
local Mouse = Player:GetMouse()

local CurrentWindow = "Nothing c:"
local Windows = {
Explorer = {
ExplorerPanel,
PropertiesFrame
},
Settings = {SettingsPanel},
SaveMap = {SaveMapWindow},
Remotes = {RemoteDebugWindow}
}

function switchWindows(wName,over)
if CurrentWindow == wName and not over then return end
optioned = nil
local count = 0
gui.Panel.Holder.Options.Visible = false
if settings["Click To Select"] then
for i,v in pairs(Windows) do
if mouse.Target then
count = 0
if objects[mouse.Target] then
if i ~= wName then
local obj = mouse.Target
for _,c in pairs(v) do c:TweenPosition(UDim2.new(1, 30, count * 0.5, count * 36), "Out", "Quad", 0.5, true) count = count + 1 end
gui.Panel.Holder.Options.Visible = false
for _,v in pairs(objects) do
if v ~= objects[obj] then
v.Selected = false
end
end
primary = objects[obj]
objects[obj].Selected = not objects[obj].Selected
highlightSelected()
end
end
end
end
end
end)

mouse.Button1Up:connect(function()
dragging = false
mousecounter = 0
count = 0
entered, direct = nil, nil
if Windows[wName] then
for _,c in pairs(Windows[wName]) do c:TweenPosition(UDim2.new(1, -300, count * 0.5, count * 36), "Out", "Quad", 0.5, true) count = count + 1 end
dragged = false
end
gui.Panel.Holder.Dragging:ClearAllChildren()
if wName ~= "Nothing c:" then
end)
CurrentWindow = wName
for i,v in pairs(SlideFrame:GetChildren()) do
v.BackgroundTransparency = 1
v.Icon.ImageColor3 = Color3.new(70/255, 70/255, 70/255)
end
if SlideFrame:FindFirstChild(wName) then
SlideFrame[wName].BackgroundTransparency = 0.5
SlideFrame[wName].Icon.ImageColor3 = Color3.new(0,0,0)
end
end
end


local arrows = {
function toggleDex(on)
["Closed"] = UDim2.new(0, 201, 0, 201),
if on then
["Open"] = UDim2.new(0, 219, 0, 201),
SideMenu:TweenPosition(UDim2.new(1, -330, 0, 0), "Out", "Quad", 0.5, true)
["ClosedHigh"] = UDim2.new(0, 201, 0, 219),
OpenToggleButton:TweenPosition(UDim2.new(1,0,0,0), "Out", "Quad", 0.5, true)
["OpenHigh"] = UDim2.new(0, 219, 0, 219),
switchWindows(CurrentWindow,true)
else
SideMenu:TweenPosition(UDim2.new(1, 0, 0, 0), "Out", "Quad", 0.5, true)
OpenToggleButton:TweenPosition(UDim2.new(1,-30,0,0), "Out", "Quad", 0.5, true)
switchWindows("Nothing c:")
end
end

local Settings = {
ClickSelect = false,
SelBox = false,
ClearProps = false,
SelectUngrouped = true,
SaveInstanceScripts = true
}
}


loading = "functions"
function ReturnSetting(set)
if set == "ClearProps" then
return Settings.ClearProps
elseif set == "SelectUngrouped" then
return Settings.SelectUngrouped
end
end

OpenToggleButton.MouseButton1Up:connect(function()
toggleDex(true)
end)


function setSprite(obj)
OpenScriptEditorButton.MouseButton1Up:connect(function()
for i,v in pairs(sprites) do
if OpenScriptEditorButton.Active then
if obj.ClassName == i or obj.Name == i then
ScriptEditor.Visible = true
return v
end
end
end
end)

CloseToggleButton.MouseButton1Up:connect(function()
if CloseToggleButton.Active then
toggleDex(false)
end
end)

for i,v in pairs(SlideFrame:GetChildren()) do
v.MouseButton1Click:connect(function()
switchWindows(v.Name)
end)
return nil
v.MouseEnter:connect(function()v.BackgroundTransparency = 0.5 end)
v.MouseLeave:connect(function()if CurrentWindow~=v.Name then v.BackgroundTransparency = 1 end end)
end
end


function checkExistence(obj)

local success = pcall(function()
function createSetting(name,interName,defaultOn)
if obj then
local newSetting = SettingTemplate:Clone()
return
newSetting.Position = UDim2.new(0,0,0,#SettingList:GetChildren() * 60)
newSetting.SName.Text = name
local function toggle(on)
if on then
newSetting.Change.Bar:TweenPosition(UDim2.new(0,32,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
newSetting.Change.OnBar:TweenSize(UDim2.new(0,34,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
newSetting.Status.Text = "On"
Settings[interName] = true
else
newSetting.Change.Bar:TweenPosition(UDim2.new(0,-2,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
newSetting.Change.OnBar:TweenSize(UDim2.new(0,0,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
newSetting.Status.Text = "Off"
Settings[interName] = false
end
end
end
newSetting.Change.MouseButton1Click:connect(function()
toggle(not Settings[interName])
end)
end)
return success
newSetting.Visible = true
newSetting.Parent = SettingList
if defaultOn then
toggle(true)
end
end
end


function getOwner(instance)
createSetting("Click part to select","ClickSelect",false)
for _,v in pairs(panel:GetChildren()) do
createSetting("Selection Box","SelBox",false)
if instance:IsDescendantOf(v) then
createSetting("Clear property value on focus","ClearProps",false)
return v
createSetting("Select ungrouped models","SelectUngrouped",true)
end
createSetting("SaveInstance decompiles scripts","SaveInstanceScripts",true)

local function getSelection()
local t = GetSelection:Invoke()
if t and #t > 0 then
return t[1]
else
return nil
end
end
return nil
end
end


function sizeProps()
Mouse.Button1Down:connect(function()
properties.CanvasSize = UDim2.new(0, 0, 0, 20*#properties:GetChildren())
if CurrentWindow == "Explorer" and Settings.ClickSelect then
end
local target = Mouse.Target
if target then
SetSelection:Invoke({target})
Text moved from lines 28-30
end
end
end)


function findProp(list, prop)
SelectionChanged.Event:connect(function()
for _,v in pairs(list) do
if Settings.SelBox then
if string.lower(v[1]) == string.lower(prop) then
local success,err = pcall(function()
return true
local selection = getSelection()
SelectionBox.Adornee = selection
end)
if err then
SelectionBox.Adornee = nil
end
end
end
end
end)


return false
SettingsListener.OnInvoke = ReturnSetting
end

-- Map Copier


function checkProp(obj, prop)
function createMapSetting(obj,interName,defaultOn)
local success = pcall(function()
local function toggle(on)
if obj[prop] then
if on then
return
obj.Change.Bar:TweenPosition(UDim2.new(0,32,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
obj.Change.OnBar:TweenSize(UDim2.new(0,34,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
obj.Status.Text = "On"
SaveMapSettings[interName] = true
else
obj.Change.Bar:TweenPosition(UDim2.new(0,-2,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
obj.Change.OnBar:TweenSize(UDim2.new(0,0,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
obj.Status.Text = "Off"
SaveMapSettings[interName] = false
end
end
end
obj.Change.MouseButton1Click:connect(function()
toggle(not SaveMapSettings[interName])
end)
end)
return success
obj.Visible = true
obj.Parent = SaveMapSettingFrame
if defaultOn then
toggle(true)
end
end
end


function getProperties(obj)
function createCopyWhatSetting(serv)
local list = {}
if SaveMapSettings.CopyWhat[serv] then
local newSetting = SaveMapCopyTemplate:Clone()
newSetting.Position = UDim2.new(0,0,0,#SaveMapCopyList:GetChildren() * 22 + 5)
newSetting.Info.Text = serv
local function toggle(on)
if on then
newSetting.Change.enabled.Visible = true
SaveMapSettings.CopyWhat[serv] = true
else
newSetting.Change.enabled.Visible = false
SaveMapSettings.CopyWhat[serv] = false
end
end
for _,v in pairs(proplist) do
newSetting.Change.MouseButton1Click:connect(function()
if v.type == "Property" and not findProp(list, v.Name) and checkProp(obj, v.Name) then
toggle(not SaveMapSettings.CopyWhat[serv])
table.insert(list, {v.Name, v.ValueType})
end)
end
newSetting.Visible = true
newSetting.Parent = SaveMapCopyList
end
end
return list
end
end


loading = "Types"
createMapSetting(SaveMapSettingFrame.Scripts,"SaveScripts",true)
createMapSetting(SaveMapSettingFrame.Terrain,"SaveTerrain",true)
createMapSetting(SaveMapSettingFrame.Lighting,"LightingProperties",true)
createMapSetting(SaveMapSettingFrame.CameraInstances,"CameraInstances",true)


local types = {
createCopyWhatSetting("Workspace")
Vector3 = "TextBox",
createCopyWhatSetting("Lighting")
string = "TextBox",
createCopyWhatSetting("ReplicatedStorage")
bool = "TextButton",
createCopyWhatSetting("ReplicatedFirst")
int = "TextBox",
createCopyWhatSetting("StarterPack")
Object = "TextLabel",
createCopyWhatSetting("StarterGui")
CoordinateFrame = "TextBox",
createCopyWhatSetting("StarterPlayer")
Content = "TextLabel",
float = "TextBox",
Size = "TextBox",
ScreenOrientation = "TextLabel",
ColorSequence = "TextLabel",
TextureMode = "TextLabel",
NumberSequence = "TextLabel",
BrickColor = "TextBox",
Vector2 = "TextBox",
Color3 = "TextBox",
BodyPart = "TextLabel",
MeshType = "TextLabel",
ErrorReporting = "TextLabel",
DialogBehaviorType = "TextLabel",
DialogPurpose = "TextLabel",
DialogTone = "TextLabel",
double = "TextBox",
ExplosionType = "TextLabel",
NormalId = "TextBox",
InOut = "TextLabel",
LeftRight = "TextLabel",
TopBottom = "TextLabel",
SizeConstraint = "TextLabel",
UDim2 = "TextBox",
UDim = "TextBox",
}


function updateProps(obj)
SaveMapName.Text = tostring(game.PlaceId).."MapCopy"
local props = getProperties(obj)

SaveMapButton.MouseButton1Click:connect(function()
if objects[obj].Selected then
local copyWhat = {}
for _,v in pairs(props) do

if properties:FindFirstChild(obj.Name..v[1]) then
local copyGroup = Instance.new("Model",game.ReplicatedStorage)
properties[obj.Name..v[1]].Value.Text = tostring(obj[v[1]])

end
local copyScripts = SaveMapSettings.SaveScripts

objects[obj].Button.Parent = objects[obj.Parent].Button.Children
local copyTerrain = SaveMapSettings.SaveTerrain

if objects[obj.Parent].Button.Children.Visible then
local lightingProperties = SaveMapSettings.LightingProperties
newLayer(obj.Parent)

end
local cameraInstances = SaveMapSettings.CameraInstances

if v[1] == "Name" then
-----------------------------------------------------------------------------------
objects[obj].Button.Name = obj.Name

objects[obj].Button.Text = " "..obj.Name
for i,v in pairs(SaveMapSettings.CopyWhat) do
if v then
table.insert(copyWhat,i)
end
end

local consoleFunc = printconsole or writeconsole

if consoleFunc then
consoleFunc("Raspberry Pi's place copier loaded.")
consoleFunc("Copying map of game "..tostring(game.PlaceId)..".")
end

function archivable(root)
for i,v in pairs(root:GetChildren()) do
if not game.Players:GetPlayerFromCharacter(v) then
v.Archivable = true
archivable(v)
end
end
end
end
end
end
end


function createProperties()
function decompileS(root)
local preprop = nil
for i,v in pairs(root:GetChildren()) do
properties:ClearAllChildren()
pcall(function()
if v:IsA("LocalScript") then
for _,v in pairs(objects) do
local isDisabled = v.Disabled
if v.Selected then
v.Disabled = true
local props = getProperties(v.Owner)
v.Source = decompile(v)
v.Disabled = isDisabled
for _,q in pairs(props) do
local prop = gui.Resources.Property:Clone()
prop.Name = v.Owner.Name..q[1]
prop.Visible = true
prop.Text = q[1]
if preprop then
if v.Source == "" then
prop.Position = preprop.Position+UDim2.new(0, 0, 0, 20)
if consoleFunc then consoleFunc("LocalScript "..v.Name.." had a problem decompiling.") end
if preprop.BackgroundColor3 == Color3.fromRGB(200, 200, 200) then
prop.BackgroundColor3 = Color3.fromRGB(180, 180, 180)
else
else
prop.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
if consoleFunc then consoleFunc("LocalScript "..v.Name.." decompiled.") end
end
end
end
elseif v:IsA("ModuleScript") then
v.Source = decompile(v)
preprop = prop
local type = nil
local values = nil
for i,c in pairs(types) do
if v.Source == "" then
if i == q[2] then
if consoleFunc then consoleFunc("ModuleScript "..v.Name.." had a problem decompiling.") end
type = c
values = i
break
else
else
type = "TextLabel"
if consoleFunc then consoleFunc("ModuleScript "..v.Name.." decompiled.") end
end
end
end
end
end)
local value = nil
decompileS(v)
if type == "TextButton" then
value = Instance.new("TextButton")
if values == "bool" then
value.MouseButton1Down:connect(function()
if string.find(v.Owner.ClassName, "Value") then
v.Owner[q[1]].Value = not v.Owner[q[1]].Value
else
v.Owner[q[1]] = not v.Owner[q[1]]
end
end)
end
elseif type == "TextBox" then
value = Instance.new("TextBox")
value.FocusLost:connect(function()
if values == "string" then
v.Owner[q[1]] = tostring(value.Text)
elseif values == "int" then
v.Owner[q[1]] = tonumber(value.Text)
elseif values == "CoordinateFrame" then
v.Owner[q[1]] = CFrame.new(value.Text)
elseif value == "Size" or values == "Position" and v.Owner:IsA("BasePart") then
v.Owner[q[1]] = Vector3.new(value.Text)
elseif value == "Position" then
v.Owner[q[1]] = UDim2.new(value.Text)
end
end)
else
value = Instance.new("TextLabel")
v.TextColor = Color3.fromRGB(200, 200, 200)
end
value.BackgroundTransparency = 0.5
value.BackgroundColor3 = prop.BackgroundColor3
value.TextColor3 = prop.TextColor3
value.Font = "Code"
value.TextXAlignment = "Left"
value.TextSize = 14
value.Size = UDim2.new(1, 0, 1, 0)
value.Position = UDim2.new(1, 0, 0, 0)
value.Name = "Value"
pcall(function()
value.Text = tostring(v.Owner[q[1]])
end)
value.Parent = prop
prop.Parent = properties
end
end
end
end
end
sizeProps()
end

function checkVisible(button)
local owner = getOwner(button)
local checked = true
if owner then
for _,v in pairs(owner:GetDescendants()) do
if v.Name == "Children" then
if button:IsDescendantOf(v) then
if not v.Visible then
checked = false
break
end
end
end
end
end
return checked
end


function parentCheck(button, instance)
for i,v in pairs(copyWhat) do archivable(game[v]) end
for _,v in pairs(button:GetChildren()) do
if instance:IsDescendantOf(v) then
return true
end
end
return false
end


function positionButtons()
for j,obj in pairs(copyWhat) do
local descendants = panel:GetDescendants()
if obj ~= "StarterPlayer" then
local newFolder = Instance.new("Folder",copyGroup)
for _,c in pairs(objects) do
newFolder.Name = obj
c.Button.Position = c.OrigPos
for i,v in pairs(game[obj]:GetChildren()) do
end
if v ~= copyGroup then
pcall(function()
for _,v in pairs(panel:GetChildren()) do
v:Clone().Parent = newFolder
if v:IsA("TextButton") then
end)
if v.Children.Visible then
for _,c in pairs(descendants) do
if c:IsA("TextButton") then
if c.AbsolutePosition.Y > v.AbsolutePosition.Y and not c:IsDescendantOf(v) and not parentCheck(v.Parent, c) then
c.Position = c.Position+UDim2.new(0, 0, 0, 20*#v.Children:GetChildren())
end
end
end
end
end
end
end
else
end
local newFolder = Instance.new("Model",copyGroup)
newFolder.Name = "StarterPlayer"
for _,v in pairs(descendants) do
for i,v in pairs(game[obj]:GetChildren()) do
if v:IsA("TextButton") then
local newObj = Instance.new("Folder",newFolder)
if v:FindFirstChild("Children") then
newObj.Name = v.Name
if v.Children.Visible and v.Parent ~= panel then
for _,c in pairs(v:GetChildren()) do
local owner = getOwner(v)
if c.Name ~= "ControlScript" and c.Name ~= "CameraScript" then
c:Clone().Parent = newObj
if owner.Children.Visible then
if checkVisible(v) then
for _,c in pairs(descendants) do
if c:IsA("TextButton") then
local newowner = getOwner(c)
if c.AbsolutePosition.Y > v.AbsolutePosition.Y and not c:IsDescendantOf(v) and not parentCheck(v.Parent, c) then
if owner == newowner or newowner == nil then
c.Position = c.Position+UDim2.new(0, 0, 0, 20*#v.Children:GetChildren())
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end


function highlightSelected()
if workspace.CurrentCamera and cameraInstances then
for _,v in pairs(objects) do
local cameraFolder = Instance.new("Model",copyGroup)
if v.Selected then
cameraFolder.Name = "CameraItems"
if settings["Highlight Selected"] and v.Owner:IsA("BasePart") or settings["Highlight Selected"] and v.Owner:IsA("Model") then
for i,v in pairs(workspace.CurrentCamera:GetChildren()) do v:Clone().Parent = cameraFolder end
local highlight = v.Owner:FindFirstChild("SelectionBox") or Instance.new("SelectionBox")
highlight.Adornee = v.Owner
highlight.LineThickness = 0.25
highlight.Color3 = Color3.fromRGB(0, 170, 0)
highlight.Parent = v.Owner
end
v.Button.BackgroundTransparency = 0
else
if v.Owner:FindFirstChild("SelectionBox") then
v.Owner.SelectionBox:Destroy()
end
v.Button.BackgroundTransparency = 1
end
end
end
createProperties()
end


function sizePanel()
if copyTerrain then
local pre = 0
local myTerrain = workspace.Terrain:CopyRegion(workspace.Terrain.MaxExtents)
myTerrain.Parent = copyGroup
for _,v in pairs(panel:GetDescendants()) do
local owner = getOwner(v)
if not v.Parent:IsA("Folder") then
if v:IsA("TextButton") and v.Parent.Visible and v:FindFirstChild("Children") then
if owner then
if owner.Children.Visible and checkVisible(v) then
pre = pre+1
end
else
pre = pre+1
end
end
elseif v:IsA("TextButton") and v:FindFirstChild("Children") then
if owner then
if owner.Children.Visible and checkVisible(v) then
pre = pre+1
end
else
pre = pre+1
end
end
end
end
panel.CanvasSize = UDim2.new(0, 0, 0, 20*pre)
end


function newLayer(obj)
function saveProp(obj,prop,par)
for _,v in pairs(obj:GetChildren()) do
local myProp = obj[prop]
if not objects[v] then
if type(myProp) == "boolean" then
local newProp = Instance.new("BoolValue",par)
newProp.Name = prop
newProp.Value = myProp
elseif type(myProp) == "number" then
local newProp = Instance.new("IntValue",par)
newProp.Name = prop
newProp.Value = myProp
elseif type(myProp) == "string" then
local newProp = Instance.new("StringValue",par)
newProp.Name = prop
newProp.Value = myProp
elseif type(myProp) == "userdata" then -- Assume Color3
pcall(function()
pcall(function()
createMainButton(v)
local newProp = Instance.new("Color3Value",par)
newProp.Name = prop
checkParents(v)
newProp.Value = myProp
end)
end)
end
end
end
end

if lightingProperties then
local lightingProps = Instance.new("Model",copyGroup)
lightingProps.Name = "LightingProperties"
objects[obj].Button.Children.Visible = true
saveProp(game.Lighting,"Ambient",lightingProps)
saveProp(game.Lighting,"Brightness",lightingProps)
local prev = nil
saveProp(game.Lighting,"ColorShift_Bottom",lightingProps)
local adding = 0
saveProp(game.Lighting,"ColorShift_Top",lightingProps)
saveProp(game.Lighting,"GlobalShadows",lightingProps)
local function createSpareButton(objs)
saveProp(game.Lighting,"OutdoorAmbient",lightingProps)
local button = objects[objs].Button
saveProp(game.Lighting,"Outlines",lightingProps)
button.Position = UDim2.new(0, 20, 0, 20)
saveProp(game.Lighting,"GeographicLatitude",lightingProps)
saveProp(game.Lighting,"TimeOfDay",lightingProps)
if #objs:GetChildren() > 0 then
saveProp(game.Lighting,"FogColor",lightingProps)
button.ArrowHolder.Visible = true
saveProp(game.Lighting,"FogEnd",lightingProps)
end
saveProp(game.Lighting,"FogStart",lightingProps)
if prev then
button.Position = prev.Position+UDim2.new(0, 0, 0, 20)
end
objects[objs].OrigPos = button.Position
local sprite = setSprite(objs)
if sprite then
button.IconHolder.Icon.Position = -sprite
end
adding = adding+1
prev = button
end
for _,v in pairs(obj:GetChildren()) do
if objects[v] then
createSpareButton(v)
end
end
end
positionButtons()
sizePanel()
end


function removeLayer(obj)
if decompile and copyScripts then
objects[obj].Button.Children.Visible = false
decompileS(copyGroup)
positionButtons()
sizePanel()
end

game:GetService("UserInputService").InputBegan:connect(function(key)
if key.KeyCode == Enum.KeyCode.LeftControl then
ctrldown = true
shiftdown = false
elseif key.KeyCode == Enum.KeyCode.LeftShift then
shiftdown = true
ctrldown = false
end
end
end)


game:GetService("UserInputService").InputEnded:connect(function(key)
if SaveInstance then
if key.KeyCode == Enum.KeyCode.LeftControl then
SaveInstance(copyGroup,SaveMapName.Text..".rbxm")
ctrldown = false
elseif saveinstance then
elseif key.KeyCode == Enum.KeyCode.LeftShift then
saveinstance(getelysianpath()..SaveMapName.Text..".rbxm",copyGroup)
shiftdown = false
end
end
--print("Saved!")
if consoleFunc then
consoleFunc("The map has been copied.")
end
SaveMapButton.Text = "The map has been saved"
wait(5)
SaveMapButton.Text = "Save"
end)
end)


function checkParents(v)
-- End Copier
pcall(function()
v.ChildRemoved:connect(function(obj)
if objects[obj] then
objects[obj].Button:Destroy()
objects[obj] = nil
end
if v then
if objects[v].Button.Children.Visible then
newLayer(v)
end
end
end)
v.ChildAdded:Connect(function(obj)
pcall(function()
if objects[v] then
if objects[v].Button.Children.Visible then
newLayer(v)
end
end
end)
end)
end)
end


function activateButton(button, obj)
wait()
button.ArrowHolder.Arrow.MouseButton1Down:connect(function()

if objects[obj].Button.Children.Visible then
IntroFrame:TweenPosition(UDim2.new(1,-300,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
removeLayer(obj)

else
switchWindows("Explorer")
newLayer(obj)

end
wait(1)

if objects[obj].Button.Children.Visible then
SideMenu.Visible = true
button.ArrowHolder.Arrow.Position = -arrows.OpenHigh

for i = 0,1,0.1 do
elseif not objects[obj].Button.Children.Visible then
IntroFrame.BackgroundTransparency = i
button.ArrowHolder.Arrow.Position = -arrows.ClosedHigh
IntroFrame.Main.BackgroundTransparency = i
end
IntroFrame.Slant.ImageTransparency = i
end)
IntroFrame.Title.TextTransparency = i
IntroFrame.Version.TextTransparency = i
button.MouseButton2Down:connect(function()
IntroFrame.Creator.TextTransparency = i
if optioned == obj then
wait()
optioned = nil
gui.Panel.Holder.Options.Visible = false
else
optioned = obj
gui.Panel.Holder.Options.Visible = true
if not obj.Parent or obj.Parent == game then
gui.Panel.Holder.Options.Position = UDim2.new(0.25, 0, 0, button.Position.Y.Offset)
else
gui.Panel.Holder.Options.Position = UDim2.new(0.25, 0, 0, button.AbsolutePosition.Y)
end
end
end)
button.MouseButton1Up:connect(function()
dragging = false
mousecounter = 0
if entered and dragged then
for _,v in pairs(objects) do
if v.Selected then
pcall(function()
v.Owner.Parent = direct
end)
end
end
end
entered, direct = nil, nil
dragged = false
gui.Panel.Holder.Dragging:ClearAllChildren()
end)
button.MouseButton1Down:connect(function()
dragging = true
optioned = nil
gui.Panel.Holder.Options.Visible = false
if ctrldown then
objects[obj].Selected = not objects[obj].Selected
primary = objects[obj]
elseif shiftdown then
if not primary then
for _,v in pairs(objects) do
v.Selected = false
end
primary = objects[obj]
objects[obj].Selected = true
else
objects[obj].Selected = true
for _,v in pairs(objects) do
if v.Button.AbsolutePosition.Y > primary.Button.AbsolutePosition.Y and v.Button.AbsolutePosition.Y < button.AbsolutePosition.Y or v.Button.AbsolutePosition.Y < primary.Button.AbsolutePosition.Y and v.Button.AbsolutePosition.Y > button.AbsolutePosition.Y then
if checkVisible(v.Button) or v.Button.Parent == panel then
v.Selected = true
end
end
end
end
else
wait(0.25)
if not dragging then
for _,v in pairs(objects) do
if v ~= objects[obj] then
v.Selected = false
end
end
primary = objects[obj]
objects[obj].Selected = not objects[obj].Selected
end
end
highlightSelected()
end)
button.MouseEnter:connect(function()
entered, direct = button, obj
if not objects[obj].Selected then
button.BackgroundTransparency = 0.5
end
end)
button.MouseLeave:connect(function()
if not objects[obj].Selected then
button.BackgroundTransparency = 1
end
end)
button.ArrowHolder.MouseEnter:connect(function()
if objects[obj].Button.Children.Visible then
button.ArrowHolder.Arrow.Position = -arrows.OpenHigh
elseif not objects[obj].Button.Children.Visible then
button.ArrowHolder.Arrow.Position = -arrows.ClosedHigh
end
end)
button.ArrowHolder.MouseLeave:connect(function()
if objects[obj].Button.Children.Visible then
button.ArrowHolder.Arrow.Position = -arrows.Open
elseif not objects[obj].Button.Children.Visible then
button.ArrowHolder.Arrow.Position = -arrows.Closed
end
end)
end
end


local pre = nil
IntroFrame.Visible = false


function createMainButton(obj)
SlideFrame:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
local button = gui.Resources.Item:Clone()
OpenScriptEditorButton:TweenPosition(UDim2.new(0,0,0,180),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
button.Name = obj.Name
CloseToggleButton:TweenPosition(UDim2.new(0,0,0,210),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
button.Visible = true
Slant:TweenPosition(UDim2.new(0,0,0,240),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
button.Text = " "..obj.Name
obj.AncestryChanged:connect(function(old, new)
if objects[obj] then
objects[obj].Button:Destroy()
objects[obj] = nil
if objects[new].Button.Children.Visible then
newLayer(new)
end
if objects[old].Button.Children.Visible then
newLayer(old)
end
positionButtons()
end
end)


if not obj.Parent.Parent then
wait(0.5)
if pre then

button.Position = pre.Position+UDim2.new(0, 0, 0, 20)
for i = 1,0,-0.1 do
end
OpenScriptEditorButton.Icon.ImageTransparency = i
CloseToggleButton.TextTransparency = i
pre = button
wait()
if #obj:GetChildren() > 0 then
button.ArrowHolder.Visible = true
end
local sprite = setSprite(obj)
if sprite then
button.IconHolder.Icon.Position = -sprite
end
button.Parent = panel
else
button.Parent = objects[obj.Parent].Button.Children
end
obj.Changed:connect(function()
pcall(function()
if obj then
if objects[obj].Selected then
updateProps(obj)
end
end
end)
end)
activateButton(button, obj)
objects[obj] = {Owner = obj, Button = button, Selected = false, OrigPos = button.Position}
if objects[obj.Parent].Button.Children.Visible then
newLayer(obj.Parent)
end
sizePanel()
end
end


function createExplorer()
CloseToggleButton.Active = true
local function recur(obj)
CloseToggleButton.AutoButtonColor = true
if checkExistence(obj) then

for _,v in pairs(obj:GetChildren()) do
OpenScriptEditorButton.Active = true
rs:wait()
OpenScriptEditorButton.AutoButtonColor = true
end)
if checkExistence(v) then
spawn(function()
checkParents(v)
-- initial states
local Option = {
pcall(function()
-- can modify object parents in the hierarchy
createMainButton(v)
Modifiable = false;
-- can select objects
recur(v)
Selectable = true;
end)
}
end

-- MERELY
sizePanel()

end
Option.Modifiable = true

-- END MERELY

-- general size of GUI objects, in pixels
local GUI_SIZE = 16
-- padding between items within each entry
local ENTRY_PADDING = 1
-- padding between each entry
local ENTRY_MARGIN = 1

local Input = game:GetService("UserInputService")
local HoldingCtrl = false
local HoldingShift = false

--[[

# Explorer Panel

A GUI panel that displays the game hierarchy.


## Selection Bindables

- `Function GetSelection ( )`

Returns an array of objects representing the objects currently
selected in the panel.

- `Function SetSelection ( Objects selection )`

Sets the objects that are selected in the panel. `selection` is an array
of objects.

- `Event SelectionChanged ( )`

Fired after the selection changes.


## Option Bindables

- `Function GetOption ( string optionName )`

If `optionName` is given, returns the value of that option. Otherwise,
returns a table of options and their current values.

- `Function SetOption ( string optionName, bool value )`

Sets `optionName` to `value`.

Options:

- Modifiable

Whether objects can be modified by the panel.

Note that modifying objects depends on being able to select them. If
Selectable is false, then Actions will not be available. Reparenting
is still possible, but only for the dragged object.

- Selectable

Whether objects can be selected.

If Modifiable is false, then left-clicking will perform a drag
selection.

## Updates

- 2013-09-18
- Fixed explorer icons to match studio explorer.

- 2013-09-14
- Added GetOption and SetOption bindables.
- Option: Modifiable; sets whether objects can be modified by the panel.
- Option: Selectable; sets whether objects can be selected.
- Slight modification to left-click selection behavior.
- Improved layout and scaling.

- 2013-09-13
- Added drag to reparent objects.
- Left-click to select/deselect object.
- Left-click and drag unselected object to reparent single object.
- Left-click and drag selected object to move reparent entire selection.
- Right-click while dragging to cancel.

- 2013-09-11
- Added explorer panel header with actions.
- Added Cut action.
- Added Copy action.
- Added Paste action.
- Added Delete action.
- Added drag selection.
- Left-click: Add to selection on drag.
- Right-click: Add to or remove from selection on drag.
- Ensured SelectionChanged fires only when the selection actually changes.
- Added documentation and change log.
- Fixed thread issue.

- 2013-09-09
- Added basic multi-selection.
- Left-click to set selection.
- Right-click to add to or remove from selection.
- Removed "Selection" ObjectValue.
- Added GetSelection BindableFunction.
- Added SetSelection BindableFunction.
- Added SelectionChanged BindableEvent.
- Changed font to SourceSans.

- 2013-08-31
- Improved GUI sizing based off of `GUI_SIZE` constant.
- Automatic font size detection.

- 2013-08-27
- Initial explorer panel.


## Todo

- Sorting
- by ExplorerOrder
- by children
- by name
- Drag objects to reparent

]]

local ENTRY_SIZE = GUI_SIZE + ENTRY_PADDING*2
local ENTRY_BOUND = ENTRY_SIZE + ENTRY_MARGIN
local HEADER_SIZE = ENTRY_SIZE*2

local FONT = 'SourceSans'
local FONT_SIZE do
local size = {8,9,10,11,12,14,18,24,36,48}
local s
local n = math.huge
for i = 1,#size do
if size[i] <= GUI_SIZE then
FONT_SIZE = i - 1
end
end
end
end
recur(game)
end
end


loading = "Instances"
local GuiColor = {
Background = Color3.new(233/255, 233/255, 233/255);
Border = Color3.new(149/255, 149/255, 149/255);
Selected = Color3.new( 96/255, 140/255, 211/255);
BorderSelected = Color3.new( 86/255, 125/255, 188/255);
Text = Color3.new( 0/255, 0/255, 0/255);
TextDisabled = Color3.new(128/255, 128/255, 128/255);
TextSelected = Color3.new(255/255, 255/255, 255/255);
Button = Color3.new(221/255, 221/255, 221/255);
ButtonBorder = Color3.new(149/255, 149/255, 149/255);
ButtonSelected = Color3.new(255/255, 0/255, 0/255);
Field = Color3.new(255/255, 255/255, 255/255);
FieldBorder = Color3.new(191/255, 191/255, 191/255);
TitleBackground = Color3.new(178/255, 178/255, 178/255);
}


createExplorer()
----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
---- Icon map constants


loading = nil
local MAP_ID = 483448923


local open = true
-- Indices based on implementation of Icon function.
local openarrow = ts:Create(gui.Toggles.Options.Open, TweenInfo.new(0.25, Enum.EasingStyle.Sine, Enum.
local ACTION_CUT = 160
local ACTION_COPY = 161
local ACTION_PASTE = 162
local ACTION_DELETE = 163
local ACTION_SORT = 164
local ACTION_CUT_OVER = 174
local ACTION_COPY_OVER = 175
local ACTION_PASTE_OVER = 176
local ACTION_DELETE_OVER = 177
local ACTION_SORT_OVER = 178
local ACTION_EDITQUICKACCESS = 190
local ACTION_FREEZE = 188
local ACTION_STARRED = 189
local ACTION_ADDSTAR = 184
local ACTION_ADDSTAR_OVER = 187

local NODE_COLLAPSED = 165
local NODE_EXPANDED = 166
local NODE_COLLAPSED_OVER = 179
local NODE_EXPANDED_OVER = 180

local ExplorerIndex = {
["Accessory"] = 32;
["Accoutrement"] = 32;
["AdService"] = 73;
["Animation"] = 60;
["AnimationController"] = 60;
["AnimationTrack"] = 60;
["Animator"] = 60;
["ArcHandles"] = 56;
["AssetService"] = 72;
["Attachment"] = 34;
["Backpack"] = 20;
["BadgeService"] = 75;
["BallSocketConstraint"] = 89;
["BillboardGui"] = 64;
["BinaryStringValue"] = 4;
["BindableEvent"] = 67;
["BindableFunction"] = 66;
["BlockMesh"] = 8;
["BloomEffect"] = 90;
["BlurEffect"] = 90;
["BodyAngularVelocity"] = 14;
["BodyForce"] = 14;
["BodyGyro"] = 14;
["BodyPosition"] = 14;
["BodyThrust"] = 14;
["BodyVelocity"] = 14;
["BoolValue"] = 4;
["BoxHandleAdornment"] = 54;
["BrickColorValue"] = 4;
["Camera"] = 5;
["CFrameValue"] = 4;
["CharacterMesh"] = 60;
["Chat"] = 33;
["ClickDetector"] = 41;
["CollectionService"] = 30;
["Color3Value"] = 4;
["ColorCorrectionEffect"] = 90;
["ConeHandleAdornment"] = 54;
["Configuration"] = 58;
["ContentProvider"] = 72;
["ContextActionService"] = 41;
["CoreGui"] = 46;
["CoreScript"] = 18;
["CornerWedgePart"] = 1;
["CustomEvent"] = 4;
["CustomEventReceiver"] = 4;
["CylinderHandleAdornment"] = 54;
["CylinderMesh"] = 8;
["CylindricalConstraint"] = 89;
["Debris"] = 30;
["Decal"] = 7;
["Dialog"] = 62;
["DialogChoice"] = 63;
["DoubleConstrainedValue"] = 4;
["Explosion"] = 36;
["FileMesh"] = 8;
["Fire"] = 61;
["Flag"] = 38;
["FlagStand"] = 39;
["FloorWire"] = 4;
["Folder"] = 70;
["ForceField"] = 37;
["Frame"] = 48;
["GamePassService"] = 19;
["Glue"] = 34;
["GuiButton"] = 52;
["GuiMain"] = 47;
["GuiService"] = 47;
["Handles"] = 53;
["HapticService"] = 84;
["Hat"] = 45;
["HingeConstraint"] = 89;
["Hint"] = 33;
["HopperBin"] = 22;
["HttpService"] = 76;
["Humanoid"] = 9;
["ImageButton"] = 52;
["ImageLabel"] = 49;
["InsertService"] = 72;
["IntConstrainedValue"] = 4;
["IntValue"] = 4;
["JointInstance"] = 34;
["JointsService"] = 34;
["Keyframe"] = 60;
["KeyframeSequence"] = 60;
["KeyframeSequenceProvider"] = 60;
["Lighting"] = 13;
["LineHandleAdornment"] = 54;
["LocalScript"] = 18;
["LogService"] = 87;
["MarketplaceService"] = 46;
["Message"] = 33;
["Model"] = 2;
["ModuleScript"] = 71;
["Motor"] = 34;
["Motor6D"] = 34;
["MoveToConstraint"] = 89;
["NegateOperation"] = 78;
["NetworkClient"] = 16;
["NetworkReplicator"] = 29;
["NetworkServer"] = 15;
["NumberValue"] = 4;
["ObjectValue"] = 4;
["Pants"] = 44;
["ParallelRampPart"] = 1;
["Part"] = 1;
["ParticleEmitter"] = 69;
["PartPairLasso"] = 57;
["PathfindingService"] = 37;
["Platform"] = 35;
["Player"] = 12;
["PlayerGui"] = 46;
["Players"] = 21;
["PlayerScripts"] = 82;
["PointLight"] = 13;
["PointsService"] = 83;
["Pose"] = 60;
["PrismaticConstraint"] = 89;
["PrismPart"] = 1;
["PyramidPart"] = 1;
["RayValue"] = 4;
["ReflectionMetadata"] = 86;
["ReflectionMetadataCallbacks"] = 86;
["ReflectionMetadataClass"] = 86;
["ReflectionMetadataClasses"] = 86;
["ReflectionMetadataEnum"] = 86;
["ReflectionMetadataEnumItem"] = 86;
["ReflectionMetadataEnums"] = 86;
["ReflectionMetadataEvents"] = 86;
["ReflectionMetadataFunctions"] = 86;
["ReflectionMetadataMember"] = 86;
["ReflectionMetadataProperties"] = 86;
["ReflectionMetadataYieldFunctions"] = 86;
["RemoteEvent"] = 80;
["RemoteFunction"] = 79;
["ReplicatedFirst"] = 72;
["ReplicatedStorage"] = 72;
["RightAngleRampPart"] = 1;
["RocketPropulsion"] = 14;
["RodConstraint"] = 89;
["RopeConstraint"] = 89;
["Rotate"] = 34;
["RotateP"] = 34;
["RotateV"] = 34;
["RunService"] = 66;
["ScreenGui"] = 47;
["Script"] = 6;
["ScrollingFrame"] = 48;
["Seat"] = 35;
["Selection"] = 55;
["SelectionBox"] = 54;
["SelectionPartLasso"] = 57;
["SelectionPointLasso"] = 57;
["SelectionSphere"] = 54;
["ServerScriptService"] = 0;
["ServerStorage"] = 74;
["Shirt"] = 43;
["ShirtGraphic"] = 40;
["SkateboardPlatform"] = 35;
["Sky"] = 28;
["SlidingBallConstraint"] = 89;
["Smoke"] = 59;
["Snap"] = 34;
["Sound"] = 11;
["SoundService"] = 31;
["Sparkles"] = 42;
["SpawnLocation"] = 25;
["SpecialMesh"] = 8;
["SphereHandleAdornment"] = 54;
["SpotLight"] = 13;
["SpringConstraint"] = 89;
["StarterCharacterScripts"] = 82;
["StarterGear"] = 20;
["StarterGui"] = 46;
["StarterPack"] = 20;
["StarterPlayer"] = 88;
["StarterPlayerScripts"] = 82;
["Status"] = 2;
["StringValue"] = 4;
["SunRaysEffect"] = 90;
["SurfaceGui"] = 64;
["SurfaceLight"] = 13;
["SurfaceSelection"] = 55;
["Team"] = 24;
["Teams"] = 23;
["TeleportService"] = 81;
["Terrain"] = 65;
["TerrainRegion"] = 65;
["TestService"] = 68;
["TextBox"] = 51;
["TextButton"] = 51;
["TextLabel"] = 50;
["Texture"] = 10;
["TextureTrail"] = 4;
["Tool"] = 17;
["TouchTransmitter"] = 37;
["TrussPart"] = 1;
["UnionOperation"] = 77;
["UserInputService"] = 84;
["Vector3Value"] = 4;
["VehicleSeat"] = 35;
["VelocityMotor"] = 34;
["WedgePart"] = 1;
["Weld"] = 34;