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

Is it possible to wait until a remote event's script has ended?

Asked by 4 years ago

Hello,

I'm wondering if it's possible to wait until a remote event's script has ended? The question speaks for itself. If you'd like, please look through my scripts. It should make it quite obvious what I am trying to achieve.

Note that the delays are a bad and temporary solution. Thank you for your help, it is appreciated.

Local script in StarterGui.

--// Variables

local RepStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Player = Players.LocalPlayer

local PlayerGui = Player.PlayerGui

local ServerTextGui = PlayerGui.ServerText
local ServerTextLabel = ServerTextGui.Frame.Text

local NPCTextGui = PlayerGui.NPCtext
local NPCTextLabel = NPCTextGui.Frame.Frame.Text

local PlayerTextGui = PlayerGui.PlayerText
local PlayerTextLabel = PlayerTextGui.Frame.Frame.Text

local TextSound = script.TextSound
local NPCText = RepStorage:WaitForChild("NPCText")
local PlayerText = RepStorage:WaitForChild("PlayerText")
local ServerText = RepStorage:WaitForChild("ServerText")

--// Functions

ServerText.OnClientEvent:Connect(function(Text)
    print("[SERVER] ServerTextEvent fired.")
    local GuiType = ServerTextGui
    local GuiText = Text
    GuiType.Frame.Visible = true
    for i = 1, #GuiText do
        ServerTextLabel.Text = string.sub(GuiText, 1, i)
        TextSound:Play()
        wait(0.05)
    end
    wait(2)
    ServerTextLabel.Text = ""
    ServerTextGui.Frame.Visible = false
end)


NPCText.OnClientEvent:Connect(function(Text)
    print("[SERVER] NPCTextEvent fired.")
    local GuiType = NPCTextGui
    local GuiText = Text
    GuiType.Frame.Visible = true
    for i = 1, #GuiText do
        NPCTextLabel.Text = string.sub(GuiText, 1, i)
        TextSound:Play()
        wait(0.05)
    end
    wait(2)
    NPCTextLabel.Text = ""
    NPCTextGui.Frame.Visible = false
end)

PlayerText.OnClientEvent:Connect(function(Text)
    print("[SERVER] PlayerTextEvent fired.")
    local GuiType = PlayerTextGui
    local GuiText = Text

    local RandomPlayer = Players:GetPlayers()
    local SelectedPlayer = math.random(1,#RandomPlayer)
    local PlayerName = RandomPlayer[SelectedPlayer]

    local ThumbnailType = Enum.ThumbnailType.HeadShot
    local ThumbnailSize = Enum.ThumbnailSize.Size420x420

    local PlayerImage, isReady = Players:GetUserThumbnailAsync(PlayerName.UserId, ThumbnailType, ThumbnailSize)
    GuiType.Frame.Player.Image = PlayerImage
    GuiType.Frame.Visible = true

    for i = 1, #GuiText do
        PlayerTextLabel.Text = string.sub(GuiText, 1, i)
        TextSound:Play()
        wait(0.05)
    end
    wait(2)
    PlayerTextLabel.Text = ""
    PlayerTextGui.Frame.Visible = false
end)

Server script in ServerScriptService.

--// Variables

local RepStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
local Players = game:GetService("Players")

local NPCText = RepStorage:WaitForChild("NPCText")
local PlayerText = RepStorage:WaitForChild("PlayerText")
local ServerText = RepStorage:WaitForChild("ServerText")

local Text = ""

--//

function StartGame()

Text = "Players are loading, please wait..."
ServerText:FireAllClients(Text)
wait(5) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

Text = "Hello everyone, welcome to Clarenval Island!"
NPCText:FireAllClients(Text)
wait(5) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

Text = "I'm Nathan Eyler, your tour guide for the week!"
NPCText:FireAllClients(Text)
wait(5) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

Text = "Ugh, finally! It took such a long time!"
PlayerText:FireAllClients(Text)
wait(5) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

Text = "I'm exhausted!"
PlayerText:FireAllClients(Text)
wait(5) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

Text = "I can see that all of you are tired, don't worry; the cabins are not far away."
NPCText:FireAllClients(Text)
wait(7) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

Text = "Come with me, I'll show you the way."
NPCText:FireAllClients(Text)
wait(5) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

Text = "Follow your tour guide, Nathan. Be on the look-out for useful items!"
ServerText:FireAllClients(Text)
wait(5) -- Unwanted manual delay, a wait-until remote event is finished-type of function should be here instead.

end

wait(5)
StartGame()
3
RemoteFunction User#6546 35 — 4y

Answer this question