- Home /
Send RPC to owning NetworkPlayer of networkView
I have a game with 4 players. One of the players is the network server. I want to use networkView.RPC("method", Networkplayer, [...]) to make a RPC call directly on the NetworkPlayer owning the networkView. See this code snippet
var otherPlayerPawn = hit.transform.GetComponent<PlayerPawn>();
otherPlayerPawn.networkView.RPC("TakeDamage", otherPlayerPawn.networkView.owner);
}
}
The problem is that this works perfectly with two players (1 server, 1 client) but not with three or more players. It works when the server player wants to call the RPC on any client or when a client wants to call the RPC on the server, but not when the clients are calling the RPC on another NetworkPlayer which is not the server.
I searched different topics and all the references but couldn´t find an explanation for this behaviour.
Has anyone any idea about that?
Answer by KiraSensei · Apr 24, 2013 at 06:27 PM
I had the same problem.
Have a look at my question
The problem is that a player cannot "talk" to another player until the second one is the server. Everything must go threw the server. So your 1st player must send a RPC call to the server telling that the 2nd player was hit, and then the server tells the 2nd player he was hit.
Create a method "RedirectDamage" that takes the shot player as an argument and call it via a RPC call from player 1 to the server. This method will call "TakeDamage" from server via player 2.
Tell me if you have a problem understanding this :)
Thanks for the clarification. I was not aware that these direct calls are not possible. It´s confusing that there is an option in RPC to directly send to a NetworkPlayer while only the server can make this call. This should be included in the script reference to be on the save side.
I agree with you, that's why I had some trouble to get my error too ...