It’s definitely not 5 AM here
It’s possible to return back a value using a RemoteFunction
, you just have to figure out what exactly you want the client & server to detect 
Firstly, you should already have a RemoteFunction
inside the ReplicatedStorage
Service so that it can replicate across both sides of the game itself (Server/Client)
--Server
local RemoteFunction = game.ReplicatedStorage:WaitForChild("RemoteFunction")
local function Example()
end
--Client
local RemoteFunction = game.ReplicatedStorage:WaitForChild("RemoteFunction")
From this instance, it looks like you’re wanting to Invoke the Server it looks like
If I recall correctly from what these RemoteFunctions
do, they can return 1 value when called by the opposite side of the game, you just need to call their functions properly (InvokeServer
/OnServerInvoke
)
To make a request from the client/server side, call the InvokeServer
function like so:
--Client
local RemoteFunction = game.ReplicatedStorage:WaitForChild("RemoteFunction")
local PassedValue = RemoteFunction:InvokeServer() --This will send a request from the client, to the server & will wait/yield until you get a result
if PassedValue then
print("This is the value that passed: "..PassedValue)
end
And to check the RemoteFunction
whenever you make a request on the client, you’ll have to use OnServerInvoke
in order to connect these said “requests” so that the script know when to detect it:
--Server
local RemoteFunction = game.ReplicatedStorage:WaitForChild("RemoteFunction")
local function Example(Player) --RemoteFunctions/RemoteEvents already pass the player as the first parameter when used by the server
local ExampleVal = script.Parent.example.Value
return ExampleVal
end
RemoteFunction.OnServerInvoke = Example --Here, we're connecting our RemoteFunction to detect the changes
And if everything should work right, it should properly print out the ExampleVal
on the client!