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

How do I make the server chat correctly when touching a part?

Asked by 3 years ago

I am trying to make it to where, when you touch a part it will fire a RemoteEvent. This RemoteEvent is supposed to chat to all players announcing somebody won. It must grab the players name so the server knows who won. 2 scripts make sure this part was touched. The first one changes GUI which works, although the second is supposed to chat to all clients. This one doesn't work. The script within Workspace: (Script fires the event)

local Players = game:GetService("Players")
local events = game.ReplicatedStorage.Events -- Define Events
local EndZone = game.Workspace.zones.TheEnd

local function FireEndEvent(Part)
    local Parent = Part.Parent
    if game.Players:GetPlayerFromCharacter(Parent) then
        events.Completed:FireAllClients(plr)
    end
end

EndZone.Touched:connect(FireEndEvent)

The script within StarterGUI: (Script chats to all clients)

local Players = game:GetService("Players")
local events = game.ReplicatedStorage.Events
local StarterGui = game.StarterGui

events.Completed.OnClientEvent:Connect(function(plr)
        StarterGui:SetCore("ChatMakeSystemMessage", {
            Text = plr.Name.. " completed the game. GG!";
            Color = Color3.fromRGB(132, 132, 132);
            Font = Enum.Font.SourceSansBold;
            FontSize = Enum.FontSize.Size32;
        })
end)

1 answer

Log in to vote
0
Answered by 3 years ago

You don't have to pass "plr" from your local script, its the default first argument received by the server script :)

Also I think you need to bind the function to the event like 'whenever the event fires" = pingAll Where pingAll is a local function (notice the missing brackets)

Ad

Answer this question