[RESOLU][DB-RS] Récupérer gameObject du client avant sa déconnexion

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
Avatar de l’utilisateur
Scozor
Messages : 46
Inscription : 17 Oct 2014 12:56
Contact :

[RESOLU][DB-RS] Récupérer gameObject du client avant sa déconnexion

Message par Scozor » 13 Juin 2018 13:06

Bonjour à tous,

Je travaille actuellement sur un système de ramassage d'arme en réseau, jusqu'à présent mon système fonctionne parfaitement, les joueurs peuvent ramasser une arme et la jetée, tout ça en étant synchronisé avec les autres joueurs.

Le souci c'est que je souhaite jeter l'arme du joueur lors de sa déconnexion, pour ce faire j'ai ma méthode

Code : Tout sélectionner

    private void OnDisable() // Lorsque le personnage est désactivé ou supprimé.
    {
        currentWeapon.Drop();
    }
sauf que le joueur est supprimé au moment de sa déconnexion, donc impossible pour les autres joueurs de récupérer la valeur de
currentWeapon
qui stock un script WeaponInfo de l'arme actuellement dans ses mains.

Pour régler le problème j'ai cherché sur internet concernant la connexion/déconnexion des clients sur le serveur. J'ai donc créé mon propre NetworkManager, mais à présent je bloque, comment récupérer le gameObject du joueur qui se déconnecte ?

A savoir que chaque joueur stock dans un dictionnaire le netID ainsi que le PlayerInfo de chaque joueur sur un serveur.

Code : Tout sélectionner

    public override void OnStartClient()
    {
        GameManager.RegisterPlayer(GetComponent<NetworkIdentity>().netId.ToString(), this); // Enregistre le joueur dans un dictionnaire.
    }
Je vous remercie d'avance.
.
 ! Message de : Max
Utilisez les balises code SVP, merci
Dernière édition par Scozor le 14 Juin 2018 16:43, édité 1 fois.

Avatar de l’utilisateur
Scozor
Messages : 46
Inscription : 17 Oct 2014 12:56
Contact :

Re: [DB-RS] Récupérer gameObject du client avant sa déconnexion

Message par Scozor » 14 Juin 2018 13:58

Bon après des heures de recherche, je pense avoir trouvé la solution à mon problème.

Dans mon NetworkManager :

- J'ai créé un dictionnaire qui stock le PlayerInfo de chaque joueur avec l'ID de connexion.
- Dans la méthode OnServerConnect() avant de supprimer l'objet du joueur, je fais droper l'arme grâce à mon dictionnaire, ensuite je supprime le PlayerInfo du dictionnaire.

Dans le PlayerInfo du joueur :

- Dans la méthode OnPlayerStart() si nous sommes le serveur, j'ajoute dans la liste le le PlayerInfo avec la clé son ID de connexion.

Voilà je n'ai pas encore essayé, mais ça devrait fonctionner. Pour ceux qu'ils veulent plus de détails, envoyez-moi un message privé.

Autodidactelife
Messages : 47
Inscription : 21 Fév 2018 23:04
Localisation : France

Re: [RESOLU][DB-RS] Récupérer gameObject du client avant sa déconnexion

Message par Autodidactelife » 17 Juin 2018 02:07

Bonjour,

Il ne me semble pas que ça Disable le GameObject à la deconection ça le Delete.
Il y à une fonction dans le NetworkManager qui s'execute à la suppression d'un personnage, tu peux ici même jeter l'arme si il y en à une en l'override pour ensuite lancer la base comme ça pas de soucis.

De plus il me semble que la fonction qui le supprime permet directement dans ce que la fonction fournis à la suppression permet de récupérer le GameObject qui sera supprimer. Donc normalement pas besoin de plus. J'utilisais ce système pour retirer de la liste des joueurs dans mon jeu pour ma part. (Je récupérer le nom du joueur directement sur le GameObject)

Je suis débutant donc je pourrais dire une bêtise.
Cordialement.

Répondre

Revenir vers « (C#) CSharp »