Johntheh4ck44's Hub V2
Key RequiredUniversal

Johntheh4ck44's Hub V2

Universal Scriptquilll457quilll457 4.4K views 32 executesUpdated Jul 5, 2022
2.5/ 5(2 votes)
1150% Positive
Lua Script•5990 lines (212222 chars)
local ScreenGui = Instance.new("ScreenGui")
local Frame = Instance.new("Frame")
local Frame_2 = Instance.new("Frame")
local UICorner = Instance.new("UICorner")
local carstrademod = Instance.new("TextButton")
local UICorner_2 = Instance.new("UICorner")
local title = Instance.new("TextLabel")
local UICorner_3 = Instance.new("UICorner")
local inf = Instance.new("TextButton")
local UICorner_4 = Instance.new("UICorner")
local SimpleSpy = Instance.new("TextButton")
local UICorner_5 = Instance.new("UICorner")
local mm2 = Instance.new("TextButton")
local UICorner_6 = Instance.new("UICorner")
local reviz = Instance.new("TextButton")
local UICorner_7 = Instance.new("UICorner")
local TextLabel = Instance.new("TextLabel")
local UICorner_8 = Instance.new("UICorner")
local UICorner_9 = Instance.new("UICorner")
local close = Instance.new("TextButton")
local UICorner_10 = Instance.new("UICorner")
local open = Instance.new("TextButton")
local UICorner_11 = Instance.new("UICorner")

--Properties:

ScreenGui.Parent = game.CoreGui
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

Frame.Parent = ScreenGui
Frame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
Frame.Position = UDim2.new(0.312871277, 0, 0.273851603, 0)
Frame.Size = UDim2.new(0, 500, 0, 339)
Frame.Active = true
Frame.Draggable = true

Frame_2.Parent = Frame
Frame_2.BackgroundColor3 = Color3.fromRGB(61, 61, 61)
Frame_2.Position = UDim2.new(0.0300000012, 0, 0.0530973449, 0)
Frame_2.Size = UDim2.new(0, 469, 0, 303)
Frame.Active = true

UICorner.Parent = Frame_2

carstrademod.Name = "carstrademod"
carstrademod.Parent = Frame_2
carstrademod.BackgroundColor3 = Color3.fromRGB(74, 74, 74)
carstrademod.Position = UDim2.new(0.0341151394, 0, 0.227722779, 0)
carstrademod.Size = UDim2.new(0, 200, 0, 50)
carstrademod.Font = Enum.Font.SourceSans
carstrademod.Text = "Cars Trading Mod"
carstrademod.TextColor3 = Color3.fromRGB(255, 255, 255)
carstrademod.TextScaled = true
carstrademod.TextSize = 14.000
carstrademod.TextWrapped = true
carstrademod.MouseButton1Click:Connect(function()
	loadstring(game:HttpGet('https://pastebin.com/raw/vhNFzwzE'))()
end)

UICorner_2.Parent = carstrademod

title.Name = "title"
title.Parent = Frame_2
title.BackgroundColor3 = Color3.fromRGB(36, 36, 36)
title.Size = UDim2.new(0, 469, 0, 50)
title.Font = Enum.Font.SourceSans
title.Text = "Johnthehack44's Cheat V2"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextScaled = true
title.TextSize = 14.000
title.TextWrapped = true

UICorner_3.Parent = title

inf.Name = "inf"
inf.Parent = Frame_2
inf.BackgroundColor3 = Color3.fromRGB(74, 74, 74)
inf.Position = UDim2.new(0.518123627, 0, 0.227722779, 0)
inf.Size = UDim2.new(0, 200, 0, 50)
inf.Font = Enum.Font.SourceSans
inf.Text = "Infinite Yield"
inf.TextColor3 = Color3.fromRGB(255, 255, 255)
inf.TextScaled = true
inf.TextSize = 14.000
inf.TextWrapped = true
inf.MouseButton1Click:Connect(function()
	loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))()
end)

UICorner_4.Parent = inf

