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()

1 comment
RemoteFunction