Peut lier une structure variable et un objet ?

Bonjour à tous,

Tout d’abord, je tenais à féliciter tout ceux qui participent au développement de GDevelopp : c’est un super logiciel qui j’apprécie beaucoup ! ^^ Bravo !

Ensuite, pour en revenir à ma question : “Peut lier une structure variable et un objet ?”

En fait, je suis entrain de créer un inventaire. L’écran est divisé en 2 : a gauche l’inventaire, à droite un shop où l’on peut acheter des items.
Les items sont uniques et générés aléatoirement dans le shop. Une structure parent/enfants/sous-enfants est utilisée pour définir toutes les caractéristiques de chaque objet suivant le principe suivant :

Caracteristiques[“Item”+ToString(Variable(compteur-item))].materiau
Caracteristiques[“Item”+ToString(Variable(compteur-item))].prix
Caracteristiques[“Item”+ToString(Variable(compteur-item))].taille
etc…

La variable “compteur Item” est un chiffre qui est incrémenté de +1 à chaque création de nouvel Item. Je viens donc mettre dans les sous-enfants, toutes les informations nécessaires à la création de chaque item. Le shop devrait être renouvelé automatiquement toutes les 24 heures.

Cependant, lorsque mon shop est créé et que je viens cliquer sur l’élément qui a été généré grâce à la structure, comment est ce que je peux savoir de quel numéro de structure il s’agit ?
En effet, est ce que ce sera la “Caracteristique.item1” ou “Caracteristique.item2” ou “Caracteristique.item3” ou … etc ?

D’où ma question : est il possible de lier un objet graphique avec une structure ?
(grâce à la fonction association par exemple)

En fait, j’ai déjà essayé de le faire, mais ca ne fonctionne pas :frowning: c’est pourquoi je viens requérir votre aide ! :slight_smile:

Et si on ne peut pas les lier, quelle est la technique pour parvenir à un résultat plus ou moins équivalent ?

Merci beaucoup de votre aide !

A bientôt :slight_smile: :slight_smile: :slight_smile:

Ludo

Tu peux stocker le nom de l’item (“item1”, “item2”, …) dans une variables d’objet dans chaque “éléments d’inventaire”.

Bonjour Victor,

Merci de ton retour :slight_smile:

Cependant, un objet graphique pourra être utilisé pour plusieurs items.
Par exemple, l’objet graphique “Armure” sera utilisé pour tous les items de type “armure” : ce sont les caractéristiques qui varient (bonus XP, bonus hauteur de saut, bonus résistance dégâts, prix…)
Toutes les caractéristiques ainsi que le type d’objet graphique à utiliser sont spécifiés dans les sous-enfants de la structure.
Ainsi, plusieurs items “armure” pourront se trouver en même temps dans le shop.

Dan ce contexte, je ne vois pas comment le fait d’ajouter une variable objet peut résoudre mon soucis :frowning:

Comprends tu ce que je veux dire ?

Merci de ton aide !

:slight_smile: :slight_smile: :slight_smile:

Les variables d’objets peuvent avoir des valeurs indépendantes pour chaque instance d’un objet (comprend là une « objet placé sur la scène »).

Je t’invite à lire le 3ème point de la liste (surtout la dernière phrase) ainsi que le rectangle bleu ici : https://zestedesavoir.com/tutoriels/912/realisez-un-jeu-de-plates-formes-avec-gdevelop/les-variables/#3-comptage-de-score-avec-une-variable

Bonjour Victor,

Merci pour ta réponse, je ne savais pas en effet que l’on pouvait définir une variable pour une instance d’un objet. C’est très intéressant ! :slight_smile:

Cependant, pour mon cas, l’objet n’est pas au départ sur la scène, je le créé dans les actions d’un événement.
Je ne peut donc pas aller dans les propriétés de l’instance de l’objet.

A la limite, je pourrais mettre sur la scène un cadre vierge dans lequel je met l’objet graphique et les caractéristiques aléatoirement. Mais une fois dans l’inventaire, je ne saurais de nouveau ce que c’est…

De plus, une fois l’objet acheté dans le shop, si c’est un équipement (armure, bottes, gants…), il pourra être ensuite équipé sur le héro ou gardé dans l’inventaire.
Il faut donc que je puisse suivre l’objet graphique qui est créé (de manière aléatoire) dans le shop.

Est il possible donc de faire : Si condition ok, créer l’objet “armure” + lui définir une variable d’instance ?

Merci de ton aide précieuse ! :slight_smile:

@++

Ludo

“Variable d’instance”, ça n’existe pas. C’est juste que les variables d’objet que tu définies dans un objet dans l’éditeur d’objet (à droite) sont copiées dans chaque instances au démarrage de la scène, puis celles définies sur les instances sont appliquées par dessus. C’est donc bien les actions de variable d’objet qu’il faut utiliser pour modifier la variable d’objet d’une instance.

Si tu veux créer une nouvelle instance d’un objet et lui appliquer une valeur particulière à une de ses variables d’objet, il suffit, dans un événement, de créer l’instance (action “Créer objet”) puis de changer sa variable d’objet avec l’action associée (l’action ne s’appliquera que sur l’instance créée).

ok ! je crois comprendre ^^

J’essaierais ce week-end et te te tiendrais au courant ^^

En tout cas merci !

Je confirme que ça marche, j’ai développé à peu de choses près la même chose l’an dernier, le tout est de faire correspondre des les noms variables objets/structures.

J’en profite pour dire qu’un module/extension SQLite ça serait tellement mieux: )

Je rebosse en ce moment sur le projet, et je vous confirme que ca fonctionne !

Un grand merci ^^

:slight_smile: