Hi, you need to set TerminalIsBeingUsed to be replicated, otherwise you only set it on the server but the clients will never know about that.
I can’t get the ((In Use) event to
execute
Try to put a print in there, you should then see that the server is already executing it. The RunOnServer events that get called by the clients will all be dropped, since only the owning client can call RunOnServer events on an actor, but the server also calls it, therefore there it will execute.
The next problem is that since the overlap happens on all clients, all clients will eventually execute OnComponentBeginOverlap and therefore enable collision on Widget and hoping that TerminalIsBeingUsed will be replicated to those clients before the overlap happens there will lead to unpredictable behavior. That means that before you execute the logic after the overlap you need to check that you only execute the logic on the client whose pawn overlapped (e. g. check that GetController of OtherActor == GetPlayerController with index 0).