★ {UNIVERSAL}: Solara Remote Spy – Script

Remotespy for Solara is a universal script designed to enhance game interactions by allowing the user to inspect and manage remote function calls within the Solara platform.

It’s crafted to cater to both novice and advanced users, providing tools to observe game mechanics closely and make modifications in real time.

local G2L = {};

_G.Code = ""

-- StarterGui.sexy spy from tf2
G2L["1"] = Instance.new("ScreenGui", game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"));
G2L["1"]["Name"] = [[sexy spy from tf2]];
G2L["1"]["ResetOnSpawn"] = false
G2L["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling;

-- StarterGui.sexy spy from tf2.Frame
G2L["2"] = Instance.new("Frame", G2L["1"]);
G2L["2"]["BorderSizePixel"] = 0;
G2L["2"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["2"]["Size"] = UDim2.new(0, 425, 0, 253);
G2L["2"]["Position"] = UDim2.new(0.02067, 0, 0.17804, 0);
G2L["2"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);

-- StarterGui.sexy spy from tf2.Frame.TopBar
G2L["3"] = Instance.new("Frame", G2L["2"]);
G2L["3"]["BorderSizePixel"] = 0;
G2L["3"]["BackgroundColor3"] = Color3.fromRGB(38, 36, 39);
G2L["3"]["Size"] = UDim2.new(0, 425, 0, 18);
G2L["3"]["Position"] = UDim2.new(0, 0, -0.00378, 0);
G2L["3"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["3"]["Name"] = [[TopBar]];

-- StarterGui.sexy spy from tf2.Frame.TopBar.Name
G2L["4"] = Instance.new("TextLabel", G2L["3"]);
G2L["4"]["BorderSizePixel"] = 0;
G2L["4"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["4"]["TextSize"] = 14;
G2L["4"]["FontFace"] = Font.new([[rbxasset://fonts/families/Arial.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["4"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["4"]["BackgroundTransparency"] = 1;
G2L["4"]["Size"] = UDim2.new(0, 58, 0, 14);
G2L["4"]["BorderColor3"] = Color3.fromRGB(255, 255, 255);
G2L["4"]["Text"] = [[sexy spy from tf2]];
G2L["4"]["Name"] = [[Name]];
G2L["4"]["Position"] = UDim2.new(0, 0, 0, 0);

-- StarterGui.sexy spy from tf2.Frame.TopBar.X
G2L["5"] = Instance.new("TextButton", G2L["3"]);
G2L["5"]["BorderSizePixel"] = 0;
G2L["5"]["TextStrokeColor3"] = Color3.fromRGB(255, 255, 255);
G2L["5"]["TextSize"] = 21;
G2L["5"]["TextColor3"] = Color3.fromRGB(205, 205, 205);
G2L["5"]["BackgroundColor3"] = Color3.fromRGB(38, 36, 39);
G2L["5"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["5"]["RichText"] = true;
G2L["5"]["Size"] = UDim2.new(0, 24, 0, 18);
G2L["5"]["Name"] = [[X]];
G2L["5"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["5"]["Text"] = [[X]];
G2L["5"]["Position"] = UDim2.new(0.94353, 0, 0, 0);

-- StarterGui.sexy spy from tf2.Frame.Buttons
G2L["6"] = Instance.new("Frame", G2L["2"]);
G2L["6"]["BorderSizePixel"] = 0;
G2L["6"]["BackgroundColor3"] = Color3.fromRGB(75, 75, 75);
G2L["6"]["Size"] = UDim2.new(0, 273, 0, 106);
G2L["6"]["Position"] = UDim2.new(0.35765, 0, 0.58103, 0);
G2L["6"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["6"]["Name"] = [[Buttons]];

-- StarterGui.sexy spy from tf2.Frame.Buttons.CopyR
G2L["7"] = Instance.new("TextButton", G2L["6"]);
G2L["7"]["TextSize"] = 14;
G2L["7"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["7"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["7"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["7"]["Size"] = UDim2.new(0, 93, 0, 17);
G2L["7"]["Name"] = [[CopyR]];
G2L["7"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["7"]["Text"] = [[Copy Remote]];
G2L["7"]["Position"] = UDim2.new(0.32967, 0, 0.08491, 0);

-- StarterGui.sexy spy from tf2.Frame.Buttons.CopyR.Border
G2L["8"] = Instance.new("TextLabel", G2L["7"]);
G2L["8"]["BorderSizePixel"] = 0;
G2L["8"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["8"]["TextSize"] = 14;
G2L["8"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["8"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["8"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["8"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["8"]["Text"] = [[]];
G2L["8"]["Name"] = [[Border]];

-- StarterGui.sexy spy from tf2.Frame.Buttons.CopyC
G2L["9"] = Instance.new("TextButton", G2L["6"]);
G2L["9"]["TextSize"] = 14;
G2L["9"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["9"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["9"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["9"]["Size"] = UDim2.new(0, 83, 0, 17);
G2L["9"]["Name"] = [[CopyC]];
G2L["9"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["9"]["Text"] = [[Copy Code]];
G2L["9"]["Position"] = UDim2.new(0, 0, 0.08491, 0);

G2L["9"].MouseButton1Click:Connect(function()


	if setclipboard then

		setclipboard(_G.Code)

	else
		print("Your executer doesn't support clipboard")
	end
end)

-- StarterGui.sexy spy from tf2.Frame.Buttons.CopyC.Border
G2L["a"] = Instance.new("TextLabel", G2L["9"]);
G2L["a"]["BorderSizePixel"] = 0;
G2L["a"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["a"]["TextSize"] = 14;
G2L["a"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["a"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["a"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["a"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["a"]["Text"] = [[]];
G2L["a"]["Name"] = [[Border]];

-- StarterGui.sexy spy from tf2.Frame.Buttons.Run
G2L["b"] = Instance.new("TextButton", G2L["6"]);
G2L["b"]["TextSize"] = 14;
G2L["b"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["b"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["b"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["b"]["Size"] = UDim2.new(0, 81, 0, 17);
G2L["b"]["Name"] = [[Run]];
G2L["b"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["b"]["Text"] = [[Run Code]];
G2L["b"]["Position"] = UDim2.new(0.7033, 0, 0.08491, 0);

-- StarterGui.sexy spy from tf2.Frame.Buttons.Run.Border
G2L["c"] = Instance.new("TextLabel", G2L["b"]);
G2L["c"]["BorderSizePixel"] = 0;
G2L["c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["c"]["TextSize"] = 14;
G2L["c"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["c"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["c"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["c"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["c"]["Text"] = [[]];
G2L["c"]["Name"] = [[Border]];

G2L["d2"] = Instance.new("TextButton", G2L["6"]);
G2L["d2"]["TextSize"] = 14;
G2L["d2"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["d2"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["d2"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["d2"]["Size"] = UDim2.new(0, 83, 0, 17);
G2L["d2"]["Name"] = [[Clear]];
G2L["d2"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["d2"]["Text"] = [[Clear Output]];
G2L["d2"]["Position"] = UDim2.new(0, 0, 0.33962, 0);

G2L["e2"] = Instance.new("TextLabel", G2L["d2"]);
G2L["e2"]["BorderSizePixel"] = 0;
G2L["e2"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["e2"]["TextSize"] = 14;
G2L["e2"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["e2"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["e2"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["e2"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["e2"]["Text"] = [[]];
G2L["e2"]["Name"] = [[Border]];

-- StarterGui.sexy spy from tf2.Frame.Remotes
G2L["d"] = Instance.new("ScrollingFrame", G2L["2"]);
G2L["d"]["Active"] = true;
G2L["d"]["BorderSizePixel"] = 0;
G2L["d"]["CanvasSize"] = UDim2.new(9999, 9999, 9999, 9999);
G2L["d"]["BackgroundColor3"] = Color3.fromRGB(54, 54, 56);
G2L["d"]["Name"] = [[Remotes]];
G2L["d"]["ScrollBarImageTransparency"] = 1;
G2L["d"]["Size"] = UDim2.new(0, 152, 0, 236);
G2L["d"]["ScrollBarImageColor3"] = Color3.fromRGB(0, 0, 0);
G2L["d"]["Position"] = UDim2.new(0, 0, 0.06719, 0);
G2L["d"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["d"]["ScrollBarThickness"] = 0;
G2L["d"]["LayoutOrder"] = 1;

-- StarterGui.sexy spy from tf2.Frame.Remotes.RemoteExample
G2L["e"] = Instance.new("TextButton", G2L["d"]);
G2L["e"]["BorderSizePixel"] = 3;
G2L["e"]["TextSize"] = 14;
G2L["e"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["e"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["e"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.SemiBold, Enum.FontStyle.Normal);
G2L["e"]["Size"] = UDim2.new(0, 152, 0, 22);
G2L["e"]["BackgroundTransparency"] = 0.8;
G2L["e"]["Name"] = [[RemoteExample]];
G2L["e"]["BorderColor3"] = Color3.fromRGB(93, 96, 102);
G2L["e"]["Text"] = [[RemoteName]];

-- StarterGui.sexy spy from tf2.Frame.Remotes.RemoteExample.border
G2L["f"] = Instance.new("TextLabel", G2L["e"]);
G2L["f"]["BorderSizePixel"] = 0;
G2L["f"]["BackgroundColor3"] = Color3.fromRGB(253, 242, 81);
G2L["f"]["TextSize"] = 14;
G2L["f"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["f"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["f"]["Size"] = UDim2.new(0, 10, 0, 22);
G2L["f"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["f"]["Text"] = [[]];
G2L["f"]["Name"] = [[border]];

-- StarterGui.sexy spy from tf2.Frame.Remotes.UIListLayout
G2L["10"] = Instance.new("UIListLayout", G2L["d"]);
G2L["10"]["Padding"] = UDim.new(0, 7);
G2L["10"]["SortOrder"] = Enum.SortOrder.LayoutOrder;

-- StarterGui.sexy spy from tf2.Frame.CodeSample
G2L["11"] = Instance.new("TextBox", G2L["2"]);
G2L["11"]["CursorPosition"] = -1;
G2L["11"]["Interactable"] = false;
G2L["11"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["11"]["BorderSizePixel"] = 0;
G2L["11"]["TextXAlignment"] = Enum.TextXAlignment.Left;
G2L["11"]["TextWrapped"] = true;
G2L["11"]["TextSize"] = 15;
G2L["11"]["Name"] = [[CodeSample]];
G2L["11"]["TextYAlignment"] = Enum.TextYAlignment.Top;
G2L["11"]["BackgroundColor3"] = Color3.fromRGB(42, 45, 54);
G2L["11"]["FontFace"] = Font.new([[rbxasset://fonts/families/Balthazar.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["11"]["MultiLine"] = true;
G2L["11"]["ClearTextOnFocus"] = false;
G2L["11"]["Size"] = UDim2.new(0, 272, 0, 130);
G2L["11"]["Position"] = UDim2.new(0.35784, 0, 0.06719, 0);
G2L["11"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["11"]["Text"] = [[]];

-- StarterGui.sexy spy from tf2.Frame.Drag
G2L["12"] = Instance.new("LocalScript", G2L["2"]);
G2L["12"]["Name"] = [[Drag]];

-- StarterGui.sexy spy from tf2.Frame.Main
G2L["13"] = Instance.new("LocalScript", G2L["2"]);
G2L["13"]["Name"] = [[Main]];

-- StarterGui.sexy spy from tf2.Frame.Drag
local function C_12()
	local script = G2L["12"];
	local frame = script.Parent
	local UserInputService = game:GetService("UserInputService")

	local dragging
	local dragInput
	local dragStart
	local startPos

	local function update(input)
		local delta = input.Position - dragStart
		frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
	end

	frame.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragStart = input.Position
			startPos = frame.Position

			input.Changed:Connect(function()
				if input.UserInputState == Enum.UserInputState.End then
					dragging = false
				end
			end)
		end
	end)

	frame.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
			dragInput = input
		end
	end)

	UserInputService.InputChanged:Connect(function(input)
		if input == dragInput and dragging then
			update(input)
		end
	end)

end;
task.spawn(C_12);
-- StarterGui.sexy spy from tf2.Frame.Main
local function C_13()
	local script = G2L["13"];
	local TweenService = game:GetService("TweenService")

	local MainFrame = script.Parent
	local TopBar = MainFrame.TopBar

	local function Close()

		MainFrame.Parent:Destroy()

	end

	local function SetupButtons()

		TopBar.X.MouseEnter:Connect(function()
			TweenService:Create(TopBar.X, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(170, 0, 0)}):Play()
		end)

		TopBar.X.MouseLeave:Connect(function()
			TweenService:Create(TopBar.X, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(37, 35, 38)}):Play()
		end)

		TopBar.X.MouseButton1Click:Connect(function()
			Close()
		end)

		MainFrame.Buttons.Clear.MouseButton1Click:Connect(function()

			for _,v in pairs(MainFrame.Remotes:GetChildren()) do
				if v:IsA("TextButton") then
					v:Destroy()
				end
			end

		end)

	end

	local function Init()

		-- Close Function

		SetupButtons()

	end

	Init()
end;
task.spawn(C_13);

local function getPathToInstance(instance)
	local path = {}
	local current = instance
	while current and current ~= game do
		local name = current.Name
		if name:sub(1, 4) == "Game" then
			name = "game" .. name:sub(5)
		end
		table.insert(path, 1, name)
		current = current.Parent
	end
	return table.concat(path, ".")
end

local function formatValue(value)
	if typeof(value) == "string" then
		return string.format("%q", value)
	elseif typeof(value) == "number" then
		return tostring(value)
	elseif typeof(value) == "boolean" then
		return value and "true" or "false"
	elseif typeof(value) == "Instance" then
		return getPathToInstance(value)
	else
		return string.format("%q", tostring(value))
	end
end

local function Format(args)
	local formattedArgs = {}
	for i, arg in ipairs(args) do
		formattedArgs[i] = string.format("[%d] = %s", i, formatValue(arg))
	end
	return formattedArgs
end
local tabelhell = nil
tabelhell = function(newtonbar, depth)
	local value = "{"
	local deeper = ""
	for i=1,depth do
		deeper = deeper .. "	"
	end
	local passes = 0
	for name, value2 in pairs(newtonbar) do
		if type(value2) == "string" then value2 = '"' .. value2 .. '"' end
		if type(value2) == "table" then value2 = tabelhell(value2, depth+1) end
		local ender = ",\n"
		passes += 1
		if passes == #newtonbar then
			ender = ""
		end
		if not tonumber(name) then
			name = '"' .. name .. '"'
		end
		value = value .. deeper .. '[' .. name .. '] = ' .. tostring(value2) .. ender
	end
	value = value .. "\n}"
	return value
end

local function handleRemote(remote)
	local path = {}
	local current = remote
	while current and current.Parent ~= game do
		local name = current.Name
		if name:sub(1, 4) == "Game" then
			name = "game" .. name:sub(5)
		end
		table.insert(path, 1, name)
		current = current.Parent
	end
	local fullPath = table.concat(path, ".")

	if remote:IsA("RemoteEvent") then
		remote.OnClientEvent:Connect(function(...)
			local args = {...}
			local argsString = ""
			local passes = 0
			for name, value in pairs(args) do
				local value = value
				local newtonbar = value
				if type(value) == "string" then value = '"' .. value .. '"' end
				if type(newtonbar) == "table" then
					value = tablehell(newtonbar, 2)
				end
				if type(value) == "userdata" then value = value:GetFullName() end
				local ender = ","
				passes += 1
				if passes == #newtonbar then
					ender = ""
				end
				if not tonumber(name) then
					name = '"' .. name .. '"'
				end
				argsString = argsString .. '\n	[' .. name .. '] = ' .. tostring(value) .. ender
			end
			G2L["yu"] = G2L["e"]:Clone()
			G2L["yu"]["Name"] = remote.Name
			G2L["yu"]["Text"] = remote.Name
			G2L["yu"]["Parent"] = G2L["d"]
			G2L["yu"].MouseButton1Click:Connect(function()

				_G.Code = string.format([[local args = {
%s
}
%s:FireServer(unpack(args))
]], argsString, fullPath)

				G2L["11"]["Text"] = _G.Code
			end)
		end)
	elseif remote:IsA("RemoteFunction") then
		remote.OnClientInvoke = function(...)
			local args = {...}
			local argsString = ""
			local passes = 0
			for name, value in pairs(args) do
				local value = value
				local newtonbar = value
				if type(value) == "string" then value = '"' .. value .. '"' end
				if type(value) == "userdata" then value = value:GetFullName() end
				if type(newtonbar) == "table" then
					value = tablehell(newtonbar, 2)
				end
				local ender = ","
				passes += 1
				if passes == #newtonbar then
					ender = ""
				end
				if not tonumber(name) then
					name = '"' .. name .. '"'
				end
				argsString = argsString .. '\n	[' .. name .. '] = ' .. tostring(value) .. ender
			end

			G2L["yu2"] = G2L["e"]:Clone()
			G2L["yu2"]["Name"] = remote.Name
			G2L["yu2"]["Text"] = remote.Name
			G2L["yu2"]["Parent"] = G2L["d"]
			G2L["yu2"].MouseButton1Click:Connect(function()
				_G.Code = string.format([[local args = {
%s
}
%s:InvokeServer(unpack(args))
]], argsString, fullPath)
			end)

			return ...
		end
	end
end

local function wrapRemotes(folder)
	for _, obj in ipairs(folder:GetDescendants()) do
		if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then
			handleRemote(obj)
		end
	end
	folder.DescendantAdded:Connect(function(descendant)
		if descendant:IsA("RemoteEvent") or descendant:IsA("RemoteFunction") then
			handleRemote(descendant)
		end
	end)
end

local folders = {
	game.ReplicatedStorage,
	game.StarterGui,
	game.StarterPack,
	game.StarterPlayer
}

for _, folder in ipairs(folders) do
	wrapRemotes(folder)
	folder.DescendantAdded:Connect(function(descendant)
		if descendant:IsA("RemoteEvent") or descendant:IsA("RemoteFunction") then
			handleRemote(descendant)
		end
	end)
end

return G2L["1"], require;

Steps:

  1. Copy Instantly: Hit ‘COPY’ to grab the script.
  2. Paste Easily: Insert it into your application.
  3. Run & Enjoy: Click to run and enhance your Roblox experience!

Follow these straightforward steps and supercharge your gaming experience in no time!

Note: Roblox scripts play a crucial role in developing interactive and immersive games on the platform. Written in the Lua programming language, they enable players and developers to implement features and functionality, turning their game concepts into a reality.

Leave a Comment