Sorry but there a A LOT of basic networking example out there (for example in my signature) and Epic made training videos about this.
The basic networking and replication part is documented enough to understand it.
As long as you guys don’t post pictures and information about your attempts, i can only say that you’re doing something wrong.
You need to make sure that the actor you’re trying to call RPCs on is set to “Replicate” and is actually owned by the Client (so the PlayerController of the Client is set as the owner).
A possessed PlayerCharacter is owned by the Client, but you need to make sure that in the ClassDefaults, “Replicates” is set to true. If the Actor is not owned by the Client (for example
spawned by the Server without setting the correct owner or just placing the Actor in the scene), then the “Client to Server” call will be dropped and never reach the Server.
Then you need a replicated Variable. This can only be set by the Server. So the way @LazyLoading posted is correct.
It doesn’t have to be “RepNotify” if you don’t want to do stuff when the Replication is done.
"RepNotify" is only needed if you need a function that is called on the Client once the Replication is done.
These are the “OnRep_” functions you see in the function list of @LazyLoadings pictures. They are created
automatically once you set a variable to “RepNotify”. But you might only need the normal “Replicate”.
If you print the Variable too fast it might still be the old value. Replication takes a really short time, but it’s enough time to actually see old values of you are too fast.
When the Numbers don’t change at all, make sure that the P and O buttons are actually called (PrintString or Breakpoints) and then that the ServerPKey and ServerOKey
are called (again, PrintString or Breakpoints).