0

# How do I make a GUI appear when a player joins?

How do I make a GUI appear when a player joins? This is stupid complicated for me sadly.

Remote event that fires when a player joins (script)

local event = game.ReplicatedStorage
local Players = game:GetService("Players")

event.qeqeqeq:FireClient(player)
end)



This is the gui that got fired (local script)

event.qeqeqeq.OnClientEvent:connect(function(plr)
Player.Humanoid.Health = 0
PlayerGUI.HealthGui.Enabled = false
PlayerGUI.StatusUI.Enabled = false
PlayerGUI.CurrentVersion.Enabled = false
game.Players.LocalPlayer.CameraMode = Enum.CameraMode.Classic
SG:SetCoreGuiEnabled("Backpack", false)
workspace.CurrentCamera.FieldOfView = 110
Player.Humanoid.Died:Connect(function()
Player:Remove()
end)
end)


THIS script works in studio but when I join a game it doesn't work for some reason.

0
Note: How do I also prevent the player from respawning (this happens sometimes) when they join? TheBuliderMC 80 — 4mo

0
sleazel 1207
4 months ago
Edited 4 months ago

There most likely explanation is that when you play the game outside of studio, PlayerGui (and all its local scripts) load much slower. So when server fires and event to the client, this your LocalScript have not loaded yet.

Elegant solution would be for a client to fire a special "Ready" event, so that server could fire its own event. Most people however are happy with adding wait(10) (10 seconds is a pure guess here), before firing any Remotes to clients.

However. Since you want all of this to happen on player join, why use event at all? you can simply get rid of the function and just put this code directly in any local script.

EDIT: If do not want it to run or reset, place it in StarterPlayerScripts or in ScreenGui with ResetOnSpawn property set to false

--proper way to get player in LocalScripts:
local Player = game.Players.LocalPlayer

game.Players.CharacterAutoLoads = false -- this should be done on server, has no effect here.

Player.Humanoid.Health = 0
PlayerGUI.HealthGui.Enabled = false
PlayerGUI.StatusUI.Enabled = false
PlayerGUI.CurrentVersion.Enabled = false
Player.CameraMode = Enum.CameraMode.Classic
SG:SetCoreGuiEnabled("Backpack", false)
workspace.CurrentCamera.FieldOfView = 110

Player.Humanoid.Died:Connect(function()
Player:Remove()
end)


And finally, most of this stuff can be set in studio settings. Click on Players in studio to switch off CharacterAutoLoads in properties window for example. You can also set Gui Elements to Visible, and hide them by clicking on the "Eye" icon in the top right corner, when you are not editing GUI.

0
Thing is that I tried to have the script play in the GUI to something similar that you showed me. It didn't work unless I'm doing something in correctly. CharacterAutoLoads is disabled on player and I keep spawning still. TheBuliderMC 80 — 4mo
0
^ I'm 100% sure I don't have any script that edits player spawns TheBuliderMC 80 — 4mo