Variable qui ne reçoit pas sa valeur (?)

Salutation,

Je développe un jeu de plateforme avec un inventaire dans lequel je souhaite stocker différents types de potions avec maximum 3 emplacements.
Mais les variables ne reçoivent les valeurs que pour le premier emplacement, enfin c’est ce dont j’ai l’impression car le type 2 (potion verte) est bien reconnu au premier emplacement puis le type 1 (potion bleue) n’est pas reconnu au deuxième…

Pouvez-vous m’aider à l’aide de cette capture d’écran de mes événements et une vidéo du déroulement ?

youtube.com/watch?v=BB-AP3y1Kb0

Je vous remercie d’avance :wink:

Salut,

Je débute dans GD donc je peux me tromper, mais en se basant sur la logique , utilise peut-être plutôt la valeur à afficher de Inventaire.x.qte et non de Inventaire.x.type, ces dernières recevant manifestement toujours les mêmes valeurs, à savoir 1 pour les PotionsNage (faire = 1 à la variable Inventaire.x.type) et 2 pour les potions proto (faire = 2 à la variable Inventaire.x.type)

Merci pour ta réponse, j’ai testé en utilisant la variable qte et elle reçoit bien les valeurs même sans incrémenter en faisant = comme avec le type. :smiley:
Mais pourquoi ? Car moi j’ai besoin de la quantité + le type à 3 emplacements d’inventaire, et je ne peux pas appeler le type : “qte”… :unamused:
Voici la structure de ma variable inventaire :

alors pour commencer, il faudrait faire la distinction entre les instructions d’incrémentations et les instructions d’affectations…

comme je ne maîtrise pas GD, je parts du principe que l’instru “faire +x à la variable machin” est une incrémentation, alors que l’instru “faire =x à la variable machin” constitue une affectation… or, quelle que soit la valeur de LastPositionPotion, tu attribues semble-t-il toujours la même valeur à tes variables inventaire.x.type, à savoir 1 pour Potion Nage et 2 pour Potion Prototype donc déjà quel est l’usage de ta variable type dans ton jeu ? quelles valeurs cette variable est-elle supposée avoir et dans quel but ?

Il y a 3 emplacements d’inventaire :
Un emplacement vide correspond au type 0, un emplacement pris par une potion de nage est de type 1 et une potion prototype (remplacé dans le futur par une vraie potion) est de type 2.
J’avais prévu la possibilité de recevoir plusieurs potions identiques (dénombrées par “qte”) par emplacement mais je pense que je vais abandonner cette idée car ça n’apporte rien au jeu…

Donc pour résumer : 3 emplacements, 1 emplacement = 1 type de potion et un certains nombre “qte” de celle-ci.

Ce que je ne comprends pas c’est pourquoi j’arrive à affecter la variable qte (j’ai mit un = dans mes derniers tests) mais pas la variable type.

alors il faut essayer de débugger en suivant l’évo de tes variables LastPositionPotion, Inventaire.x.qte et Inventaire.x.type en affichant leur état par ex juste après que tu joues le son et après l’affichage de TexteEtoile…

ça devrait aider à localiser un peu mieux d’où vient le prob…

Comment je peux faire pour débugger sans devoir à chaque fois afficher du texte à l’écran ?

ben c ça le principe du debug, d afficher des infos donc c juste le temps de localiser la source du prob, après tu enlèveras ces instru…

Après 4 potions ramassées j’ai ça :

La variable Inventaire.1.type reste à zéro quoi que je fasse.
T = variables type
Q = variables quantité
LPP = LastPositionPotion

alors pour bien faire, il faut donc ajouter des instructions d’affichage des variables à des endroits clés pour suivre le code étape par étape pendant son exécution… tu peux aussi ajouter des instructions pour afficher “on exécute telle instruction” puis tu mets éventuellement une pause derrière

l’idée est d’afficher l’état des variables au fur et à mesure de ta progression…

là on a l’état après le ramassage de 4 potions mais il faut en fait voir une par une à chaque ramassage, l’état de toutes les variables afin de voir à quel moment ce qu’on pense qui devrait se faire ne se fait pas…

Ici j’ai fait juste une capture d’écran après 4 potions pour aller plus vite mais je me souviens bien que ramassage par ramassage ce n’est ni plus ni moins qu’une progression dans les assignements de variable.
Début : T0=0 | T1= 0 | T2=0 | Q0=0 | Q1=0 | Q2=0 | LPP=0
1ère potion : T0=2 | T1= 0 | T2=0 | Q0=1 | Q1=0 | Q2=0 | LPP=1
2ème potion : T0=2 | T1= 0 | T2=0 | Q0=1 | Q1=1 | Q2=0 | LPP=2
3ème potion : T0=2 | T1= 0 | T2=1 | Q0=1 | Q1=1 | Q2=1 | LPP=3
4ème potion : T0=2 | T1= 0 | T2=1 | Q0=1 | Q1=1 | Q2=1 | LPP=4

Je vais vérifier si je ne remet pas la variable Inventaire.1.type (T1) à zéro au cours de l’exécution et je te tiens au jus :slight_smile:

UP !

J’ai essayé de renommer “Inventaire” en “Inventory” en recréant toute une nouvelle variable structurée : Sans succès
J’ai essayé de renommer “type” en “typee” pour le type 1 : Sans succès
J’ai donc essayé de renommer carrément le 1 en 5, donc “Inventory.1.type” est devenu “Inventory.5.type” et là magie mon deuxième type qui s’appelle dorénavant “Inventory.5.type” au lieu de “Inventory.1.type” ou “Inventaire.1.type” ou même “Inventaire.1.typee”, fonctionne, il reçoit enfin sa foutue valeur de type plutôt que de rester à 0 tout le temps.

Je ne comprends pas et j’aimerais quand même trouver une solution pour numéroter le deuxième type avec l’indice “1”.

Est-ce que quelqu’un qui s’y connait vraiment bien en GDevelop a une idée de ce problème ? C’est un bug du logiciel ? :confused:

[size=200]Problème résolu ![/size]

J’ai renommé de nouveau le 5 en 1 et ma variable prends bien sa valeur…
Fichu bug…

arf… là ça me dépasse :astonished:

'fin, si ça fonctionne, c’est déjà ça… :slight_smile:

Misère ce logiciel est vraiment buggué… :angry:
Je refait le test mais cette fois ci en ramassant d’abord la potion de nage et ensuite la potion prototype et de nouveau le même problème, le deuxième type reste à 0.
J’ai du supprimer les événement de la potion prototype et copier-coller ceux de la potion de nage qui sont exactement les même (à part devoir mettre type 2 au lieu de 1 en les éditant) et là ça marche alors que ce sont EXACTEMENT les mêmes événements :neutral_face:
J’espère qu’il y aura bientôt une mise à jour pour optimiser le logiciel.

humm, autant j’ai vu des bugs sur certains trucs, mais sur des manipulations de variables… Si ça marche avec exactement avec les mêmes événements dans un contexte et pas dans un autre (dans ton projet où bcp d’autres events sont présents), c’est que d’autres events perturbent l’algo. Impossible à déterminer sans tout avoir.

Vérifies que tu n’as pas d’autres events qui modifient et feraient rester ta var à une valeur que tu ne souhaites pas.