Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Player2 Not Receiving an RPC

Discussion in 'Multiplayer' started by nickavv, Dec 1, 2007.

Thread Status:
Not open for further replies.
  1. nickavv

    nickavv

    Joined:
    Aug 2, 2006
    Posts:
    1,801
    Code (csharp):
    1. var redPrefab : Transform;
    2. var bluePrefab : Transform;
    3. var redSpot : GameObject;
    4. var blueSpot : GameObject;
    5. var gamesName = "Enter the name of your game!";
    6. var gamesDesc = "Enter a short description of your game!";
    7. var gameMaster = false;
    8. var gameJoiner = false;
    9. var startUp = false;
    10. var gameInPlay = false;
    11. var player1 = false;
    12. var player2 = false;
    13. var playersFull = false;
    14. var notMain = false;
    15.  
    16. function OnGUI () {
    17.     if (!gameMaster  !gameJoiner  !gameInPlay  !notMain) {
    18.         if (GUILayout.Button("Create Game")) {
    19.             gameMaster = true;
    20.         }
    21.         if (GUILayout.Button("Join Game")) {
    22.             gameJoiner = true;
    23.         }
    24.     }
    25.     if (gameMaster == true){
    26.         gamesName = GUILayout.TextField(gamesName);
    27.         gamesDesc = GUILayout.TextArea(gamesDesc);
    28.         if (GUILayout.Button ("Create Game")) {
    29.             Network.useNat = !Network.HavePublicAddress();
    30.             Network.InitializeServer(1, 25002);
    31.             MasterServer.RegisterHost("RandomBoxWithCubesGame",gamesName,gamesDesc);
    32.             gameMaster = false;
    33.             notMain = true;
    34.             player1 = true;
    35.         }
    36.     }
    37.     if (gameJoiner == true) {
    38.         var data : HostData[] = MasterServer.PollHostList();
    39.         for (var element in data) {
    40.             GUILayout.BeginHorizontal();   
    41.             var name = element.gameName + ": " + element.comment + " (" + element.connectedPlayers + " / " + element.playerLimit + ")";
    42.             GUILayout.Label(name); 
    43.             GUILayout.Space(5);
    44.             GUILayout.FlexibleSpace();
    45.             if (GUILayout.Button("Connect")) {
    46.                 Network.useNat = element.useNat;
    47.                 if (Network.useNat) {
    48.                     print("Using Nat punchthrough to connect to host");
    49.                 } else {
    50.                     print("Connecting directly to host");
    51.                     Network.Connect(element.ip, element.port);
    52.                 }
    53.                 GUILayout.EndHorizontal();
    54.             }
    55.  
    56.         }
    57.         MasterServer.RequestHostList("RandomBoxWithCubesGame");
    58.  
    59.     }
    60.     if (notMain  !playersFull) {
    61.         GUILayout.Label ("Waiting for other players to join");
    62.     }
    63.     if (playersFull  !gameInPlay) {
    64.         if (player1) {
    65.             if (GUILayout.Button("All players have joined, Start Game")) {
    66.                 startIt ();
    67.             }
    68.         } else {
    69.             GUILayout.Label("Waiting for Player 1 to start the game");
    70.         }
    71.     }
    72.     if (startUp) {
    73.         if (player1) {
    74.             Network.Instantiate(redPrefab,redSpot.transform.position,Quaternion.identity,0);
    75.         }
    76.         if (player2) {
    77.             Network.Instantiate(bluePrefab,blueSpot.transform.position,Quaternion.identity,0);
    78.         }
    79.         startUp = false;
    80.     }  
    81. }
    82.  
    83. function OnConnectedToServer () {
    84.     gameJoiner = false;
    85.     notMain = true;
    86.     player2 = true;
    87. }
    88.  
    89. function OnPlayerDisconnected (player: NetworkPlayer) {
    90.     Network.RemoveRPCs (player);
    91.     Network.DestroyPlayerObjects (player);
    92. }
    93.  
    94. function Awake () {
    95.     MasterServer.ClearHostList();
    96.     MasterServer.RequestHostList("RandomBoxWithCubesGame");
    97. }
    98.  
    99. function FixedUpdate () {
    100.     if (Network.connections.length > 0) {
    101.         playersFull = true;
    102.     }
    103. }
    104.  
    105. @RPC
    106. function startIt () {
    107.     gameInPlay = true;
    108.     startUp = true;
    109. }
    This script has come a long ways since I started. It now has nice fancy HUDs for everything. :p Now my problem is, when Player 1 presses the "All players have joined, Start Game" button, which calls the RPC function startIt, it never registers with Player2. This one is really driving me crazy. Help!

    :)
     
  2. larus

    larus

    Unity Technologies

    Joined:
    Oct 12, 2007
    Posts:
    277
    You only execute StartIt() locally, not as an RPC call, networkView.RPC("StartIt", ...)
     
  3. nickavv

    nickavv

    Joined:
    Aug 2, 2006
    Posts:
    1,801
    Aaah, I knew I was forgetting how to do RPCs! >.< Thanks! n_n
     
Thread Status:
Not open for further replies.