Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How To Send A String Variable Through A Remote Function?

So I have a button in a GUI that if you press it, here's what it does:

wait()

local player = game.Players.LocalPlayer
local Button = script.Parent
local CreateSeverF = script.Parent.Parent
local AddServerF = script.Parent.Parent.Parent.AddServerFrame
local CreateServer = game.ReplicatedStorage:WaitForChild("CreateServer")
local ownsGamepass = GetService(_MarketplaceService_)_UserOwnsGamePassAsync(player.UserId,15934847) 
local CreateListButton = script.Parent.Parent.Parent.ServerList.AddServer

Button.MouseButton1Click:Connect(function()
	if ownsGamepass then
		local ServerName = script.Parent.Parent.ServerNameInput.ServerName.Value
		local ServerInitials = script.Parent.Parent.ServerInitialsInput.Initials.Value
		if ServerName and ServerInitials ~= "" then
			CreateListButton:Destroy()
			AddServerF:Destroy()
			CreateSeverF.Visible = false
			print("Creating "..ServerName.." Server!")
			local ServerName = script.Parent.Parent.ServerNameInput.ServerName.Value
			local ServerInitials = script.Parent.Parent.ServerInitialsInput.Initials.Value
			CreateServer:FireServer(ServerName, ServerInitials)
			print("Fired Event")
		else
			print("Invalid Strings!")
			script.Parent.Parent.ServerInitialsInput.Roundify.ImageColor3 = Color3.fromRGB(191, 0, 0)
			script.Parent.Parent.ServerNameInput.Roundify.ImageColor3 = Color3.fromRGB(191, 0, 0)
			script.Parent.Parent.ServerInitialsInput.Text = ""
			script.Parent.Parent.ServerNameInput.Text = ""
			print("Reseted Text Values")
		end
	else
		print("You need a gamepass!")
		game:GetService("MarketplaceService"):PromptGamePassPurchase(game.Players.LocalPlayer,15934847)
		print("Prompted Purchase")
	end
end)

**Then** it goes through a Server Script:

local CreateServer = game:GetService("ReplicatedStorage"):WaitForChild("CreateServer")

CreateServer.OnServerEvent:Connect(function(ServerName, ServerInitials)
	CreateServer:FireAllClients(ServerName, ServerInitials)
end)

After that it returns to the gui in a script


wait()

local MainFrame = script.Parent.MainFrame
local ServerList = MainFrame.ServerList
local event = game:GetService("ReplicatedStorage"):WaitForChild("CreateServer")
local template = game:GetService("ReplicatedStorage"):WaitForChild("roomtemp")
local buttontemplate = game:GetService("ReplicatedStorage"):WaitForChild("ServerButtonTemp")

event.OnClientEvent:Connect(function(ServerName, Initials)
	local clone = template:Clone()
	clone.Parent = MainFrame
	clone.ServerName.Value = ServerName
	clone.ChannelsFrame.Name.GetName.Disabled = false
	clone.Visable = false
	
	print("Made Room")
	print("Starting Button")
	
	local buttonclone = buttontemplate:Clone()
	buttonclone.Parent = ServerList
	buttonclone.ServerFrame.Value = clone
	buttonclone.Initials.Value = Initials
	buttonclone.SetInitials.Disabled = false
	buttonclone.Open.Disabled = false
	
	print("Finished making"..ServerName.."!" )
end)

And lastly I get this error in the console:

Players.HopeRox.PlayerGui.Wizzard.ServerDisplay:12: invalid argument #3 (string expected, got Instance) - Client - ServerDisplay:12

I NEED HELP IDK WHATS WRONG??

1 answer

The first argument in every onserverevent is ALWAYS a player. Simply add player and your done.

CreateServer.OnServerEvent:Connect(function(Player, ServerName, ServerInitials)	    	 
  CreateServer:FireAllClients(ServerName, ServerInitials)
end)

1 comment

0

You should read dev API too.

This discussion is preserved as it was. New answers, comments, and votes are closed.