Untitled diff

作成日 差分は期限切れになりません
944 削除
969
845 追加
909
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
end
end
end)

loading = "Settings"


local settings = {
local IntroFrame = Gui:WaitForChild("IntroFrame")
["Highlight Selected"] = false,
["Click To Select"] = false,
}


local spritesheet = "https://www.roblox.com/asset/id?=483448923"
local SideMenu = Gui:WaitForChild("SideMenu")
local OpenToggleButton = Gui:WaitForChild("Toggle")
local CloseToggleButton = SideMenu:WaitForChild("Toggle")
local OpenScriptEditorButton = SideMenu:WaitForChild("OpenScriptEditor")


loading = "Properties"
local ScriptEditor = Gui:WaitForChild("ScriptEditor")


local proplist = http:JSONDecode(game:HttpGet("https://anaminus.github.io/rbx/json/api/latest.json", true, "application/json"))
local SlideOut = SideMenu:WaitForChild("SlideOut")
local SlideFrame = SlideOut:WaitForChild("SlideFrame")
local Slant = SideMenu:WaitForChild("Slant")


loading = "Icons"
local ExplorerButton = SlideFrame:WaitForChild("Explorer")
local SettingsButton = SlideFrame:WaitForChild("Settings")


local sprites = {
local SelectionBox = Instance.new("SelectionBox")
["nil"] = UDim2.new(0, 3, 0, 3),
SelectionBox.Parent = Gui
["BasePart"] = UDim2.new(0, 21, 0, 3),
["Part"] = UDim2.new(0, 21, 0, 3),
["CornerWedgePart"] = UDim2.new(0, 21, 0, 3),
["TrussPart"] = UDim2.new(0, 21, 0, 3),
["WedgePart"] = UDim2.new(0, 21, 0, 3),
["Model"] = UDim2.new(0, 39, 0, 3),
["OtherValues"] = UDim2.new(0 ,51, 0, 3),
["BoolValue"] = UDim2.new(0, 75, 0, 3),
["BrickColorValue"] = UDim2.new(0, 75, 0, 3),
["CFrameValue"] = UDim2.new(0, 75, 0, 3),
["Color3Value"] = UDim2.new(0, 75, 0, 3),
["DoubleConstrainedValue"] = UDim2.new(0, 75, 0, 3),
["IntConstrainedValue"] = UDim2.new(0, 75, 0, 3),
["IntValue"] = UDim2.new(0, 75, 0, 3),
["NumberValue"] = UDim2.new(0, 75, 0, 3),
["ObjectValue"] = UDim2.new(0, 75, 0, 3),
["RayValue"] = UDim2.new(0, 75, 0, 3),
["StringValue"] = UDim2.new(0, 75, 0, 3),
["Vector3Value"] = UDim2.new(0, 75, 0, 3),
["Camera"] = UDim2.new(0, 93, 0, 3),
["Script"] = UDim2.new(0, 111, 0, 3),
["Decal"] = UDim2.new(0, 129, 0, 3),
["SpecialMesh"] = UDim2.new(0, 147, 0, 3),
["BlockMesh"] = UDim2.new(0, 147, 0, 3),
["CylinderMesh"] = UDim2.new(0, 147, 0, 3),
["MeshContentProvider"] = UDim2.new(0, 147, 0, 3),
["Humanoid"] = UDim2.new(0, 165, 0, 3),
["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),
local ExplorerPanel = Gui:WaitForChild("ExplorerPanel")
["Lasso"] = UDim2.new(0, 21, 0, 75),
local PropertiesFrame = Gui:WaitForChild("PropertiesFrame")
["GameSettings"] = UDim2.new(0, 39, 0, 75),
local SaveMapWindow = Gui:WaitForChild("SaveMapWindow")
["Smoke"] = UDim2.new(0, 57, 0, 75),
local RemoteDebugWindow = Gui:WaitForChild("RemoteDebugWindow")
["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),
local SettingsPanel = Gui:WaitForChild("SettingsPanel")
["ModuleScript"] = UDim2.new(0, 21, 0, 93),
local SettingsListener = SettingsPanel:WaitForChild("GetSetting")
["ReplicatedFirst"] = UDim2.new(0, 39, 0, 93),
local SettingTemplate = SettingsPanel:WaitForChild("SettingTemplate")
["ReplicatedStorage"] = UDim2.new(0, 39, 0, 93),
local SettingList = SettingsPanel:WaitForChild("SettingList")
["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),
local SaveMapCopyList = SaveMapWindow:WaitForChild("CopyList")
["GamepadService"] = UDim2.new(0, 3, 0, 111),
local SaveMapSettingFrame = SaveMapWindow:WaitForChild("MapSettings")
["Instance"] = UDim2.new(0, 21, 0, 111),
local SaveMapName = SaveMapWindow:WaitForChild("FileName")
["Pages"] = UDim2.new(0, 39, 0, 111),
local SaveMapButton = SaveMapWindow:WaitForChild("Save")
["Geometry"] = UDim2.new(0, 39, 0, 111),
local SaveMapCopyTemplate = SaveMapWindow:WaitForChild("Entry")
["LogService"] = UDim2.new(0, 57, 0, 111),
local SaveMapSettings = {
["Stats"] = UDim2.new(0, 57, 0, 111),
CopyWhat = {
["StarterPlayer"] = UDim2.new(0, 75, 0, 111),
Workspace = true,
["BallSocketConstraint"] = UDim2.new(0, 93, 0, 111),
Lighting = true,
["HingeConstraint"] = UDim2.new(0, 93, 0, 111),
ReplicatedStorage = true,
["PrismaticConstraint"] = UDim2.new(0, 93, 0, 111),
ReplicatedFirst = true,
["RodConstraint"] = UDim2.new(0, 93, 0, 111),
StarterPack = true,
["RopeConstraint"] = UDim2.new(0, 93, 0, 111),
StarterGui = true,
["SpringConstraint"] = UDim2.new(0, 93, 0, 111),
StarterPlayer = true
["PhysicsService"] = UDim2.new(0, 93, 0, 111),
},
["Effect"] = UDim2.new(0, 111, 0, 111),
SaveScripts = true,
["CoreScript"] = UDim2.new(0, 129, 0, 111),
SaveTerrain = true,
["Attachment"] = UDim2.new(0, 147, 0, 111),
LightingProperties = true,
["Plugin"] = UDim2.new(0, 147, 0, 111),
CameraInstances = true
}
}


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

local GetSelection = ExplorerPanel:WaitForChild("GetSelection")
mouse.Button1Down:connect(function()
local SetSelection = ExplorerPanel:WaitForChild("SetSelection")
dragging = true
optioned = nil
gui.Panel.Holder.Options.Visible = false
if settings["Click To Select"] then
if mouse.Target then
if objects[mouse.Target] then
local obj = mouse.Target
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)


mouse.Button1Up:connect(function()
local Player = game:GetService("Players").LocalPlayer
dragging = false
local Mouse = Player:GetMouse()
mousecounter = 0
entered, direct = nil, nil
dragged = false
gui.Panel.Holder.Dragging:ClearAllChildren()
end)


local arrows = {
local CurrentWindow = "Nothing c:"
["Closed"] = UDim2.new(0, 201, 0, 201),
local Windows = {
["Open"] = UDim2.new(0, 219, 0, 201),
Explorer = {
["ClosedHigh"] = UDim2.new(0, 201, 0, 219),
ExplorerPanel,
["OpenHigh"] = UDim2.new(0, 219, 0, 219),
PropertiesFrame
},
Settings = {SettingsPanel},
SaveMap = {SaveMapWindow},
Remotes = {RemoteDebugWindow}
}
}


loading = "functions"
function switchWindows(wName,over)
if CurrentWindow == wName and not over then return end

function setSprite(obj)
local count = 0
for i,v in pairs(sprites) do
if obj.ClassName == i or obj.Name == i then
return v
for i,v in pairs(Windows) do
count = 0
if i ~= wName then
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
end
end
end
end
return nil
count = 0
end

function checkExistence(obj)
local success = pcall(function()
if obj then
return
end
end)
return success
if Windows[wName] then
end
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

function getOwner(instance)
for _,v in pairs(panel:GetChildren()) do
if instance:IsDescendantOf(v) then
return v
end
end
return nil
end

function sizeProps()
properties.CanvasSize = UDim2.new(0, 0, 0, 20*#properties:GetChildren())
end

function findProp(list, prop)
for _,v in pairs(list) do
if string.lower(v[1]) == string.lower(prop) then
return true
end
end
end

return false
if wName ~= "Nothing c:" then
end
CurrentWindow = wName

for i,v in pairs(SlideFrame:GetChildren()) do
function checkProp(obj, prop)
v.BackgroundTransparency = 1
local success = pcall(function()
v.Icon.ImageColor3 = Color3.new(70/255, 70/255, 70/255)
if obj[prop] then
return
end
end)
return success
end

function getProperties(obj)
local list = {}
for _,v in pairs(proplist) do
if v.type == "Property" and not findProp(list, v.Name) and checkProp(obj, v.Name) then
table.insert(list, {v.Name, v.ValueType})
end
end
end
if SlideFrame:FindFirstChild(wName) then
SlideFrame[wName].BackgroundTransparency = 0.5
return list
SlideFrame[wName].Icon.ImageColor3 = Color3.new(0,0,0)
end

loading = "Types"

local types = {
Vector3 = "TextBox",
string = "TextBox",
bool = "TextButton",
int = "TextBox",
Object = "TextLabel",
CoordinateFrame = "TextBox",
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)
local props = getProperties(obj)
if objects[obj].Selected then
for _,v in pairs(props) do
if properties:FindFirstChild(obj.Name..v[1]) then
properties[obj.Name..v[1]].Value.Text = tostring(obj[v[1]])
end
objects[obj].Button.Parent = objects[obj.Parent].Button.Children
if objects[obj.Parent].Button.Children.Visible then
newLayer(obj.Parent)
end
if v[1] == "Name" then
objects[obj].Button.Name = obj.Name
objects[obj].Button.Text = " "..obj.Name
end
end
end
end
end
end
end


function createProperties()
function toggleDex(on)
local preprop = nil
if on then
properties:ClearAllChildren()
SideMenu:TweenPosition(UDim2.new(1, -330, 0, 0), "Out", "Quad", 0.5, true)
OpenToggleButton:TweenPosition(UDim2.new(1,0,0,0), "Out", "Quad", 0.5, true)
for _,v in pairs(objects) do
switchWindows(CurrentWindow,true)
if v.Selected then
local props = getProperties(v.Owner)
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
prop.Position = preprop.Position+UDim2.new(0, 0, 0, 20)
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)
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
end
end

preprop = prop
local Settings = {
ClickSelect = false,
local type = nil
SelBox = false,
local values = nil
ClearProps = false,
SelectUngrouped = true,
SaveInstanceScripts = true
}

for i,c in pairs(types) do
function ReturnSetting(set)
if i == q[2] then
if set == "ClearProps" then
type = c
return Settings.ClearProps
values = i
elseif set == "SelectUngrouped" then
break
return Settings.SelectUngrouped
else
type = "TextLabel"
end
end
end
end

local value = nil
OpenToggleButton.MouseButton1Up:connect(function()
toggleDex(true)
end)

if type == "TextButton" then
OpenScriptEditorButton.MouseButton1Up:connect(function()
value = Instance.new("TextButton")
if OpenScriptEditorButton.Active then
if values == "bool" then
ScriptEditor.Visible = true
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)
end)

end
CloseToggleButton.MouseButton1Up:connect(function()
if CloseToggleButton.Active then
elseif type == "TextBox" then
toggleDex(false)
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
end)
end)

else
for i,v in pairs(SlideFrame:GetChildren()) do
value = Instance.new("TextLabel")
v.MouseButton1Click:connect(function()
v.TextColor = Color3.fromRGB(200, 200, 200)
switchWindows(v.Name)
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)
end)
value.Parent = prop
prop.Parent = properties
v.MouseEnter:connect(function()v.BackgroundTransparency = 0.5 end)
end
v.MouseLeave:connect(function()if CurrentWindow~=v.Name then v.BackgroundTransparency = 1 end end)
end
end
end

