I'm trying to make a working billboard GUI above everyone's head, so that everyone can see each other's times (the leaderstat). How could I do that?
First of all, you need to make the value. Make a ServerScript in the ServerScriptService.
game.Players.PlayerAdded:Connect(function(player) local Time = Instance.new("IntValue", player) Time.Name = "Time" --Value name Time.Value = 0 --Starting time player.CharacterAdded:Connect(function() local ReplicatedStorage = game.ReplicatedStorage --The GUI Location local BillboardGui = ReplicatedStorage.BillboardGui --The GUI itself local head = player.Character.Head --the player's head local Clone = BillboardGui:Clone() --Clones the gui from Replicated storage Clone.Parent = head --Sets the billboard Gui into the players head end) end)
You need to make a LocalScript in StarterPlayer.StarterCharacterScripts and also add a remote event in the ReplicatedStorage.
local player = game.Players.LocalPlayer --player while wait(1) do --runs loop 1 time every second game.ReplicatedStorage.RemoteEvent:FireServer(player) --fires remote event end
Inside the pre-made billboard GUI, you need a ServerScript (The script needs to be put inside the TextLabel)
game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(player) local Time = player.Time Time.Value = Time.Value + 1 script.Parent.Text = "Time Played: "..Time.Value.." seconds." end)
If you follow the instructions correctly it should work. I tested it and sure enough, It worked. Have a nice day.
The answer is must simplier, just place the time billboard gui in a place like serverStorage, and put a script in ServerScriptService, and type this
local players = game:GetService("Players") local serverStorage = game:GetService("ServerStorage") local billboard = serverStorage.YourBillboardGui players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function(character) local head = character:FindFirstChild("Head") if (head and not head:FindFirstChild(billboard.Name)) then local billboardClone = billboard:Clone() local time = 0 -- put the text here coroutine.wrap(function() while true do wait(1) time += 1 end end)() billboardClone.TextLabel.Text = tostring(time) billboardClone.Enabled = true billboardClone.Parent = head end end) end)
First thing first create a billboard Gui on a part to adjust it to the size you want it to be, after it put it in "ReplicatedStorage" and create a leaderstats that represents the time that the player been on the server. After your done with it just add a PlayerAdded function and clone and do player.leaderstats.TimePlayed.Changed:Connect(function()
script.Parent.Text = player.leaderstats.TimePlayed.Value
end)