Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
TCL C74 Series 55C743 – TV 55” 4K QLED 144 Hz Google TV (Via ODR ...
499 €
Voir le deal

 

 Trier les objets d'inventaire?

Aller en bas 
3 participants
AuteurMessage
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Trier les objets d'inventaire? Empty
MessageSujet: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptySam 14 Jan 2012 - 20:04

Bonjour tout le monde. Pour mon nouveau projet, j'aimerais que les listes d'inventaires soient triées par catégories: par exemple il y aura un cadre pour les objets de type "nourriture", un autre pour les objets de type "potions", pour les armes, etc. Seulement je ne sais pas trop comment faire.
J'ai eu l'idée de faire plusieurs personnages (invisibles) et de faire une fenêtre d'inventaire par personnage (il y a le perso qui porte la nourriture, le perso qui porte les potions, etc). Et ça marche bien. Le problème c'est au moment de cliquer sur les objets d'inventaire... apparemment ça n'est pas accessible au perso principal (joueur).
Une autre idée?
Merci d'avance sourire
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptyDim 15 Jan 2012 - 11:38

Salut Shai-la
Shai-la a écrit:
Le problème c'est au moment de cliquer sur les objets d'inventaire... apparemment ça n'est pas accessible au perso principal (joueur).
Une autre idée?
Non, la même clin d'oeil
En fait il y a une astuce assez simple : tu utilises bien un personnage "fictif" par catégorie d'objet d'inventaire et tu affiches l'inventaire de chacun de ces personnages séparément. Mais tu n'oublies pas d'ajouter tous les objets d'inventaire de tous ces personnages au personnage principal également. Ainsi tu n'auras pas l'erreur comme quoi le personnage joueur ne possède pas l'objet d'inventaire sélectionné clin d'oeil
Chez moi comme ça ça fonctionne. Tiens-nous au courant !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptyMar 17 Jan 2012 - 14:42

Ah, pas bête, je vais essayer, merci sourire
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptyMar 17 Jan 2012 - 15:35

Mouais, pas évident... je continue à tâtonner!
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptyMar 17 Jan 2012 - 17:37

Bah, si tu trouves ça un peu compliqué, tu peux toujours te simplifier un peu la vie avec une fonction dédiée.
Tu crées une propriété personnalisée de type int nommée par exemple "TypeInv" qui prendra comme valeur, pour chaque objet d'inventaire, le numéro du personnage fictif correspondant (avec -1 comme valeur par défaut).
Ensuite, tu as simplement à créer une fonction dans le style :
Code:
function AddTypeInventory(this Character*, InventoryItem* objet) {

  int id_char = objet.GetProperty("TypeInv");
  if (id_char > -1) character[id_char].AddInventory(objet);
  this.AddInventory(objet);

}
Tu peux bien sûr faire une fonction dans le même esprit pour définir la propriété InventoryQuantity :
Code:
function TypeInventoryQuantity(this Character*, InventoryItem* objet, int quantite) {

  if ((quantite < 0) || (!this.HasInventory(objet)) return;

  int id_char = objet.GetProperty("TypeInv");
  if ((id_char > -1) && (character[id_char].HasInventory(objet))) character[id_char].InventoryQuantity = quantite;
  this.InventoryQuantity = quantite;

}
Maintenant, si ce qui te chagrine c'est d'utiliser plusieurs fenêtres d'inventaires dans ton GUI qui correspondent à des personnages différents, alors il va falloir passer par un système beaucoup plus compliqué de DynamicSprite/DrawingSurface et Cie (et là y'a de la matière pour un module langue).

EDIT : évidemment ça se corse si tu dois gérer plusieurs personnages qui portent chacun des objets de plusieurs types...
Une solution est de créer autant de personnages fictifs que de types d'objets multipliés par le nombre de personnages porteurs d'objets.
Ensuite, tu joues sur id_char en fonction du personnage auquel tu veux ajouter l'objet. Mettons que tu as deux types d'objets : gros et petits. Tu as le personnage joueur #0 et les personnages fictifs #1 (petits) et #2 (gros) ; ainsi que le personnage joueur #3 et les personnages fictifs #4 (petits) et #5 (gros). Il te suffit donc de remplacer "int id_char = objet.GetProperty("TypeInv"); par "int id_char = objet.GetProperty("TypeInv") + this.ID;. Je conviens toutefois que ce n'est pas très élégant... Je vais chercher une autre solution à ce problème ^^
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptyVen 20 Jan 2012 - 13:26

Bien, comme je le disais :
Kitai a écrit:
Maintenant, si ce qui te chagrine c'est d'utiliser plusieurs fenêtres d'inventaires dans ton GUI qui correspondent à des personnages différents, alors il va falloir passer par un système beaucoup plus compliqué de DynamicSprite/DrawingSurface et Cie (et là y'a de la matière pour un module langue).
Du coup ça m'a suffisamment tracassé l'esprit pour que je le fasse, ce fichu module.
Il est disponible ici.