sizeProps()
end


function checkVisible(button)
function createSetting(name,interName,defaultOn)
local owner = getOwner(button)
local newSetting = SettingTemplate:Clone()
local checked = true
newSetting.Position = UDim2.new(0,0,0,#SettingList:GetChildren() * 60)
newSetting.SName.Text = name
if owner then
local function toggle(on)
for _,v in pairs(owner:GetDescendants()) do
if on then
if v.Name == "Children" then
newSetting.Change.Bar:TweenPosition(UDim2.new(0,32,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
if button:IsDescendantOf(v) then
newSetting.Change.OnBar:TweenSize(UDim2.new(0,34,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
if not v.Visible then
newSetting.Status.Text = "On"
checked = false
Settings[interName] = true
break
else
end
newSetting.Change.Bar:TweenPosition(UDim2.new(0,-2,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
end
newSetting.Change.OnBar:TweenSize(UDim2.new(0,0,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
end
newSetting.Status.Text = "Off"
Settings[interName] = false
end
end
end
end
return checked
newSetting.Change.MouseButton1Click:connect(function()
end
toggle(not Settings[interName])
end)

function parentCheck(button, instance)
newSetting.Visible = true
for _,v in pairs(button:GetChildren()) do
newSetting.Parent = SettingList
if instance:IsDescendantOf(v) then
return true
if defaultOn then
toggle(true)
end
end
end
end

return false
createSetting("Click part to select","ClickSelect",false)
end
createSetting("Selection Box","SelBox",false)
createSetting("Clear property value on focus","ClearProps",false)
createSetting("Select ungrouped models","SelectUngrouped",true)
createSetting("SaveInstance decompiles scripts","SaveInstanceScripts",true)


function positionButtons()
local function getSelection()
local descendants = panel:GetDescendants()
local t = GetSelection:Invoke()
if t and #t > 0 then
for _,c in pairs(objects) do
return t[1]
c.Button.Position = c.OrigPos
else
end
return nil
for _,v in pairs(panel:GetChildren()) do
if v:IsA("TextButton") then
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
end

for _,v in pairs(descendants) do
Mouse.Button1Down:connect(function()
if v:IsA("TextButton") then
if CurrentWindow == "Explorer" and Settings.ClickSelect then
if v:FindFirstChild("Children") then
local target = Mouse.Target
if v.Children.Visible and v.Parent ~= panel then
if target then
local owner = getOwner(v)
SetSelection:Invoke({target})
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)

SelectionChanged.Event:connect(function()
if Settings.SelBox then
local success,err = pcall(function()
local selection = getSelection()
SelectionBox.Adornee = selection
end)
if err then
SelectionBox.Adornee = nil
end
end
end
end
end
end)


function highlightSelected()
SettingsListener.OnInvoke = ReturnSetting
for _,v in pairs(objects) do
if v.Selected then
if settings["Highlight Selected"] and v.Owner:IsA("BasePart") or settings["Highlight Selected"] and v.Owner:IsA("Model") then
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
-- Map Copier

function createMapSetting(obj,interName,defaultOn)
local function toggle(on)
if on then
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
else
if v.Owner:FindFirstChild("SelectionBox") then
obj.Change.Bar:TweenPosition(UDim2.new(0,-2,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
v.Owner.SelectionBox:Destroy()
obj.Change.OnBar:TweenSize(UDim2.new(0,0,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
end
obj.Status.Text = "Off"
SaveMapSettings[interName] = false
v.Button.BackgroundTransparency = 1
end
end
end
end
createProperties()
obj.Change.MouseButton1Click:connect(function()
end
toggle(not SaveMapSettings[interName])
end)

function sizePanel()
obj.Visible = true
local pre = 0
obj.Parent = SaveMapSettingFrame
for _,v in pairs(panel:GetDescendants()) do
if defaultOn then
local owner = getOwner(v)
toggle(true)
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
end
end
elseif v:IsA("TextButton") and v:FindFirstChild("Children") then

if owner then
function createCopyWhatSetting(serv)
if owner.Children.Visible and checkVisible(v) then
if SaveMapSettings.CopyWhat[serv] then
pre = pre+1
local newSetting = SaveMapCopyTemplate:Clone()
end
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
else
pre = pre+1
newSetting.Change.enabled.Visible = false
SaveMapSettings.CopyWhat[serv] = false
end
end
end
end
end
panel.CanvasSize = UDim2.new(0, 0, 0, 20*pre)
newSetting.Change.MouseButton1Click:connect(function()
end
toggle(not SaveMapSettings.CopyWhat[serv])

function newLayer(obj)
for _,v in pairs(obj:GetChildren()) do
if not objects[v] then
pcall(function()
createMainButton(v)
checkParents(v)
end)
end)
newSetting.Visible = true
newSetting.Parent = SaveMapCopyList
end
end
end
end

objects[obj].Button.Children.Visible = true
createMapSetting(SaveMapSettingFrame.Scripts,"SaveScripts",true)
createMapSetting(SaveMapSettingFrame.Terrain,"SaveTerrain",true)
createMapSetting(SaveMapSettingFrame.Lighting,"LightingProperties",true)
createMapSetting(SaveMapSettingFrame.CameraInstances,"CameraInstances",true)

local prev = nil
createCopyWhatSetting("Workspace")
local adding = 0
createCopyWhatSetting("Lighting")
createCopyWhatSetting("ReplicatedStorage")
createCopyWhatSetting("ReplicatedFirst")
createCopyWhatSetting("StarterPack")
createCopyWhatSetting("StarterGui")
createCopyWhatSetting("StarterPlayer")

local function createSpareButton(objs)
SaveMapName.Text = tostring(game.PlaceId).."MapCopy"
local button = objects[objs].Button
button.Position = UDim2.new(0, 20, 0, 20)

if #objs:GetChildren() > 0 then
SaveMapButton.MouseButton1Click:connect(function()
button.ArrowHolder.Visible = true
local copyWhat = {}
end

if prev then
local copyGroup = Instance.new("Model",game.ReplicatedStorage)
button.Position = prev.Position+UDim2.new(0, 0, 0, 20)
end

objects[objs].OrigPos = button.Position
local copyScripts = SaveMapSettings.SaveScripts

local sprite = setSprite(objs)
local copyTerrain = SaveMapSettings.SaveTerrain

if sprite then
local lightingProperties = SaveMapSettings.LightingProperties
button.IconHolder.Icon.Position = -sprite
end

adding = adding+1
local cameraInstances = SaveMapSettings.CameraInstances
prev = button
end

for _,v in pairs(obj:GetChildren()) do
-----------------------------------------------------------------------------------
if objects[v] then

createSpareButton(v)
for i,v in pairs(SaveMapSettings.CopyWhat) do
if v then
table.insert(copyWhat,i)
end
end
end
end

positionButtons()
local consoleFunc = printconsole or writeconsole
sizePanel()
end


function removeLayer(obj)
if consoleFunc then
objects[obj].Button.Children.Visible = false
consoleFunc("Raspberry Pi's place copier loaded.")
consoleFunc("Copying map of game "..tostring(game.PlaceId)..".")
positionButtons()
sizePanel()
end
end


game:GetService("UserInputService").InputBegan:connect(function(key)
function archivable(root)
if key.KeyCode == Enum.KeyCode.LeftControl then
for i,v in pairs(root:GetChildren()) do
ctrldown = true
if not game.Players:GetPlayerFromCharacter(v) then
shiftdown = false
v.Archivable = true
elseif key.KeyCode == Enum.KeyCode.LeftShift then
archivable(v)
shiftdown = true
ctrldown = false
end
end)

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

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

v.ChildAdded:Connect(function(obj)
function decompileS(root)
for i,v in pairs(root:GetChildren()) do
pcall(function()
pcall(function()
if objects[v] then
if v:IsA("LocalScript") then
if objects[v].Button.Children.Visible then
local isDisabled = v.Disabled
newLayer(v)
v.Disabled = true
v.Source = decompile(v)
v.Disabled = isDisabled
if v.Source == "" then
if consoleFunc then consoleFunc("LocalScript "..v.Name.." had a problem decompiling.") end
else
if consoleFunc then consoleFunc("LocalScript "..v.Name.." decompiled.") end
end
end
end
elseif v:IsA("ModuleScript") then
end)
v.Source = decompile(v)
end)
end)
end

function activateButton(button, obj)
if v.Source == "" then
button.ArrowHolder.Arrow.MouseButton1Down:connect(function()
if consoleFunc then consoleFunc("ModuleScript "..v.Name.." had a problem decompiling.") end
if objects[obj].Button.Children.Visible then
removeLayer(obj)
else
else
newLayer(obj)
if consoleFunc then consoleFunc("ModuleScript "..v.Name.." decompiled.") end
end
end
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
end)
end)
decompileS(v)
button.MouseButton2Down:connect(function()
if optioned == obj then
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
end
end)
button.MouseButton1Up:connect(function()
dragging = false

mousecounter = 0
for i,v in pairs(copyWhat) do archivable(game[v]) end

if entered and dragged then
for j,obj in pairs(copyWhat) do
for _,v in pairs(objects) do
if obj ~= "StarterPlayer" then
if v.Selected then
local newFolder = Instance.new("Folder",copyGroup)
newFolder.Name = obj
for i,v in pairs(game[obj]:GetChildren()) do
if v ~= copyGroup then
pcall(function()
pcall(function()
v.Owner.Parent = direct
v:Clone().Parent = newFolder
end)
end)
end
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
else
objects[obj].Selected = true
local newFolder = Instance.new("Model",copyGroup)
newFolder.Name = "StarterPlayer"
for _,v in pairs(objects) do
for i,v in pairs(game[obj]:GetChildren()) 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
local newObj = Instance.new("Folder",newFolder)
if checkVisible(v.Button) or v.Button.Parent == panel then
newObj.Name = v.Name
v.Selected = true
for _,c in pairs(v:GetChildren()) do
if c.Name ~= "ControlScript" and c.Name ~= "CameraScript" then
c:Clone().Parent = newObj
end
end
end
end
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
end

primary = objects[obj]
if workspace.CurrentCamera and cameraInstances then
objects[obj].Selected = not objects[obj].Selected
local cameraFolder = Instance.new("Model",copyGroup)
end
cameraFolder.Name = "CameraItems"
for i,v in pairs(workspace.CurrentCamera:GetChildren()) do v:Clone().Parent = cameraFolder end
end
end

highlightSelected()
if copyTerrain then
end)
local myTerrain = workspace.Terrain:CopyRegion(workspace.Terrain.MaxExtents)
myTerrain.Parent = copyGroup
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
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
function saveProp(obj,prop,par)
button.ArrowHolder.Arrow.Position = -arrows.Closed
local myProp = obj[prop]
end
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()
local newProp = Instance.new("Color3Value",par)
newProp.Name = prop
newProp.Value = myProp
end)
end)
end
end

local pre = nil

function createMainButton(obj)
local button = gui.Resources.Item:Clone()
button.Name = obj.Name
button.Visible = 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
end

if objects[old].Button.Children.Visible then
if lightingProperties then
newLayer(old)
local lightingProps = Instance.new("Model",copyGroup)
end
lightingProps.Name = "LightingProperties"
positionButtons()
saveProp(game.Lighting,"Ambient",lightingProps)
end
saveProp(game.Lighting,"Brightness",lightingProps)
end)
saveProp(game.Lighting,"ColorShift_Bottom",lightingProps)

saveProp(game.Lighting,"ColorShift_Top",lightingProps)
if not obj.Parent.Parent then
saveProp(game.Lighting,"GlobalShadows",lightingProps)
if pre then
saveProp(game.Lighting,"OutdoorAmbient",lightingProps)
button.Position = pre.Position+UDim2.new(0, 0, 0, 20)
saveProp(game.Lighting,"Outlines",lightingProps)
end
saveProp(game.Lighting,"GeographicLatitude",lightingProps)
saveProp(game.Lighting,"TimeOfDay",lightingProps)
pre = button
saveProp(game.Lighting,"FogColor",lightingProps)
saveProp(game.Lighting,"FogEnd",lightingProps)
if #obj:GetChildren() > 0 then
saveProp(game.Lighting,"FogStart",lightingProps)
button.ArrowHolder.Visible = true
end
end

local sprite = setSprite(obj)
if decompile and copyScripts then
decompileS(copyGroup)
if sprite then
button.IconHolder.Icon.Position = -sprite
end
button.Parent = panel
else
button.Parent = objects[obj.Parent].Button.Children
end
end

obj.Changed:connect(function()
if SaveInstance then
pcall(function()
SaveInstance(copyGroup,SaveMapName.Text..".rbxm")
if obj then
elseif saveinstance then
if objects[obj].Selected then
saveinstance(getelysianpath()..SaveMapName.Text..".rbxm",copyGroup)
updateProps(obj)
end
end
--print("Saved!")
if consoleFunc then
consoleFunc("The map has been copied.")
end
end
end)
SaveMapButton.Text = "The map has been saved"
wait(5)
SaveMapButton.Text = "Save"
end)
end)

activateButton(button, obj)
-- End Copier

objects[obj] = {Owner = obj, Button = button, Selected = false, OrigPos = button.Position}
wait()

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

switchWindows("Explorer")

wait(1)

SideMenu.Visible = true

for i = 0,1,0.1 do
IntroFrame.BackgroundTransparency = i
IntroFrame.Main.BackgroundTransparency = i
IntroFrame.Slant.ImageTransparency = i
IntroFrame.Title.TextTransparency = i
IntroFrame.Version.TextTransparency = i
IntroFrame.Creator.TextTransparency = i
wait()
end
end

sizePanel()
IntroFrame.Visible = false

SlideFrame:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
OpenScriptEditorButton:TweenPosition(UDim2.new(0,0,0,180),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
CloseToggleButton:TweenPosition(UDim2.new(0,0,0,210),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
Slant:TweenPosition(UDim2.new(0,0,0,240),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)

wait(0.5)

for i = 1,0,-0.1 do
OpenScriptEditorButton.Icon.ImageTransparency = i
CloseToggleButton.TextTransparency = i
wait()
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
rs:wait()
if checkExistence(v) then
checkParents(v)
pcall(function()
createMainButton(v)

recur(v)
OpenScriptEditorButton.Active = true
OpenScriptEditorButton.AutoButtonColor = true
end)
end)
end
spawn(function()
-- initial states
local Option = {
-- can modify object parents in the hierarchy
Modifiable = false;
-- can select objects
Selectable = true;
}

sizePanel()
-- MERELY

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
end
end

recur(game)
local GuiColor = {
end
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);
}


loading = "Instances"
----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
---- Icon map constants


createExplorer()
local MAP_ID = 483448923


loading = nil
-- Indices based on implementation of Icon function.
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 open = true
local NODE_COLLAPSED = 165
local openarrow = ts:Create(gui.Toggles.Options.Open, TweenInfo.new(0.25, Enum.EasingStyle.Sine, Enum.
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;