Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How To Send A String Variable Through A Remote Function?

Asked by 3 years ago

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

Log in to vote
0
Answered by
notfenv 171
3 years ago

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)
0
You should read dev API too. notfenv 171 — 3y
Ad

Answer this question