L'utilisation est la suivante :
Après avoir importé le module, tu verras à la première ligne de TypeInventaire.asc
Code:
#define TYPE_PROPRIETE "Type_Inv"
Cela signifie que TypeInv est le nom de la propriété personnalisée à regarder pour trier tes objets d'inventaires.
En supposant que tu gardes Type_Inv, tu crées donc une propriété personnalisée de type textuelle pour tes objets d'inventaire que tu nommes "Type_Inv". De cette façon, tu peux donner la valeur "habits" à tous tes objets d'inventaire qui sont des vêtemets.

Ensuite, dans le GUI qui va contenir ton inventaire, tu crées un bouton de la dimension voulue pour ton inventaire.
En supposant que le nom de script de ce bouton soit bInventaire, il faut alors mettre dans le script, quelque part avant l'affichage du GUI, la commande suivante :
Code:
bInventaire.AsInv(player, "habits");
Ce faisant, ton bouton deviendra une fenêtre d'inventaire qui affichera uniquement les vêtements que porte le personnage joueur (cf. player).
Par défaut, le GUI est prévu pour défiler verticalement, mais tu peux régler ça en passant un troisième paramètre :
Code:
bInventaire.AsInv(player, "habits", eInvBtn_Horizontal);
// ou bien
bInventaire.AsInv(player, "habits", eInvBtn_Vertical);
Pour que l'utilisateur puisse faire défiler l'inventaire, justement, tu crées des boutons "haut" et "bas" (ou "gauche" et "droite" selon le défilement de ton inventaire) dans lesquels tu mets la commande correspondante parmi les suivantes :
Code:
bInventaire.ScrollUp();
bInventaire.ScrollDown();
bInventaire.ScrollLeft();
bInventaire.ScrollRigth();
Dernières précisions, pour mettre à jour l'inventaire, tu appelles à nouveau la commande AsInv sur le bouton. Donc dans l'idéal, il faudrait que tu appelles cette commande après chaque commande AddInventory.
Enfin, si tu veux récupérer l'objet d'inventaire survolé par la souris, tu peux utiliser la commande GetInvBtnAt(mouse.x, mouse.y) (la commande traditionnelle InventoryItem.GetAtScreen(mouse.x, mouse.y) ne fonctionnera pas avec ces inventaires).

EDIT : AGS a un problème de gestion sur les tableaux dynamiques pour les DynamicSprites. Du coup, j'ai ajouté une fonction InvBtnFree(); qu'il faudra appeler avant toute commande RestartGame(), RestoreGame() ou QuitGame() (c'est-à-dire à chaque fois qu'on "quitte" la partie en cours).

Voilà, je crois que j'ai à peu près fait le tour. Dis-moi si ça te convient et n'hésite pas à me suggérer des améliorations.


Dernière édition par Kitai le Sam 21 Jan 2012 - 12:03, édité 1 fois
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Alph Eratz
Cliqueur Emérite
Cliqueur Emérite
Alph Eratz


Nombre de messages : 861

Age : 60

Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan

Date d'inscription : 22/01/2008


Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptyVen 20 Jan 2012 - 15:45

Kitai, t'es un champion, ça ne me servira pas maintenant mais chapeau bas. coeur
Revenir en haut Aller en bas
http://lauvrayarcherie.com
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? EmptyMer 1 Fév 2012 - 11:35

Je vais tester, merci sourire
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Contenu sponsorisé





Trier les objets d'inventaire? Empty
MessageSujet: Re: Trier les objets d'inventaire?   Trier les objets d'inventaire? Empty

Revenir en haut Aller en bas
 
Trier les objets d'inventaire?
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Trucs & Astuces, Tutoriaux-
Sauter vers: