Hey guys, I have the code below(NetworkView ‘server only’ and ‘player authority’ is false):
public class EnvironmentBuildSyst : NetworkBehaviour
{
private static EnvironmentBuildSyst instance;
public static EnvironmentBuildSyst Instance
{
get
{
return instance;
}
}
void Awake()
{
instance = this;
}
private SpecialTile currentSpecialTile;
public void CallRpcServerInside(bool inside)
{
RpcSetServerInside(inside);
}
public void CallCmdClientInside(bool inside)
{
CmdSetClientInside(inside);
}
[ClientRpc]
void RpcSetServerInside(bool inside)
{
currentSpecialTile.playerServerInside = inside;
Debug.Log("RpcSetServerInside");
}
[Command]
void CmdSetClientInside(bool inside)
{
currentSpecialTile.playerClientInside = inside;
Debug.Log("CmdSetClientInside");
}
}
And another code that calls the functions above:
public class SpecialTile : NetworkBehaviour {
IEnumerator PlayersDetection()
{
if(GameController.IsSinglePlayer)
{
while(true)
{
if(GameController.myPlayerGO.transform.position.x > playerDetectionTrans.position.x)
{
StartCoroutine(closeCoroutine);
}
yield return null;
}
}
else
{
while(true)
{
if(GameController.myPlayerGO != null)
{
if(GameController.isServer)
{
if(GameController.myPlayerGO.transform.position.x > playerDetectionTrans.position.x)
{
if(playerServerInside != true)
EnvironmentBuildSyst.Instance.CallRpcServerInside(true);
}
else
{
if(playerServerInside != false)
EnvironmentBuildSyst.Instance.CallRpcServerInside(false);
}
}
else
{
if(GameController.myPlayerGO.transform.position.x > playerDetectionTrans.position.x)
{
if(playerClientInside != true)
EnvironmentBuildSyst.Instance.CallCmdClientInside(true);
}
else
{
if(playerClientInside != false)
EnvironmentBuildSyst.Instance.CallCmdClientInside(false);
}
}
}
else
{
break;
}
if(playerServerInside && playerClientInside)
{
StartCoroutine("blabla");
break;
}
yield return null;
}
}
}
}
RpcClient works perfectly, all clients recieve data, but the client don’t run the Command on the server and I don’t know why…