GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: vardanega 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
-
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
-
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.
-
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.
#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 :
variable {}
Malak++
-
Les variables sont initialisés automatiquement en PAWN.
-
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
-
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.
-
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++