GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Salif le 04 Juillet 2013, 12:17:27

Titre: Variable s'incrémente mal, et ne se décrémente pas
Posté par: Salif le 04 Juillet 2013, 12:17:27
Bonjour à tous,

Je vous expose mon soucis en espérant que vous puissiez m'aider. Je fais un event sur mon serveur en local pour apprendre le pawn, dans cet event je veux faire en sorte que le nombre de joueurs de chaque team soit compté. Prenons l'exemple de la team BALLAS.
J'ai donc initialisé la variable BallasInEvent à 0 tout en haut de mon GM
- à chaque fois qu'un BALLAS rejoint l'event, je met dans la commande pour rejoindre l'event :
BallasInEvent++;- à chaque fois qu'un Ballas meurt ou se déconnecte, je met dans OnPlayerDeath et OnPlayerDisconnect :
if(IsInEvent[playerid] == 1 && gTeam[playerid] == BALLAS)
{
BallasInEvent--; // Décrémentation de la variable
                new phrase[256];
        format(phrase,sizeof(phrase),"BallasInEvent : %d" ,BallasInEvent);
SendClientMessageToAll(VERT,phrase); // Permet de m'afficher la valeur de la variable juste pour voir si mon script fonctionne bien.
}

Avec ce code, j'ai le résultat suivant :
- Quand le premier joueur rejoint l'event, la variable passe à 0, alors qu'elle est déjà initialisé à 0. Puis ensuite elle s'incrémente bien et passe à 1 puis à 2 etc. Pourquoi ?
- Quand un joueur meurt, la variable s'actualise et affiche toujours la même valeur du nombre de Ballas présent dans l'event, elle ne se décrémente pas de 1. Pourquoi ?
Je tiens à préciser que j'ai bien vérifier si la variable s'incrémentais autre part en même temps qu'elle se décrémentais, ce qui expliquerais qu'elle ne se décrémente pas de 1, et la réponse est non. Merci de m'éclairer...
Titre: Re : Variable s'incrémente mal, et ne se décrémente pas
Posté par: Gzsume le 04 Juillet 2013, 12:36:32
Salut,

Remplaces ton premier

Code: (pawn) [Sélectionner]
BallasInEvent++;
par

Code: (pawn) [Sélectionner]
printf("\n[DEBUG] BallasInEvent: %d", BallasInEvent);
BallasInEvent++;
printf("\n[DEBUG] Variable incrementation");
printf("\n[DEBUG] BallasInEvent: %d\n", BallasInEvent);

afin de voir ce qu'elle contient avant et après l'incrémentation. Tu peux faire pareil pour la décrémentation, et nous dire ce que ça affiche.

Ensuite, est-ce que tu utilises un textdraw pour l'affichage du nombre de Ballas ? Si c'est le cas, tu es certain de le mettre à jour quand il faut ?

Bonne journée,
Gzsume.
Titre: Re : Variable s'incrémente mal, et ne se décrémente pas
Posté par: Salif le 04 Juillet 2013, 12:47:06
Bonjour Gzsume, tout d'abord merci pour ton aide.
J'ai fait ce que tu m'as dis, et vraiment je suis étonné, la console affiche que la variable passe bien à 1 directement, tandis que le SendClientMessage affiche 0, la prochaine fois je tacherai d'utiliser la fonction printf... Je suppose que c'est pareil pour la décrémentation lors de la mort. La question est maintenant : Pourquoi la fonction SendClientMessage n'affiche pas le même contenu que la fonction printf..?

Citation de: Gzsume
Ensuite, est-ce que tu utilises un textdraw pour l'affichage du nombre de Ballas ? Si c'est le cas, tu es certain de le mettre à jour quand il faut ?
Aucun TextDraw non, je n'ai pas besoin de ça.
Titre: Re : Variable s'incrémente mal, et ne se décrémente pas
Posté par: Gzsume le 04 Juillet 2013, 12:50:29
Montres le SendClientMessage de l'incrémentation ?
De ce que tu m'expliques, on dirait que tu l'as placé avant l'incrémentation elle-même. Je me trompe ? :rolleyes:
Titre: Re : Variable s'incrémente mal, et ne se décrémente pas
Posté par: Salif le 04 Juillet 2013, 14:17:47
Lol exactement... Les erreurs bête qu'on peut faire quand même, c'est fou. A moi d'être moins pressé maintenant. Merci beaucoup tout est ok Gzsume. Pour finir je voudrais juste te demander personnellement : as-tu encore l'intention de mettre à jour ton blog sur le pawn ?
Titre: Re : Variable s'incrémente mal, et ne se décrémente pas
Posté par: Gzsume le 04 Juillet 2013, 14:33:07
Parfois, les erreurs les plus stupides sont également les plus enrichissantes. À l'avenir, tu te souviendras de ce moment et tu ne feras plus la même erreur. :-)

En ce qui concerne mon blog :

En tout cas, merci de poser la question, ça me montre qu'il n'est pas totalement tombé aux oubliettes, et c'est motivant. :-)

PS - C'est pas vraiment un "blog sur le Pawn", c'est carrément mon blog personnel, et en plus du cours de Pawn, on pourra y trouver des articles/projets et même d'autres cours, je pense (C, C++ lorsque je m'y mettrai, bibliothèques telles que SFML, Ogre, UDK...), en texte et peut-être aussi en vidéo. Si cela t'intéresse et que tu veux être tenu au courant, tu peux me suivre sur Twitter (https://twitter.com/AnthonyLnrd), en plus, tu seras mon premier follower. :-D
Titre: Re : Variable s'incrémente mal, et ne se décrémente pas
Posté par: Salif le 04 Juillet 2013, 14:57:15
Parfait c'est bien. Alors bon courage, c'est pas ce qu'il y a de plus facile à faire, ton blog est dans mes favoris depuis un bout de temps et j'avais peur qu'il ai été abandonné lol. Merci pour toute ton aide Gzsume.