• 11 Juin 2024, 18:53:33


Auteur Sujet: Réinitialisation de variable  (Lu 1283 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Réinitialisation de variable
« le: 13 Décembre 2012, 11:28:42 »
Bonjour,

Sur mon GM actuel je réinitialise les variables a la connexion & a la déconnexion du joueur.

Cela et t'il obligatoire ?

PS: J'utilise un peux de PVarInt mais je crois qu'elle sont déja détruite a la déconnexion.

Cordialement

Hors ligne Malak

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : Réinitialisation de variable
« Réponse #1 le: 13 Décembre 2012, 18:15:35 »
Afin d'éviter tout bug de reconnection, il est préférable de réinitialliser les variable dans OnPlayerConnected, Seulement les variables qui comportent la table MAX_PLAYERS

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Réinitialisation de variable
« Réponse #2 le: 14 Décembre 2012, 00:41:15 »
MAX_PLAYERS est simplement une constante de préprocesseur qui vaut 500 à l'heure actuelle. Je n'ai aucune idée de si en Pawn les variables sont initialisées à leur création, mais c'est une excellente habitude à prendre que de le faire soi-même. Surtout pour les tableaux, qui me semble t-il, ne sont pas très souvent initialisés.

Hors ligne Malak

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : Réinitialisation de variable
« Réponse #3 le: 14 Décembre 2012, 18:16:54 »
Une variable à sa création est initialisé à 0.

new variable; ( == 0)
new bool:variable; (== false)
new variable[MAX_STRING]; ( == " ",0)

et ainsi de suite cepandant il est vrai de bien initialisé les tableaux pour bien défnir les array.

Code: (pawn) [Sélectionner]
#define MAX_TAB1 2
#define MAX_TAB2 4
new variable[MAX_TAB1][MAX_TAB2];
variable = { { 0,0,0,0; } { 0,0,0,0; } } // juste une explication pour bien vous montrer ce qu'égale new variable[][]

En LUA c'est un peu différent, il est encore plus important de définir la table pour le LUA puisque en LUA on peut utiliser ceci :

Code: (lua) [Sélectionner]
variable {}
Malak++

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Réinitialisation de variable
« Réponse #4 le: 15 Décembre 2012, 16:21:10 »
Les variables sont initialisés automatiquement en PAWN.

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Réinitialisation de variable
« Réponse #5 le: 17 Décembre 2012, 10:40:58 »
J'ai déjà eu quelques problèmes pour certaine var qui n’étais pas initialisé a la déconnexion, donc maintenant je met toute les variables a 0 ou -1 pour certaine lorsque une personne ce déconnecte ou quand une autre ce connecte.

En tout cas merci pour vos réponse !

Cordialement

Hors ligne Malak

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : Réinitialisation de variable
« Réponse #6 le: 17 Décembre 2012, 11:51:53 »
Tu n'as besoin de les mettres à la déconnection. Puisque que quand le joueurs se déconnecte et se reconnecte aussitôt il passe par OnPlayerConnect, donc tu a juste à mettre les var dans onplayerconnect.

Reinitialiser les variables à la connection permet d'éviter les bugs de reconnection.

EXEMPLE : Quelqu'un vend une voiture à un autre les variables sont incrémenter pour dire qu'on lui a proposer une voiture.
Si il se crash et qu'il se reconnecte certaine variable risque de poser problème. Admettons que tu a une var pour le nom du futur acheteur, une var pour le prix de la voiture et une var pour l'ID du véhicule.
Si tu ne réinitialise pas les variables à la connection. Alors le joueurs qu'a crasher pour encore avoir des var incrémenter comme pour la vente et donc il se pourrait qu'il ne puisse pas réentamer la vente du véhicule après son crash.

C'est pour sa qu'il est important de mettre ses variables dans OnPlayerConnect.

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Réinitialisation de variable
« Réponse #7 le: 18 Décembre 2012, 00:57:02 »
Salut,

avis personnel: pour la faible quantité d'opération dues à ces initialisations, je trouve que c'est très interessant de le faire. Ça permet d'assurer un minimum de sécurité sur les valeurs des variables, que le joueur soit connecté ou non.

Si tu l'as déjà fait, laisse la réinitialisation comme cela.
Une seule chose à faire attention : si tes variables pointent vers des objets comme des textdraw etc... assure toi de les détruire avant de supprimer les variables.

++Sim++