Ive had this problem before and I figured out how to fix it.
Put the SurfaceGUI into StarterGUI, set the adornee to the part you want to display on. Then you can code it exactly like a screenGUI
I know. So I Got the Players From a LocalScript And I got The Player, If you Fire the Server with the Player you can Get the Player From a ServerScript