SimpleSpy.Name = "SimpleSpy"
SimpleSpy.Parent = Frame_2
SimpleSpy.BackgroundColor3 = Color3.fromRGB(74, 74, 74)
SimpleSpy.Position = UDim2.new(0.518123686, 0, 0.462046176, 0)
SimpleSpy.Size = UDim2.new(0, 200, 0, 50)
SimpleSpy.Font = Enum.Font.SourceSans
SimpleSpy.Text = "Simple Spy"
SimpleSpy.TextColor3 = Color3.fromRGB(255, 255, 255)
SimpleSpy.TextScaled = true
SimpleSpy.TextSize = 14.000
SimpleSpy.TextWrapped = true
SimpleSpy.MouseButton1Click:Connect(function()
	--[[
    SimpleSpy v2.2 SOURCE

    SimpleSpy is a lightweight penetration testing tool that logs remote calls.

    Credits:
        exx - basically everything
        Frosty - GUI to Lua
]]

	-- shuts down the previous instance of SimpleSpy
	if _G.SimpleSpyExecuted and type(_G.SimpleSpyShutdown) == "function" then
		print(pcall(_G.SimpleSpyShutdown))
	end

	local Players = game:GetService("Players")
	local CoreGui = game:GetService("CoreGui")
	local Highlight =
		loadstring(
			game:HttpGet("https://github.com/exxtremestuffs/SimpleSpySource/raw/master/highlight.lua")
		)()

	---- GENERATED (kinda sorta mostly) BY GUI to LUA ----

	-- Instances:

	local SimpleSpy2 = Instance.new("ScreenGui")
	local Background = Instance.new("Frame")
	local LeftPanel = Instance.new("Frame")
	local LogList = Instance.new("ScrollingFrame")
	local UIListLayout = Instance.new("UIListLayout")
	local RemoteTemplate = Instance.new("Frame")
	local ColorBar = Instance.new("Frame")
	local Text = Instance.new("TextLabel")
	local Button = Instance.new("TextButton")
	local RightPanel = Instance.new("Frame")
	local CodeBox = Instance.new("Frame")
	local ScrollingFrame = Instance.new("ScrollingFrame")
	local UIGridLayout = Instance.new("UIGridLayout")
	local FunctionTemplate = Instance.new("Frame")
	local ColorBar_2 = Instance.new("Frame")
	local Text_2 = Instance.new("TextLabel")
	local Button_2 = Instance.new("TextButton")
	local TopBar = Instance.new("Frame")
	local Simple = Instance.new("TextButton")
	local CloseButton = Instance.new("TextButton")
	local ImageLabel = Instance.new("ImageLabel")
	local MaximizeButton = Instance.new("TextButton")
	local ImageLabel_2 = Instance.new("ImageLabel")
	local MinimizeButton = Instance.new("TextButton")
	local ImageLabel_3 = Instance.new("ImageLabel")
	local ToolTip = Instance.new("Frame")
	local TextLabel = Instance.new("TextLabel")

	--Properties:

	SimpleSpy2.Name = "SimpleSpy2"
	SimpleSpy2.ResetOnSpawn = false

	Background.Name = "Background"
	Background.Parent = SimpleSpy2
	Background.BackgroundColor3 = Color3.new(1, 1, 1)
	Background.BackgroundTransparency = 1
	Background.Position = UDim2.new(0, 500, 0, 200)
	Background.Size = UDim2.new(0, 450, 0, 268)

	LeftPanel.Name = "LeftPanel"
	LeftPanel.Parent = Background
	LeftPanel.BackgroundColor3 = Color3.fromRGB(53, 52, 55)
	LeftPanel.BorderSizePixel = 0
	LeftPanel.Position = UDim2.new(0, 0, 0, 19)
	LeftPanel.Size = UDim2.new(0, 131, 0, 249)

	LogList.Name = "LogList"
	LogList.Parent = LeftPanel
	LogList.Active = true
	LogList.BackgroundColor3 = Color3.new(1, 1, 1)
	LogList.BackgroundTransparency = 1
	LogList.BorderSizePixel = 0
	LogList.Position = UDim2.new(0, 0, 0, 9)
	LogList.Size = UDim2.new(0, 131, 0, 232)
	LogList.CanvasSize = UDim2.new(0, 0, 0, 0)
	LogList.ScrollBarThickness = 4

	UIListLayout.Parent = LogList
	UIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
	UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder

	RemoteTemplate.Name = "RemoteTemplate"
	RemoteTemplate.Parent = LogList
	RemoteTemplate.BackgroundColor3 = Color3.new(1, 1, 1)
	RemoteTemplate.BackgroundTransparency = 1
	RemoteTemplate.Size = UDim2.new(0, 117, 0, 27)

	ColorBar.Name = "ColorBar"
	ColorBar.Parent = RemoteTemplate
	ColorBar.BackgroundColor3 = Color3.fromRGB(255, 242, 0)
	ColorBar.BorderSizePixel = 0
	ColorBar.Position = UDim2.new(0, 0, 0, 1)
	ColorBar.Size = UDim2.new(0, 7, 0, 18)
	ColorBar.ZIndex = 2

	Text.Name = "Text"
	Text.Parent = RemoteTemplate
	Text.BackgroundColor3 = Color3.new(1, 1, 1)
	Text.BackgroundTransparency = 1
	Text.Position = UDim2.new(0, 12, 0, 1)
	Text.Size = UDim2.new(0, 105, 0, 18)
	Text.ZIndex = 2
	Text.Font = Enum.Font.SourceSans
	Text.Text = "TEXT"
	Text.TextColor3 = Color3.new(1, 1, 1)
	Text.TextSize = 14
	Text.TextXAlignment = Enum.TextXAlignment.Left
	Text.TextWrapped = true

	Button.Name = "Button"
	Button.Parent = RemoteTemplate
	Button.BackgroundColor3 = Color3.new(0, 0, 0)
	Button.BackgroundTransparency = 0.75
	Button.BorderColor3 = Color3.new(1, 1, 1)
	Button.Position = UDim2.new(0, 0, 0, 1)
	Button.Size = UDim2.new(0, 117, 0, 18)
	Button.AutoButtonColor = false
	Button.Font = Enum.Font.SourceSans
	Button.Text = ""
	Button.TextColor3 = Color3.new(0, 0, 0)
	Button.TextSize = 14

	RightPanel.Name = "RightPanel"
	RightPanel.Parent = Background
	RightPanel.BackgroundColor3 = Color3.fromRGB(37, 36, 38)
	RightPanel.BorderSizePixel = 0
	RightPanel.Position = UDim2.new(0, 131, 0, 19)
	RightPanel.Size = UDim2.new(0, 319, 0, 249)

	CodeBox.Name = "CodeBox"
	CodeBox.Parent = RightPanel
	CodeBox.BackgroundColor3 = Color3.new(0.0823529, 0.0745098, 0.0784314)
	CodeBox.BorderSizePixel = 0
	CodeBox.Size = UDim2.new(0, 319, 0, 119)

	ScrollingFrame.Parent = RightPanel
	ScrollingFrame.Active = true
	ScrollingFrame.BackgroundColor3 = Color3.new(1, 1, 1)
	ScrollingFrame.BackgroundTransparency = 1
	ScrollingFrame.Position = UDim2.new(0, 0, 0.5, 0)
	ScrollingFrame.Size = UDim2.new(1, 0, 0.5, -9)
	ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
	ScrollingFrame.ScrollBarThickness = 4

	UIGridLayout.Parent = ScrollingFrame
	UIGridLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
	UIGridLayout.SortOrder = Enum.SortOrder.LayoutOrder
	UIGridLayout.CellPadding = UDim2.new(0, 0, 0, 0)
	UIGridLayout.CellSize = UDim2.new(0, 94, 0, 27)

	FunctionTemplate.Name = "FunctionTemplate"
	FunctionTemplate.Parent = ScrollingFrame
	FunctionTemplate.BackgroundColor3 = Color3.new(1, 1, 1)
	FunctionTemplate.BackgroundTransparency = 1
	FunctionTemplate.Size = UDim2.new(0, 117, 0, 23)

	ColorBar_2.Name = "ColorBar"
	ColorBar_2.Parent = FunctionTemplate
	ColorBar_2.BackgroundColor3 = Color3.new(1, 1, 1)
	ColorBar_2.BorderSizePixel = 0
	ColorBar_2.Position = UDim2.new(0, 7, 0, 10)
	ColorBar_2.Size = UDim2.new(0, 7, 0, 18)
	ColorBar_2.ZIndex = 3

	Text_2.Name = "Text"
	Text_2.Parent = FunctionTemplate
	Text_2.BackgroundColor3 = Color3.new(1, 1, 1)
	Text_2.BackgroundTransparency = 1
	Text_2.Position = UDim2.new(0, 19, 0, 10)
	Text_2.Size = UDim2.new(0, 69, 0, 18)
	Text_2.ZIndex = 2
	Text_2.Font = Enum.Font.SourceSans
	Text_2.Text = "TEXT"
	Text_2.TextColor3 = Color3.new(1, 1, 1)
	Text_2.TextSize = 14
	Text_2.TextStrokeColor3 = Color3.new(0.145098, 0.141176, 0.14902)
	Text_2.TextXAlignment = Enum.TextXAlignment.Left
	Text_2.TextWrapped = true

	Button_2.Name = "Button"
	Button_2.Parent = FunctionTemplate
	Button_2.BackgroundColor3 = Color3.new(0, 0, 0)
	Button_2.BackgroundTransparency = 0.69999998807907
	Button_2.BorderColor3 = Color3.new(1, 1, 1)
	Button_2.Position = UDim2.new(0, 7, 0, 10)
	Button_2.Size = UDim2.new(0, 80, 0, 18)
	Button_2.AutoButtonColor = false
	Button_2.Font = Enum.Font.SourceSans
	Button_2.Text = ""
	Button_2.TextColor3 = Color3.new(0, 0, 0)
	Button_2.TextSize = 14

	TopBar.Name = "TopBar"
	TopBar.Parent = Background
	TopBar.BackgroundColor3 = Color3.fromRGB(37, 35, 38)
	TopBar.BorderSizePixel = 0
	TopBar.Size = UDim2.new(0, 450, 0, 19)

	Simple.Name = "Simple"
	Simple.Parent = TopBar
	Simple.BackgroundColor3 = Color3.new(1, 1, 1)
	Simple.AutoButtonColor = false
	Simple.BackgroundTransparency = 1
	Simple.Position = UDim2.new(0, 5, 0, 0)
	Simple.Size = UDim2.new(0, 57, 0, 18)
	Simple.Font = Enum.Font.SourceSansBold
	Simple.Text = "SimpleSpy"
	Simple.TextColor3 = Color3.new(1, 1, 1)
	Simple.TextSize = 14
	Simple.TextXAlignment = Enum.TextXAlignment.Left

	CloseButton.Name = "CloseButton"
	CloseButton.Parent = TopBar
	CloseButton.BackgroundColor3 = Color3.new(0.145098, 0.141176, 0.14902)
	CloseButton.BorderSizePixel = 0
	CloseButton.Position = UDim2.new(1, -19, 0, 0)
	CloseButton.Size = UDim2.new(0, 19, 0, 19)
	CloseButton.Font = Enum.Font.SourceSans
	CloseButton.Text = ""
	CloseButton.TextColor3 = Color3.new(0, 0, 0)
	CloseButton.TextSize = 14

	ImageLabel.Parent = CloseButton
	ImageLabel.BackgroundColor3 = Color3.new(1, 1, 1)
	ImageLabel.BackgroundTransparency = 1
	ImageLabel.Position = UDim2.new(0, 5, 0, 5)
	ImageLabel.Size = UDim2.new(0, 9, 0, 9)
	ImageLabel.Image = "http://www.roblox.com/asset/?id=5597086202"

	MaximizeButton.Name = "MaximizeButton"
	MaximizeButton.Parent = TopBar
	MaximizeButton.BackgroundColor3 = Color3.new(0.145098, 0.141176, 0.14902)
	MaximizeButton.BorderSizePixel = 0
	MaximizeButton.Position = UDim2.new(1, -38, 0, 0)
	MaximizeButton.Size = UDim2.new(0, 19, 0, 19)
	MaximizeButton.Font = Enum.Font.SourceSans
	MaximizeButton.Text = ""
	MaximizeButton.TextColor3 = Color3.new(0, 0, 0)
	MaximizeButton.TextSize = 14

	ImageLabel_2.Parent = MaximizeButton
	ImageLabel_2.BackgroundColor3 = Color3.new(1, 1, 1)
	ImageLabel_2.BackgroundTransparency = 1
	ImageLabel_2.Position = UDim2.new(0, 5, 0, 5)
	ImageLabel_2.Size = UDim2.new(0, 9, 0, 9)
	ImageLabel_2.Image = "http://www.roblox.com/asset/?id=5597108117"

	MinimizeButton.Name = "MinimizeButton"
	MinimizeButton.Parent = TopBar
	MinimizeButton.BackgroundColor3 = Color3.new(0.145098, 0.141176, 0.14902)
	MinimizeButton.BorderSizePixel = 0
	MinimizeButton.Position = UDim2.new(1, -57, 0, 0)
	MinimizeButton.Size = UDim2.new(0, 19, 0, 19)
	MinimizeButton.Font = Enum.Font.SourceSans
	MinimizeButton.Text = ""
	MinimizeButton.TextColor3 = Color3.new(0, 0, 0)
	MinimizeButton.TextSize = 14

	ImageLabel_3.Parent = MinimizeButton
	ImageLabel_3.BackgroundColor3 = Color3.new(1, 1, 1)
	ImageLabel_3.BackgroundTransparency = 1
	ImageLabel_3.Position = UDim2.new(0, 5, 0, 5)
	ImageLabel_3.Size = UDim2.new(0, 9, 0, 9)
	ImageLabel_3.Image = "http://www.roblox.com/asset/?id=5597105827"

	ToolTip.Name = "ToolTip"
	ToolTip.Parent = SimpleSpy2
	ToolTip.BackgroundColor3 = Color3.fromRGB(26, 26, 26)
	ToolTip.BackgroundTransparency = 0.1
	ToolTip.BorderColor3 = Color3.new(1, 1, 1)
	ToolTip.Size = UDim2.new(0, 200, 0, 50)
	ToolTip.ZIndex = 3
	ToolTip.Visible = false

	TextLabel.Parent = ToolTip
	TextLabel.BackgroundColor3 = Color3.new(1, 1, 1)
	TextLabel.BackgroundTransparency = 1
	TextLabel.Position = UDim2.new(0, 2, 0, 2)
	TextLabel.Size = UDim2.new(0, 196, 0, 46)
	TextLabel.ZIndex = 3
	TextLabel.Font = Enum.Font.SourceSans
	TextLabel.Text = "This is some slightly longer text."
	TextLabel.TextColor3 = Color3.new(1, 1, 1)
	TextLabel.TextSize = 14
	TextLabel.TextWrapped = true
	TextLabel.TextXAlignment = Enum.TextXAlignment.Left
	TextLabel.TextYAlignment = Enum.TextYAlignment.Top

	-------------------------------------------------------------------------------
	-- init
	local RunService = game:GetService("RunService")
	local UserInputService = game:GetService("UserInputService")
	local TweenService = game:GetService("TweenService")
	local ContentProvider = game:GetService("ContentProvider")
	local TextService = game:GetService("TextService")
	local Mouse

	local selectedColor = Color3.new(0.321569, 0.333333, 1)
	local deselectedColor = Color3.new(0.8, 0.8, 0.8)
	--- So things are descending
	local layoutOrderNum = 999999999
	--- Whether or not the gui is closing
	local mainClosing = false
	--- Whether or not the gui is closed (defaults to false)
	local closed = false
	--- Whether or not the sidebar is closing
	local sideClosing = false
	--- Whether or not the sidebar is closed (defaults to true but opens automatically on remote selection)
	local sideClosed = false
	--- Whether or not the code box is maximized (defaults to false)
	local maximized = false
	--- The event logs to be read from
	local logs = {}
	--- The event currently selected.Log (defaults to nil)
	local selected = nil
	--- The blacklist (can be a string name or the Remote Instance)
	local blacklist = {}
	--- The block list (can be a string name or the Remote Instance)
	local blocklist = {}
	--- Whether or not to add getNil function
	local getNil = false
	--- Array of remotes (and original functions) connected to
	local connectedRemotes = {}
	--- True = hookfunction, false = namecall
	local toggle = false
	local gm
	local original
	--- used to prevent recursives
	local prevTables = {}
	--- holds logs (for deletion)
	local remoteLogs = {}
	--- used for hookfunction
	local remoteEvent = Instance.new("RemoteEvent")
	--- used for hookfunction
	local remoteFunction = Instance.new("RemoteFunction")
	local originalEvent = remoteEvent.FireServer
	local originalFunction = remoteFunction.InvokeServer
	--- the maximum amount of remotes allowed in logs
	_G.SIMPLESPYCONFIG_MaxRemotes = 500
	--- how many spaces to indent
	local indent = 4
	--- used for task scheduler
	local scheduled = {}
	--- RBXScriptConnect of the task scheduler
	local schedulerconnect
	local SimpleSpy = {}
	local topstr = ""
	local bottomstr = ""
	local remotesFadeIn
	local rightFadeIn
	local codebox
	local p
	local getnilrequired = false

	-- autoblock variables
	local autoblock = false
	local history = {}
	local excluding = {}

	-- function info variables
	local funcEnabled = true

	-- remote hooking/connecting api variables
	local remoteSignals = {}
	local remoteHooks = {}

	-- original mouse icon
	local oldIcon

	-- if mouse inside gui
	local mouseInGui = false

	-- handy array of RBXScriptConnections to disconnect on shutdown
	local connections = {}

	-- whether or not SimpleSpy uses 'getcallingscript()' to get the script (default is false because detection)
	local useGetCallingScript = false

	--- used to enable/disable SimpleSpy's keyToString for remotes
	local keyToString = false

	-- determines whether return values are recorded
	local recordReturnValues = false

	-- functions

	--- Converts arguments to a string and generates code that calls the specified method with them, recommended to be used in conjunction with ValueToString (method must be a string, e.g. `game:GetService("ReplicatedStorage").Remote.remote:FireServer`)
	--- @param method string
	--- @param args any[]
	--- @return string
	function SimpleSpy:ArgsToString(method, args)
		assert(typeof(method) == "string", "string expected, got " .. typeof(method))
		assert(typeof(args) == "table", "table expected, got " .. typeof(args))
		return v2v({ args = args }) .. "\n\n" .. method .. "(unpack(args))"
	end

	--- Converts a value to variables with the specified index as the variable name (if nil/invalid then the name will be assigned automatically)
	--- @param t any[]
	--- @return string
	function SimpleSpy:TableToVars(t)
		assert(typeof(t) == "table", "table expected, got " .. typeof(t))
		return v2v(t)
	end

	--- Converts a value to a variable with the specified `variablename` (if nil/invalid then the name will be assigned automatically)
	--- @param value any
	--- @return string
	function SimpleSpy:ValueToVar(value, variablename)
		assert(variablename == nil or typeof(variablename) == "string", "string expected, got " .. typeof(variablename))
		if not variablename then
			variablename = 1
		end
		return v2v({ [variablename] = value })
	end

	--- Converts any value to a string, cannot preserve function contents
	--- @param value any
	--- @return string
	function SimpleSpy:ValueToString(value)
		return v2s(value)
	end

	--- Generates the simplespy function info
	--- @param func function
	--- @return string
	function SimpleSpy:GetFunctionInfo(func)
		assert(typeof(func) == "function", "Instance expected, got " .. typeof(func))
		warn("Function info currently unavailable due to crashing in Synapse X")
		return v2v({ functionInfo = {
			info = debug.getinfo(func),
			constants = debug.getconstants(func),
		} })
	end

	--- Gets the ScriptSignal for a specified remote being fired
	--- @param remote Instance
	function SimpleSpy:GetRemoteFiredSignal(remote)
		assert(typeof(remote) == "Instance", "Instance expected, got " .. typeof(remote))
		if not remoteSignals[remote] then
			remoteSignals[remote] = newSignal()
		end
		return remoteSignals[remote]
	end

	--- Allows for direct hooking of remotes **THIS CAN BE VERY DANGEROUS**
	--- @param remote Instance
	--- @param f function
	function SimpleSpy:HookRemote(remote, f)
		assert(typeof(remote) == "Instance", "Instance expected, got " .. typeof(remote))
		assert(typeof(f) == "function", "function expected, got " .. typeof(f))
		remoteHooks[remote] = f
	end

	--- Blocks the specified remote instance/string
	--- @param remote any
	function SimpleSpy:BlockRemote(remote)
		assert(
			typeof(remote) == "Instance" or typeof(remote) == "string",
			"Instance | string expected, got " .. typeof(remote)
		)
		blocklist[remote] = true
	end

	--- Excludes the specified remote from logs (instance/string)
	--- @param remote any
	function SimpleSpy:ExcludeRemote(remote)
		assert(
			typeof(remote) == "Instance" or typeof(remote) == "string",
			"Instance | string expected, got " .. typeof(remote)
		)
		blacklist[remote] = true
	end

	--- Creates a new ScriptSignal that can be connected to and fired
	--- @return table
	function newSignal()
		local connected = {}
		return {
			Connect = function(self, f)
				assert(connected, "Signal is closed")
				connected[tostring(f)] = f
				return {
					Connected = true,
					Disconnect = function(self)
						if not connected then
							warn("Signal is already closed")
						end
						self.Connected = false
						connected[tostring(f)] = nil
					end,
				}
			end,
			Wait = function(self)
				local thread = coroutine.running()
				local connection
				connection = self:Connect(function()
					connection:Disconnect()
					if coroutine.status(thread) == "suspended" then
						coroutine.resume(thread)
					end
				end)
				coroutine.yield()
			end,
			Fire = function(self, ...)
				for _, f in pairs(connected) do
					coroutine.wrap(f)(...)
				end
			end,
		}
	end

	--- Prevents remote spam from causing lag (clears logs after `_G.SIMPLESPYCONFIG_MaxRemotes` or 500 remotes)
	function clean()
		local max = _G.SIMPLESPYCONFIG_MaxRemotes
		if not typeof(max) == "number" and math.floor(max) ~= max then
			max = 500
		end
		if #remoteLogs > max then
			for i = 100, #remoteLogs do
				local v = remoteLogs[i]
				if typeof(v[1]) == "RBXScriptConnection" then
					v[1]:Disconnect()
				end
				if typeof(v[2]) == "Instance" then
					v[2]:Destroy()
				end
			end
			local newLogs = {}
			for i = 1, 100 do
				table.insert(newLogs, remoteLogs[i])
			end
			remoteLogs = newLogs
		end
	end

	--- Scales the ToolTip to fit containing text
	function scaleToolTip()
		local size = TextService:GetTextSize(
			TextLabel.Text,
			TextLabel.TextSize,
			TextLabel.Font,
			Vector2.new(196, math.huge)
		)
		TextLabel.Size = UDim2.new(0, size.X, 0, size.Y)
		ToolTip.Size = UDim2.new(0, size.X + 4, 0, size.Y + 4)
	end

	--- Executed when the toggle button (the SimpleSpy logo) is hovered over
	function onToggleButtonHover()
		if not toggle then
			TweenService:Create(Simple, TweenInfo.new(0.5), { TextColor3 = Color3.fromRGB(252, 51, 51) }):Play()
		else
			TweenService:Create(Simple, TweenInfo.new(0.5), { TextColor3 = Color3.fromRGB(68, 206, 91) }):Play()
		end
	end

	--- Executed when the toggle button is unhovered over
	function onToggleButtonUnhover()
		TweenService:Create(Simple, TweenInfo.new(0.5), { TextColor3 = Color3.fromRGB(255, 255, 255) }):Play()
	end

	--- Executed when the X button is hovered over
	function onXButtonHover()
		TweenService:Create(CloseButton, TweenInfo.new(0.2), { BackgroundColor3 = Color3.fromRGB(255, 60, 60) }):Play()
	end

	--- Executed when the X button is unhovered over
	function onXButtonUnhover()
		TweenService:Create(CloseButton, TweenInfo.new(0.2), { BackgroundColor3 = Color3.fromRGB(37, 36, 38) }):Play()
	end

	--- Toggles the remote spy method (when button clicked)
	function onToggleButtonClick()
		if toggle then
			TweenService:Create(Simple, TweenInfo.new(0.5), { TextColor3 = Color3.fromRGB(252, 51, 51) }):Play()
		else
			TweenService:Create(Simple, TweenInfo.new(0.5), { TextColor3 = Color3.fromRGB(68, 206, 91) }):Play()
		end
		toggleSpyMethod()
	end

	--- Reconnects bringBackOnResize if the current viewport changes and also connects it initially
	function connectResize()
		local lastCam = workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize"):Connect(bringBackOnResize)
		workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function()
			lastCam:Disconnect()
			if workspace.CurrentCamera then
				lastCam = workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize"):Connect(bringBackOnResize)
			end
		end)
	end

	--- Brings gui back if it gets lost offscreen (connected to the camera viewport changing)
	function bringBackOnResize()
		validateSize()
		if sideClosed then
			minimizeSize()
		else
			maximizeSize()
		end
		local currentX = Background.AbsolutePosition.X
		local currentY = Background.AbsolutePosition.Y
		local viewportSize = workspace.CurrentCamera.ViewportSize
		if (currentX < 0) or (currentX > (viewportSize.X - (sideClosed and 131 or Background.AbsoluteSize.X))) then
			if currentX < 0 then
				currentX = 0
			else
				currentX = viewportSize.X - (sideClosed and 131 or Background.AbsoluteSize.X)
			end
		end
		if (currentY < 0) or (currentY > (viewportSize.Y - (closed and 19 or Background.AbsoluteSize.Y) - 36)) then
			if currentY < 0 then
				currentY = 0
			else
				currentY = viewportSize.Y - (closed and 19 or Background.AbsoluteSize.Y) - 36
			end
		end
		TweenService.Create(
			TweenService,
			Background,
			TweenInfo.new(0.1),
			{ Position = UDim2.new(0, currentX, 0, currentY) }
		):Play()
	end

	--- Drags gui (so long as mouse is held down)
	--- @param input InputObject
	function onBarInput(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			local lastPos = UserInputService.GetMouseLocation(UserInputService)
			local mainPos = Background.AbsolutePosition
			local offset = mainPos - lastPos
			local currentPos = offset + lastPos
			RunService.BindToRenderStep(RunService, "drag", 1, function()
				local newPos = UserInputService.GetMouseLocation(UserInputService)
				if newPos ~= lastPos then
					local currentX = (offset + newPos).X
					local currentY = (offset + newPos).Y
					local viewportSize = workspace.CurrentCamera.ViewportSize
					if
						(currentX < 0 and currentX < currentPos.X)
						or (
							currentX > (viewportSize.X - (sideClosed and 131 or TopBar.AbsoluteSize.X))
								and currentX > currentPos.X
						)
					then
						if currentX < 0 then
							currentX = 0
						else
							currentX = viewportSize.X - (sideClosed and 131 or TopBar.AbsoluteSize.X)
						end
					end
					if
						(currentY < 0 and currentY < currentPos.Y)
						or (
							currentY > (viewportSize.Y - (closed and 19 or Background.AbsoluteSize.Y) - 36)
								and currentY > currentPos.Y
						)
					then
						if currentY < 0 then
							currentY = 0
						else
							currentY = viewportSize.Y - (closed and 19 or Background.AbsoluteSize.Y) - 36
						end
					end
					currentPos = Vector2.new(currentX, currentY)
					lastPos = newPos
					TweenService.Create(
						TweenService,
						Background,
						TweenInfo.new(0.1),
						{ Position = UDim2.new(0, currentPos.X, 0, currentPos.Y) }
					):Play()
				end
				-- if input.UserInputState ~= Enum.UserInputState.Begin then
				--     RunService.UnbindFromRenderStep(RunService, "drag")
				-- end
			end)
			table.insert(
				connections,
				UserInputService.InputEnded:Connect(function(inputE)
					if input == inputE then
						RunService:UnbindFromRenderStep("drag")
					end
				end)
			)
		end
	end

	--- Fades out the table of elements (and makes them invisible), returns a function to make them visible again
	function fadeOut(elements)
		local data = {}
		for _, v in pairs(elements) do
			if typeof(v) == "Instance" and v:IsA("GuiObject") and v.Visible then
				coroutine.wrap(function()
					data[v] = {
						BackgroundTransparency = v.BackgroundTransparency,
					}
					TweenService:Create(v, TweenInfo.new(0.5), { BackgroundTransparency = 1 }):Play()
					if v:IsA("TextBox") or v:IsA("TextButton") or v:IsA("TextLabel") then
						data[v].TextTransparency = v.TextTransparency
						TweenService:Create(v, TweenInfo.new(0.5), { TextTransparency = 1 }):Play()
					elseif v:IsA("ImageButton") or v:IsA("ImageLabel") then
						data[v].ImageTransparency = v.ImageTransparency
						TweenService:Create(v, TweenInfo.new(0.5), { ImageTransparency = 1 }):Play()
					end
					wait(0.5)
					v.Visible = false
					for i, x in pairs(data[v]) do
						v[i] = x
					end
					data[v] = true
				end)()
			end
		end
		return function()
			for i, _ in pairs(data) do
				coroutine.wrap(function()
					local properties = {
						BackgroundTransparency = i.BackgroundTransparency,
					}
					i.BackgroundTransparency = 1
					TweenService
					:Create(i, TweenInfo.new(0.5), { BackgroundTransparency = properties.BackgroundTransparency })
					:Play()
					if i:IsA("TextBox") or i:IsA("TextButton") or i:IsA("TextLabel") then
						properties.TextTransparency = i.TextTransparency
						i.TextTransparency = 1
						TweenService
						:Create(i, TweenInfo.new(0.5), { TextTransparency = properties.TextTransparency })
						:Play()
					elseif i:IsA("ImageButton") or i:IsA("ImageLabel") then
						properties.ImageTransparency = i.ImageTransparency
						i.ImageTransparency = 1
						TweenService
						:Create(i, TweenInfo.new(0.5), { ImageTransparency = properties.ImageTransparency })
						:Play()
					end
					i.Visible = true
				end)()
			end
		end
	end

	--- Expands and minimizes the gui (closed is the toggle boolean)
	function toggleMinimize(override)
		if mainClosing and not override or maximized then
			return
		end
		mainClosing = true
		closed = not closed
		if closed then
			if not sideClosed then
				toggleSideTray(true)
			end
			LeftPanel.Visible = true
			TweenService:Create(LeftPanel, TweenInfo.new(0.5), { Size = UDim2.new(0, 131, 0, 0) }):Play()
			wait(0.5)
			remotesFadeIn = fadeOut(LeftPanel:GetDescendants())
			wait(0.5)
		else
			TweenService:Create(LeftPanel, TweenInfo.new(0.5), { Size = UDim2.new(0, 131, 0, 249) }):Play()
			wait(0.5)
			if remotesFadeIn then
				remotesFadeIn()
				remotesFadeIn = nil
			end
			bringBackOnResize()
		end
		mainClosing = false
	end

	--- Expands and minimizes the sidebar (sideClosed is the toggle boolean)
	function toggleSideTray(override)
		if sideClosing and not override or maximized then
			return
		end
		sideClosing = true
		sideClosed = not sideClosed
		if sideClosed then
			rightFadeIn = fadeOut(RightPanel:GetDescendants())
			wait(0.5)
			minimizeSize(0.5)
			wait(0.5)
			RightPanel.Visible = false
		else
			if closed then
				toggleMinimize(true)
			end
			RightPanel.Visible = true
			maximizeSize(0.5)
			wait(0.5)
			if rightFadeIn then
				rightFadeIn()
			end
			bringBackOnResize()
		end
		sideClosing = false
	end

	--- Expands code box to fit screen for more convenient viewing
	function toggleMaximize()
		if not sideClosed and not maximized then
			maximized = true
			local disable = Instance.new("TextButton")
			local prevSize = UDim2.new(0, CodeBox.AbsoluteSize.X, 0, CodeBox.AbsoluteSize.Y)
			local prevPos = UDim2.new(0, CodeBox.AbsolutePosition.X, 0, CodeBox.AbsolutePosition.Y)
			disable.Size = UDim2.new(1, 0, 1, 0)
			disable.BackgroundColor3 = Color3.new()
			disable.BorderSizePixel = 0
			disable.Text = 0
			disable.ZIndex = 3
			disable.BackgroundTransparency = 1
			disable.AutoButtonColor = false
			CodeBox.ZIndex = 4
			CodeBox.Position = prevPos
			CodeBox.Size = prevSize
			TweenService
			:Create(
				CodeBox,
				TweenInfo.new(0.5),
				{ Size = UDim2.new(0.5, 0, 0.5, 0), Position = UDim2.new(0.25, 0, 0.25, 0) }
			)
			:Play()
			TweenService:Create(disable, TweenInfo.new(0.5), { BackgroundTransparency = 0.5 }):Play()
			disable.MouseButton1Click:Connect(function()
				if
					UserInputService:GetMouseLocation().Y + 36 >= CodeBox.AbsolutePosition.Y
					and UserInputService:GetMouseLocation().Y + 36 <= CodeBox.AbsolutePosition.Y + CodeBox.AbsoluteSize.Y
					and UserInputService:GetMouseLocation().X >= CodeBox.AbsolutePosition.X
					and UserInputService:GetMouseLocation().X <= CodeBox.AbsolutePosition.X + CodeBox.AbsoluteSize.X
				then
					return
				end
				TweenService:Create(CodeBox, TweenInfo.new(0.5), { Size = prevSize, Position = prevPos }):Play()
				TweenService:Create(disable, TweenInfo.new(0.5), { BackgroundTransparency = 1 }):Play()
				maximized = false
				wait(0.5)
				disable:Destroy()
				CodeBox.Size = UDim2.new(1, 0, 0.5, 0)
				CodeBox.Position = UDim2.new(0, 0, 0, 0)
				CodeBox.ZIndex = 0
			end)
		end
	end

	--- Checks if cursor is within resize range
	--- @param p Vector2
	function isInResizeRange(p)
		local relativeP = p - Background.AbsolutePosition
		local range = 5
		if
			relativeP.X >= TopBar.AbsoluteSize.X - range
			and relativeP.Y >= Background.AbsoluteSize.Y - range
			and relativeP.X <= TopBar.AbsoluteSize.X
			and relativeP.Y <= Background.AbsoluteSize.Y
		then
			return true, "B"
		elseif relativeP.X >= TopBar.AbsoluteSize.X - range and relativeP.X <= Background.AbsoluteSize.X then
			return true, "X"
		elseif relativeP.Y >= Background.AbsoluteSize.Y - range and relativeP.Y <= Background.AbsoluteSize.Y then
			return true, "Y"
		end
		return false
	end

	--- Checks if cursor is within dragging range
	--- @param p Vector2
	function isInDragRange(p)
		local relativeP = p - Background.AbsolutePosition
		if
			relativeP.X <= TopBar.AbsoluteSize.X - CloseButton.AbsoluteSize.X * 3
			and relativeP.X >= 0
			and relativeP.Y <= TopBar.AbsoluteSize.Y
			and relativeP.Y >= 0
		then
			return true
		end
		return false
	end

	--- Called when mouse enters SimpleSpy
	function mouseEntered()
		local existingCursor = SimpleSpy2:FindFirstChild("Cursor")
		while existingCursor do
			existingCursor:Destroy()
			existingCursor = SimpleSpy2:FindFirstChild("Cursor")
		end
		local customCursor = Instance.new("ImageLabel")
		customCursor.Name = "Cursor"
		customCursor.Size = UDim2.fromOffset(200, 200)
		customCursor.ZIndex = 1e5
		customCursor.BackgroundTransparency = 1
		customCursor.Image = ""
		customCursor.Parent = SimpleSpy2
		UserInputService.OverrideMouseIconBehavior = Enum.OverrideMouseIconBehavior.ForceHide
		RunService:BindToRenderStep("SIMPLESPY_CURSOR", 1, function()
			if mouseInGui and _G.SimpleSpyExecuted then
				local mouseLocation = UserInputService:GetMouseLocation() - Vector2.new(0, 36)
				customCursor.Position = UDim2.fromOffset(
					mouseLocation.X - customCursor.AbsoluteSize.X / 2,
					mouseLocation.Y - customCursor.AbsoluteSize.Y / 2
				)
				local inRange, type = isInResizeRange(mouseLocation)
				if inRange and not sideClosed and not closed then
					customCursor.Image = type == "B" and "rbxassetid://6065821980"
						or type == "X" and "rbxassetid://6065821086"
						or type == "Y" and "rbxassetid://6065821596"
				elseif inRange and not closed and type == "Y" or type == "B" then
					customCursor.Image = "rbxassetid://6065821596"
				elseif customCursor.Image ~= "rbxassetid://6065775281" then
					customCursor.Image = "rbxassetid://6065775281"
				end
			else
				UserInputService.OverrideMouseIconBehavior = Enum.OverrideMouseIconBehavior.None
				customCursor:Destroy()
				RunService:UnbindFromRenderStep("SIMPLESPY_CURSOR")
			end
		end)
	end

	--- Called when mouse moves
	function mouseMoved()
		local mousePos = UserInputService:GetMouseLocation() - Vector2.new(0, 36)
		if
			not closed
			and mousePos.X >= TopBar.AbsolutePosition.X
			and mousePos.X <= TopBar.AbsolutePosition.X + TopBar.AbsoluteSize.X
			and mousePos.Y >= Background.AbsolutePosition.Y
			and mousePos.Y <= Background.AbsolutePosition.Y + Background.AbsoluteSize.Y
		then
			if not mouseInGui then
				mouseInGui = true
				mouseEntered()
			end
		else
			mouseInGui = false
		end
	end

	--- Adjusts the ui elements to the 'Maximized' size
	function maximizeSize(speed)
		if not speed then
			speed = 0.05
		end
		TweenService
		:Create(
			LeftPanel,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(LeftPanel.AbsoluteSize.X, Background.AbsoluteSize.Y - TopBar.AbsoluteSize.Y) }
		)
		:Play()
		TweenService
		:Create(RightPanel, TweenInfo.new(speed), {
			Size = UDim2.fromOffset(
				Background.AbsoluteSize.X - LeftPanel.AbsoluteSize.X,
				Background.AbsoluteSize.Y - TopBar.AbsoluteSize.Y
			),
		})
		:Play()
		TweenService
		:Create(
			TopBar,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(Background.AbsoluteSize.X, TopBar.AbsoluteSize.Y) }
		)
		:Play()
		TweenService
		:Create(ScrollingFrame, TweenInfo.new(speed), {
			Size = UDim2.fromOffset(Background.AbsoluteSize.X - LeftPanel.AbsoluteSize.X, 110),
			Position = UDim2.fromOffset(0, Background.AbsoluteSize.Y - 119 - TopBar.AbsoluteSize.Y),
		})
		:Play()
		TweenService
		:Create(CodeBox, TweenInfo.new(speed), {
			Size = UDim2.fromOffset(
				Background.AbsoluteSize.X - LeftPanel.AbsoluteSize.X,
				Background.AbsoluteSize.Y - 119 - TopBar.AbsoluteSize.Y
			),
		})
		:Play()
		TweenService
		:Create(
			LogList,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(LogList.AbsoluteSize.X, Background.AbsoluteSize.Y - TopBar.AbsoluteSize.Y - 18) }
		)
		:Play()
	end

	--- Adjusts the ui elements to close the side
	function minimizeSize(speed)
		if not speed then
			speed = 0.05
		end
		TweenService
		:Create(
			LeftPanel,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(LeftPanel.AbsoluteSize.X, Background.AbsoluteSize.Y - TopBar.AbsoluteSize.Y) }
		)
		:Play()
		TweenService
		:Create(
			RightPanel,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(0, Background.AbsoluteSize.Y - TopBar.AbsoluteSize.Y) }
		)
		:Play()
		TweenService
		:Create(
			TopBar,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(LeftPanel.AbsoluteSize.X, TopBar.AbsoluteSize.Y) }
		)
		:Play()
		TweenService
		:Create(ScrollingFrame, TweenInfo.new(speed), {
			Size = UDim2.fromOffset(0, 119),
			Position = UDim2.fromOffset(0, Background.AbsoluteSize.Y - 119 - TopBar.AbsoluteSize.Y),
		})
		:Play()
		TweenService
		:Create(
			CodeBox,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(0, Background.AbsoluteSize.Y - 119 - TopBar.AbsoluteSize.Y) }
		)
		:Play()
		TweenService
		:Create(
			LogList,
			TweenInfo.new(speed),
			{ Size = UDim2.fromOffset(LogList.AbsoluteSize.X, Background.AbsoluteSize.Y - TopBar.AbsoluteSize.Y - 18) }
		)
		:Play()
	end

	--- Ensures size is within screensize limitations
	function validateSize()
		local x, y = Background.AbsoluteSize.X, Background.AbsoluteSize.Y
		local screenSize = workspace.CurrentCamera.ViewportSize
		if x + Background.AbsolutePosition.X > screenSize.X then
			if screenSize.X - Background.AbsolutePosition.X >= 450 then
				x = screenSize.X - Background.AbsolutePosition.X
			else
				x = 450
			end
		elseif y + Background.AbsolutePosition.Y > screenSize.Y then
			if screenSize.X - Background.AbsolutePosition.Y >= 268 then
				y = screenSize.Y - Background.AbsolutePosition.Y
			else
				y = 268
			end
		end
		Background.Size = UDim2.fromOffset(x, y)
	end

	--- Called on user input while mouse in 'Background' frame
	--- @param input InputObject
	function backgroundUserInput(input)
		local mousePos = UserInputService:GetMouseLocation() - Vector2.new(0, 36)
		local inResizeRange, type = isInResizeRange(mousePos)
		if input.UserInputType == Enum.UserInputType.MouseButton1 and inResizeRange then
			local lastPos = UserInputService:GetMouseLocation()
			local offset = Background.AbsoluteSize - lastPos
			local currentPos = lastPos + offset
			RunService:BindToRenderStep("SIMPLESPY_RESIZE", 1, function()
				local newPos = UserInputService:GetMouseLocation()
				if newPos ~= lastPos then
					local currentX = (newPos + offset).X
					local currentY = (newPos + offset).Y
					if currentX < 450 then
						currentX = 450
					end
					if currentY < 268 then
						currentY = 268
					end
					currentPos = Vector2.new(currentX, currentY)
					Background.Size = UDim2.fromOffset(
						(not sideClosed and not closed and (type == "X" or type == "B")) and currentPos.X
							or Background.AbsoluteSize.X,
						(--[[(not sideClosed or currentPos.X <= LeftPanel.AbsolutePosition.X + LeftPanel.AbsoluteSize.X) and]]not closed and (type == "Y" or type == "B"))
							and currentPos.Y
							or Background.AbsoluteSize.Y
					)
					validateSize()
					if sideClosed then
						minimizeSize()
					else
						maximizeSize()
					end
					lastPos = newPos
				end
			end)
			table.insert(
				connections,
				UserInputService.InputEnded:Connect(function(inputE)
					if input == inputE then
						RunService:UnbindFromRenderStep("SIMPLESPY_RESIZE")
					end
				end)
			)
		elseif isInDragRange(mousePos) then
			onBarInput(input)
		end
	end

	--- Gets the player an instance is descended from
	function getPlayerFromInstance(instance)
		for _, v in pairs(Players:GetPlayers()) do
			if v.Character and (instance:IsDescendantOf(v.Character) or instance == v.Character) then
				return v
			end
		end
	end

	--- Runs on MouseButton1Click of an event frame
	function eventSelect(frame)
		if selected and selected.Log and selected.Log.Button then
			TweenService
			:Create(selected.Log.Button, TweenInfo.new(0.5), { BackgroundColor3 = Color3.fromRGB(0, 0, 0) })
			:Play()
			selected = nil
		end
		for _, v in pairs(logs) do
			if frame == v.Log then
				selected = v
			end
		end
		if selected and selected.Log then
			TweenService
			:Create(frame.Button, TweenInfo.new(0.5), { BackgroundColor3 = Color3.fromRGB(92, 126, 229) })
			:Play()
			codebox:setRaw(selected.GenScript)
		end
		if sideClosed then
			toggleSideTray()
		end
	end

	--- Updates the canvas size to fit the current amount of function buttons
	function updateFunctionCanvas()
		ScrollingFrame.CanvasSize = UDim2.fromOffset(UIGridLayout.AbsoluteContentSize.X, UIGridLayout.AbsoluteContentSize.Y)
	end

	--- Updates the canvas size to fit the amount of current remotes
	function updateRemoteCanvas()
		LogList.CanvasSize = UDim2.fromOffset(UIListLayout.AbsoluteContentSize.X, UIListLayout.AbsoluteContentSize.Y)
	end

	--- Allows for toggling of the tooltip and easy setting of le description
	--- @param enable boolean
	--- @param text string
	function makeToolTip(enable, text)
		if enable then
			if ToolTip.Visible then
				ToolTip.Visible = false
				RunService:UnbindFromRenderStep("ToolTip")
			end
			local first = true
			RunService:BindToRenderStep("ToolTip", 1, function()
				local topLeft = Vector2.new(Mouse.X + 20, Mouse.Y + 20)
				local bottomRight = topLeft + ToolTip.AbsoluteSize
				if topLeft.X < 0 then
					topLeft = Vector2.new(0, topLeft.Y)
				elseif bottomRight.X > workspace.CurrentCamera.ViewportSize.X then
					topLeft = Vector2.new(workspace.CurrentCamera.ViewportSize.X - ToolTip.AbsoluteSize.X, topLeft.Y)
				end
				if topLeft.Y < 0 then
					topLeft = Vector2.new(topLeft.X, 0)
				elseif bottomRight.Y > workspace.CurrentCamera.ViewportSize.Y - 35 then
					topLeft = Vector2.new(topLeft.X, workspace.CurrentCamera.ViewportSize.Y - ToolTip.AbsoluteSize.Y - 35)
				end
				if topLeft.X <= Mouse.X and topLeft.Y <= Mouse.Y then
					topLeft = Vector2.new(Mouse.X - ToolTip.AbsoluteSize.X - 2, Mouse.Y - ToolTip.AbsoluteSize.Y - 2)
				end
				if first then
					ToolTip.Position = UDim2.fromOffset(topLeft.X, topLeft.Y)
					first = false
				else
					ToolTip:TweenPosition(UDim2.fromOffset(topLeft.X, topLeft.Y), "Out", "Linear", 0.1)
				end
			end)
			TextLabel.Text = text
			ToolTip.Visible = true
		else
			if ToolTip.Visible then
				ToolTip.Visible = false
				RunService:UnbindFromRenderStep("ToolTip")
			end
		end
	end

	--- Creates new function button (below codebox)
	--- @param name string
	---@param description function
	---@param onClick function
	function newButton(name, description, onClick)
		local button = FunctionTemplate:Clone()
		button.Text.Text = name
		button.Button.MouseEnter:Connect(function()
			makeToolTip(true, description())
		end)
		button.Button.MouseLeave:Connect(function()
			makeToolTip(false)
		end)
		button.AncestryChanged:Connect(function()
			makeToolTip(false)
		end)
		button.Button.MouseButton1Click:Connect(function(...)
			onClick(button, ...)
		end)
		button.Parent = ScrollingFrame
		updateFunctionCanvas()
	end

	--- Adds new Remote to logs
	--- @param name string The name of the remote being logged
	--- @param type string The type of the remote being logged (either 'function' or 'event')
	--- @param args any
	--- @param remote any
	--- @param function_info string
	--- @param blocked any
	function newRemote(type, name, args, remote, function_info, blocked, src, returnValue)
		local remoteFrame = RemoteTemplate:Clone()
		remoteFrame.Text.Text = string.sub(name, 1, 50)
		remoteFrame.ColorBar.BackgroundColor3 = type == "event" and Color3.new(255, 242, 0) or Color3.fromRGB(99, 86, 245)
		local id = Instance.new("IntValue")
		id.Name = "ID"
		id.Value = #logs + 1
		id.Parent = remoteFrame
		local weakRemoteTable = setmetatable({ remote = remote }, { __mode = "v" })
		local log = {
			Name = name,
			Function = function_info,
			Remote = weakRemoteTable,
			Log = remoteFrame,
			Blocked = blocked,
			Source = src,
			GenScript = "-- Generating, please wait... (click to reload)\n-- (If this message persists, the remote args are likely extremely long)",
			ReturnValue = returnValue,
		}
		logs[#logs + 1] = log
		schedule(function()
			log.GenScript = genScript(remote, args)
			if blocked then
				logs[#logs].GenScript = "-- THIS REMOTE WAS PREVENTED FROM FIRING THE SERVER BY SIMPLESPY\n\n"
					.. logs[#logs].GenScript
			end
		end)
		local connect = remoteFrame.Button.MouseButton1Click:Connect(function()
			eventSelect(remoteFrame)
		end)
		if layoutOrderNum < 1 then
			layoutOrderNum = 999999999
		end
		remoteFrame.LayoutOrder = layoutOrderNum
		layoutOrderNum = layoutOrderNum - 1
		remoteFrame.Parent = LogList
		table.insert(remoteLogs, 1, { connect, remoteFrame })
		clean()
		updateRemoteCanvas()
	end

	--- Generates a script from the provided arguments (first has to be remote path)
	function genScript(remote, args)
		prevTables = {}
		local gen = ""
		if #args > 0 then
			if not pcall(function()
					gen = v2v({ args = args }) .. "\n"
				end) then
				gen = gen
					.. "-- TableToString failure! Reverting to legacy functionality (results may vary)\nlocal args = {"
				if
					not pcall(function()
						for i, v in pairs(args) do
							if type(i) ~= "Instance" and type(i) ~= "userdata" then
								gen = gen .. "\n    [object] = "
							elseif type(i) == "string" then
								gen = gen .. '\n    ["' .. i .. '"] = '
							elseif type(i) == "userdata" and typeof(i) ~= "Instance" then
								gen = gen .. "\n    [" .. string.format("nil --[[%s]]", typeof(v)) .. ")] = "
							elseif type(i) == "userdata" then
								gen = gen .. "\n    [game." .. i:GetFullName() .. ")] = "
							end
							if type(v) ~= "Instance" and type(v) ~= "userdata" then
								gen = gen .. "object"
							elseif type(v) == "string" then
								gen = gen .. '"' .. v .. '"'
							elseif type(v) == "userdata" and typeof(v) ~= "Instance" then
								gen = gen .. string.format("nil --[[%s]]", typeof(v))
							elseif type(v) == "userdata" then
								gen = gen .. "game." .. v:GetFullName()
							end
						end
						gen = gen .. "\n}\n\n"
					end)
				then
					gen = gen .. "}\n-- Legacy tableToString failure! Unable to decompile."
				end
			end
			if not remote:IsDescendantOf(game) and not getnilrequired then
				gen = "function getNil(name,class) for _,v in pairs(getnilinstances())do if v.ClassName==class and v.Name==name then return v;end end end\n\n"
					.. gen
			end
			if remote:IsA("RemoteEvent") then
				gen = gen .. v2s(remote) .. ":FireServer(unpack(args))"
			elseif remote:IsA("RemoteFunction") then
				gen = gen .. v2s(remote) .. ":InvokeServer(unpack(args))"
			end
		else
			if remote:IsA("RemoteEvent") then
				gen = gen .. v2s(remote) .. ":FireServer()"
			elseif remote:IsA("RemoteFunction") then
				gen = gen .. v2s(remote) .. ":InvokeServer()"
			end
		end
		gen = "-- Script generated by SimpleSpy - credits to exx#9394\n\n" .. gen
		prevTables = {}
		return gen
	end

	--- value-to-string: value, string (out), level (indentation), parent table, var name, is from tovar
	function v2s(v, l, p, n, vtv, i, pt, path, tables, tI)
		if not tI then
			tI = { 0 }
		else
			tI[1] += 1
		end
		if typeof(v) == "number" then
			if v == math.huge then
				return "math.huge"
			elseif tostring(v):match("nan") then
				return "0/0 --[[NaN]]"
			end
			return tostring(v)
		elseif typeof(v) == "boolean" then
			return tostring(v)
		elseif typeof(v) == "string" then
			return formatstr(v, l)
		elseif typeof(v) == "function" then
			return f2s(v)
		elseif typeof(v) == "table" then
			return t2s(v, l, p, n, vtv, i, pt, path, tables, tI)
		elseif typeof(v) == "Instance" then
			return i2p(v)
		elseif typeof(v) == "userdata" then
			return "newproxy(true)"
		elseif type(v) == "userdata" then
			return u2s(v)
		elseif type(v) == "vector" then
			return string.format("Vector3.new(%s, %s, %s)", v2s(v.X), v2s(v.Y), v2s(v.Z))
		else
			return "nil --[[" .. typeof(v) .. "]]"
		end
	end

	--- value-to-variable
	--- @param t any
	function v2v(t)
		topstr = ""
		bottomstr = ""
		getnilrequired = false
		local ret = ""
		local count = 1
		for i, v in pairs(t) do
			if type(i) == "string" and i:match("^[%a_]+[%w_]*$") then
				ret = ret .. "local " .. i .. " = " .. v2s(v, nil, nil, i, true) .. "\n"
			elseif tostring(i):match("^[%a_]+[%w_]*$") then
				ret = ret
					.. "local "
					.. tostring(i):lower()
					.. "_"
					.. tostring(count)
					.. " = "
					.. v2s(v, nil, nil, tostring(i):lower() .. "_" .. tostring(count), true)
					.. "\n"
			else
				ret = ret
					.. "local "
					.. type(v)
					.. "_"
					.. tostring(count)
					.. " = "
					.. v2s(v, nil, nil, type(v) .. "_" .. tostring(count), true)
					.. "\n"
			end
			count = count + 1
		end
		if getnilrequired then
			topstr = "function getNil(name,class) for _,v in pairs(getnilinstances())do if v.ClassName==class and v.Name==name then return v;end end end\n"
				.. topstr
		end
		if #topstr > 0 then
			ret = topstr .. "\n" .. ret
		end
		if #bottomstr > 0 then
			ret = ret .. bottomstr
		end
		return ret
	end

	--- table-to-string
	--- @param t table
	--- @param l number
	--- @param p table
	--- @param n string
	--- @param vtv boolean
	--- @param i any
	--- @param pt table
	--- @param path string
	--- @param tables table
	--- @param tI table
	function t2s(t, l, p, n, vtv, i, pt, path, tables, tI)
		local globalIndex = table.find(getgenv(), t) -- checks if table is a global
		if type(globalIndex) == "string" then
			return globalIndex
		end
		if not tI then
			tI = { 0 }
		end
		if not path then -- sets path to empty string (so it doesn't have to manually provided every time)
			path = ""
		end
		if not l then -- sets the level to 0 (for indentation) and tables for logging tables it already serialized
			l = 0
			tables = {}
		end
		if not p then -- p is the previous table but doesn't really matter if it's the first
			p = t
		end
		for _, v in pairs(tables) do -- checks if the current table has been serialized before
			if n and rawequal(v, t) then
				bottomstr = bottomstr
					.. "\n"
					.. tostring(n)
					.. tostring(path)
					.. " = "
					.. tostring(n)
					.. tostring(({ v2p(v, p) })[2])
				return "{} --[[DUPLICATE]]"
			end
		end
		table.insert(tables, t) -- logs table to past tables
		local s = "{" -- start of serialization
		local size = 0
		l = l + indent -- set indentation level
		for k, v in pairs(t) do -- iterates over table
			size = size + 1 -- changes size for max limit
			if size > (_G.SimpleSpyMaxTableSize or 1000) then
				s = s
					.. "\n"
					.. string.rep(" ", l)
					.. "-- MAXIMUM TABLE SIZE REACHED, CHANGE '_G.SimpleSpyMaxTableSize' TO ADJUST MAXIMUM SIZE "
				break
			end
			if rawequal(k, t) then -- checks if the table being iterated over is being used as an index within itself (yay, lua)
				bottomstr = bottomstr
					.. "\n"
					.. tostring(n)
					.. tostring(path)
					.. "["
					.. tostring(n)
					.. tostring(path)
					.. "]"
					.. " = "
					.. (
						rawequal(v, k) and tostring(n) .. tostring(path)
						or v2s(v, l, p, n, vtv, k, t, path .. "[" .. tostring(n) .. tostring(path) .. "]", tables)
					)
				size -= 1
				continue
			end
			local currentPath = "" -- initializes the path of 'v' within 't'
			if type(k) == "string" and k:match("^[%a_]+[%w_]*$") then -- cleanly handles table path generation (for the first half)
				currentPath = "." .. k
			else
				currentPath = "[" .. k2s(k, l, p, n, vtv, k, t, path .. currentPath, tables, tI) .. "]"
			end
			if size % 100 == 0 then
				scheduleWait()
			end
			-- actually serializes the member of the table
			s = s
				.. "\n"
				.. string.rep(" ", l)
				.. "["
				.. k2s(k, l, p, n, vtv, k, t, path .. currentPath, tables, tI)
				.. "] = "
				.. v2s(v, l, p, n, vtv, k, t, path .. currentPath, tables, tI)
				.. ","
		end
		if #s > 1 then -- removes the last comma because it looks nicer (no way to tell if it's done 'till it's done so...)
			s = s:sub(1, #s - 1)
		end
		if size > 0 then -- cleanly indents the last curly bracket
			s = s .. "\n" .. string.rep(" ", l - indent)
		end
		return s .. "}"
	end

	--- key-to-string
	function k2s(v, ...)
		if keyToString then
			if typeof(v) == "userdata" and getrawmetatable(v) then
				return string.format(
					'"<void> (%s)" --[[Potentially hidden data (tostring in SimpleSpy:HookRemote/GetRemoteFiredSignal at your own risk)]]',
					safetostring(v)
				)
			elseif typeof(v) == "userdata" then
				return string.format('"<void> (%s)"', safetostring(v))
			elseif type(v) == "userdata" and typeof(v) ~= "Instance" then
				return string.format('"<%s> (%s)"', typeof(v), tostring(v))
			elseif type(v) == "function" then
				return string.format('"<Function> (%s)"', tostring(v))
			end
		end
		return v2s(v, ...)
	end

	--- function-to-string
	function f2s(f)
		for k, x in pairs(getgenv()) do
			local isgucci, gpath
			if rawequal(x, f) then
				isgucci, gpath = true, ""
			elseif type(x) == "table" then
				isgucci, gpath = v2p(f, x)
			end
			if isgucci and type(k) ~= "function" then
				if type(k) == "string" and k:match("^[%a_]+[%w_]*$") then
					return k .. gpath
				else
					return "getgenv()[" .. v2s(k) .. "]" .. gpath
				end
			end
		end
		if funcEnabled and debug.getinfo(f).name:match("^[%a_]+[%w_]*$") then
			return "function()end --[[" .. debug.getinfo(f).name .. "]]"
		end
		return "function()end --[[" .. tostring(f) .. "]]"
	end

	--- instance-to-path
	--- @param i userdata
	function i2p(i)
		local player = getplayer(i)
		local parent = i
		local out = ""
		if parent == nil then
			return "nil"
		elseif player then
			while true do
				if parent and parent == player.Character then
					if player == Players.LocalPlayer then
						return 'game:GetService("Players").LocalPlayer.Character' .. out
					else
						return i2p(player) .. ".Character" .. out
					end
				else
					if parent.Name:match("[%a_]+[%w+]*") ~= parent.Name then
						out = ":FindFirstChild(" .. formatstr(parent.Name) .. ")" .. out
					else
						out = "." .. parent.Name .. out
					end
				end
				parent = parent.Parent
			end
		elseif parent ~= game then
			while true do
				if parent and parent.Parent == game then
					local service = game:FindService(parent.ClassName)
					if service then
						if parent.ClassName == "Workspace" then
							return "workspace" .. out
						else
							return 'game:GetService("' .. service.ClassName .. '")' .. out
						end
					else
						if parent.Name:match("[%a_]+[%w_]*") then
							return "game." .. parent.Name .. out
						else
							return "game:FindFirstChild(" .. formatstr(parent.Name) .. ")" .. out
						end
					end
				elseif parent.Parent == nil then
					getnilrequired = true
					return "getNil(" .. formatstr(parent.Name) .. ', "' .. parent.ClassName .. '")' .. out
				elseif parent == Players.LocalPlayer then
					out = ".LocalPlayer" .. out
				else
					if parent.Name:match("[%a_]+[%w_]*") ~= parent.Name then
						out = ":FindFirstChild(" .. formatstr(parent.Name) .. ")" .. out
					else
						out = "." .. parent.Name .. out
					end
				end
				parent = parent.Parent
			end
		else
			return "game"
		end
	end

	--- userdata-to-string: userdata
	--- @param u userdata
	function u2s(u)
		if typeof(u) == "TweenInfo" then
			-- TweenInfo
			return "TweenInfo.new("
				.. tostring(u.Time)
				.. ", Enum.EasingStyle."
				.. tostring(u.EasingStyle)
				.. ", Enum.EasingDirection."
				.. tostring(u.EasingDirection)
				.. ", "
				.. tostring(u.RepeatCount)
				.. ", "
				.. tostring(u.Reverses)
				.. ", "
				.. tostring(u.DelayTime)
				.. ")"
		elseif typeof(u) == "Ray" then
			-- Ray
			return "Ray.new(" .. u2s(u.Origin) .. ", " .. u2s(u.Direction) .. ")"
		elseif typeof(u) == "NumberSequence" then
			-- NumberSequence
			local ret = "NumberSequence.new("
			for i, v in pairs(u.KeyPoints) do
				ret = ret .. tostring(v)
				if i < #u.Keypoints then
					ret = ret .. ", "
				end
			end
			return ret .. ")"
		elseif typeof(u) == "DockWidgetPluginGuiInfo" then
			-- DockWidgetPluginGuiInfo
			return "DockWidgetPluginGuiInfo.new(Enum.InitialDockState" .. tostring(u) .. ")"
		elseif typeof(u) == "ColorSequence" then
			-- ColorSequence
			local ret = "ColorSequence.new("
			for i, v in pairs(u.KeyPoints) do
				ret = ret .. "Color3.new(" .. tostring(v) .. ")"
				if i < #u.Keypoints then
					ret = ret .. ", "
				end
			end
			return ret .. ")"
		elseif typeof(u) == "BrickColor" then
			-- BrickColor
			return "BrickColor.new(" .. tostring(u.Number) .. ")"
		elseif typeof(u) == "NumberRange" then
			-- NumberRange
			return "NumberRange.new(" .. tostring(u.Min) .. ", " .. tostring(u.Max) .. ")"
		elseif typeof(u) == "Region3" then
			-- Region3
			local center = u.CFrame.Position
			local size = u.CFrame.Size
			local vector1 = center - size / 2
			local vector2 = center + size / 2
			return "Region3.new(" .. u2s(vector1) .. ", " .. u2s(vector2) .. ")"
		elseif typeof(u) == "Faces" then
			-- Faces
			local faces = {}
			if u.Top then
				table.insert(faces, "Enum.NormalId.Top")
			end
			if u.Bottom then
				table.insert(faces, "Enum.NormalId.Bottom")
			end
			if u.Left then
				table.insert(faces, "Enum.NormalId.Left")
			end
			if u.Right then
				table.insert(faces, "Enum.NormalId.Right")
			end
			if u.Back then
				table.insert(faces, "Enum.NormalId.Back")
			end
			if u.Front then
				table.insert(faces, "Enum.NormalId.Front")
			end
			return "Faces.new(" .. table.concat(faces, ", ") .. ")"
		elseif typeof(u) == "EnumItem" then
			return tostring(u)
		elseif typeof(u) == "Enums" then
			return "Enum"
		elseif typeof(u) == "Enum" then
			return "Enum." .. tostring(u)
		elseif typeof(u) == "RBXScriptSignal" then
			return "nil --[[RBXScriptSignal]]"
		elseif typeof(u) == "Vector3" then
			return string.format("Vector3.new(%s, %s, %s)", v2s(u.X), v2s(u.Y), v2s(u.Z))
		elseif typeof(u) == "CFrame" then
			local xAngle, yAngle, zAngle = u:ToEulerAnglesXYZ()
			return string.format(
				"CFrame.new(%s, %s, %s) * CFrame.Angles(%s, %s, %s)",
				v2s(u.X),
				v2s(u.Y),
				v2s(u.Z),
				v2s(xAngle),
				v2s(yAngle),
				v2s(zAngle)
			)
		elseif typeof(u) == "DockWidgetPluginGuiInfo" then
			return string.format(
				"DockWidgetPluginGuiInfo(%s, %s, %s, %s, %s, %s, %s)",
				"Enum.InitialDockState.Right",
				v2s(u.InitialEnabled),
				v2s(u.InitialEnabledShouldOverrideRestore),
				v2s(u.FloatingXSize),
				v2s(u.FloatingYSize),
				v2s(u.MinWidth),
				v2s(u.MinHeight)
			)
		elseif typeof(u) == "PathWaypoint" then
			return string.format("PathWaypoint.new(%s, %s)", v2s(u.Position), v2s(u.Action))
		elseif typeof(u) == "UDim" then
			return string.format("UDim.new(%s, %s)", v2s(u.Scale), v2s(u.Offset))
		elseif typeof(u) == "UDim2" then
			return string.format(
				"UDim2.new(%s, %s, %s, %s)",
				v2s(u.X.Scale),
				v2s(u.X.Offset),
				v2s(u.Y.Scale),
				v2s(u.Y.Offset)
			)
		elseif typeof(u) == "Rect" then
			return string.format("Rect.new(%s, %s)", v2s(u.Min), v2s(u.Max))
		else
			return string.format("nil --[[%s]]", typeof(u))
		end
	end

	--- Gets the player an instance is descended from
	function getplayer(instance)
		for _, v in pairs(Players:GetPlayers()) do
			if v.Character and (instance:IsDescendantOf(v.Character) or instance == v.Character) then
				return v
			end
		end
	end

	--- value-to-path (in table)
	function v2p(x, t, path, prev)
		if not path then
			path = ""
		end
		if not prev then
			prev = {}
		end
		if rawequal(x, t) then
			return true, ""
		end
		for i, v in pairs(t) do
			if rawequal(v, x) then
				if type(i) == "string" and i:match("^[%a_]+[%w_]*$") then
					return true, (path .. "." .. i)
				else
					return true, (path .. "[" .. v2s(i) .. "]")
				end
			end
			if type(v) == "table" then
				local duplicate = false
				for _, y in pairs(prev) do
					if rawequal(y, v) then
						duplicate = true
					end
				end
				if not duplicate then
					table.insert(prev, t)
					local found
					found, p = v2p(x, v, path, prev)
					if found then
						if type(i) == "string" and i:match("^[%a_]+[%w_]*$") then
							return true, "." .. i .. p
						else
							return true, "[" .. v2s(i) .. "]" .. p
						end
					end
				end
			end
		end
		return false, ""
	end

	--- format s: string, byte encrypt (for weird symbols)
	function formatstr(s, indentation)
		if not indentation then
			indentation = 0
		end
		local handled, reachedMax = handlespecials(s, indentation)
		return '"'
			.. handled
			.. '"'
			.. (
				reachedMax
				and " --[[ MAXIMUM STRING SIZE REACHED, CHANGE '_G.SimpleSpyMaxStringSize' TO ADJUST MAXIMUM SIZE ]]"
				or ""
			)
	end

	--- Adds \'s to the text as a replacement to whitespace chars and other things because string.format can't yayeet
	function handlespecials(value, indentation)
		local buildStr = {}
		local i = 1
		local char = string.sub(value, i, i)
		local indentStr
		while char ~= "" do
			if char == '"' then
				buildStr[i] = '\\"'
			elseif char == "\\" then
				buildStr[i] = "\\\\"
			elseif char == "\n" then
				buildStr[i] = "\\n"
			elseif char == "\t" then
				buildStr[i] = "\\t"
			elseif string.byte(char) > 126 or string.byte(char) < 32 then
				buildStr[i] = string.format("\\%d", string.byte(char))
			else
				buildStr[i] = char
			end
			i = i + 1
			char = string.sub(value, i, i)
			if i % 200 == 0 then
				indentStr = indentStr or string.rep(" ", indentation + indent)
				table.move({ '"\n', indentStr, '... "' }, 1, 3, i, buildStr)
				i += 3
			end
		end
		return table.concat(buildStr)
	end

	-- safe (ish) tostring
	function safetostring(v: any)
		if typeof(v) == "userdata" or type(v) == "table" then
			local mt = getrawmetatable(v)
			local badtostring = mt and rawget(mt, "__tostring")
			if mt and badtostring then
				rawset(mt, "__tostring", nil)
				local out = tostring(v)
				rawset(mt, "__tostring", badtostring)
				return out
			end
		end
		return tostring(v)
	end

	--- finds script from 'src' from getinfo, returns nil if not found
	--- @param src string
	function getScriptFromSrc(src)
		local realPath
		local runningTest
		--- @type number
		local s, e
		local match = false
		if src:sub(1, 1) == "=" then
			realPath = game
			s = 2
		else
			runningTest = src:sub(2, e and e - 1 or -1)
			for _, v in pairs(getnilinstances()) do
				if v.Name == runningTest then
					realPath = v
					break
				end
			end
			s = #runningTest + 1
		end
		if realPath then
			e = src:sub(s, -1):find("%.")
			local i = 0
			repeat
				i += 1
				if not e then
					runningTest = src:sub(s, -1)
					local test = realPath.FindFirstChild(realPath, runningTest)
					if test then
						realPath = test
					end
					match = true
				else
					runningTest = src:sub(s, e)
					local test = realPath.FindFirstChild(realPath, runningTest)
					local yeOld = e
					if test then
						realPath = test
						s = e + 2
						e = src:sub(e + 2, -1):find("%.")
						e = e and e + yeOld or e
					else
						e = src:sub(e + 2, -1):find("%.")
						e = e and e + yeOld or e
					end
				end
			until match or i >= 50
		end
		return realPath
	end

	--- schedules the provided function (and calls it with any args after)
	function schedule(f, ...)
		table.insert(scheduled, { f, ... })
	end

	--- yields the current thread until the scheduler gives the ok
	function scheduleWait()
		local thread = coroutine.running()
		schedule(function()
			coroutine.resume(thread)
		end)
		coroutine.yield()
	end

	--- the big (well tbh small now) boi task scheduler himself, handles p much anything as quicc as possible
	function taskscheduler()
		if not toggle then
			scheduled = {}
			return
		end
		if #scheduled > 1000 then
			table.remove(scheduled, #scheduled)
		end
		if #scheduled > 0 then
			local currentf = scheduled[1]
			table.remove(scheduled, 1)
			if type(currentf) == "table" and type(currentf[1]) == "function" then
				pcall(unpack(currentf))
			end
		end
	end

	--- Handles remote logs
	function remoteHandler(hookfunction, methodName, remote, args, funcInfo, calling, returnValue)
		local validInstance, validClass = pcall(function()
			return remote:IsA("RemoteEvent") or remote:IsA("RemoteFunction")
		end)
		if validInstance and validClass then
			local func = funcInfo.func
			if not calling then
				_, calling = pcall(getScriptFromSrc, funcInfo.source)
			end
			coroutine.wrap(function()
				if remoteSignals[remote] then
					remoteSignals[remote]:Fire(args)
				end
			end)()
			if autoblock then
				if excluding[remote] then
					return
				end
				if not history[remote] then
					history[remote] = { badOccurances = 0, lastCall = tick() }
				end
				if tick() - history[remote].lastCall < 1 then
					history[remote].badOccurances += 1
					return
				else
					history[remote].badOccurances = 0
				end
				if history[remote].badOccurances > 3 then
					excluding[remote] = true
					return
				end
				history[remote].lastCall = tick()
			end
			local functionInfoStr
			local src
			if func and islclosure(func) then
				local functionInfo = {}
				functionInfo.info = funcInfo
				pcall(function()
					functionInfo.constants = debug.getconstants(func)
				end)
				pcall(function()
					functionInfoStr = v2v({ functionInfo = functionInfo })
				end)
				pcall(function()
					if type(calling) == "userdata" then
						src = calling
					end
				end)
			end
			if methodName:lower() == "fireserver" then
				newRemote(
					"event",
					remote.Name,
					args,
					remote,
					functionInfoStr,
					(blocklist[remote] or blocklist[remote.Name]),
					src
				)
			elseif methodName:lower() == "invokeserver" then
				newRemote(
					"function",
					remote.Name,
					args,
					remote,
					functionInfoStr,
					(blocklist[remote] or blocklist[remote.Name]),
					src,
					returnValue
				)
			end
		end
	end

	--- Used for hookfunction
	function hookRemote(remoteType, remote, ...)
		if typeof(remote) == "Instance" then
			local args = { ... }
			local validInstance, remoteName = pcall(function()
				return remote.Name
			end)
			if validInstance and not (blacklist[remote] or blacklist[remoteName]) then
				local funcInfo = {}
				local calling
				if funcEnabled then
					funcInfo = debug.getinfo(4) or funcInfo
					calling = useGetCallingScript and getcallingscript() or nil
				end
				if recordReturnValues and remoteType == "RemoteFunction" then
					local thread = coroutine.running()
					local args = { ... }
					task.defer(function()
						local returnValue
						if remoteHooks[remote] then
							args = { remoteHooks[remote](unpack(args)) }
							returnValue = originalFunction(remote, unpack(args))
						else
							returnValue = originalFunction(remote, unpack(args))
						end
						schedule(
							remoteHandler,
							true,
							remoteType == "RemoteEvent" and "fireserver" or "invokeserver",
							remote,
							args,
							funcInfo,
							calling,
							returnValue
						)
						if blocklist[remote] or blocklist[remoteName] then
							coroutine.resume(thread)
						else
							coroutine.resume(thread, unpack(returnValue))
						end
					end)
				else
					schedule(
						remoteHandler,
						true,
						remoteType == "RemoteEvent" and "fireserver" or "invokeserver",
						remote,
						args,
						funcInfo,
						calling
					)
					if blocklist[remote] or blocklist[remoteName] then
						return
					end
				end
			end
		end
		if recordReturnValues and remoteType == "RemoteFunction" then
			return coroutine.yield()
		elseif remoteType == "RemoteEvent" then
			if remoteHooks[remote] then
				return originalEvent(remote, remoteHooks[remote](...))
			end
			return originalEvent(remote, ...)
		else
			if remoteHooks[remote] then
				return originalFunction(remote, remoteHooks[remote](...))
			end
			return originalFunction(remote, ...)
		end
	end

	local newnamecall = newcclosure(function(remote, ...)
		if typeof(remote) == "Instance" then
			local args = { ... }
			local methodName = getnamecallmethod()
			local validInstance, remoteName = pcall(function()
				return remote.Name
			end)
			if
				validInstance
				and (methodName == "FireServer" or methodName == "fireServer" or methodName == "InvokeServer" or methodName == "invokeServer")
				and not (blacklist[remote] or blacklist[remoteName])
			then
				local funcInfo = {}
				local calling
				if funcEnabled then
					funcInfo = debug.getinfo(3) or funcInfo
					calling = useGetCallingScript and getcallingscript() or nil
				end
				if recordReturnValues and (methodName == "InvokeServer" or methodName == "invokeServer") then
					local namecallThread = coroutine.running()
					local args = { ... }
					task.defer(function()
						local returnValue
						setnamecallmethod(methodName)
						if remoteHooks[remote] then
							args = { remoteHooks[remote](unpack(args)) }
							returnValue = { original(remote, unpack(args)) }
						else
							returnValue = { original(remote, unpack(args)) }
						end
						coroutine.resume(namecallThread, unpack(returnValue))
						coroutine.wrap(function()
							schedule(remoteHandler, false, methodName, remote, args, funcInfo, calling, returnValue)
						end)()
					end)
				else
					coroutine.wrap(function()
						schedule(remoteHandler, false, methodName, remote, args, funcInfo, calling)
					end)()
				end
			end
			if recordReturnValues and (methodName == "InvokeServer" or methodName == "invokeServer") then
				return coroutine.yield()
			elseif
				validInstance
				and (methodName == "FireServer" or methodName == "fireServer" or methodName == "InvokeServer" or methodName == "invokeServer")
				and (blocklist[remote] or blocklist[remoteName])
			then
				return nil
			elseif
				(not recordReturnValues or methodName ~= "InvokeServer" or methodName ~= "invokeServer")
				and validInstance
				and (methodName == "FireServer" or methodName == "fireServer" or methodName == "InvokeServer" or methodName == "invokeServer")
				and remoteHooks[remote]
			then
				return original(remote, remoteHooks[remote](...))
			else
				return original(remote, ...)
			end
		end
		return original(remote, ...)
	end, original)

	local newFireServer = newcclosure(function(...)
		return hookRemote("RemoteEvent", ...)
	end, originalEvent)

	local newInvokeServer = newcclosure(function(...)
		return hookRemote("RemoteFunction", ...)
	end, originalFunction)

	--- Toggles on and off the remote spy
	function toggleSpy()
		if not toggle then
			if hookmetamethod then
				local oldNamecall = hookmetamethod(game, "__namecall", newnamecall)
				original = original or function(...)
					return oldNamecall(...)
				end
				_G.OriginalNamecall = original
			else
				gm = gm or getrawmetatable(game)
				original = original or function(...)
					return gm.__namecall(...)
				end
				setreadonly(gm, false)
				if not original then
					warn("SimpleSpy: namecall method not found!")
					onToggleButtonClick()
					return
				end
				gm.__namecall = newnamecall
				setreadonly(gm, true)
			end
			originalEvent = hookfunction(remoteEvent.FireServer, newFireServer)
			originalFunction = hookfunction(remoteFunction.InvokeServer, newInvokeServer)
		else
			if hookmetamethod then
				if original then
					hookmetamethod(game, "__namecall", original)
				end
			else
				gm = gm or getrawmetatable(game)
				setreadonly(gm, false)
				gm.__namecall = original
				setreadonly(gm, true)
			end
			hookfunction(remoteEvent.FireServer, originalEvent)
			hookfunction(remoteFunction.InvokeServer, originalFunction)
		end
	end

	--- Toggles between the two remotespy methods (hookfunction currently = disabled)
	function toggleSpyMethod()
		toggleSpy()
		toggle = not toggle
	end

	--- Shuts down the remote spy
	function shutdown()
		if schedulerconnect then
			schedulerconnect:Disconnect()
		end
		for _, connection in pairs(connections) do
			coroutine.wrap(function()
				connection:Disconnect()
			end)()
		end
		SimpleSpy2:Destroy()
		hookfunction(remoteEvent.FireServer, originalEvent)
		hookfunction(remoteFunction.InvokeServer, originalFunction)
		if hookmetamethod then
			if original then
				hookmetamethod(game, "__namecall", original)
			end
		else
			gm = gm or getrawmetatable(game)
			setreadonly(gm, false)
			gm.__namecall = original
			setreadonly(gm, true)
		end
		_G.SimpleSpyExecuted = false
	end

	-- main
	if not _G.SimpleSpyExecuted then
		local succeeded, err = pcall(function()
			if not RunService:IsClient() then
				error("SimpleSpy cannot run on the server!")
			end
			if
				not hookfunction
				or not getrawmetatable
				or getrawmetatable and not getrawmetatable(game).__namecall
				or not setreadonly
			then
				local missing = {}
				if not hookfunction then
					table.insert(missing, "hookfunction")
				end
				if not getrawmetatable then
					table.insert(missing, "getrawmetatable")
				end
				if getrawmetatable and not getrawmetatable(game).__namecall then
					table.insert(missing, "getrawmetatable(game).__namecall")
				end
				if not setreadonly then
					table.insert(missing, "setreadonly")
				end
				shutdown()
				error(
					"This environment does not support method hooks!\n(Your exploit is not capable of running SimpleSpy)\nMissing: "
						.. table.concat(missing, ", ")
				)
			end
			_G.SimpleSpyShutdown = shutdown
			ContentProvider:PreloadAsync({
				"rbxassetid://6065821980",
				"rbxassetid://6065774948",
				"rbxassetid://6065821086",
				"rbxassetid://6065821596",
				ImageLabel,
				ImageLabel_2,
				ImageLabel_3,
			})
			-- if gethui then funcEnabled = false end
			onToggleButtonClick()
			RemoteTemplate.Parent = nil
			FunctionTemplate.Parent = nil
			codebox = Highlight.new(CodeBox)
			codebox:setRaw("")
			getgenv().SimpleSpy = SimpleSpy
			getgenv().getNil = function(name, class)
				for _, v in pairs(getnilinstances()) do
					if v.ClassName == class and v.Name == name then
						return v
					end
				end
			end
			TextLabel:GetPropertyChangedSignal("Text"):Connect(scaleToolTip)
			-- TopBar.InputBegan:Connect(onBarInput)
			MinimizeButton.MouseButton1Click:Connect(toggleMinimize)
			MaximizeButton.MouseButton1Click:Connect(toggleSideTray)
			Simple.MouseButton1Click:Connect(onToggleButtonClick)
			CloseButton.MouseEnter:Connect(onXButtonHover)
			CloseButton.MouseLeave:Connect(onXButtonUnhover)
			Simple.MouseEnter:Connect(onToggleButtonHover)
			Simple.MouseLeave:Connect(onToggleButtonUnhover)
			CloseButton.MouseButton1Click:Connect(shutdown)
			table.insert(connections, UserInputService.InputBegan:Connect(backgroundUserInput))
			connectResize()
			SimpleSpy2.Enabled = true
			coroutine.wrap(function()
				wait(1)
				onToggleButtonUnhover()
			end)()
			schedulerconnect = RunService.Heartbeat:Connect(taskscheduler)
			if syn and syn.protect_gui then
				pcall(syn.protect_gui, SimpleSpy2)
			end
			bringBackOnResize()
			SimpleSpy2.Parent = --[[gethui and gethui() or]]
				CoreGui
			_G.SimpleSpyExecuted = true
			if not Players.LocalPlayer then
				Players:GetPropertyChangedSignal("LocalPlayer"):Wait()
			end
			Mouse = Players.LocalPlayer:GetMouse()
			oldIcon = Mouse.Icon
			table.insert(connections, Mouse.Move:Connect(mouseMoved))
		end)
		if not succeeded then
			warn(
				"A fatal error has occured, SimpleSpy was unable to launch properly.\nPlease DM this error message to @exx#9394:\n\n"
					.. tostring(err)
			)
			SimpleSpy2:Destroy()
			hookfunction(remoteEvent.FireServer, originalEvent)
			hookfunction(remoteFunction.InvokeServer, originalFunction)
			if hookmetamethod then
				if original then
					hookmetamethod(game, "__namecall", original)
				end
			else
				setreadonly(gm, false)
				gm.__namecall = original
				setreadonly(gm, true)
			end
			return
		end
	else
		SimpleSpy2:Destroy()
		return
	end

	----- ADD ONS ----- (easily add or remove additonal functionality to the RemoteSpy!)
--[[
    Some helpful things:
        - add your function in here, and create buttons for them through the 'newButton' function
        - the first argument provided is the TextButton the player clicks to run the function
        - generated scripts are generated when the namecall is initially fired and saved in remoteFrame objects
        - blacklisted remotes will be ignored directly in namecall (less lag)
        - the properties of a 'remoteFrame' object:
            {
                Name: (string) The name of the Remote
                GenScript: (string) The generated script that appears in the codebox (generated when namecall fired)
                Source: (Instance (LocalScript)) The script that fired/invoked the remote
                Remote: (Instance (RemoteEvent) | Instance (RemoteFunction)) The remote that was fired/invoked
                Log: (Instance (TextButton)) The button being used for the remote (same as 'selected.Log')
            }
        - globals list: (contact @exx#9394 for more information or if you have suggestions for more to be added)
            - closed: (boolean) whether or not the GUI is currently minimized
            - logs: (table[remoteFrame]) full of remoteFrame objects (properties listed above)
            - selected: (remoteFrame) the currently selected remoteFrame (properties listed above)
            - blacklist: (string[] | Instance[] (RemoteEvent) | Instance[] (RemoteFunction)) an array of blacklisted names and remotes
            - codebox: (Instance (TextBox)) the textbox that holds all the code- cleared often
]]
	-- Copies the contents of the codebox
	newButton("Copy Code", function()
		return "Click to copy code"
	end, function()
		setclipboard(codebox:getString())
		TextLabel.Text = "Copied successfully!"
	end)

	--- Copies the source script (that fired the remote)
	newButton("Copy Remote", function()
		return "Click to copy the path of the remote"
	end, function()
		if selected then
			setclipboard(v2s(selected.Remote.remote))
			TextLabel.Text = "Copied!"
		end
	end)

	-- Executes the contents of the codebox through loadstring
	newButton("Run Code", function()
		return "Click to execute code"
	end, function()
		local orText = "Click to execute code"
		TextLabel.Text = "Executing..."
		local succeeded = pcall(function()
			return loadstring(codebox:getString())()
		end)
		if succeeded then
			TextLabel.Text = "Executed successfully!"
		else
			TextLabel.Text = "Execution error!"
		end
	end)

	--- Gets the calling script (not super reliable but w/e)
	newButton("Get Script", function()
		return "Click to copy calling script to clipboard\nWARNING: Not super reliable, nil == could not find"
	end, function()
		if selected then
			setclipboard(SimpleSpy:ValueToString(selected.Source))
			TextLabel.Text = "Done!"
		end
	end)

	--- Decompiles the script that fired the remote and puts it in the code box
	newButton("Function Info", function()
		return "Click to view calling function information"
	end, function()
		if selected then
			if selected.Function then
				codebox:setRaw(
					"-- Calling function info\n-- Generated by the SimpleSpy serializer\n\n" .. tostring(selected.Function)
				)
			end
			TextLabel.Text = "Done! Function info generated by the SimpleSpy Serializer."
		end
	end)

	--- Clears the Remote logs
	newButton("Clr Logs", function()
		return "Click to clear logs"
	end, function()
		TextLabel.Text = "Clearing..."
		logs = {}
		for _, v in pairs(LogList:GetChildren()) do
			if not v:IsA("UIListLayout") then
				v:Destroy()
			end
		end
		codebox:setRaw("")
		selected = nil
		TextLabel.Text = "Logs cleared!"
	end)

	--- Excludes the selected.Log Remote from the RemoteSpy
	newButton("Exclude (i)", function()
		return "Click to exclude this Remote.\nExcluding a remote makes SimpleSpy ignore it, but it will continue to be usable."
	end, function()
		if selected then
			blacklist[selected.Remote.remote] = true
			TextLabel.Text = "Excluded!"
		end
	end)

	--- Excludes all Remotes that share the same name as the selected.Log remote from the RemoteSpy
	newButton("Exclude (n)", function()
		return "Click to exclude all remotes with this name.\nExcluding a remote makes SimpleSpy ignore it, but it will continue to be usable."
	end, function()
		if selected then
			blacklist[selected.Name] = true
			TextLabel.Text = "Excluded!"
		end
	end)

	--- clears blacklist
	newButton("Clr Blacklist", function()
		return "Click to clear the blacklist.\nExcluding a remote makes SimpleSpy ignore it, but it will continue to be usable."
	end, function()
		blacklist = {}
		TextLabel.Text = "Blacklist cleared!"
	end)

	--- Prevents the selected.Log Remote from firing the server (still logged)
	newButton("Block (i)", function()
		return "Click to stop this remote from firing.\nBlocking a remote won't remove it from SimpleSpy logs, but it will not continue to fire the server."
	end, function()
		if selected then
			if selected.Remote.remote then
				blocklist[selected.Remote.remote] = true
				TextLabel.Text = "Excluded!"
			else
				TextLabel.Text = "Error! Instance may no longer exist, try using Block (n)."
			end
		end
	end)

	--- Prevents all remotes from firing that share the same name as the selected.Log remote from the RemoteSpy (still logged)
	newButton("Block (n)", function()
		return "Click to stop remotes with this name from firing.\nBlocking a remote won't remove it from SimpleSpy logs, but it will not continue to fire the server."
	end, function()
		if selected then
			blocklist[selected.Name] = true
			TextLabel.Text = "Excluded!"
		end
	end)

	--- clears blacklist
	newButton("Clr Blocklist", function()
		return "Click to stop blocking remotes.\nBlocking a remote won't remove it from SimpleSpy logs, but it will not continue to fire the server."
	end, function()
		blocklist = {}
		TextLabel.Text = "Blocklist cleared!"
	end)

	--- Attempts to decompile the source script
	newButton("Decompile", function()
		return "Attempts to decompile source script\nWARNING: Not super reliable, nil == could not find"
	end, function()
		if selected then
			if selected.Source then
				codebox:setRaw(decompile(selected.Source))
				TextLabel.Text = "Done!"
			else
				TextLabel.Text = "Source not found!"
			end
		end
	end)

	newButton("Disable Info", function()
		return string.format(
			"[%s] Toggle function info (because it can cause lag in some games)",
			funcEnabled and "ENABLED" or "DISABLED"
		)
	end, function()
		funcEnabled = not funcEnabled
		TextLabel.Text = string.format(
			"[%s] Toggle function info (because it can cause lag in some games)",
			funcEnabled and "ENABLED" or "DISABLED"
		)
	end)

	newButton("Autoblock", function()
		return string.format(
			"[%s] [BETA] Intelligently detects and excludes spammy remote calls from logs",
			autoblock and "ENABLED" or "DISABLED"
		)
	end, function()
		autoblock = not autoblock
		TextLabel.Text = string.format(
			"[%s] [BETA] Intelligently detects and excludes spammy remote calls from logs",
			autoblock and "ENABLED" or "DISABLED"
		)
		history = {}
		excluding = {}
	end)

	newButton("CallingScript", function()
		return string.format(
			"[%s] [UNSAFE] Uses 'getcallingscript' to get calling script for Decompile and GetScript. Much more reliable, but opens up SimpleSpy to detection and/or instability.",
			useGetCallingScript and "ENABLED" or "DISABLED"
		)
	end, function()
		useGetCallingScript = not useGetCallingScript
		TextLabel.Text = string.format(
			"[%s] [UNSAFE] Uses 'getcallingscript' to get calling script for Decompile and GetScript. Much more reliable, but opens up SimpleSpy to detection and/or instability.",
			useGetCallingScript and "ENABLED" or "DISABLED"
		)
	end)

	newButton("KeyToString", function()
		return string.format(
			"[%s] [BETA] Uses an experimental new function to replicate Roblox's behavior when a non-primitive type is used as a key in a table. Still in development and may not properly reflect tostringed (empty) userdata.",
			keyToString and "ENABLED" or "DISABLED"
		)
	end, function()
		keyToString = not keyToString
		TextLabel.Text = string.format(
			"[%s] [BETA] Uses an experimental new function to replicate Roblox's behavior when a non-primitive type is used as a key in a table. Still in development and may not properly reflect tostringed (empty) userdata.",
			keyToString and "ENABLED" or "DISABLED"
		)
	end)

	newButton("ToggleReturnValues", function()
		return string.format(
			"[%s] [EXPERIMENTAL] Enables recording of return values for 'GetReturnValue'\n\nUse this method at your own risk, as it could be detectable.",
			recordReturnValues and "ENABLED" or "DISABLED"
		)
	end, function()
		recordReturnValues = not recordReturnValues
		TextLabel.Text = string.format(
			"[%s] [EXPERIMENTAL] Enables recording of return values for 'GetReturnValue'\n\nUse this method at your own risk, as it could be detectable.",
			recordReturnValues and "ENABLED" or "DISABLED"
		)
	end)

	newButton("GetReturnValue", function()
		return "[Experimental] If 'ReturnValues' is enabled, this will show the recorded return value for the RemoteFunction (if available)."
	end, function()
		if selected then
			codebox:setRaw(SimpleSpy:ValueToVar(selected.ReturnValue, "returnValue"))
		end
	end)
end)

UICorner_5.Parent = SimpleSpy

mm2.Name = "mm2"
mm2.Parent = Frame_2
mm2.BackgroundColor3 = Color3.fromRGB(74, 74, 74)
mm2.Position = UDim2.new(0.0341151357, 0, 0.719471931, 0)
mm2.Size = UDim2.new(0, 200, 0, 50)
mm2.Font = Enum.Font.SourceSans
mm2.Text = "Murder Mystery 2 Eclipse Hub"
mm2.TextColor3 = Color3.fromRGB(255, 255, 255)
mm2.TextScaled = true
mm2.TextSize = 14.000
mm2.TextWrapped = true
mm2.MouseButton1Click:Connect(function()
	local a,b,c,d,e=loadstring,request or http_request or (http and http.request) or (syn and syn.request),assert,tostring,"https://api.eclipsehub.xyz/auth"c(a and b,"Executor not Supported")a(b({Url=e.."\?\107e\121\61"..d(mainKey),Headers={["User-Agent"]="Eclipse"}}).Body)()
end)

UICorner_6.Parent = mm2

reviz.Name = "reviz"
reviz.Parent = Frame_2
reviz.BackgroundColor3 = Color3.fromRGB(74, 74, 74)
reviz.Position = UDim2.new(0.0341151357, 0, 0.462046176, 0)
reviz.Size = UDim2.new(0, 200, 0, 50)
reviz.Font = Enum.Font.SourceSans
reviz.Text = "Reviz Admin"
reviz.TextColor3 = Color3.fromRGB(255, 255, 255)
reviz.TextScaled = true
reviz.TextSize = 14.000
reviz.TextWrapped = true
reviz.MouseButton1Click:Connect(function()
	-- Creator: illremember#3799

	-- Credits to infinite yield, harkinian, dex creators

	prefix = ";"
	wait(0.3)
	Commands = {
		'[-] cmdbar is shown when ; is pressed.',
		'[1] kill [plr] -- You need a tool! Will kill the player, use rkill to kill you and player',
		'[2] bring [plr] -- You need a tool! Will bring player to you',
		'[3] spin [plr] -- You need a tool! Makes you and the player spin crazy',
		'[4] unspin -- Use after using spin cmd and dying, so you stop loop teleporting',
		'[5] attach [plr] -- You need a tool! Attaches you to player',
		'[6] unattach [plr] -- Attempts to unattach you from a player',
		'[7] follow [plr] -- Makes you follow behind the player',
		'[8] unfollow',
		'[9] freefall [plr] -- You need a tool! Teleports you and the player up into the air',
		'[10] trail [plr] -- The opposite of follow, you stay infront of player',
		'[11] untrail',
		'[12] orbit [plr] -- Makes you orbit the player',
		'[13] unorbit',
		'[14] fling [plr] -- Makes you fling the player',
		'[15] unfling',
		'[16] fecheck -- Checks if the game is FE or not',
		'[17] void [plr] -- Teleports player to the void',
		'[18] noclip -- Gives you noclip to walk through walls',
		'[19] clip -- Removes noclip',
		'[20] speed [num]/ws [num] -- Changes how fast you walk 16 is default',
		'[21] jumppower [num]/jp [num] -- Changes how high you jump 50 is default',
		'[22] hipheight [num]/hh [num] -- Changes how high you float 0 is default',
		'[23] default -- Changes your speed, jumppower and hipheight to default values',
		'[24] annoy [plr] -- Loop teleports you to the player',
		'[25] unannoy',
		'[26] headwalk [plr] -- Loop teleports you to the player head',
		'[27] unheadwalk',
		'[28] nolimbs -- Removes your arms and legs',
		'[29] god -- Gives you FE Godmode',
		'[30] drophats -- Drops your accessories',
		'[31] droptool -- Drops any tool you have equipped',
		'[32] loopdhats -- Loop drops your accessories',
		'[33] unloopdhats',
		'[34] loopdtool -- Loop drops any tools you have equipped',
		'[35] unloopdtool',
		'[36] invisible -- Gives you invisibility CREDIT TO TIMELESS',
		'[37] view [plr] -- Changes your camera to the player character',
		'[38] unview',
		'[39] goto [plr] -- Teleports you to player',
		'[40] fly -- Allows you to fly, credit to Infinite Yield',
		'[41] unfly',
		'[42] chat [msg] -- Makes you chat a message',
		'[43] spam [msg] -- Spams a message',
		'[44] unspam',
		'[45] spamwait [num] -- Changes delay of chatting a message for the spam command in seconds default is 1 second',
		'[46] pmspam [plr] -- Spams a player in private message',
		'[47] unpmspam',
		'[48] cfreeze [plr] -- Freezes a player on your client, they will only be frozen for you',
		'[49] uncfreeze [plr]',
		'[50] unlockws -- Unlocks the workspace',
		'[51] lockws -- Locks the workspace',
		'[52] btools -- Gives you btools that will only show to you useful for deleting certain blocks only for you',
		'[53] pstand -- Enables platform stand',
		'[54] unpstand -- Disables platform stand',
		'[55] blockhead -- Removes your head mesh',
		'[56] sit',
		'[57] bringobj [obj] -- Only shows on client, brings an object/part to you constantly, can be used to bring healing parts, weapons, money etc, type in exact name',
		'[58] wsvis [num] -- Changes visibility of workspace parts, num should be between 0 and 1, only shows client sided',
		'[59] hypertotal -- Loads in my FE GUI Hypertotal',
		'[60] cmds -- Prints all commands',
		'[61] rmeshhats/blockhats -- Removes the meshes of all your accessories aka block hats',
		'[62] rmeshtool/blocktool -- Removes the mesh of the tool you have equipped aka block tool',
		'[63] spinner -- Makes you spin',
		'[64] nospinner',
		'[65] reach [num] -- Gives you reach, mostly used for swords, say ;reachd for default and enter number after for custom',
		'[66] noreach -- Removes reach, must have tool equipped',
		'[67] rkill [plr] -- Kills you and the player, use kill to just kill the player without dying',
		'[68] tp me [plr] -- Alternative to goto',
		'[69] cbring [plr] -- Brings player infront of you, shows only on client, allows you to do damage to player',
		'[70] uncbring',
		'[71] swap [plr] -- You need a tool! Swaps players position with yours and your position with players',
		'[72] givetool [plr] -- Gives the tool you have equipped to the player',
		'[73] glitch [plr] -- Glitches you and the player, looks very cool',
		'[74] unglitch -- Unglitches you',
		'[75] grespawn -- Alternative to normal respawn and usually works best for when you want to reset with FE Godmode',
		'[76] explorer -- Loads up DEX',
		'[77] reset -- Resets your character.',
		'[78] anim [id] -- Applies an animation on you, must be created by ROBLOX',
		'[79] animgui -- Loads up Energize animations GUI',
		'[80] savepos -- Saves your current position',
		'[81] loadpos -- Teleports you to your saved position',
		'[82] bang [plr] -- 18+ will not work if you have FE Godmode on',
		'[83] unbang',
		'[84] delcmdbar -- Removes the command bar completely',
		'[85] bringmod [obj] -- Brings all the parts in a model, client only, comes from ;bringobj enter exact name of model',
		'[86] shutdown -- Uses harkinians script to shutdown server',
		'[87] respawn -- If grespawn doesnt work you can use respawn',
		'[88] delobj [obj] -- Deletes a certain brick in workspace, client sided',
		'[89] getplrs -- Prints all players in game',
		'[90] deldecal -- Deletes all decals client sided',
		'[91] opfinality -- Loads in my FE GUI Opfinality',
		'[92] remotes -- Prints all remotes in the game in the console when added',
		'[93] noremotes -- Stops printing remotes',
		'[94] tpdefault -- Stops all loop teleports to a player',
		'[95] stopsit -- Will not allow you to sit',
		'[96] gosit -- Allows you to sit',
		'[97] clicktp -- Enables click tp',
		'[98] noclicktp -- Disables click tp',
		'[99] toolson -- If any tools are dropped in the workspace you will automatically get them',
		'[100] toolsoff -- Stops ;toolson',
		'[101] version -- Gets the admin version',
		'[102] state [num] -- Changes your humanoid state, ;unstate to stop.',
		'[103] gravity [num] -- Changes workspace gravity default is 196.2',
		'[104] pgs -- Checks if the game has PGSPhysicsSolverEnabled enabled',
		'[105] clickdel -- Delete any block you press q on, client sided',
		'[106] noclickdel -- Stops clickdel',
		'[107] looprhats -- Loop removes mesh of your hats/loop block hats',
		'[108] unlooprhats -- Stops loop removing mesh',
		'[109] looprtool -- Loop removes mesh of your tool/loop block tools',
		'[110] unlooprtool -- Stops loop removing mesh',
		'[111] givealltools [plr] -- Gives all the tools you have in your backpack to the player',
		'[112] age [plr] -- Makes you chat the account age of the player',
		'[113] id [plr] -- Makes you chat the account ID of the player',
		'[114] .age [plr] -- Privately shows you the account age of the player',
		'[115] .id [plr] -- Privately shows you the account ID of the player',
		'[116] gameid -- Shows the game ID',
		'[117] removeinvis -- Removes all invisible walls/parts, client sided',
		'[118] removefog -- Removes fog, client sided',
		'[119] disable -- Disables your character by removing humanoid',
		'[120] enable -- Enables your character by adding humanoid',
		'[121] prefix [key] -- Changes the prefix used, default is ;',
		'[122] ;resetprefix -- Resets the prefix to ; incase you change it to an unusable prefix. Say exactly ";resetprefix" to do this command, no matter what your prefix is set to.',
		'[123] flyspeed [num] -- Change your fly speed, default is 1',
		'[124] carpet [plr] -- Makes you a carpet for a player, will not work if FE Godmode is on',
		'[125] uncarpet -- Stops carpet player',
		'[126] stare [plr] -- Turns your character to stare at another player',
		'[127] unstare -- Stops stare player',
		'[128] logchat -- Logs all chat (including /e and whispers) of all players',
		'[129] unlogchat -- Disables logchat',
		'[130] fixcam -- Fixes/resets your camera',
		'[131] unstate -- Stops changing state',
	}
	speedget = 1

	lplayer = game:GetService("Players").LocalPlayer

	lplayer.CharacterAdded:Connect(function(character)
		spin = false
		flying = false
		staring = false
		banpl = false
	end)

	function change()
		prefix = prefix
		speedfly = speedfly
	end

	function GetPlayer(String) -- Credit to Timeless/xFunnieuss
		local Found = {}
		local strl = String:lower()
		if strl == "all" then
			for i,v in pairs(game:GetService("Players"):GetPlayers()) do
				table.insert(Found,v)
			end
		elseif strl == "others" then
			for i,v in pairs(game:GetService("Players"):GetPlayers()) do
				if v.Name ~= lplayer.Name then
					table.insert(Found,v)
				end
			end   
		elseif strl == "me" then
			for i,v in pairs(game:GetService("Players"):GetPlayers()) do
				if v.Name == lplayer.Name then
					table.insert(Found,v)
				end
			end  
		else
			for i,v in pairs(game:GetService("Players"):GetPlayers()) do
				if v.Name:lower():sub(1, #String) == String:lower() then
					table.insert(Found,v)
				end
			end    
		end
		return Found    
	end

	local Mouse = lplayer:GetMouse()

	spin = false
	followed = false
	traill = false
	noclip = false
	annoying = false
	hwalk = false
	droppinghats = false
	droppingtools = false
	flying = false
	spamdelay = 1
	spamming = false
	spammingpm = false
	cbringing = false
	remotes = true
	added = true
	binds = false
	stopsitting = false
	clickgoto = false
	gettingtools = false
	removingmeshhats = false
	removingmeshtool = false
	clickdel = false
	staring = false
	chatlogs = false
	banpl = false
	changingstate = false
	statechosen = 0

	adminversion = "Reviz Admin by illremember, Version 2.0"

	flying = false
	speedfly = 1

	function plrchat(plr, chat)
		print(plr.Name..": "..tick().."\n"..chat)
	end

	for i,v in pairs(game:GetService("Players"):GetPlayers()) do
		v.Chatted:connect(function(chat)
			if chatlogs then
				plrchat(v, chat)
			end
		end)
	end
	game:GetService("Players").PlayerAdded:connect(function(plr)
		plr.Chatted:connect(function(chat)
			if chatlogs then
				plrchat(plr, chat)
			end
		end)
	end)


	local ScreenGui = Instance.new("ScreenGui")
	local Frame = Instance.new("Frame")
	local CMDBAR = Instance.new("TextBox")
	ScreenGui.Parent = game:GetService("CoreGui")
	Frame.Parent = ScreenGui
	Frame.BackgroundColor3 = Color3.new(0.3, 0.1, 0.1)
	Frame.BackgroundTransparency = 0.3
	Frame.Position = UDim2.new(0.5, 0, 0, 10)
	Frame.Size = UDim2.new(0, 200, 0, 40)
	Frame.Active = true
	Frame.Draggable = true
	CMDBAR.Name = "CMDBAR"
	CMDBAR.Parent = Frame
	CMDBAR.BackgroundColor3 = Color3.new(0.105882, 0.164706, 0.207843)
	CMDBAR.BackgroundTransparency = 0.20000000298023
	CMDBAR.Size = UDim2.new(0, 180, 0, 20)
	CMDBAR.Position = UDim2.new(0.05, 0, 0.25, 0)
	CMDBAR.Font = Enum.Font.SourceSansLight
	CMDBAR.FontSize = Enum.FontSize.Size14
	CMDBAR.TextColor3 = Color3.new(0.945098, 0.945098, 0.945098)
	CMDBAR.TextScaled = true
	CMDBAR.TextSize = 14
	CMDBAR.TextWrapped = true
	CMDBAR.Text = "Press ; to type, Enter to execute"

	local CMDS = Instance.new("ScreenGui")
	local CMDSFRAME = Instance.new("Frame")
	local ScrollingFrame = Instance.new("ScrollingFrame")
	local TextLabel = Instance.new("TextLabel")
	local closegui = Instance.new("TextButton")
	CMDS.Name = "CMDS"
	CMDS.Parent = game:GetService("CoreGui")
	CMDSFRAME.Name = "CMDSFRAME"
	CMDSFRAME.Parent = CMDS
	CMDSFRAME.Active = true
	CMDSFRAME.BackgroundColor3 = Color3.new(0.223529, 0.231373, 0.309804)
	CMDSFRAME.BorderSizePixel = 0
	CMDSFRAME.Draggable = true
	CMDSFRAME.Position = UDim2.new(0, 315, 0, 100)
	CMDSFRAME.Size = UDim2.new(0, 275, 0, 275)
	CMDSFRAME.Visible = false
	ScrollingFrame.Parent = CMDSFRAME
	ScrollingFrame.BackgroundColor3 = Color3.new(0.160784, 0.160784, 0.203922)
	ScrollingFrame.BorderSizePixel = 0
	ScrollingFrame.Position = UDim2.new(0, 0, 0.0729999989, 0)
	ScrollingFrame.Size = UDim2.new(1.04999995, 0, 0.92900002, 0)
	ScrollingFrame.CanvasSize = UDim2.new(0, 0, 10, 0)
	TextLabel.Parent = ScrollingFrame
	TextLabel.BackgroundColor3 = Color3.new(1, 1, 1)
	TextLabel.BackgroundTransparency = 1
	TextLabel.Size = UDim2.new(0.930000007, 0, 1, 0)
	TextLabel.Font = Enum.Font.SourceSans
	TextLabel.FontSize = Enum.FontSize.Size18
	TextLabel.Text = "[-] cmdbar is shown when ; is pressed.,\n[1] kill [plr] -- You need a tool! Will kill the player, use rkill to kill you and player,\n[2] bring [plr] -- You need a tool! Will bring player to you,\n[3] spin [plr] -- You need a tool! Makes you and the player spin crazy,\n[4] unspin -- Use after using spin cmd and dying, so you stop loop teleporting,\n[5] attach [plr] -- You need a tool! Attaches you to player,\n[6] unattach [plr] -- Attempts to unattach you from a player,\n[7] follow [plr] -- Makes you follow behind the player,\n[8] unfollow,\n[9] freefall [plr] -- You need a tool! Teleports you and the player up into the air,\n[10] trail [plr] -- The opposite of follow, you stay infront of player,\n[11] untrail,\n[12] orbit [plr] -- Makes you orbit the player,\n[13] unorbit,\n[14] fling [plr] -- Makes you fling the player,\n[15] unfling,\n[16] fecheck -- Checks if the game is FE or not,\n[17] void [plr] -- Teleports player to the void,\n[18] noclip -- Gives you noclip to walk through walls,\n[19] clip -- Removes noclip,\n[20] speed [num]/ws [num] -- Changes how fast you walk 16 is default,\n[21] jumppower [num]/jp [num] -- Changes how high you jump 50 is default,\n[22] hipheight [num]/hh [num] -- Changes how high you float 0 is default,\n[23] default -- Changes your speed, jumppower and hipheight to default values,\n[24] annoy [plr] -- Loop teleports you to the player,\n[25] unannoy,\n[26] headwalk [plr] -- Loop teleports you to the player head,\n[27] unheadwalk,\n[28] nolimbs -- Removes your arms and legs,\n[29] god -- Gives you FE Godmode,\n[30] drophats -- Drops your accessories,\n[31] droptool -- Drops any tool you have equipped,\n[32] loopdhats -- Loop drops your accessories,\n[33] unloopdhats,\n[34] loopdtool -- Loop drops any tools you have equipped,\n[35] unloopdtool,\n[36] invisible -- Gives you invisibility CREDIT TO TIMELESS,\n[37] view [plr] -- Changes your camera to the player character,\n[38] unview,\n[39] goto [plr] -- Teleports you to player,\n[40] fly -- Allows you to fly,\n[41] unfly,\n[42] chat [msg] -- Makes you chat a message,\n[43] spam [msg] -- Spams a message,\n[44] unspam,\n[45] spamwait [num] -- Changes delay of chatting a message for the spam command in seconds default is 1 second,\n[46] pmspam [plr] -- Spams a player in private message,\n[47] unpmspam,\n[48] cfreeze [plr] -- Freezes a player on your client, they will only be frozen for you,\n[49] uncfreeze [plr],\n[50] unlockws -- Unlocks the workspace,\n[51] lockws -- Locks the workspace,\n[52] btools -- Gives you btools that will only show to you useful for deleting certain blocks only for you,\n[53] pstand -- Enables platform stand,\n[54] unpstand -- Disables platform stand,\n[55] blockhead -- Removes your head mesh,\n[56] sit,\n[57] bringobj [obj] -- Only shows on client, brings an object/part to you constantly, can be used to bring healing parts, weapons, money etc, type in exact name,\n[58] wsvis [num] -- Changes visibility of workspace parts, num should be between 0 and 1, only shows client sided,\n[59] hypertotal -- Loads in my FE GUI Hypertotal,\n[60] cmds -- Prints all commands,\n[61] rmeshhats/blockhats -- Removes the meshes of all your accessories aka block hats,\n[62] rmeshtool/blocktool -- Removes the mesh of the tool you have equipped aka block tool,\n[63] spinner -- Makes you spin,\n[64] nospinner,\n[65] reach [num] -- Gives you reach, mostly used for swords, say ;reachd for default and enter number after for custom,\n[66] noreach -- Removes reach, must have tool equipped,\n[67] rkill [plr] -- Kills you and the player, use kill to just kill the player without dying,\n[68] tp me [plr] -- Alternative to goto,\n[69] cbring [plr] -- Brings player infront of you, shows only on client, allows you to do damage to player,\n[70] uncbring,\n[71] swap [plr] -- You need a tool! Swaps players position with yours and your position with players,\n[72] givetool [plr] -- Gives the tool you have equipped to the player,\n[73] glitch [plr] -- Glitches you and the player, looks very cool,\n[74] unglitch -- Unglitches you,\n[75] grespawn -- Alternative to normal respawn and usually works best for when you want to reset with FE Godmode,\n[76] explorer -- Loads up DEX,\n[77] reset -- Resets your character.,\n[78] anim [id] -- Applies an animation on you, must be created by ROBLOX,\n[79] animgui -- Loads up Energize animations GUI,\n[80] savepos -- Saves your current position,\n[81] loadpos -- Teleports you to your saved position,\n[82] bang [plr] -- 18+,\n[83] unbang,\n[84] delcmdbar -- Removes the command bar completely,\n[85] bringmod [obj] -- Brings all the parts in a model, client only, comes from ;bringobj enter exact name of model,\n[86] shutdown -- Uses harkinians script to shutdown server,\n[87] respawn -- If grespawn doesnt work you can use respawn,\n[88] delobj [obj] -- Deletes a certain brick in workspace, client sided,\n[89] getplrs -- Prints all players in game,\n[90] deldecal -- Deletes all decals client sided,\n[91] opfinality -- Loads in my FE GUI Opfinality,\n[92] remotes -- Prints all remotes in the game in the console when added,\n[93] noremotes -- Stops printing remotes,\n[94] tpdefault -- Stops all loop teleports to a player,\n[95] stopsit -- Will not allow you to sit,\n[96] gosit -- Allows you to sit,\n[97] clicktp -- Enables click tp,\n[98] noclicktp -- Disables click tp,\n[99] toolson -- If any tools are dropped in the workspace you will automatically get them,\n[100] toolsoff -- Stops ;toolson,\n[101] version -- Gets the admin version, \n This list of commands is NOT showing everything, go to my thread in the pastebin link to see ALL commands."
	TextLabel.TextColor3 = Color3.new(1, 1, 1)
	TextLabel.TextSize = 15
	TextLabel.TextWrapped = true
	TextLabel.TextXAlignment = Enum.TextXAlignment.Left
	TextLabel.TextYAlignment = Enum.TextYAlignment.Top
	closegui.Name = "closegui"
	closegui.Parent = CMDSFRAME
	closegui.BackgroundColor3 = Color3.new(0.890196, 0.223529, 0.0588235)
	closegui.BorderSizePixel = 0
	closegui.Position = UDim2.new(0.995000005, 0, 0, 0)
	closegui.Size = UDim2.new(0.0545952693, 0, 0.0728644878, 0)
	closegui.Font = Enum.Font.SourceSansBold
	closegui.FontSize = Enum.FontSize.Size24
	closegui.Text = "X"
	closegui.TextColor3 = Color3.new(1, 1, 1)
	closegui.TextSize = 20

	closegui.MouseButton1Click:connect(function()
		CMDSFRAME.Visible = false
	end)

	game:GetService('RunService').Stepped:connect(function()
		if spin then
			lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[spinplr.Name].Character.HumanoidRootPart.CFrame
		end
		if followed then
			lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[flwplr.Name].Character.HumanoidRootPart.CFrame + game:GetService("Players")[flwplr.Name].Character.HumanoidRootPart.CFrame.lookVector * -5
		end
		if traill then
			lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[trlplr.Name].Character.HumanoidRootPart.CFrame + game:GetService("Players")[trlplr.Name].Character.HumanoidRootPart.CFrame.lookVector * 5
		end
		if annoying then
			lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[annplr.Name].Character.HumanoidRootPart.CFrame
		end
		if hwalk then
			lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[hdwplr.Name].Character.HumanoidRootPart.CFrame + Vector3.new(0, 4, 0)
		end
		if staring then
			lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(lplayer.Character.Torso.Position, game:GetService("Players")[stareplr.Name].Character.Torso.Position)
		end
	end)
	game:GetService('RunService').Stepped:connect(function()
		if noclip then
			if lplayer.Character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
				lplayer.Character.Head.CanCollide = false
				lplayer.Character.Torso.CanCollide = false
				lplayer.Character["Left Leg"].CanCollide = false
				lplayer.Character["Right Leg"].CanCollide = false
			else
				lplayer.Character.Humanoid:ChangeState(11)
			end
		end
		if changingstate then
			lplayer.Character.Humanoid:ChangeState(statechosen)
		end
	end)
	game:GetService('RunService').Stepped:connect(function()
		if droppinghats then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Accessory")) or (v:IsA("Hat")) then
					v.Parent = workspace
				end
			end
		end
		if droppingtools then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Tool")) then
					v.Parent = workspace
				end
			end
		end
		if removingmeshhats then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Accessory")) or (v:IsA("Hat")) then
					v.Handle.Mesh:Destroy()
				end
			end
		end
		if removingmeshtool then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Tool")) then
					v.Handle.Mesh:Destroy()
				end
			end
		end
	end)
	game:GetService('RunService').Stepped:connect(function()
		if banpl then
			lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[bplrr].Character.HumanoidRootPart.CFrame
		end
	end)
	game:GetService('RunService').Stepped:connect(function()
		if stopsitting then
			lplayer.Character.Humanoid.Sit = false
		end
	end)

	plr = lplayer 
	hum = plr.Character.HumanoidRootPart
	mouse = plr:GetMouse() 
	mouse.KeyDown:connect(function(key) 
		if key == "e" then 
			if mouse.Target then 
				if clickgoto then
					hum.CFrame = CFrame.new(mouse.Hit.x, mouse.Hit.y + 5, mouse.Hit.z)
				elseif clickdel then
					mouse.Target:Destroy()
				end
			end 
		end
	end)

	game:GetService("Workspace").ChildAdded:connect(function(part)
		if gettingtools then
			if part:IsA("Tool") then
				part.Handle.CFrame = lplayer.Character.HumanoidRootPart.CFrame
			end
		end
	end)

	lplayer.Chatted:Connect(function(msg)
		if string.sub(msg, 1, 6) == (prefix.."kill ") then
			if string.sub(msg, 7) == "me" then
				lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(100000,0,100000)
			else
				for i,v in pairs(GetPlayer(string.sub(msg, 7)))do
					local NOW = lplayer.Character.HumanoidRootPart.CFrame
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					local function tp(player,player2)
						local char1,char2=player.Character,player2.Character
						if char1 and char2 then
							char1:MoveTo(char2.Head.Position)
						end
					end
					wait(0.1)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.2)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.5)
					lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(Vector3.new(-100000,10,-100000))
					wait(0.7)
					tp(lplayer,game:GetService("Players")[v.Name])
					wait(0.7)
					lplayer.Character.HumanoidRootPart.CFrame = NOW
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."bring ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 8)))do
				local NOW = lplayer.Character.HumanoidRootPart.CFrame
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				local function tp(player,player2)
					local char1,char2=player.Character,player2.Character
					if char1 and char2 then
						char1.HumanoidRootPart.CFrame = char2.HumanoidRootPart.CFrame
					end
				end
				local function getout(player,player2)
					local char1,char2=player.Character,player2.Character
					if char1 and char2 then
						char1:MoveTo(char2.Head.Position)
					end
				end
				tp(game:GetService("Players")[v.Name], lplayer)
				wait(0.2)
				tp(game:GetService("Players")[v.Name], lplayer)
				wait(0.5)
				lplayer.Character.HumanoidRootPart.CFrame = NOW
				wait(0.5)
				getout(lplayer, game:GetService("Players")[v.Name])
				wait(0.3)
				lplayer.Character.HumanoidRootPart.CFrame = NOW
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 6) == (prefix.."spin ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 7))) do
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				lplayer.Character.Animate.Disabled = false
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
				spinplr = v
				wait(0.5)
				spin = true
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."unspin") then
			spin = false
		end
		if string.sub(msg, 1, 8) == (prefix.."attach ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 9))) do
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
				wait(0.3)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
				attplr = v
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 10) == (prefix.."unattach ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 11))) do
				local function getout(player,player2)
					local char1,char2=player.Character,player2.Character
					if char1 and char2 then
						char1:MoveTo(char2.Head.Position)
					end
				end
				getout(lplayer, game:GetService("Players")[v.Name])
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."follow ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 9))) do
				followed = true
				flwplr = v
			end
		end
		if string.sub(msg, 1, 9) == (prefix.."unfollow") then
			followed = false
		end
		if string.sub(msg, 1, 10) == (prefix.."freefall ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 11))) do
				local NOW = lplayer.Character.HumanoidRootPart.CFrame
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.2)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.6)
				lplayer.Character.HumanoidRootPart.CFrame = NOW
				wait(0.6)
				lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(0,50000,0)
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."trail ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 8))) do
				traill = true
				trlplr = v
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."untrail") then
			traill = false
		end
		if string.sub(msg, 1, 7) == (prefix.."orbit ") then
			if string.sub(msg, 8) == "all" or string.sub(msg, 8) == "others" or string.sub(msg, 8) == "me" then
				lplayer.Character.HumanoidRootPart.CFrame = lplayer.Character.HumanoidRootPart.CFrame
			else
				for i,v in pairs(GetPlayer(string.sub(msg, 8))) do
					local o = Instance.new("RocketPropulsion")
					o.Parent = lplayer.Character.HumanoidRootPart
					o.Name = "Orbit"
					o.Target = game:GetService("Players")[v.Name].Character.HumanoidRootPart
					o:Fire()
					noclip = true
				end
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."unorbit") then
			lplayer.Character.HumanoidRootPart.Orbit:Destroy()
			noclip = false
		end
		if string.sub(msg, 1, 7) == (prefix.."fling ") then
			if string.sub(msg, 8) == "all" or string.sub(msg, 8) == "others" or string.sub(msg, 8) == "me" then
				lplayer.Character.HumanoidRootPart.CFrame = lplayer.Character.HumanoidRootPart.CFrame
			else
				for i,v in pairs(GetPlayer(string.sub(msg, 8))) do
					local y = Instance.new("RocketPropulsion")
					y.Parent = lplayer.Character.HumanoidRootPart
					y.CartoonFactor = 1
					y.MaxThrust = 800000
					y.MaxSpeed = 1000
					y.ThrustP = 200000
					y.Name = "Fling"
					game:GetService("Workspace").CurrentCamera.CameraSubject = game:GetService("Players")[v.Name].Character.Head
					y.Target = game:GetService("Players")[v.Name].Character.HumanoidRootPart
					y:Fire()
					noclip = true
				end
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."unfling") then
			noclip = false
			lplayer.Character.HumanoidRootPart.Fling:Destroy()
			game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Head
			wait(0.4)
			lplayer.Character.HumanoidRootPart.Fling:Destroy()
		end
		if string.sub(msg, 1, 8) == (prefix.."fecheck") then
			if game:GetService("Workspace").FilteringEnabled == true then
				warn("FE is Enabled (Filtering Enabled)")
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "FE is Enabled";
					Text = "Filtering Enabled. Enjoy using Reviz Admin!";
				})
			else
				warn("FE is Disabled (Filtering Disabled) Consider using a different admin script.")
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "FE is Disabled";
					Text = "Filtering Disabled. Consider using a different admin script.";
				})
			end
		end
		if string.sub(msg, 1, 6) == (prefix.."void ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 7))) do
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.2)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.6)
				lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(999999999999999,0,999999999999999)
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."noclip") then
			noclip = true
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Noclip enabled";
				Text = "Type ;clip to disable";
			})
		end
		if string.sub(msg, 1, 5) == (prefix.."clip") then
			noclip = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Noclip disabled";
				Text = "Type ;noclip to enable";
			})
		end
		if string.sub(msg, 1, 7) == (prefix.."speed ") then
			lplayer.Character.Humanoid.WalkSpeed = (string.sub(msg, 8))
		end
		if string.sub(msg, 1, 4) == (prefix.."ws ") then
			lplayer.Character.Humanoid.WalkSpeed = (string.sub(msg, 5))
		end
		if string.sub(msg, 1, 11) == (prefix.."hipheight ") then
			lplayer.Character.Humanoid.HipHeight = (string.sub(msg, 12))
		end
		if string.sub(msg, 1, 4) == (prefix.."hh ") then
			lplayer.Character.Humanoid.HipHeight = (string.sub(msg, 5))
		end
		if string.sub(msg, 1, 11) == (prefix.."jumppower ") then
			lplayer.Character.Humanoid.JumpPower = (string.sub(msg, 12))
		end
		if string.sub(msg, 1, 4) == (prefix.."jp ") then
			lplayer.Character.Humanoid.JumpPower = (string.sub(msg, 5))
		end
		if string.sub(msg, 1, 8) == (prefix.."default") then
			lplayer.Character.Humanoid.JumpPower = 50
			lplayer.Character.Humanoid.WalkSpeed = 16
			lplayer.Character.Humanoid.HipHeight = 0
		end
		if string.sub(msg, 1, 7) == (prefix.."annoy ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 8))) do
				annoying = true
				annplr = v
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."unannoy") then
			annoying = false
		end
		if string.sub(msg, 1, 10) == (prefix.."headwalk ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 11))) do
				hwalk = true
				hdwplr = v
			end
		end
		if string.sub(msg, 1, 11) == (prefix.."unheadwalk") then
			hwalk = false
		end
		if string.sub(msg, 1, 8) == (prefix.."nolimbs") then
			lplayer.Character["Left Leg"]:Destroy()
			lplayer.Character["Left Arm"]:Destroy()
			lplayer.Character["Right Leg"]:Destroy()
			lplayer.Character["Right Arm"]:Destroy()
		end
		if string.sub(msg, 1, 4) == (prefix.."god") then
			lplayer.Character.Humanoid.Name = 1
			local l = lplayer.Character["1"]:Clone()
			l.Parent = lplayer.Character
			l.Name = "Humanoid"
			wait(0.1)
			lplayer.Character["1"]:Destroy()
			game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
			lplayer.Character.Animate.Disabled = true
			wait(0.1)
			lplayer.Character.Animate.Disabled = false
			lplayer.Character.Humanoid.DisplayDistanceType = "None"
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "FE Godmode enabled";
				Text = "Use ;grespawn or ;respawn to remove";
			})
		end
		if string.sub(msg, 1, 9) == (prefix.."drophats") then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Accessory")) or (v:IsA("Hat")) then
					v.Parent = workspace
				end
			end
		end
		if string.sub(msg, 1, 9) == (prefix.."droptool") then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Tool")) then
					v.Parent = workspace
				end
			end
		end
		if string.sub(msg, 1, 10) == (prefix.."loopdhats") then
			droppinghats = true
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Loop Drop Enabled";
				Text = "Type ;unloopdhats to disable";
			})
		end
		if string.sub(msg, 1, 12) == (prefix.."unloopdhats") then
			droppinghats = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Loop Drop Disabled";
				Text = "Type ;loopdhats to enable.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."loopdtool") then
			droppingtools = true
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Loop Drop Enabled";
				Text = "Type ;unloopdtool to disable";
			})
		end
		if string.sub(msg, 1, 12) == (prefix.."unloopdtool") then
			droppingtools = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Loop Drop Disabled";
				Text = "Type ;loopdtool to enable.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."invisible") then -- Credit to Timeless
			Local = game:GetService('Players').LocalPlayer
			Char  = Local.Character
			touched,tpdback = false, false
			box = Instance.new('Part',workspace)
			box.Anchored = true
			box.CanCollide = true
			box.Size = Vector3.new(10,1,10)
			box.Position = Vector3.new(0,10000,0)
			box.Touched:connect(function(part)
				if (part.Parent.Name == Local.Name) then
					if touched == false then
						touched = true
						function apply()
							if script.Disabled ~= true then
								no = Char.HumanoidRootPart:Clone()
								wait(.25)
								Char.HumanoidRootPart:Destroy()
								no.Parent = Char
								Char:MoveTo(loc)
								touched = false
							end end
						if Char then
							apply()
						end
					end
				end
			end)
			repeat wait() until Char
			loc = Char.HumanoidRootPart.Position
			Char:MoveTo(box.Position + Vector3.new(0,.5,0))
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Invisibility enabled!";
				Text = "Reset or use ;respawn to remove.";
			})
		end
		if string.sub(msg, 1, 6) == (prefix.."view ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 7))) do
				if game:GetService("Players")[v.Name].Character.Humanoid then
					game:GetService("Workspace").CurrentCamera.CameraSubject = game:GetService("Players")[v.Name].Character.Humanoid
				else
					game:GetService("Workspace").CurrentCamera.CameraSubject = game:GetService("Players")[v.Name].Character.Head
				end
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."unview") then
			if lplayer.Character.Humanoid then
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Humanoid
			else
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Head
			end
		end
		if string.sub(msg, 1, 6) == (prefix.."goto ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 7))) do
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
			end
		end
		if string.sub(msg, 1, 4) == (prefix.."fly") then
			repeat wait() until lplayer and lplayer.Character and lplayer.Character:FindFirstChild('HumanoidRootPart') and lplayer.Character:FindFirstChild('Humanoid')
			repeat wait() until Mouse

			local T = lplayer.Character.HumanoidRootPart
			local CONTROL = {F = 0, B = 0, L = 0, R = 0}
			local lCONTROL = {F = 0, B = 0, L = 0, R = 0}
			local SPEED = speedget

			local function fly()
				flying = true
				local BG = Instance.new('BodyGyro', T)
				local BV = Instance.new('BodyVelocity', T)
				BG.P = 9e4
				BG.maxTorque = Vector3.new(9e9, 9e9, 9e9)
				BG.cframe = T.CFrame
				BV.velocity = Vector3.new(0, 0.1, 0)
				BV.maxForce = Vector3.new(9e9, 9e9, 9e9)
				spawn(function()
					repeat wait()
						lplayer.Character.Humanoid.PlatformStand = true
						if CONTROL.L + CONTROL.R ~= 0 or CONTROL.F + CONTROL.B ~= 0 then
							SPEED = 50
						elseif not (CONTROL.L + CONTROL.R ~= 0 or CONTROL.F + CONTROL.B ~= 0) and SPEED ~= 0 then
							SPEED = 0
						end
						if (CONTROL.L + CONTROL.R) ~= 0 or (CONTROL.F + CONTROL.B) ~= 0 then
							BV.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (CONTROL.F + CONTROL.B)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(CONTROL.L + CONTROL.R, (CONTROL.F + CONTROL.B) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * SPEED
							lCONTROL = {F = CONTROL.F, B = CONTROL.B, L = CONTROL.L, R = CONTROL.R}
						elseif (CONTROL.L + CONTROL.R) == 0 and (CONTROL.F + CONTROL.B) == 0 and SPEED ~= 0 then
							BV.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (lCONTROL.F + lCONTROL.B)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(lCONTROL.L + lCONTROL.R, (lCONTROL.F + lCONTROL.B) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * SPEED
						else
							BV.velocity = Vector3.new(0, 0.1, 0)
						end
						BG.cframe = workspace.CurrentCamera.CoordinateFrame
					until not flying
					CONTROL = {F = 0, B = 0, L = 0, R = 0}
					lCONTROL = {F = 0, B = 0, L = 0, R = 0}
					SPEED = 0
					BG:destroy()
					BV:destroy()
					lplayer.Character.Humanoid.PlatformStand = false
				end)
			end
			Mouse.KeyDown:connect(function(KEY)
				if KEY:lower() == 'w' then
					CONTROL.F = speedfly
				elseif KEY:lower() == 's' then
					CONTROL.B = -speedfly
				elseif KEY:lower() == 'a' then
					CONTROL.L = -speedfly 
				elseif KEY:lower() == 'd' then 
					CONTROL.R = speedfly
				end
			end)
			Mouse.KeyUp:connect(function(KEY)
				if KEY:lower() == 'w' then
					CONTROL.F = 0
				elseif KEY:lower() == 's' then
					CONTROL.B = 0
				elseif KEY:lower() == 'a' then
					CONTROL.L = 0
				elseif KEY:lower() == 'd' then
					CONTROL.R = 0
				end
			end)
			fly()
		end
		if string.sub(msg, 1, 6) == (prefix.."unfly") then
			flying = false
			lplayer.Character.Humanoid.PlatformStand = false
		end
		if string.sub(msg, 1, 6) == (prefix.."chat ") then
			game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer((string.sub(msg, 7)), "All")
		end
		if string.sub(msg, 1, 6) == (prefix.."spam ") then
			spamtext = (string.sub(msg, 7))
			spamming = true
		end
		if string.sub(msg, 1, 7) == (prefix.."unspam") then
			spamming = false
		end
		if string.sub(msg, 1, 10) == (prefix.."spamwait ") then
			spamdelay = (string.sub(msg, 11))
		end
		if string.sub(msg, 1, 8) == (prefix.."pmspam ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 9))) do
				pmspammed = v.Name
				spammingpm = true
			end
		end
		if string.sub(msg, 1, 9) == (prefix.."unpmspam") then
			spammingpm = false
		end
		if string.sub(msg, 1, 9) == (prefix.."cfreeze ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 10))) do
				v.Character["Left Leg"].Anchored = true
				v.Character["Left Arm"].Anchored = true
				v.Character["Right Leg"].Anchored = true
				v.Character["Right Arm"].Anchored = true
				v.Character.Torso.Anchored = true
				v.Character.Head.Anchored = true
			end
		end
		if string.sub(msg, 1, 11) == (prefix.."uncfreeze ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 12))) do
				v.Character["Left Leg"].Anchored = false
				v.Character["Left Arm"].Anchored = false
				v.Character["Right Leg"].Anchored = false
				v.Character["Right Arm"].Anchored = false
				v.Character.Torso.Anchored = false
				v.Character.Head.Anchored = false
			end
		end
		if string.sub(msg, 1, 9) == (prefix.."unlockws") then
			local a = game:GetService("Workspace"):getChildren()
			for i = 1, #a do
				if a[i].className == "Part" then
					a[i].Locked = false
				elseif a[i].className == "Model" then
					local r = a[i]:getChildren()
					for i = 1, #r do
						if r[i].className == "Part" then
							r[i].Locked = false
						end
					end
				end
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Success!";
				Text = "Workspace unlocked. Use ;lockws to lock.";
			})
		end
		if string.sub(msg, 1, 7) == (prefix.."lockws") then
			local a = game:GetService("Workspace"):getChildren()
			for i = 1, #a do
				if a[i].className == "Part" then
					a[i].Locked = true
				elseif a[i].className == "Model" then
					local r = a[i]:getChildren()
					for i = 1, #r do
						if r[i].className == "Part" then
							r[i].Locked = true
						end
					end
				end
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."btools") then
			local Clone_T = Instance.new("HopperBin",lplayer.Backpack)
			Clone_T.BinType = "Clone"
			local Destruct = Instance.new("HopperBin",lplayer.Backpack)
			Destruct.BinType = "Hammer"
			local Hold_T = Instance.new("HopperBin",lplayer.Backpack)
			Hold_T.BinType = "Grab"
		end
		if string.sub(msg, 1, 7) == (prefix.."pstand") then
			lplayer.Character.Humanoid.PlatformStand = true
		end
		if string.sub(msg, 1, 9) == (prefix.."unpstand") then
			lplayer.Character.Humanoid.PlatformStand = false
		end
		if string.sub(msg, 1, 10) == (prefix.."blockhead") then
			lplayer.Character.Head.Mesh:Destroy()
		end
		if string.sub(msg, 1, 4) == (prefix.."sit") then
			lplayer.Character.Humanoid.Sit = true
		end
		if string.sub(msg, 1, 10) == (prefix.."bringobj ") then
			local function bringobjw()
				for i,obj in ipairs(game:GetService("Workspace"):GetDescendants()) do
					if obj.Name == (string.sub(msg, 11)) then
						obj.CFrame = lplayer.Character.HumanoidRootPart.CFrame
						obj.CanCollide = false
						obj.Transparency = 0.7
						wait()
						obj.CFrame = lplayer.Character["Left Leg"].CFrame
						wait()
						obj.CFrame = lplayer.Character["Right Leg"].CFrame
						wait()
						obj.CFrame = lplayer.Character["Head"].CFrame
					end
				end
			end
			while wait() do
				bringobjw()
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "BringObj";
				Text = "BringObj enabled.";
			})
		end
		if string.sub(msg, 1, 7) == (prefix.."wsvis ") then
			vis = (string.sub(msg, 8))
			local a = game:GetService("Workspace"):GetDescendants()
			for i = 1, #a do
				if a[i].className == "Part" then
					a[i].Transparency = vis
				elseif a[i].className == "Model" then
					local r = a[i]:getChildren()
					for i = 1, #r do
						if r[i].className == "Part" then
							r[i].Transparency = vis
						end
					end
				end
			end
		end
		if string.sub(msg, 1, 11) == (prefix.."hypertotal") then
			loadstring(game:GetObjects("rbxassetid://1255063809")[1].Source)()
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Success!";
				Text = "HyperTotal GUI Loaded!";
			})
		end
		if string.sub(msg, 1, 5) == (prefix.."cmds") then
			CMDSFRAME.Visible = true
		end
		if string.sub(msg, 1, 10) == (prefix.."rmeshhats") then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Accessory")) or (v:IsA("Hat")) then
					v.Handle.Mesh:Destroy()
				end
			end
		end
		if string.sub(msg, 1, 10) == (prefix.."blockhats") then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Accessory")) or (v:IsA("Hat")) then
					v.Handle.Mesh:Destroy()
				end
			end
		end
		if string.sub(msg, 1, 10) == (prefix.."rmeshtool") then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Tool")) then
					v.Handle.Mesh:Destroy()
				end
			end
		end
		if string.sub(msg, 1, 10) == (prefix.."blocktool") then
			for i,v in pairs(lplayer.Character:GetChildren()) do
				if (v:IsA("Tool")) then
					v.Handle.Mesh:Destroy()
				end
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."spinner") then
			local p = Instance.new("RocketPropulsion")
			p.Parent = lplayer.Character.HumanoidRootPart
			p.Name = "Spinner"
			p.Target = lplayer.Character["Left Arm"]
			p:Fire()
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Spinner enabled";
				Text = "Type ;nospinner to disable.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."nospinner") then
			lplayer.Character.HumanoidRootPart.Spinner:Destroy()
		end
		if string.sub(msg, 1, 7) == (prefix.."reachd") then
			for i,v in pairs(game:GetService'Players'.LocalPlayer.Character:GetChildren())do
				if v:isA("Tool") then
					local a = Instance.new("SelectionBox",v.Handle)
					a.Adornee = v.Handle
					v.Handle.Size = Vector3.new(0.5,0.5,60)
					v.GripPos = Vector3.new(0,0,0)
					lplayer.Character.Humanoid:UnequipTools()
				end
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Reach applied!";
				Text = "Applied to equipped sword. Use ;noreach to disable.";
			})
		end
		if string.sub(msg, 1, 7) == (prefix.."reach ") then
			for i,v in pairs(game:GetService'Players'.LocalPlayer.Character:GetChildren())do
				if v:isA("Tool") then
					handleSize = v.Handle.Size
					wait()
					local a = Instance.new("SelectionBox",v.Handle)
					a.Name = "a"
					a.Adornee = v.Handle
					v.Handle.Size = Vector3.new(0.5,0.5,(string.sub(msg, 8)))
					v.GripPos = Vector3.new(0,0,0)
					lplayer.Character.Humanoid:UnequipTools()
				end
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Reach applied!";
				Text = "Applied to equipped sword. Use ;noreach to disable.";
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."noreach") then
			for i,v in pairs(game:GetService'Players'.LocalPlayer.Character:GetChildren())do
				if v:isA("Tool") then
					v.Handle.a:Destroy()
					v.Handle.Size = handleSize
				end
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Reach removed!";
				Text = "Removed reach from equipped sword.";
			})
		end
		if string.sub(msg, 1, 7) == (prefix.."rkill ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 8)))do
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				wait(0.1)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.2)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.5)
				lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(Vector3.new(-100000,10,-100000))
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."tp me ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 8))) do
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."cbring ") then
			if (string.sub(msg, 9)) == "all" or (string.sub(msg, 9)) == "All" or (string.sub(msg, 9)) == "ALL" then
				cbringall = true
			else
				for i,v in pairs(GetPlayer(string.sub(msg, 9))) do
					brplr = v.Name
				end
			end
			cbring = true
		end
		if string.sub(msg, 1, 9) == (prefix.."uncbring") then
			cbring = false
			cbringall = false
		end
		if string.sub(msg, 1, 6) == (prefix.."swap ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 7))) do
				local NOWPLR = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				local NOW = lplayer.Character.HumanoidRootPart.CFrame
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				local function tp(player,player2)
					local char1,char2=player.Character,player2.Character
					if char1 and char2 then
						char1:MoveTo(char2.Head.Position)
					end
				end
				wait(0.1)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.2)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.5)
				lplayer.Character.HumanoidRootPart.CFrame = NOW
				wait(0.6)
				tp(lplayer, game:GetService("Players")[v.Name])
				wait(0.4)
				lplayer.Character.HumanoidRootPart.CFrame = NOWPLR
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."glitch ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 9))) do
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
					lplayer.Character.Humanoid:EquipTool(v)
				end
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
				wait(0.3)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
				wait(0.4)
				b = Instance.new("BodyForce")
				b.Parent = lplayer.Character.HumanoidRootPart
				b.Name = "Glitch"
				b.Force = Vector3.new(100000000,5000,0)
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools needed!";
					Text = "You need a tool in your backpack for this command!";
				})
			end
		end
		if string.sub(msg, 1, 9) == (prefix.."unglitch") then
			lplayer.Character.HumanoidRootPart.Glitch:Destroy()
			lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(10000,0,10000)
			b = Instance.new("BodyForce")
			b.Parent = lplayer.Character.HumanoidRootPart
			b.Name = "unGlitch"
			b.Force = Vector3.new(0,-5000000,0)
			wait(2)
			lplayer.Character.HumanoidRootPart.unGlitch:Destroy()
		end
		if string.sub(msg, 1, 9) == (prefix.."grespawn") then
			lplayer.Character.Humanoid.Health = 0
			wait(1)
			lplayer.Character.Head.CFrame = CFrame.new(1000000,0,1000000)
			lplayer.Character.Torso.CFrame = CFrame.new(1000000,0,1000000)
		end
		if string.sub(msg, 1, 9) == (prefix.."explorer") then
			loadstring(game:GetObjects("rbxassetid://492005721")[1].Source)()
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Success!";
				Text = "DEX Explorer has loaded.";
			})
		end
		if string.sub(msg, 1, 6) == (prefix.."anim ") then
			local Anim = Instance.new("Animation")
			Anim.AnimationId = "rbxassetid://"..(string.sub(msg, 7))
			local track = lplayer.Character.Humanoid:LoadAnimation(Anim)
			track:Play(.1, 1, 1)
		end
		if string.sub(msg, 1, 8) == (prefix.."animgui") then
			loadstring(game:GetObjects("rbxassetid://1202558084")[1].Source)()
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Success!";
				Text = "Energize Animations GUI has loaded.";
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."savepos") then
			saved = lplayer.Character.HumanoidRootPart.CFrame
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Position Saved";
				Text = "Use ;loadpos to return to saved position.";
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."loadpos") then
			lplayer.Character.HumanoidRootPart.CFrame = saved
		end
		if string.sub(msg, 1, 6) == (prefix.."bang ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 7))) do
				local Anim2 = Instance.new("Animation")
				Anim2.AnimationId = "rbxassetid://148840371"
				local track2 = lplayer.Character.Humanoid:LoadAnimation(Anim2)
				track2:Play(.1, 1, 1)
				bplrr = v.Name
				banpl = true
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."unbang") then
			banpl = false
		end
		if string.sub(msg, 1, 10) == (prefix.."bringmod ") then
			local function bringmodw()
				for i,obj in ipairs(game:GetService("Workspace"):GetDescendants()) do
					if obj.Name == (string.sub(msg, 11)) then
						for i,ch in pairs(obj:GetDescendants()) do
							if (ch:IsA("BasePart")) then
								ch.CFrame = lplayer.Character.HumanoidRootPart.CFrame
								ch.CanCollide = false
								ch.Transparency = 0.7
								wait()
								ch.CFrame = lplayer.Character["Left Leg"].CFrame
								wait()
								ch.CFrame = lplayer.Character["Right Leg"].CFrame
								wait()
								ch.CFrame = lplayer.Character["Head"].CFrame
							end
						end
					end
				end
			end
			while wait() do
				bringmodw()
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "BringMod";
				Text = "BringMod enabled.";
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."respawn") then
			local mod = Instance.new('Model', workspace) mod.Name = 're '..lplayer.Name
			local hum = Instance.new('Humanoid', mod)
			local ins = Instance.new('Part', mod) ins.Name = 'Torso' ins.CanCollide = false ins.Transparency = 1
			lplayer.Character = mod
		end
		if string.sub(msg, 1, 9) == (prefix.."shutdown") then
			game:GetService'RunService'.Stepped:Connect(function()
				pcall(function()
					for i,v in pairs(game:GetService'Players':GetPlayers()) do
						if v.Character ~= nil and v.Character:FindFirstChild'Head' then
							for _,x in pairs(v.Character.Head:GetChildren()) do
								if x:IsA'Sound' then x.Playing = true x.CharacterSoundEvent:FireServer(true, true) end
							end
						end
					end
				end)
			end)
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Attempting Shutdown";
				Text = "Shutdown Attempt has begun.";
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."delobj ") then
			objtodel = (string.sub(msg, 9))
			for i,v in pairs(game:GetService("Workspace"):GetDescendants()) do
				if v.Name == objtodel then
					v:Destroy()
				end
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."getplrs") then
			for i,v in pairs(game:GetService("Players"):GetPlayers())do
				print(v)
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Printed";
				Text = "Players have been printed to console. (F9)";
			})
		end
		if string.sub(msg, 1, 9) == (prefix.."deldecal") then
			for i,v in pairs(game:GetService("Workspace"):GetDescendants())do
				if (v:IsA("Decal")) then
					v:Destroy()
				end
			end
		end
		if string.sub(msg, 1, 11) == (prefix.."opfinality") then
			loadstring(game:GetObjects("rbxassetid://1294358929")[1].Source)()
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Success!";
				Text = "OpFinality GUI has loaded.";
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."remotes") then
			remotes = true
			added = true
			game.DescendantAdded:connect(function(rmt)
				if added == true then
					if remotes == true then 
						if rmt:IsA("RemoteEvent") then
							print("A RemoteEvent was added!")
							print(" game." .. rmt:GetFullName() .. " | RemoteEvent")
							print(" game." .. rmt:GetFullName() .. " | RemoteEvent", 247, 0, 0, true)
						end end end
			end)
			game.DescendantAdded:connect(function(rmtfnctn)
				if added == true then
					if remotes == true then 
						if rmtfnctn:IsA("RemoteFunction") then
							warn("A RemoteFunction was added!")
							warn(" game." .. rmtfnctn:GetFullName() .. " | RemoteFunction")
							print(" game." .. rmtfnctn:GetFullName() .. " | RemoteFunction", 5, 102, 198, true)
						end end end
			end)

			game.DescendantAdded:connect(function(bndfnctn)
				if added == true then
					if binds == true then 
						if bndfnctn:IsA("BindableFunction") then
							print("A BindableFunction was added!")
							print(" game." .. bndfnctn:GetFullName() .. " | BindableFunction")
							print(" game." .. bndfnctn:GetFullName() .. " | BindableFunction", 239, 247, 4, true)
						end end end
			end)

			game.DescendantAdded:connect(function(bnd)
				if added == true then
					if binds == true then 
						if bnd:IsA("BindableEvent") then
							warn("A BindableEvent was added!")
							warn(" game." .. bnd:GetFullName() .. " | BindableEvent")
							print(" game." .. bnd:GetFullName() .. " | BindableEvent", 13, 193, 22, true)
						end end end
			end)


			if binds == true then
				for i,v in pairs(game:GetDescendants()) do
					if v:IsA("BindableFunction") then
						print(" game." .. v:GetFullName() .. " | BindableFunction")
						print(" game." .. v:GetFullName() .. " | BindableFunction", 239, 247, 4, true)
					end end
				for i,v in pairs(game:GetDescendants()) do
					if v:IsA("BindableEvent") then
						warn(" game." .. v:GetFullName() .. " | BindableEvent")
						print(" game." .. v:GetFullName() .. " | BindableEvent", 13, 193, 22, true)
					end end
			else
				print("Off")
			end
			if remotes == true then
				for i,v in pairs(game:GetDescendants()) do
					if v:IsA("RemoteFunction") then
						warn(" game." .. v:GetFullName() .. " | RemoteFunction")
						print(" game." .. v:GetFullName() .. " | RemoteFunction", 5, 102, 198, true)
					end end
				wait()
				for i,v in pairs(game:GetDescendants()) do
					if v:IsA("RemoteEvent") then
						print(" game." .. v:GetFullName() .. " | RemoteEvent")
						print(" game." .. v:GetFullName() .. " | RemoteEvent", 247, 0, 0, true)
					end end
			else
				print("Off")
			end
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Printing Remotes";
				Text = "Type ;noremotes to disable.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."noremotes") then
			remotes = false
			added = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Printing Remotes Disabled";
				Text = "Type ;remotes to enable.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."tpdefault") then
			spin = false
			followed = false
			traill = false
			noclip = false
			annoying = false
			hwalk = false
			cbringing = false
		end
		if string.sub(msg, 1, 8) == (prefix.."stopsit") then
			stopsitting = true
		end
		if string.sub(msg, 1, 6) == (prefix.."gosit") then
			stopsitting = false
		end
		if string.sub(msg, 1, 8) == (prefix.."version") then
			print(adminversion)
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Version";
				Text = adminversion;
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."clicktp") then
			clickgoto = true
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Click TP";
				Text = "Press E to teleport to mouse position, ;noclicktp to stop";
			})
		end
		if string.sub(msg, 1, 9) == (prefix.."clickdel") then
			clickdel = true
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Click Delete";
				Text = "Press E to delete part at mouse, ;noclickdel to stop";
			})
		end
		if string.sub(msg, 1, 11) == (prefix.."noclickdel") then
			clickdel = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Click Delete";
				Text = "Click delete has been disabled.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."noclicktp") then
			clickgoto = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Click TP";
				Text = "Click TP has been disabled.";
			})
		end
		if string.sub(msg, 1, 8) == (prefix.."toolson") then
			gettingtools = true
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Tools Enabled";
				Text = "Automatically colleting tools dropped.";
			})
		end
		if string.sub(msg, 1, 9) == (prefix.."toolsoff") then
			gettingtools = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Tools Disabled";
				Text = "Click TP has been disabled.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."delcmdbar") then
			ScreenGui:Destroy()
		end
		if string.sub(msg, 1, 6) == (prefix.."reset") then
			lplayer.Character.Head:Destroy()
		end
		if string.sub(msg, 1, 7) == (prefix.."state ") then
			statechosen = string.sub(msg, 8)
			changingstate = true
		end
		if string.sub(msg, 1, 9) == (prefix.."gravity ") then
			game:GetService("Workspace").Gravity = string.sub(msg, 10)
		end
		if string.sub(msg, 1, 10) == (prefix.."looprhats") then
			removingmeshhats = true
		end
		if string.sub(msg, 1, 12) == (prefix.."unlooprhats") then
			removingmeshhats = false
		end
		if string.sub(msg, 1, 10) == (prefix.."looprtool") then
			removingmeshtool = true
		end
		if string.sub(msg, 1, 12) == (prefix.."unlooprtool") then
			removingmeshtool = false
		end
		if string.sub(msg, 1, 10) == (prefix.."givetool ") then
			for i,v in pairs(game:GetService("Players").LocalPlayer.Character:GetDescendants()) do
				if v:IsA("Tool") then
					for i,player in pairs(GetPlayer(string.sub(msg, 11))) do
						v.Parent = player.Character
					end
				end
			end
		end
		if string.sub(msg, 1, 14) == (prefix.."givealltools ") then
			for i,v in pairs(game:GetService("Players").LocalPlayer.Backpack:GetDescendants()) do
				if v:IsA("Tool") then
					v.Parent = lplayer.Character
					wait()
					for i,player in pairs(GetPlayer(string.sub(msg, 15))) do
						v.Parent = player.Character
					end
				end
			end
		end
		if string.sub(msg, 1, 5) == (prefix.."age ") then
			for i,player in pairs(GetPlayer(string.sub(msg, 6))) do
				game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(player.Name.." Account Age: "..player.AccountAge.." days!", "All")
			end
		end
		if string.sub(msg, 1, 4) == (prefix.."id ") then
			for i,player in pairs(GetPlayer(string.sub(msg, 5))) do
				game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(player.Name.." Account ID: "..player.UserId, "All")
			end
		end
		if string.sub(msg, 1, 6) == (prefix..".age ") then
			for i,player in pairs(GetPlayer(string.sub(msg, 7))) do
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = player.AccountAge.." Days";
					Text = "Account age of "..player.Name;
				})
			end
		end
		if string.sub(msg, 1, 5) == (prefix..".id ") then
			for i,player in pairs(GetPlayer(string.sub(msg, 6))) do
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = player.UserId.." ID";
					Text = "Account ID of "..player.Name;
				})
			end
		end
		if string.sub(msg, 1, 7) == (prefix.."gameid") then
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Game ID";
				Text = "Game ID: ".. game.GameId;
			})
		end
		if string.sub(msg, 1, 4) == (prefix.."pgs") then
			local pgscheck = game:GetService("Workspace"):PGSIsEnabled()
			if pgscheck == true then
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "PGSPhysicsSolverEnabled";
					Text = "PGS is Enabled!";
				})
			else
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "PGSPhysicsSolverEnabled";
					Text = "PGS is Disabled!";
				})
			end
		end
		if string.sub(msg, 1, 12) == (prefix.."removeinvis") then
			for i,v in pairs(game:GetService("Workspace"):GetDescendants()) do
				if v:IsA("Part") then
					if v.Transparency == 1 then
						if v.Name ~= "HumanoidRootPart" then
							v:Destroy()
						end
					end
				end
			end
		end
		if string.sub(msg, 1, 10) == (prefix.."removefog") then
			game:GetService("Lighting").FogStart = 0
			game:GetService("Lighting").FogEnd = 9999999999999
		end
		if string.sub(msg, 1, 8) == (prefix.."disable") then
			lplayer.Character.Humanoid.Parent = lplayer
		end
		if string.sub(msg, 1, 7) == (prefix.."enable") then
			lplayer.Humanoid.Parent = lplayer.Character
		end
		if string.sub(msg, 1, 8) == (prefix.."prefix ") then
			prefix = (string.sub(msg, 9, 9))
			wait(0.1)
			change()
			wait(0.1)
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Prefix changed!";
				Text = "Prefix is now "..prefix..". Use ;resetprefix to reset to ;";
			})
		end
		if string.sub(msg, 1, 12) == (";resetprefix") then
			prefix = ";"
			wait(0.1)
			change()
			wait(0.1)
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "Prefix changed!";
				Text = "Prefix is now "..prefix..". Make sure it's one key!";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."flyspeed ") then
			speedfly = string.sub(msg, 11)
			wait()
			change()
		end
		if string.sub(msg, 1, 8) == (prefix.."carpet ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 9))) do
				local Anim3 = Instance.new("Animation")
				Anim3.AnimationId = "rbxassetid://282574440"
				local track3 = lplayer.Character.Humanoid:LoadAnimation(Anim3)
				track3:Play(.1, 1, 1)
				bplrr = v.Name
				banpl = true
			end
		end
		if string.sub(msg, 1, 9) == (prefix.."uncarpet") then
			banpl = false
		end
		if string.sub(msg, 1, 7) == (prefix.."stare ") then
			for i,v in pairs(GetPlayer(string.sub(msg, 8))) do
				staring = true
				stareplr = v
			end
		end
		if string.sub(msg, 1, 8) == (prefix.."unstare") then
			staring = false
		end
		if string.sub(msg, 1, 8) == (prefix.."logchat") then
			chatlogs = true
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "LogChat enabled";
				Text = "Now logging all player chat.";
			})
		end
		if string.sub(msg, 1, 10) == (prefix.."unlogchat") then
			chatlogs = false
			game:GetService("StarterGui"):SetCore("SendNotification", {
				Title = "LogChat disabled";
				Text = "Stopped logging all player chat.";
			})
		end
		if string.sub(msg, 1, 7) == (prefix.."fixcam") then
			game:GetService("Workspace").CurrentCamera:Destroy()
			wait(0.1)
			game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Humanoid
			game:GetService("Workspace").CurrentCamera.CameraType = "Custom"
			lplayer.CameraMinZoomDistance = 0.5
			lplayer.CameraMaxZoomDistance = 400
			lplayer.CameraMode = "Classic"
		end
		if string.sub(msg, 1, 8) == (prefix.."unstate") then
			changingstate = false
		end
	end)

	local function tp()
		for i, player in ipairs(game:GetService("Players"):GetPlayers()) do
			if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
				if player.Name == brplr then
					player.Character.HumanoidRootPart.CFrame = lplayer.Character.HumanoidRootPart.CFrame + lplayer.Character.HumanoidRootPart.CFrame.lookVector * 2
				end
			end
		end
	end
	local function tpall()
		for i, player in ipairs(game:GetService("Players"):GetPlayers()) do
			if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
				player.Character.HumanoidRootPart.CFrame = lplayer.Character.HumanoidRootPart.CFrame + lplayer.Character.HumanoidRootPart.CFrame.lookVector * 3
			end
		end
	end
	spawn(function()
		while wait(spamdelay) do
			if spamming == true then
				game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(spamtext, "All")
			end
		end
	end)
	spawn(function()
		while wait(spamdelay) do
			if spammingpm == true then
				game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer("/w "..pmspammed.." @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "All")
			end
		end
	end)
	spawn(function()
		while wait() do
			if cbring == true then
				tp()
			end
		end
	end)
	spawn(function()
		while wait() do
			if cbringall == true then
				tpall()
			end
		end
	end)

	Mouse.KeyDown:connect(function(Key)
		if Key == prefix then
			CMDBAR:CaptureFocus()
		end
	end)

	CMDBAR.FocusLost:connect(function(enterPressed)
		if enterPressed then
			if string.sub(CMDBAR.Text, 1, 5) == ("kill ") then
				if string.sub(CMDBAR.Text, 6) == "me" then
					lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(100000,0,100000)
				else
					for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 6)))do
						local NOW = lplayer.Character.HumanoidRootPart.CFrame
						lplayer.Character.Humanoid.Name = 1
						local l = lplayer.Character["1"]:Clone()
						l.Parent = lplayer.Character
						l.Name = "Humanoid"
						wait(0.1)
						lplayer.Character["1"]:Destroy()
						game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
						lplayer.Character.Animate.Disabled = true
						wait(0.1)
						lplayer.Character.Animate.Disabled = false
						lplayer.Character.Humanoid.DisplayDistanceType = "None"
						for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
							lplayer.Character.Humanoid:EquipTool(v)
						end
						local function tp(player,player2)
							local char1,char2=player.Character,player2.Character
							if char1 and char2 then
								char1:MoveTo(char2.Head.Position)
							end
						end
						wait(0.1)
						lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
						wait(0.2)
						lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
						wait(0.5)
						lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(Vector3.new(-100000,10,-100000))
						wait(0.7)
						tp(lplayer,game:GetService("Players")[v.Name])
						wait(0.7)
						lplayer.Character.HumanoidRootPart.CFrame = NOW
						game:GetService("StarterGui"):SetCore("SendNotification", {
							Title = "Tools needed!";
							Text = "You need a tool in your backpack for this command!";
						})
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("bring ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7)))do
					local NOW = lplayer.Character.HumanoidRootPart.CFrame
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					local function tp(player,player2)
						local char1,char2=player.Character,player2.Character
						if char1 and char2 then
							char1.HumanoidRootPart.CFrame = char2.HumanoidRootPart.CFrame
						end
					end
					local function getout(player,player2)
						local char1,char2=player.Character,player2.Character
						if char1 and char2 then
							char1:MoveTo(char2.Head.Position)
						end
					end
					tp(game:GetService("Players")[v.Name], lplayer)
					wait(0.2)
					tp(game:GetService("Players")[v.Name], lplayer)
					wait(0.5)
					lplayer.Character.HumanoidRootPart.CFrame = NOW
					wait(0.5)
					getout(lplayer, game:GetService("Players")[v.Name])
					wait(0.3)
					lplayer.Character.HumanoidRootPart.CFrame = NOW
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("spin ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 6))) do
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
					spinplr = v
					wait(0.5)
					spin = true
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("unspin") then
				spin = false
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("attach ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 8))) do
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
					wait(0.3)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
					attplr = v
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("unattach ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 10))) do
					local function getout(player,player2)
						local char1,char2=player.Character,player2.Character
						if char1 and char2 then
							char1:MoveTo(char2.Head.Position)
						end
					end
					getout(lplayer, game:GetService("Players")[v.Name])
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("follow ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 8))) do
					followed = true
					flwplr = v
				end
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("unfollow") then
				followed = false
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("freefall ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 10))) do
					local NOW = lplayer.Character.HumanoidRootPart.CFrame
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.2)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.6)
					lplayer.Character.HumanoidRootPart.CFrame = NOW
					wait(0.6)
					lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(0,50000,0)
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("trail ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7))) do
					traill = true
					trlplr = v
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("untrail") then
				traill = false
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("orbit ") then
				if string.sub(CMDBAR.Text, 7) == "all" or string.sub(CMDBAR.Text, 7) == "others" or string.sub(CMDBAR.Text, 7) == "me" then
					lplayer.Character.HumanoidRootPart.CFrame = lplayer.Character.HumanoidRootPart.CFrame
				else
					for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7))) do
						local o = Instance.new("RocketPropulsion")
						o.Parent = lplayer.Character.HumanoidRootPart
						o.Name = "Orbit"
						o.Target = game:GetService("Players")[v.Name].Character.HumanoidRootPart
						o:Fire()
						noclip = true
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("unorbit") then
				lplayer.Character.HumanoidRootPart.Orbit:Destroy()
				noclip = false
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("fling ") then
				if string.sub(CMDBAR.Text, 7) == "all" or string.sub(CMDBAR.Text, 7) == "others" or string.sub(CMDBAR.Text, 7) == "me" then
					lplayer.Character.HumanoidRootPart.CFrame = lplayer.Character.HumanoidRootPart.CFrame
				else
					for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7))) do
						local y = Instance.new("RocketPropulsion")
						y.Parent = lplayer.Character.HumanoidRootPart
						y.CartoonFactor = 1
						y.MaxThrust = 800000
						y.MaxSpeed = 1000
						y.ThrustP = 200000
						y.Name = "Fling"
						game:GetService("Workspace").CurrentCamera.CameraSubject = game:GetService("Players")[v.Name].Character.Head
						y.Target = game:GetService("Players")[v.Name].Character.HumanoidRootPart
						y:Fire()
						noclip = true
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("unfling") then
				noclip = false
				lplayer.Character.HumanoidRootPart.Fling:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Head
				wait(0.4)
				lplayer.Character.HumanoidRootPart.Fling:Destroy()
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("fecheck") then
				if game:GetService("Workspace").FilteringEnabled == true then
					warn("FE is Enabled (Filtering Enabled)")
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "FE is Enabled";
						Text = "Filtering Enabled. Enjoy using Reviz Admin!";
					})
				else
					warn("FE is Disabled (Filtering Disabled) Consider using a different admin script.")
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "FE is Disabled";
						Text = "Filtering Disabled. Consider using a different admin script.";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("void ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 6))) do
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.2)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.6)
					lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(999999999999999,0,999999999999999)
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("noclip") then
				noclip = true
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Noclip enabled";
					Text = "Type ;clip to disable";
				})
			end
			if string.sub(CMDBAR.Text, 1, 4) == ("clip") then
				noclip = false
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Noclip disabled";
					Text = "Type ;noclip to enable";
				})
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("speed ") then
				lplayer.Character.Humanoid.WalkSpeed = (string.sub(CMDBAR.Text, 7))
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("ws ") then
				lplayer.Character.Humanoid.WalkSpeed = (string.sub(CMDBAR.Text, 4))
			end
			if string.sub(CMDBAR.Text, 1, 10) == ("hipheight ") then
				lplayer.Character.Humanoid.HipHeight = (string.sub(CMDBAR.Text, 11))
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("hh ") then
				lplayer.Character.Humanoid.HipHeight = (string.sub(CMDBAR.Text, 4))
			end
			if string.sub(CMDBAR.Text, 1, 10) == ("jumppower ") then
				lplayer.Character.Humanoid.JumpPower = (string.sub(CMDBAR.Text, 11))
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("jp ") then
				lplayer.Character.Humanoid.JumpPower = (string.sub(CMDBAR.Text, 4))
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("default") then
				lplayer.Character.Humanoid.JumpPower = 50
				lplayer.Character.Humanoid.WalkSpeed = 16
				lplayer.Character.Humanoid.HipHeight = 0
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("annoy ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7))) do
					annoying = true
					annplr = v
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("unannoy") then
				annoying = false
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("headwalk ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 10))) do
					hwalk = true
					hdwplr = v
				end
			end
			if string.sub(CMDBAR.Text, 1, 10) == ("unheadwalk") then
				hwalk = false
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("nolimbs") then
				lplayer.Character["Left Leg"]:Destroy()
				lplayer.Character["Left Arm"]:Destroy()
				lplayer.Character["Right Leg"]:Destroy()
				lplayer.Character["Right Arm"]:Destroy()
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("god") then
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "FE Godmode enabled";
					Text = "Use ;grespawn or ;respawn to remove.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("drophats") then
				for i,v in pairs(lplayer.Character:GetChildren()) do
					if (v:IsA("Accessory")) or (v:IsA("Hat")) then
						v.Parent = workspace
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("droptool") then
				for i,v in pairs(lplayer.Character:GetChildren()) do
					if (v:IsA("Tool")) then
						v.Parent = workspace
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("loopdhats") then
				droppinghats = true
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Loop Drop Enabled";
					Text = "Type ;unloopdhats to disable";
				})
			end
			if string.sub(CMDBAR.Text, 1, 11) == ("unloopdhats") then
				droppinghats = false
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Loop Drop Disabled";
					Text = "Type ;loopdhats to enable.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("loopdtool") then
				droppingtools = true
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Loop Drop Enabled";
					Text = "Type ;unloopdtool to disable";
				})
			end
			if string.sub(CMDBAR.Text, 1, 11) == ("unloopdtool") then
				droppingtools = false
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Loop Drop Disabled";
					Text = "Type ;loopdtool to enable.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("invisible") then -- Credit to Timeless
				Local = game:GetService('Players').LocalPlayer
				Char  = Local.Character
				touched,tpdback = false, false
				box = Instance.new('Part',workspace)
				box.Anchored = true
				box.CanCollide = true
				box.Size = Vector3.new(10,1,10)
				box.Position = Vector3.new(0,10000,0)
				box.Touched:connect(function(part)
					if (part.Parent.Name == Local.Name) then
						if touched == false then
							touched = true
							function apply()
								if script.Disabled ~= true then
									no = Char.HumanoidRootPart:Clone()
									wait(.25)
									Char.HumanoidRootPart:Destroy()
									no.Parent = Char
									Char:MoveTo(loc)
									touched = false
								end end
							if Char then
								apply()
							end
						end
					end
				end)
				repeat wait() until Char
				loc = Char.HumanoidRootPart.Position
				Char:MoveTo(box.Position + Vector3.new(0,.5,0))
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Invisibility enabled!";
					Text = "Reset or use ;respawn to remove.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("view ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 6))) do
					if game:GetService("Players")[v.Name].Character.Humanoid then
						game:GetService("Workspace").CurrentCamera.CameraSubject = game:GetService("Players")[v.Name].Character.Humanoid
					else
						game:GetService("Workspace").CurrentCamera.CameraSubject = game:GetService("Players")[v.Name].Character.Head
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("unview") then
				if lplayer.Character.Humanoid then
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Humanoid
				else
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Head
				end
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("goto ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 6))) do
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				end
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("fly") then
				repeat wait() until lplayer and lplayer.Character and lplayer.Character:FindFirstChild('HumanoidRootPart') and lplayer.Character:FindFirstChild('Humanoid')
				repeat wait() until Mouse

				local T = lplayer.Character.HumanoidRootPart
				local CONTROL = {F = 0, B = 0, L = 0, R = 0}
				local lCONTROL = {F = 0, B = 0, L = 0, R = 0}
				local SPEED = speedget

				local function fly()
					flying = true
					local BG = Instance.new('BodyGyro', T)
					local BV = Instance.new('BodyVelocity', T)
					BG.P = 9e4
					BG.maxTorque = Vector3.new(9e9, 9e9, 9e9)
					BG.cframe = T.CFrame
					BV.velocity = Vector3.new(0, 0.1, 0)
					BV.maxForce = Vector3.new(9e9, 9e9, 9e9)
					spawn(function()
						repeat wait()
							lplayer.Character.Humanoid.PlatformStand = true
							if CONTROL.L + CONTROL.R ~= 0 or CONTROL.F + CONTROL.B ~= 0 then
								SPEED = 50
							elseif not (CONTROL.L + CONTROL.R ~= 0 or CONTROL.F + CONTROL.B ~= 0) and SPEED ~= 0 then
								SPEED = 0
							end
							if (CONTROL.L + CONTROL.R) ~= 0 or (CONTROL.F + CONTROL.B) ~= 0 then
								BV.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (CONTROL.F + CONTROL.B)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(CONTROL.L + CONTROL.R, (CONTROL.F + CONTROL.B) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * SPEED
								lCONTROL = {F = CONTROL.F, B = CONTROL.B, L = CONTROL.L, R = CONTROL.R}
							elseif (CONTROL.L + CONTROL.R) == 0 and (CONTROL.F + CONTROL.B) == 0 and SPEED ~= 0 then
								BV.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (lCONTROL.F + lCONTROL.B)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(lCONTROL.L + lCONTROL.R, (lCONTROL.F + lCONTROL.B) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * SPEED
							else
								BV.velocity = Vector3.new(0, 0.1, 0)
							end
							BG.cframe = workspace.CurrentCamera.CoordinateFrame
						until not flying
						CONTROL = {F = 0, B = 0, L = 0, R = 0}
						lCONTROL = {F = 0, B = 0, L = 0, R = 0}
						SPEED = 0
						BG:destroy()
						BV:destroy()
						lplayer.Character.Humanoid.PlatformStand = false
					end)
				end
				Mouse.KeyDown:connect(function(KEY)
					if KEY:lower() == 'w' then
						CONTROL.F = speedfly
					elseif KEY:lower() == 's' then
						CONTROL.B = -speedfly
					elseif KEY:lower() == 'a' then
						CONTROL.L = -speedfly 
					elseif KEY:lower() == 'd' then 
						CONTROL.R = speedfly
					end
				end)
				Mouse.KeyUp:connect(function(KEY)
					if KEY:lower() == 'w' then
						CONTROL.F = 0
					elseif KEY:lower() == 's' then
						CONTROL.B = 0
					elseif KEY:lower() == 'a' then
						CONTROL.L = 0
					elseif KEY:lower() == 'd' then
						CONTROL.R = 0
					end
				end)
				fly()
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("unfly") then
				flying = false
				lplayer.Character.Humanoid.PlatformStand = false
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("chat ") then
				game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer((string.sub(CMDBAR.Text, 6)), "All")
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("spam ") then
				spamtext = (string.sub(CMDBAR.Text, 6))
				spamming = true
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("unspam") then
				spamming = false
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("spamwait ") then
				spamdelay = (string.sub(CMDBAR.Text, 10))
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("pmspam ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 8))) do
					pmspammed = v.Name
					spammingpm = true
				end
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("unpmspam") then
				spammingpm = false
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("cfreeze ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 9))) do
					v.Character["Left Leg"].Anchored = true
					v.Character["Left Arm"].Anchored = true
					v.Character["Right Leg"].Anchored = true
					v.Character["Right Arm"].Anchored = true
					v.Character.Torso.Anchored = true
					v.Character.Head.Anchored = true
				end
			end
			if string.sub(CMDBAR.Text, 1, 10) == ("uncfreeze ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 11))) do
					v.Character["Left Leg"].Anchored = false
					v.Character["Left Arm"].Anchored = false
					v.Character["Right Leg"].Anchored = false
					v.Character["Right Arm"].Anchored = false
					v.Character.Torso.Anchored = false
					v.Character.Head.Anchored = false
				end
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("unlockws") then
				local a = game:GetService("Workspace"):getChildren()
				for i = 1, #a do
					if a[i].className == "Part" then
						a[i].Locked = false
					elseif a[i].className == "Model" then
						local r = a[i]:getChildren()
						for i = 1, #r do
							if r[i].className == "Part" then
								r[i].Locked = false
							end
						end
					end
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Success!";
					Text = "Workspace unlocked. Use ;lockws to lock.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("lockws") then
				local a = game:GetService("Workspace"):getChildren()
				for i = 1, #a do
					if a[i].className == "Part" then
						a[i].Locked = true
					elseif a[i].className == "Model" then
						local r = a[i]:getChildren()
						for i = 1, #r do
							if r[i].className == "Part" then
								r[i].Locked = true
							end
						end
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("btools") then
				local Clone_T = Instance.new("HopperBin",lplayer.Backpack)
				Clone_T.BinType = "Clone"
				local Destruct = Instance.new("HopperBin",lplayer.Backpack)
				Destruct.BinType = "Hammer"
				local Hold_T = Instance.new("HopperBin",lplayer.Backpack)
				Hold_T.BinType = "Grab"
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("pstand") then
				lplayer.Character.Humanoid.PlatformStand = true
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("unpstand") then
				lplayer.Character.Humanoid.PlatformStand = false
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("blockhead") then
				lplayer.Character.Head.Mesh:Destroy()
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("sit") then
				lplayer.Character.Humanoid.Sit = true
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("bringobj ") then
				local function bringobjw()
					for i,obj in ipairs(game:GetService("Workspace"):GetDescendants()) do
						if obj.Name == (string.sub(CMDBAR.Text, 10)) then
							obj.CFrame = lplayer.Character.HumanoidRootPart.CFrame
							obj.CanCollide = false
							obj.Transparency = 0.7
							wait()
							obj.CFrame = lplayer.Character["Left Leg"].CFrame
							wait()
							obj.CFrame = lplayer.Character["Right Leg"].CFrame
							wait()
							obj.CFrame = lplayer.Character["Head"].CFrame
						end
					end
				end
				while wait() do
					bringobjw()
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "BringObj";
					Text = "BringObj enabled.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("wsvis ") then
				vis = (string.sub(CMDBAR.Text, 7))
				local a = game:GetService("Workspace"):GetDescendants()
				for i = 1, #a do
					if a[i].className == "Part" then
						a[i].Transparency = vis
					elseif a[i].className == "Model" then
						local r = a[i]:getChildren()
						for i = 1, #r do
							if r[i].className == "Part" then
								r[i].Transparency = vis
							end
						end
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 10) == ("hypertotal") then
				loadstring(game:GetObjects("rbxassetid://1255063809")[1].Source)()
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Success!";
					Text = "HyperTotal GUI Loaded!";
				})
			end
			if string.sub(CMDBAR.Text, 1, 4) == ("cmds") then
				CMDSFRAME.Visible = true
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("rmeshhats") then
				for i,v in pairs(lplayer.Character:GetChildren()) do
					if (v:IsA("Accessory")) or (v:IsA("Hat")) then
						v.Handle.Mesh:Destroy()
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("blockhats") then
				for i,v in pairs(lplayer.Character:GetChildren()) do
					if (v:IsA("Accessory")) or (v:IsA("Hat")) then
						v.Handle.Mesh:Destroy()
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("rmeshtool") then
				for i,v in pairs(lplayer.Character:GetChildren()) do
					if (v:IsA("Tool")) then
						v.Handle.Mesh:Destroy()
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("blocktool") then
				for i,v in pairs(lplayer.Character:GetChildren()) do
					if (v:IsA("Tool")) then
						v.Handle.Mesh:Destroy()
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("spinner") then
				local p = Instance.new("RocketPropulsion")
				p.Parent = lplayer.Character.HumanoidRootPart
				p.Name = "Spinner"
				p.Target = lplayer.Character["Left Arm"]
				p:Fire()
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Spinner enabled";
					Text = "Type ;nospinner to disable.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("nospinner") then
				lplayer.Character.HumanoidRootPart.Spinner:Destroy()
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("reachd") then
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Character:GetChildren())do
					if v:isA("Tool") then
						local a = Instance.new("SelectionBox",v.Handle)
						a.Adornee = v.Handle
						v.Handle.Size = Vector3.new(0.5,0.5,60)
						v.GripPos = Vector3.new(0,0,0)
						lplayer.Character.Humanoid:UnequipTools()
					end
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Reach applied!";
					Text = "Applied to equipped sword. Use ;noreach to disable.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("reach ") then
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Character:GetChildren())do
					if v:isA("Tool") then
						local a = Instance.new("SelectionBox",v.Handle)
						a.Name = "Reach"
						a.Adornee = v.Handle
						v.Handle.Size = Vector3.new(0.5,0.5,(string.sub(CMDBAR.Text, 7)))
						v.GripPos = Vector3.new(0,0,0)
						lplayer.Character.Humanoid:UnequipTools()
					end
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Reach applied!";
					Text = "Applied to equipped sword. Use ;noreach to disable.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("noreach") then
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Character:GetChildren())do
					if v:isA("Tool") then
						v.Handle.Reach:Destroy()
					end
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Reach removed!";
					Text = "Removed reach from equipped sword.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("rkill ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7)))do
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					wait(0.1)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.2)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.5)
					lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(Vector3.new(-100000,10,-100000))
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("tp me ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7))) do
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("cbring ") then
				if (string.sub(CMDBAR.Text, 8)) == "all" or (string.sub(CMDBAR.Text, 8)) == "All" or (string.sub(CMDBAR.Text, 8)) == "ALL" then
					cbringall = true
				else
					for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 8))) do
						brplr = v.Name
					end
				end
				cbring = true
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("uncbring") then
				cbring = false
				cbringall = false
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("swap ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 6))) do
					local NOWPLR = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					local NOW = lplayer.Character.HumanoidRootPart.CFrame
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					local function tp(player,player2)
						local char1,char2=player.Character,player2.Character
						if char1 and char2 then
							char1:MoveTo(char2.Head.Position)
						end
					end
					wait(0.1)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.2)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
					wait(0.5)
					lplayer.Character.HumanoidRootPart.CFrame = NOW
					wait(0.6)
					tp(lplayer, game:GetService("Players")[v.Name])
					wait(0.4)
					lplayer.Character.HumanoidRootPart.CFrame = NOWPLR
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("glitch ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 8))) do
					lplayer.Character.Humanoid.Name = 1
					local l = lplayer.Character["1"]:Clone()
					l.Parent = lplayer.Character
					l.Name = "Humanoid"
					wait(0.1)
					lplayer.Character["1"]:Destroy()
					game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
					lplayer.Character.Animate.Disabled = true
					wait(0.1)
					lplayer.Character.Animate.Disabled = false
					lplayer.Character.Humanoid.DisplayDistanceType = "None"
					for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
						lplayer.Character.Humanoid:EquipTool(v)
					end
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
					wait(0.3)
					lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character["Left Arm"].CFrame
					wait(0.4)
					b = Instance.new("BodyForce")
					b.Parent = lplayer.Character.HumanoidRootPart
					b.Name = "Glitch"
					b.Force = Vector3.new(100000000,5000,0)
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "Tools needed!";
						Text = "You need a tool in your backpack for this command!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("unglitch") then
				lplayer.Character.HumanoidRootPart.Glitch:Destroy()
				lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(10000,0,10000)
				b = Instance.new("BodyForce")
				b.Parent = lplayer.Character.HumanoidRootPart
				b.Name = "unGlitch"
				b.Force = Vector3.new(0,-5000000,0)
				wait(2)
				lplayer.Character.HumanoidRootPart.unGlitch:Destroy()
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("grespawn") then
				lplayer.Character.Humanoid.Health = 0
				wait(1)
				lplayer.Character.Head.CFrame = CFrame.new(1000000,0,1000000)
				lplayer.Character.Torso.CFrame = CFrame.new(1000000,0,1000000)
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("explorer") then
				loadstring(game:GetObjects("rbxassetid://492005721")[1].Source)()
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Success!";
					Text = "DEX Explorer has loaded.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("anim ") then
				local Anim = Instance.new("Animation")
				Anim.AnimationId = "rbxassetid://"..(string.sub(CMDBAR.Text, 6))
				local track = lplayer.Character.Humanoid:LoadAnimation(Anim)
				track:Play(.1, 1, 1)
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("animgui") then
				loadstring(game:GetObjects("rbxassetid://1202558084")[1].Source)()
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Success!";
					Text = "Energize Animations GUI has loaded.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("savepos") then
				saved = lplayer.Character.HumanoidRootPart.CFrame
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Position Saved";
					Text = "Use ;loadpos to return to saved position.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("loadpos") then
				lplayer.Character.HumanoidRootPart.CFrame = saved
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("bang ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 6))) do
					local Anim2 = Instance.new("Animation")
					Anim2.AnimationId = "rbxassetid://148840371"
					local track2 = lplayer.Character.Humanoid:LoadAnimation(Anim2)
					track2:Play(.1, 1, 1)
					bplrr = v.Name
					banpl = true
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("unbang") then
				banpl = false
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("bringmod ") then
				local function bringmodw()
					for i,obj in ipairs(game:GetService("Workspace"):GetDescendants()) do
						if obj.Name == (string.sub(CMDBAR.Text, 10)) then
							for i,ch in pairs(obj:GetDescendants()) do
								if (ch:IsA("BasePart")) then
									ch.CFrame = lplayer.Character.HumanoidRootPart.CFrame
									ch.CanCollide = false
									ch.Transparency = 0.7
									wait()
									ch.CFrame = lplayer.Character["Left Leg"].CFrame
									wait()
									ch.CFrame = lplayer.Character["Right Leg"].CFrame
									wait()
									ch.CFrame = lplayer.Character["Head"].CFrame
								end
							end
						end
					end
				end
				while wait() do
					bringmodw()
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "BringMod";
					Text = "BringMod enabled.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("respawn") then
				local mod = Instance.new('Model', workspace) mod.Name = 're '..lplayer.Name
				local hum = Instance.new('Humanoid', mod)
				local ins = Instance.new('Part', mod) ins.Name = 'Torso' ins.CanCollide = false ins.Transparency = 1
				lplayer.Character = mod
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("shutdown") then
				game:GetService'RunService'.Stepped:Connect(function()
					pcall(function()
						for i,v in pairs(game:GetService'Players':GetPlayers()) do
							if v.Character ~= nil and v.Character:FindFirstChild'Head' then
								for _,x in pairs(v.Character.Head:GetChildren()) do
									if x:IsA'Sound' then x.Playing = true x.CharacterSoundEvent:FireServer(true, true) end
								end
							end
						end
					end)
				end)
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Attempting Shutdown";
					Text = "Shutdown Attempt has begun.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("delobj ") then
				objtodel = (string.sub(CMDBAR.Text, 8))
				for i,v in pairs(game:GetService("Workspace"):GetDescendants()) do
					if v.Name == objtodel then
						v:Destroy()
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("getplrs") then
				for i,v in pairs(game:GetService("Players"):GetPlayers())do
					print(v)
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Printed";
					Text = "Players have been printed to console. (F9)";
				})
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("deldecal") then
				for i,v in pairs(game:GetService("Workspace"):GetDescendants())do
					if (v:IsA("Decal")) then
						v:Destroy()
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 10) == ("opfinality") then
				loadstring(game:GetObjects("rbxassetid://1294358929")[1].Source)()
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Success!";
					Text = "OpFinality GUI has loaded.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("remotes") then
				remotes = true
				added = true
				game.DescendantAdded:connect(function(rmt)
					if added == true then
						if remotes == true then 
							if rmt:IsA("RemoteEvent") then
								print("A RemoteEvent was added!")
								print(" game." .. rmt:GetFullName() .. " | RemoteEvent")
								print(" game." .. rmt:GetFullName() .. " | RemoteEvent", 247, 0, 0, true)
							end end end
				end)
				game.DescendantAdded:connect(function(rmtfnctn)
					if added == true then
						if remotes == true then 
							if rmtfnctn:IsA("RemoteFunction") then
								warn("A RemoteFunction was added!")
								warn(" game." .. rmtfnctn:GetFullName() .. " | RemoteFunction")
								print(" game." .. rmtfnctn:GetFullName() .. " | RemoteFunction", 5, 102, 198, true)
							end end end
				end)

				game.DescendantAdded:connect(function(bndfnctn)
					if added == true then
						if binds == true then 
							if bndfnctn:IsA("BindableFunction") then
								print("A BindableFunction was added!")
								print(" game." .. bndfnctn:GetFullName() .. " | BindableFunction")
								print(" game." .. bndfnctn:GetFullName() .. " | BindableFunction", 239, 247, 4, true)
							end end end
				end)

				game.DescendantAdded:connect(function(bnd)
					if added == true then
						if binds == true then 
							if bnd:IsA("BindableEvent") then
								warn("A BindableEvent was added!")
								warn(" game." .. bnd:GetFullName() .. " | BindableEvent")
								print(" game." .. bnd:GetFullName() .. " | BindableEvent", 13, 193, 22, true)
							end end end
				end)


				if binds == true then
					for i,v in pairs(game:GetDescendants()) do
						if v:IsA("BindableFunction") then
							print(" game." .. v:GetFullName() .. " | BindableFunction")
							print(" game." .. v:GetFullName() .. " | BindableFunction", 239, 247, 4, true)
						end end
					for i,v in pairs(game:GetDescendants()) do
						if v:IsA("BindableEvent") then
							warn(" game." .. v:GetFullName() .. " | BindableEvent")
							print(" game." .. v:GetFullName() .. " | BindableEvent", 13, 193, 22, true)
						end end
				else
					print("Off")
				end
				if remotes == true then
					for i,v in pairs(game:GetDescendants()) do
						if v:IsA("RemoteFunction") then
							warn(" game." .. v:GetFullName() .. " | RemoteFunction")
							print(" game." .. v:GetFullName() .. " | RemoteFunction", 5, 102, 198, true)
						end end
					wait()
					for i,v in pairs(game:GetDescendants()) do
						if v:IsA("RemoteEvent") then
							print(" game." .. v:GetFullName() .. " | RemoteEvent")
							print(" game." .. v:GetFullName() .. " | RemoteEvent", 247, 0, 0, true)
						end end
				else
					print("Off")
				end
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Printing Remotes";
					Text = "Type ;noremotes to disable.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("noremotes") then
				remotes = false
				added = false
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Printing Remotes Disabled";
					Text = "Type ;remotes to enable.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("tpdefault") then
				spin = false
				followed = false
				traill = false
				noclip = false
				annoying = false
				hwalk = false
				cbringing = false
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("stopsit") then
				stopsitting = true
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("gosit") then
				stopsitting = false
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("version") then
				print(adminversion)
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Version";
					Text = adminversion;
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("clicktp") then
				clickgoto = true
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Click TP";
					Text = "Press E to teleport to mouse position";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("noclicktp") then
				clickgoto = false
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Click TP";
					Text = "Click TP has been disabled.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("toolson") then
				gettingtools = true
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools Enabled";
					Text = "Automatically colleting tools dropped.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("toolsoff") then
				gettingtools = false
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Tools Disabled";
					Text = "Click TP has been disabled.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("delcmdbar") then
				ScreenGui:Destroy()
			end
			if string.sub(CMDBAR.Text, 1, 5) == ("reset") then
				lplayer.Character.Head:Destroy()
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("state ") then
				statechosen = string.sub(CMDBAR.Text, 7)
				changingstate = true
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("gravity ") then
				game:GetService("Workspace").Gravity = string.sub(CMDBAR.Text, 9)
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("looprhats") then
				removingmeshhats = true
			end
			if string.sub(CMDBAR.Text, 1, 11) == ("unlooprhats") then
				removingmeshhats = false
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("looprtool") then
				removingmeshtool = true
			end
			if string.sub(CMDBAR.Text, 1, 11) == ("unlooprtool") then
				removingmeshtool = false
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("givetool ") then
				for i,v in pairs(game:GetService("Players").LocalPlayer.Character:GetDescendants()) do
					if v:IsA("Tool") then
						for i,player in pairs(GetPlayer(string.sub(CMDBAR.Text, 10))) do
							v.Parent = player.Character
						end
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 4) == ("age ") then
				for i,player in pairs(GetPlayer(string.sub(CMDBAR.Text, 5))) do
					game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(player.Name.." Account Age: "..player.AccountAge.." days!", "All")
				end
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("id ") then
				for i,player in pairs(GetPlayer(string.sub(CMDBAR.Text, 4))) do
					game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(player.Name.." Account ID: "..player.UserId, "All")
				end
			end
			if string.sub(CMDBAR.Text, 1, 5) == (".age ") then
				for i,player in pairs(GetPlayer(string.sub(CMDBAR.Text, 6))) do
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = player.AccountAge.." Days";
						Text = "Account age of "..player.Name;
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 4) == (".id ") then
				for i,player in pairs(GetPlayer(string.sub(CMDBAR.Text, 5))) do
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = player.UserId.." ID";
						Text = "Account ID of "..player.Name;
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("gameid") then
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "Game ID";
					Text = "Game ID: ".. game.GameId;
				})
			end
			if string.sub(CMDBAR.Text, 1, 3) == ("pgs") then
				local pgscheck = game:GetService("Workspace"):PGSIsEnabled()
				if pgscheck == true then
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "PGSPhysicsSolverEnabled";
						Text = "PGS is Enabled!";
					})
				else
					game:GetService("StarterGui"):SetCore("SendNotification", {
						Title = "PGSPhysicsSolverEnabled";
						Text = "PGS is Disabled!";
					})
				end
			end
			if string.sub(CMDBAR.Text, 1, 11) == ("removeinvis") then
				for i,v in pairs(game:GetService("Workspace"):GetDescendants()) do
					if v:IsA("Part") then
						if v.Transparency == 1 then
							if v.Name ~= "HumanoidRootPart" then
								v:Destroy()
							end
						end
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("removefog") then
				game:GetService("Lighting").FogStart = 0
				game:GetService("Lighting").FogEnd = 9999999999999
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("disable") then
				lplayer.Character.Humanoid.Parent = lplayer
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("enable") then
				lplayer.Humanoid.Parent = lplayer.Character
			end
			if string.sub(CMDBAR.Text, 1, 13) == ("givealltools ") then
				for i,v in pairs(game:GetService("Players").LocalPlayer.Backpack:GetDescendants()) do
					if v:IsA("Tool") then
						v.Parent = lplayer.Character
						wait()
						for i,player in pairs(GetPlayer(string.sub(CMDBAR.Text, 14))) do
							v.Parent = player.Character
						end
					end
				end
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("flyspeed ") then
				speedfly = string.sub(CMDBAR.Text, 10)
				wait()
				change()
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("carpet ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 8))) do
					local Anim3 = Instance.new("Animation")
					Anim3.AnimationId = "rbxassetid://282574440"
					local track3 = lplayer.Character.Humanoid:LoadAnimation(Anim3)
					track3:Play(.1, 1, 1)
					bplrr = v.Name
					banpl = true
				end
			end
			if string.sub(CMDBAR.Text, 1, 8) == ("uncarpet") then
				banpl = false
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("stare ") then
				for i,v in pairs(GetPlayer(string.sub(CMDBAR.Text, 7))) do
					staring = true
					stareplr = v
				end
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("unstare") then
				staring = false
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("logchat") then
				chatlogs = true
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "LogChat enabled";
					Text = "Now logging all player chat.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 9) == ("unlogchat") then
				chatlogs = false
				game:GetService("StarterGui"):SetCore("SendNotification", {
					Title = "LogChat disabled";
					Text = "Stopped logging all player chat.";
				})
			end
			if string.sub(CMDBAR.Text, 1, 6) == ("fixcam") then
				game:GetService("Workspace").CurrentCamera:Destroy()
				wait(0.1)
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character.Humanoid
				game:GetService("Workspace").CurrentCamera.CameraType = "Custom"
				lplayer.CameraMinZoomDistance = 0.5
				lplayer.CameraMaxZoomDistance = 400
				lplayer.CameraMode = "Classic"
			end
			if string.sub(CMDBAR.Text, 1, 7) == ("unstate") then
				changingstate = false
			end
			CMDBAR.Text = ""
		end
	end)

	wait(0.3)
	game:GetService("StarterGui"):SetCore("SendNotification", {
		Title = "Loaded successfully!";
		Text = "Reviz Admin V2 by illremember";
	})
	wait(0.1)
	print("Reviz Admin V2 loaded!")
	if game:GetService("Workspace").FilteringEnabled == true then
		warn("FE is Enabled (Filtering Enabled)")
		game:GetService("StarterGui"):SetCore("SendNotification", {
			Title = "FE is Enabled";
			Text = "Filtering Enabled. Enjoy using Reviz Admin!";
		})
	else
		warn("FE is Disabled (Filtering Disabled) Consider using a different admin script.")
		game:GetService("StarterGui"):SetCore("SendNotification", {
			Title = "FE is Disabled";
			Text = "Filtering Disabled. Consider using a different admin script.";
		})
	end

	local intro = Instance.new("ScreenGui")
	local Frame = Instance.new("Frame")
	local ImageLabel = Instance.new("ImageLabel")
	intro.Parent = game:GetService("CoreGui")
	Frame.Parent = intro
	Frame.BackgroundColor3 = Color3.new(1, 1, 1)
	Frame.BackgroundTransparency = 1
	Frame.Size = UDim2.new(1, 0, 0, 300)
	Frame.Position = UDim2.new(0, 0, -0.4, 0)
	ImageLabel.Parent = Frame
	ImageLabel.BackgroundColor3 = Color3.new(1, 1, 1)
	ImageLabel.BackgroundTransparency = 1
	ImageLabel.Position = UDim2.new(0, 0, 0, 0)
	ImageLabel.Size = UDim2.new(1, 0, 1, 0)
	ImageLabel.Image = "http://www.roblox.com/asset/?id=1542162618"
	Frame:TweenPosition(UDim2.new(0, 0, 0.2, 0), "Out", "Elastic", 3)
	wait(3.01)
	Frame:TweenPosition(UDim2.new(0, 0, 1.5, 0), "Out", "Elastic", 5)
	wait(5.01)
	intro:Destroy()
