where you call this function ? do server execute the posses function ? Btw all the possess or client-server request to possess you should put on the PlayerController Blueprint.
The player index you’re using to decide on which player controller is the target will only work in local multiplayer. In a client/server game everyone thinks they are player index 0. Instead, get GameState > Player Index, this will give you an array, get an index from that array > Get Owner > Cast to PlayerController.
Oh, just realize simple way you can do, from the Other Actor, Cast it to Pawn, then GetController form that then just call Possess right away, you no need Client-Server for that, cause when you walk over something it happen on server side also, you can add a node HasAuthority to just make this one happen on server only.
I think you need to make your own array. However as Duncan suggests below, I’m not sure that you actually need to know who is who in this specific case.