- 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