PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience

RemoteFunctions: Server to Client

RemoteFunctions: Server to Client

Aug 20 2018, 2:46 PM PST

Invoking a client is very similar to invoking the server, except in this case the invocation has to pass the player to invoke. The function used to do this is RemoteFunction/InvokeClient.

The client listens for this function to be invoked by binding a function to RemoteFunction/OnClientInvoke using the assignment operator =, and not with an event within a LocalScript. When the player (client) is invoked, it will execute the bound function.

-- Server
 
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
 
local createPopupRequest = Instance.new("RemoteFunction")
createPopupRequest.Name = "CreatePopupRequest"
createPopupRequest.Parent = ReplicatedStorage
Players.CharacterAutoLoads = false
 
local function onPlayerAdded(player)
	createPopupRequest:InvokeClient(player)
	player:LoadCharacter()
end
 
Players.PlayerAdded:Connect(onPlayerAdded)


-- ==================================================


-- LocalScript
 
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
 
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local createPopupRequest = ReplicatedStorage:WaitForChild("CreatePopupRequest")
 
local function onCreatePopupRequested()
	local screen = Instance.new("ScreenGui")
	screen.Parent = playerGui
	local closeButton = Instance.new("TextButton")
	closeButton.Text = "Welcome to the game! Click me to play!"
	closeButton.Size = UDim2.new(0, 300, 0, 50)
	closeButton.Parent = screen
 
	closeButton.MouseButton1Click:Wait()
	closeButton.Visible = false
end
 
createPopupRequest.OnClientInvoke = onCreatePopupRequested