- Home /
RPC calls, how to transfer data from server to client and back?
Hi, I'm having some trouble with getting rpc calls to work properly in our game. I am trying to do some simple transferring from and to the server, but nothing seems to work.
I have a few scripts, and I have no clue as to why this doesn't work.
 #pragma strict
 var PlayerData: List.<playerData> = new List.<playerData>();
 var RPCHPVar: int = 100;
 
 function Update()
 {
     for(var i:int=0;i<PlayerData.Count;i++)
     {
         print(PlayerData[i]+": "+PlayerData[i].hp);
         
         if(PlayerData[i].hp<=0)
         {
             print(PlayerData[i].Nplayer + " died...");
         }
         networkView.RPC("SendHP",PlayerData[i].Nplayer, PlayerData[i].hp);
     }
 }
 function OnPlayerConnected(player: NetworkPlayer)
 {
     var data: playerData = AddPlayerData(player);
     PlayerData.Add(data);    
 }
 
 function AddPlayerData(Nplayer: NetworkPlayer)
 {
     var Data: playerData = new playerData();
     Data.Nplayer = Nplayer;
     return Data;
 }
 
 private class playerData
 {
     var hp:int=100;
     var Nplayer:NetworkPlayer;
 }
 
 @RPC
 function DecreaseHealth(Nplayer: NetworkPlayer, amount: int)
 {
     for(var i:int=0;i<PlayerData.Count;i++)
     {
         if(PlayerData[i].Nplayer == Nplayer)
         {
             PlayerData[i].hp = PlayerData[i].hp-amount;
         }
     }
 }
 
 @RPC
 function SendHP(hp:int)
 {
     RPCHPVar = hp;
 }
This runs on the server, and should keep a list of all players HP. It also has an rpc to send the HP to each player, which uses it for a GUI element. However this does not seem to work. I'm probably doing something wrong, but I've no clue what. I also have a function for decreasing health, which I assume doesn't work for the same reason this SendHP function doesn't work.
 #pragma strict
 var HPTex: Texture2D;
 var RPCHPVar: int = 10;
 
 function Awake()
 {
     if(!networkView.isMine)
     {
         this.enabled=false;
     }
 }
 
 function OnGUI()
 {
     GUI.DrawTexture(Rect(    Screen.width/2-HPTex.width/2*NewMainGUI.GUIScaleMod,
                             Screen.height/2-HPTex.height/2+192*NewMainGUI.GUIScaleMod+1,
                             HPTex.width*RPCHPVar/100*NewMainGUI.GUIScaleMod,
                             HPTex.height*NewMainGUI.GUIScaleMod),HPTex,ScaleMode.ScaleAndCrop,true,0);
 }
 
 @RPC
 function SendHP(hp:int)
 {
     RPCHPVar = hp;
 }
Your answer
 
 
             Follow this Question
Related Questions
RPC to a single client 1 Answer
Get RPC senders ID, or IP? 1 Answer
On/off switch from server to clients live 1 Answer
UNET Discrete Server/Client. ClientRPC? Command? 3 Answers
Download an image from a local device 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                