[DB-RS] Command & ClientRPC exécutés sur un client

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Katecpo_FR
Messages : 3
Inscription : 19 Nov 2017 20:14

[DB-RS] Command & ClientRPC exécutés sur un client

Message par Katecpo_FR » 19 Nov 2017 20:29

Bonjour !

Je suis actuellement en train de faire un mode multijoueur, j'arrive donc à créer un serveur grâce à

Code : Tout sélectionner

Network.InitializeServer
j'ai donc un PC qui est serveur et client à la fois.

Je réussi donc à connecter mon deuxième joueur, et une fois le deuxième joueur connecté j'ai un Event qui permet de demander au serveur différents paramètres, qui lui sont ensuite retournés, puis utilisés pour synchroniser le nouveau client & le serveur.

J'ai donc utilisé les RPC, mais lorsque le client envoie une [Command] au serveur, celui-ci l'exécute aussi, mais pas le serveur ! Le serveur n'est donc jamais appelé... Les variables retournées sont donc celle du client...

Ma class attachée à mon GameObject

Code : Tout sélectionner

public class NetworkMethods : NetworkBehaviour
    {
        private void Start()
        {
            if(!isServer)
                CmdShowMessage();
        }

        [Command]
        void CmdShowMessage()
        {
            Debug.Log("Callback on server");

            FsmFloat money = FsmVariables.GlobalVariables.FindFsmFloat("money").Value;
            RpcShowMessage(money);
        }

        [ClientRpc]
        void RpcShowMessage(FsmFloat money)
        {
            Debug.Log("Server sent:  " + money);
        }
    }
Comment j'ai attaché mes class

Code : Tout sélectionner

	    this.PLAYER = GameObject.Find("PLAYER");
            PLAYER.AddComponent<NetworkIdentity>();
            PLAYER.AddComponent<NetworkMethods>();
À savoir que je n'utilise que NetworkBehaviour pour transférer ce genre d'informations.
En espérant que vous puissiez m'éclairer pour pouvoir enfin transférer des infos du serveur au client correctement :)

Merci d'avance !
Cdt,

dan44180
Messages : 31
Inscription : 11 Août 2016 08:20
Contact :

Re: [DB-RS] Command & ClientRPC exécutés sur un client

Message par dan44180 » 24 Nov 2017 14:29

ta commande est executée au start
donc comme tu demarre ton serveur avant le client
ta commande ne fonctionne pas

Katecpo_FR
Messages : 3
Inscription : 19 Nov 2017 20:14

Re: [DB-RS] Command & ClientRPC exécutés sur un client

Message par Katecpo_FR » 24 Nov 2017 23:17

J'ai fini par faire avec une autre méthode mais merci quand même ;)

Malheureusement maintenant mon soucis est avec un [RPC] simple, j'ai donc connecté mes deux pc comme avant, en ajoutant un component NetworkView sur mon joueur. Je veux donc ensuite envoyer un RPC je fais donc :

Code : Tout sélectionner

public static void ExecuteVoid(NetworkView nView)
        {
            nView.RPC("RPCTest", RPCMode.All);
            Debug.Log("ExecutedVoid");
        }
Sur mon client (et serveur par la même occasion du coup vu que c'est un player qui host) j'ai bien le "ExecutedVoid" qui s'affiche, mais le "RPCTest" ne s'exécute pas :/

Code : Tout sélectionner

[RPC]
        public void RPCTest ()
        {
            ModConsole.Print("It's working");
        }
Je trouve ça bizarre que celà ne s'exécute pas :/

Merci d'avance !

dan44180
Messages : 31
Inscription : 11 Août 2016 08:20
Contact :

Re: [DB-RS] Command & ClientRPC exécutés sur un client

Message par dan44180 » 29 Nov 2017 17:54

je sais pas quelle verson d'unity tu as mais le networkview n'est plus utilisé
tu dois te servir de l' API Unet d'unity

Katecpo_FR
Messages : 3
Inscription : 19 Nov 2017 20:14

Re: [DB-RS] Command & ClientRPC exécutés sur un client

Message par Katecpo_FR » 02 Déc 2017 20:37

Finalement j'avais réussi quelques heures après, une erreur bête, j'avais mélangé nouveau multi et ancien enfin bref merci quand même :')


Répondre

Revenir vers « (C#) CSharp »