historical/MixaholicREVIZIONAdmin.git/FE-EXPLORER
2024-01-16 11:20:27 -06:00

284 lines
9 KiB
Text

if game.CoreGui:findFirstChild("Explorer") then
game.CoreGui:findFirstChild("Explorer"):remove();
end
local TextProperties = {"BorderSizePixel", "BackgroundTransparency", "Gravity", "ClassName", "Name", "Value", "Text", "Reflectance", "Transparency", "Heat", "TeamName", "WalkSpeed", "Health", "MaxHealth", "Size", "Position", "AccountAge", "RobloxLocked", "TeamColor", "userId", "Brightness", "Ambient", "TimeOfDay", "FieldOfView", "CameraType", "LinkedSource"}
local BoolProperties = {"Anchored", "CanCollide", "Disabled", "Jump", "Sit", "Visible", "Enabled", "Locked", "FilteringEnabled", "StreamingEnabled", "GlobalShadows"}
local BrickColorProperties = {"BrickColor", "BackgroundColor3", "BorderColor3", "Color", "TeamColor", "Texture", "Value"}
local ScreenGui = Instance.new("ScreenGui", game.CoreGui)
ScreenGui.Name = 'Explorer'
local Button = Instance.new("TextButton")
Button.Parent = ScreenGui
Button.Size = UDim2.new(0,100,0,20)
Button.Position = UDim2.new(0,30,0,440)
Button.Text = 'Open Explorer'
Button.BackgroundTransparency = 0.3
Button.TextColor3 = Color3.new(255/255,255/255,255/255)
Button.BackgroundColor3 = Color3.new(85/255,170/255,255/255)
Button.Font = Enum.Font.SciFi
Button.FontSize = Enum.FontSize.Size14;
Button.BorderSizePixel = 0
local Cloned
local Deleted
local DeleteParent
local Player
local Search
local ScriptSearch
local Gui
local Cloned = nil
local Deleted = nil
local DeleteParent = nil
local Current = 0
local CurrentOption = 0
function Clear()
if Gui then
Gui:Remove()
end
Current = 0
CurrentOption = 0
end
function AddButton(N, Function, Color, Copy)
if not N then
error("RenderButton - No Name Specified")
end
if not Function then
error("RenderButton - No Function Specified")
end
if not Color then
Color = Color3.new(1, 1, 1)
end
if Copy == nil then
Copy = true
end
P = Instance.new("TextButton")
if Copy then
P.Size = UDim2.new(0, 110, 0, 20)
else
P.Size = UDim2.new(0, 130, 0, 20)
end
P.Text = N.Name
P.Name = N.Name
P.Parent = Gui
P.BackgroundColor3 = Color3.new(85/255,170/255,255/255)
P.BorderColor3 = Color3.new(85/255,170/255,255/255)
P.BorderSizePixel = 0
P.TextColor3 = Color3.new(1,1,1)
P.Font = Enum.Font.SciFi
P.FontSize = Enum.FontSize.Size14;
P.BackgroundTransparency = 0.5
P.Position = UDim2.new(0, ((math.modf(Current/30))*150)+300, 0, 50+(20*((Current%30)-1)))
P.MouseButton1Click:connect(function()
Function(P)
end)
local D = Instance.new("TextButton")
D.Size = UDim2.new(0, 20, 0, 20)
D.Text = "X"
D.Name = N.Name
D.Parent = Gui
D.BackgroundColor3 = Color3.new(1,0,0)
D.BorderColor3 = Color3.new(1,0,0)
D.BorderSizePixel = 0
D.TextColor3 = Color3.new(1,1,1)
D.Font = Enum.Font.SciFi
D.FontSize = Enum.FontSize.Size14;
D.BackgroundTransparency = 0.5
D.Position = UDim2.new(0, ((math.modf(Current/30))*150)+300+130, 0, 50+(20*((Current%30)-1)))
D.MouseButton1Click:connect(function()
Deleted = N
DeleteParent = N.Parent
N.Parent = nil
Clear()
Search(DeleteParent)
end)
if Copy then
local C = Instance.new("TextButton")
C.Size = UDim2.new(0, 20, 0, 20)
C.Text = "C"
C.Name = N.Name
C.Parent = Gui
C.BackgroundColor3 = Color3.new(85/255,170/255,255/255)
C.BorderColor3 = Color3.new(85/255,170/255,255/255)
C.BorderSizePixel = 0
C.TextColor3 = Color3.new(1,1,1)
C.Font = Enum.Font.SciFi
C.FontSize = Enum.FontSize.Size14;
C.BackgroundTransparency = 0.5
C.Position = UDim2.new(0, ((math.modf(Current/30))*150)+300+110, 0, 50+(20*((Current%30)-1)))
C.MouseButton1Click:connect(function()
Cloned = N
Clear()
Search(N.Parent)
end)
end
Current = Current + 1
return P
end
function AddOption(N, Function, Color, Text)
Color = nil;
if not N then
N = "No Name Specified";
end
if Text == nil then
Text = false
end
if Text then
P = Instance.new("TextBox")
else
P = Instance.new("TextButton")
end
P.Text = N
P.Name = N
P.Parent = Gui
P.BackgroundColor3 = Color3.new(85/255,170/255,255/255)
P.BorderColor3 = Color3.new(85/255,170/255,255/255)
P.TextColor3 = Color3.new(1,1,1)
P.BorderSizePixel = 0
P.Font = Enum.Font.SciFi
P.FontSize = Enum.FontSize.Size14;
P.BackgroundTransparency = 0.5
P.Size = UDim2.new(0, 150, 0, 20)
P.Position = UDim2.new(0, ((math.modf(CurrentOption/30))*150)+150, 0, 50+(20*((CurrentOption%30)-1)))
if not Text and Function then
P.MouseButton1Click:connect(function() Function(P) end)
end
CurrentOption = CurrentOption + 1
return P
end
function AddTextOption(Obj, Prop)
local Ob = Obj
local Pro = Prop
if type(Ob[Pro]) == "number" or type(Ob[Pro]) == "string" then
CurrentOption = CurrentOption + 1
local T = AddOption(Ob[Pro], nil, Color3.new(0.1, 0.4, 0.1), true)
CurrentOption = CurrentOption - 2
local O = AddOption("Change "..Pro..":", function() Ob[Pro] = T.Text end, Color3.new(0.1, 0.8, 0.1), false)
CurrentOption = CurrentOption + 1
end
end
function AddBrickColorOption(Obj, Prop)
local Ob = Obj
local Pro = Prop
if BrickColor.new(tostring(Ob[Pro])) == Ob[Pro] then
CurrentOption = CurrentOption + 1
local T = AddOption(tostring(Ob[Pro]), nil, Color3.new(0.1, 0.4, 0.1), true)
CurrentOption = CurrentOption - 2
local O = AddOption("Change "..Pro..":", function() Ob[Pro] = BrickColor.new(T.Text) end, Color3.new(0.1, 0.8, 0.1), false)
CurrentOption = CurrentOption + 1
end
end
function AddBoolOption(Obj, Prop)
local Ob = Obj
local Pro = Prop
if type(Ob[Pro]) == "boolean" then
local O = AddOption(Pro..": "..tostring(Ob[Pro]), nil, Color3.new(0.1, 0.8, 0.1), false)
O.MouseButton1Click:connect(function()
if Ob[Pro] then
Ob[Pro] = false
O.Text = Pro..": false"
else
Ob[Pro] = true
O.Text = Pro..": true"
end
end)
end
end
function TestProperty(Obj, Property)
Success = pcall(function()
if Obj[Property] then
return
end
end)
return Success
end
function LoadOptions(Object)
for Num, Prop in pairs(TextProperties) do
if TestProperty(Object, Prop) then
AddTextOption(Object, Prop)
end
end
for Num, Prop in pairs(BoolProperties) do
if TestProperty(Object, Prop) then
AddBoolOption(Object, Prop)
end
end
for Num, Prop in pairs(BrickColorProperties) do
if TestProperty(Object, Prop) then
AddBrickColorOption(Object, Prop)
end
end
end
function Search(Object)
Gui = Instance.new("ScreenGui")
Gui.Parent = game.CoreGui
Gui.Name = "Explorer"
if Object ~= game then
AddOption("Back", function()
Clear();
Search(Object.Parent)
end, Color3.new(0.5, 1, 1), false)
end
AddOption("Reload", function() Clear(); Search(Object); end, Color3.new(0.2, 1, 0.2), false)
if Cloned then
AddOption("Paste", function() Cloned:Clone().Parent = Object; Clear(); Search(Object); end, Color3.new(0.5, 1, 1), false)
end
if Deleted then
AddOption("Undo", function() Deleted.Parent = DeleteParent; Deleted = nil; DeletedParent = nil; Clear(); Search(Object); end, Color3.new(1, 0.6, 0.1), false)
end
if Object:IsA("Player") then
AddOption("Kill Player", function() if Object.Character:FindFirstChild('Humanoid') then Object.Character.Humanoid.Health = 0; end end)
AddOption("Goto Character", function() Clear(); if Object.Character then Search(Object.Character); end end, Color3.new(1, 1, 1), false)
end
if Object:IsA("Terrain") then
AddOption("Clear", function() Object:Clear(); end, Color3.new(1, 1, 1), false)
end
LoadOptions(Object)
AddOption("Close", Clear, Color3.new(1, 0.2, 0), false)
if not Object:IsA("Workspace") or not Object:IsA("Player") then
for Num, Obj in pairs(Object:GetChildren()) do
if true then
if Obj:IsA("LocalScript") then
AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(1, 0, 0), true)
elseif Obj:IsA("Script") or Obj:IsA("StarterScript") or Obj:IsA("CoreScript") then
AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(0.5, 0.5, 0.8), true)
elseif Obj.Parent == game then
AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(1, 1, 1), false)
else
AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(1, 1, 1), true)
end
end
end
end
local function MoveUp(Place, Amount)
for i,v in pairs(Place:GetChildren()) do
if v:IsA("TextLabel") or v:IsA("TextBox") then
v.Position = v.Position + UDim2.new(0,0,0,-Amount)
end
end
end
local function MoveDown(Place, Amount)
for i,v in pairs(Place:GetChildren()) do
if v:IsA("TextLabel") or v:IsA("TextBox") then
v.Position = v.Position + UDim2.new(0,0,0,Amount)
end
end
end
i=0;
end
Button.MouseButton1Click:connect(function()
Clear()
Search(game)
end)