end)

UICorner_7.Parent = reviz

TextLabel.Parent = Frame_2
TextLabel.BackgroundColor3 = Color3.fromRGB(61, 61, 61)
TextLabel.Position = UDim2.new(0.626865685, 0, 0.702970326, 0)
TextLabel.Size = UDim2.new(0, 98, 0, 55)
TextLabel.Font = Enum.Font.SourceSans
TextLabel.Text = "Made By Johnthehack44 With Love <3"
TextLabel.TextColor3 = Color3.fromRGB(72, 72, 72)
TextLabel.TextScaled = true
TextLabel.TextSize = 14.000
TextLabel.TextWrapped = true

UICorner_8.Parent = TextLabel

UICorner_9.Parent = Frame

close.Name = "close"
close.Parent = Frame
close.BackgroundColor3 = Color3.fromRGB(56, 56, 56)
close.Position = UDim2.new(0.930000007, 0, 3.7252903e-09, 0)
close.Size = UDim2.new(0, 35, 0, 25)
close.Font = Enum.Font.SourceSans
close.Text = "Close"
close.TextColor3 = Color3.fromRGB(255, 255, 255)
close.TextScaled = true
close.TextSize = 14.000
close.TextWrapped = true
close.MouseButton1Click:Connect(function()
	local script = Instance.new('LocalScript', close)

	local Frame = script.Parent.Parent

	script.Parent.MouseButton1Click:Connect(function()
		Frame.Visible = false
	end)
end)

