Well, if you want to get the player in the server using RemoteEvents without using functions like that, I guess you can do something like this :
Local script:
local plr = game.Players.LocalPlayer
local event = game.ReplicatedStorage.RemoteEvent
event:FireServer(plr)
Server script:
local event = game.ReplicatedStorage.RemoteEvent
local player
event.OnServerEvent:Connect(function(plr)
print(plr)
player = plr
end)
As soon as the local script runs those lines of code, it'll fire the LocalPlayer using a RemoteEvent in ReplicatedStorage. The server script then detects the fire, gets the LocalPlayer, then saves it in the "player" variable. You'll then be able to mess around with the player and etc.
Hope this helped!