Get client's playerstate in gamestate in run on server event

I’m having issues with this. Anytime I try to get the client’s playerstate like this it just gets the server’s playerstate. Not sure how to fix.

FirstPersonCharacter Blueprint:

GameState Blueprint:

Make sure you are running the piece of code which gets the Player Pawn inside the client.

You can simply check by printing IsServer before the AwardPointsTeam event or making a SwitchHasAuthority and executing through the Remote pin.

I ran it through the remote pin of a switchhasauthority and all of the clients printed.

Hard to tell given only these pieces of code…

Change GetPlayerPawn to GetPlayerController, and your input as well, then get the PlayerState from it

GetPlayerController doesn’t work either.

Here are some more pictures:




Well, make sure that your GameState Ref really exists.
Also, instead of passing PlayerController or Pawn by parameter, you can pass the PlayerState, considering you are inside the Character class, it stores a reference for it.
Also, abuse of prints to make sure everything is on point.

After solving the problem, if the current solution works for you, I’d like to point out that replicating logic that needs priority to every client can cause conflicts and undesirable behaviours while synching movement, variable values, and can call events/methods improperly.
Consider redesigning these blocks for the server to evaluate what is a Hit that counts and leaves the scoring to him. You can store the last hit information in a struct with lots of detailed data, for example, and gather these info to score the correct team (and lots of other game logics, too).

In a quick search I found this tutorial (UE4 Multiplayer FPS Shooter tutorial PART 4: Hit-scan line trace with health replication - YouTube) that might be useful for you to .
You can move the Health logic to a RepNotify, then call the proper team score based on a Last Hit Data.

I decided to try casting to the playerstate after the branch in FirstPersonCharacter and passing it through AwardPointsTeam and it worked… So many hours I’ve spent on this problem so thank you man.

I will also change my logic like you said in the 2nd paragraph, thanks for the advice!