UICorner_10.Parent = close

open.Name = "open"
open.Parent = ScreenGui
open.BackgroundColor3 = Color3.fromRGB(75, 75, 75)
open.BackgroundTransparency = 0.500
open.Position = UDim2.new(-0.0188118815, 0, 0.5, 0)
open.Size = UDim2.new(0, 128, 0, 30)
open.Font = Enum.Font.SourceSans
open.Text = "Open"
open.TextColor3 = Color3.fromRGB(255, 255, 255)
open.TextScaled = true
open.TextSize = 14.000
open.TextWrapped = true
open.MouseButton1Click:Connect(function()
	local script = Instance.new('LocalScript', open)

	local Frame = script.Parent.Parent.Frame

	script.Parent.MouseButton1Click:Connect(function()
		Frame.Visible = true
	end)
end)

UICorner_11.Parent = open

Features & Information

its mine i own

Community Comments (6)

DejasMythicDejasMythicJul 5, 2022(edited)

Its not yours, you don't own it. And the infinite yield doesn't work

quilll457quilll457Jul 5, 2022(edited)

@kimraynick98 i do own the script i did make it i dont own the script in the gui bro and inf yield does wor

quilll457quilll457Jul 5, 2022(edited)

@kimraynick98 maybe inf yield doesnt work for you bc u have a **** executor

DejasMythicDejasMythicJul 5, 2022(edited)

My executor is fine ty :) ur **** sucks tho! Have a good day.

quilll457quilll457Jul 5, 2022(edited)

you know what im not arguing with a 5 yr old

AxelRVAxelRVJul 5, 2022(edited)

lol

More Scripts for Universal Scripts