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

Can't see other players' SurfaceGUI?

Asked by
ir705 0
2 years ago

I'm making a game based off the movie In Time. Each player has a clock on their arm that ticks to their death. I have a local script inside a SurfaceGUI that displays said clock on my character's arm.

The problem with the local script is I cannot see other players' clocks when I test the script on a local server. The text shows Label on them instead of the clock I've scripted.

I've worked with Remote Events on Client/Server communication, but I just cannot seem to figure out how to script in a way that allows players to see each other's clocks, knowing every player's clock is client-sided and not server-sided.

Is there a way for players to see each other's SurfaceGUI that's parented onto their characters, or is this idea way over my head?

Server-Sided Gui Cloning Script (that parents said gui to humanoid's left upper arm) inside ServerScriptService

game.Players.PlayerAdded:Connect(function(Player)
    Player.CharacterAdded:Connect(function(Character)
        local GuiClone = script.OverheadGui:Clone()
        wait(.1)
        GuiClone.Parent = Character.LeftUpperArm


    end)
end)

Parented to SurfaceGui: Clock Display Local Script

local store = game:GetService("ReplicatedStorage")
local Time = game.ReplicatedStorage.Time

    wait()
    function clock()
    local seconds = game.Workspace.Seconds.Value
    local miliseconds = math.floor(seconds/1000)
    local minutes = math.floor(seconds/60)
    local hours = math.floor(minutes/60)
    local days = math.floor(hours/24)
    local weeks = math.floor(days/7)
    local years = math.floor(weeks/52)
    seconds = seconds-minutes*60
    minutes = minutes-hours*60
    hours = hours-days*24
    days = days-weeks*7
    weeks = weeks-years*52
    seconds=tostring(string.format("i•i•i•i•i•i",years,weeks,days,hours,minutes,seconds))
    script.Parent.Clock.Text=seconds

    end

while true do
    wait()
    clock()
end

Parented to SurfaceGui: Clock Ticking Local Script

wait(6)
local player = game.Players.LocalPlayer
local character = player.Character
local humanoid = character.Humanoid
repeat wait(1) until game.Workspace.Age.Value>=25
humanoid.Health=humanoid.Health-20
script["Time Out"]:Play()
while true do
    if game.Workspace.Age.Value>=25 then

    wait(1)
        game.Workspace.Seconds.Value=game.Workspace.Seconds.Value-1
        script.Parent.Clock.Ticking:Play()
        local player = game.Players.LocalPlayer

    else
        wait()
    end
    if game.Workspace.Seconds.Value<=0 or humanoid.Health==0 then
        game.Workspace.Seconds.Value=0
        wait(.1)
        humanoid.Health=0
        script["Time Out"]:Play()
        wait(3)

        while true do
            wait(.1)
            script.Parent.Clock.TextColor3=Color3.fromRGB(0,0,0)
            wait(3)

        end
    else
        wait()
    end
end


Answer this question