Hello again! Back w/ another Remote question! :D
As the title of the question states, the server invokes the client, but the client keeps returning nothing when it's invoked, and I don't know why. At first, I tried the LocalPlayer, that didn't work, but it didn't return an error, so I tried a logical guess as to what the script requirement may have been, but sadly it didn't work either & returned an error. The Output, finally, returned an error stating:
11:46:36.807 - Players.Player1.PlayerGui.LocalPlrAdded:2: attempt to index global 'plyr' (a nil value)
And that's all that kept returning; I just can't figure what's causing the client to not be Invoked. -_-*
To note, I tried using the or operator to try & help w/ the issue of the client not being returned, but it didn't do anything either: no error was returned, so I tried using prints to try & diagnose the problem, and as to my surprise, two of the prints in the client returned, and one of the prints in the server fired; for each script, there's a total of three prints; but even so, I couldn't figure out what the problem was, but the client appeared to have invoked the server, b/c the first print in the server fired, but the third in the client didn't print, as stated, and the two prints in the server didn't print either, as also stated.
As a result of all this, again, I couldn't diagnose nor figure out the problem; these are the two scripts I'm working w/:
-- Server Script
local Spawns = game.Workspace:waitForChild('Spawnz'):GetChildren()
local Remote = Instance.new('RemoteFunction')
Remote.Name = 'plyrremote'
function GetChar()
local char = Remote:InvokeClient(character)
return char or nil
end
function onPlayerJoin(plyr)
local NewRemote = Remote:Clone()
NewRemote.Name = plyr.Name .. 'remote'
NewRemote.Parent = game.Workspace
function NewRemote.OnServerInvoke(plyr)
print('Fired1') -- Prints
local char = GetChar()
print('Fired2') -- Doesn't print
if char then
print('Fired3') -- Doesn't print either
char:MoveTo(Spawns[math.random(#Spawns)])
end
end
end
game.Players.ChildAdded:connect(onPlayerJoin)
for i,v in pairs(game.Players:GetChildren()) do onPlayerJoin(v) end
-- Client Script
local plyr = plyr or game.Players.LocalPlayer -- I forgot to mention before, but the client script is in the StarterGui service.
local Remote = game.Workspace:waitForChild(plyr.Name..'remote')
local char = plyr.Character or plyr.CharacterAdded:Wait()
print('Passed1') -- Prints
function Remote.OnClientInvoke()
return char or nil
end
print('Passed2') -- Prints
Remote:InvokeServer()
print('Passed3') -- Doesn't print
Ugh, I'm growing tired of Remotes. -_-*

2 comments
Yh, Link150 & kingdom5 on the chat yesterday corrected me of how remotes work (the basics). I felt so stupid lol. But thank you for pointing out some things: studio isn't correctly working atm, so I've had to type the fimxyions myself. ;-;
However, I'll leep & turn to your answer as a refenence for future projects; thank you. ;)