Making SurfaceGui Visible to other players using a local script

So, I am making a lanyard card which is Touch to Equip and basically the Local Players Username, Profile Picture and their Group Rank is supposed to be visible on a Surface Gui and I just started learning Roblox LUA so I’m still a bit rough, I did the Surface Gui using a Local Script and well it worked but only for me, I want the Surface GUI to be visible to other Players as well.

I have gone through many similar tutorials on YouTube about it but none of them work as the card is a Touch to Equip, So making it into a tool wont work and if you come up with a solution it should all be in one Model in workspace because the lanyard is going to be Imported into another which I don’t have access to game as accessories…

image

You would need to use a Server Script (Regular Script), And then you would need to change the SurfaceGui(?)'s TextLabels text from the Server.

I did try that but I got stuck at the part where you define the term “player” which is used to get the Players User ID, Picture and Rank in the first place

If the lanyard is parented to the player you could use Players:GetPlayerFromCharacter.

Yes, The lanyard is parented to the player I’ll give it a try and update you

Okay I confused me even a little more but heres the scripts I used

Getting the Players User Icon

local player = game.Players.LocalPlayer

local Image = script.Parent

local userId = player.UserId

local thumbType = Enum.ThumbnailType.AvatarBust

local thumbSize = Enum.ThumbnailSize.Size420x420

local content = game.Players:GetUserThumbnailAsync(userId, thumbType, thumbSize)

Image.Image = content

And Getting the Players Group Rank

local player = game.Players.LocalPlayer

local Text = script.Parent.Text

Text = tostring(player:GetRoleInGroup(7906994))

Very short and easy scripts but I would like to convert them from a Local Script into a Server Script and I can’t manage to do that

Use remotes to call a function on a server script