How would I get the tabe of players from a script to another script?

So I made a module, used that to make a table for my server script. Now I was wondering, how would I get the table from the server script to my local script? If so could you please show an example?

Help would be much appreciated, thanks.

Most likely with some form of remote/bindable function. You can just pass the table as an argument depending on the the use case. Sorry no code, but just read up on these things and I think you’ll see they solve your issue.

1 Like

I think you would like Remote Events would help you. These can help you get from Client to server and back, for example if you have a script in server script service and one in startergui:

Local Script:
local remoteevent = game.ReplicatedStorage.RemoteEvent
remoteevent:FireServer(“Hello world!”)

Server:
local remoteevent = game.ReplicatedStorage.RemoteEvent
RemoteEvent.OnServerEvent:Connect(function(playerwhosent, message))
print(message)
end
you can replace the message with your table

1 Like

Ok, remote events it is!

How would I be able to get a table of players so:

local players = gameModule.playersInRound

and get it to my client script

Well, you need to make server script to have this code:

local remoteevent = wherever you made your remote event, likely in replicated storage
–now we fire the server, with the table
remoteevent:FireClient(players)

Your client should have this:
local remoteevent = wherever you made your remote event, likely in replicated storage
local players = nil
remoteevent.OnClientEven:Connect(function(player, playerst)
players = playerst
end)
And it should work.

You also should make sure you have made your remote event, like what i put in the code, likely in replicatedstorage, so that both client and server can easily access it.

What do you mean by that???

Ok so here’s what I did! So first I got the remote event I created from replicated storage.

local playerEvent = game.ReplicatedStorage:WaitForChild("PlayerEvent")

Next, I fired the client with the players

local players = gameModule.playersInRound
playerEvent:FireClient(players)

Then, I went to my client script and got the remote even once again.
And lastly, I created the function.

playerEvent.OnClientEvent:Connect(function()
	
end)

But where do I go to get the table???

You need to define this:
playerEvent.OnClientEvent:Connect(function(plr, players) --plr, players is there
end

so the players is the variable I used for the server side correct. So its the variable that stored the players.

so thats why i named it playerst instead of players

My goal here is so I get the table and use it for this:

previous.MouseButton1Click:Connect(function()
	playerEvent.OnClientEvent:Connect(function()
	end)
	local players = playerEvent
	print("clicked")
	local max = #players
	num = num - 1
	print(num)
	if num < 1 then
		num = max
	end
	if num >= 0 then
		print("num is greater than 0")
		local player = players[num]
		local playerLocation = game.Players:FindFirstChild(player.Name)
		print(player.Name)
		if playerLocation then
			print("player location")
			camera.CameraSubject = playerLocation.Character.Humanoid
			status.Text = player.Name
		end
	end
end)

I want to get the table and make the varaiable = to players
Do you get my point?

previous.MouseButton1Click:Connect(function()
local players = nil
playerEvent.OnClientEvent:Connect(function(plr, playerst)
players = playerst
end)
print(“clicked”)
local max = #players
num = num - 1
print(num)
if num < 1 then
num = max
end
if num >= 0 then
print(“num is greater than 0”)
local player = players[num]
local playerLocation = game.Players:FindFirstChild(player.Name)
print(player.Name)
if playerLocation then
print(“player location”)
camera.CameraSubject = playerLocation.Character.Humanoid
status.Text = player.Name
end
end
end)

This might work

players is underlined in blue so should I put everything in the function.

previous.MouseButton1Click:Connect(function()
	playerEvent.OnClientEvent:Connect(function(plr, playerst)
		local players = playerst
		print("clicked")
		local max = #players
		num = num - 1
		print(num)
		if num < 1 then
			num = max
		end
		if num >= 0 then
			print("num is greater than 0")
			local player = players[num]
			local playerLocation = game.Players:FindFirstChild(player.Name)
			print(player.Name)
			if playerLocation then
				print("player location")
				camera.CameraSubject = playerLocation.Character.Humanoid
				status.Text = player.Name
			end
		end
	end)
end)

You can use module scripts lol:

--modulescript
local module = {
    playersTable = {}
}

return module

--ServerScript
local mod = require(script.ModuleScript) --// pretend it is in the script
print(mod.playersTable)

--serverscript2
local mod = require(script.ModuleScript)
print(mod.playersTable)

I use this for my Custom Function 2.0

I think that should work. Can you test it? I can’t currently test the code right now.

Not the issue. Why don’t you READ the first post? It will get you the problem.

I am tired rn sorry lol :grinning_face_with_smiling_eyes:

Just use remoteFunctions or remotevents

YES, but the issue here is how do I do that??? how would I get the table I used in the server script

local players = gameModule.playersInRound

and use it in my local script???

You can use a remote or bindable function to do this.

Here’s an example:

local listOfPlayers = {
'Player1',
'Player2'
}

local bindableEvent = game.ReplicatedStorage.GetPlayers

bindableEvent.OnInvoke = function()
    return listOfPlayers
end
local bindableEvent = game.ReplicatedStorage.GetPlayers
local players = bindableEvent:Fire()

print(players) --[[ ->
"Player1",
"Player2"
]]

(Also I’m pretty sure both scripts need to be the same type of script)