I've tried using a remote event but I don't think my script is right
local script in the playergui:
local pos = CFrame.new(4.179, 6.653, 73.886)
local player = game.Players.LocalPlayer
local resetBindable = Instance.new("BindableEvent")
local remote = game.ReplicatedStorage.BigRemote
resetBindable.Event:Connect(function() -- put code under event
remote:FireServer(player)
player.Character:SetPrimaryPartCFrame(pos)
end)
game:GetService("StarterGui"):SetCore("ResetButtonCallback", resetBindable)
regular server script in script service:
local remote = game.ReplicatedStorage.BigRemote
remote.OnServerEvent:Connect(function(player)
player:LoadCharacter()
end)

2 comments
Don't pass the player as an argument on FireServer
I posted a video on this a bit ago. https://www.youtube.com/watch?v=xHbvyX456Jw