Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 [Tuto] Faire des inventaires à la DOTT

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1513

Age : 24

Localisation : La Rochelle

Date d'inscription : 09/01/2008


MessageSujet: [Tuto] Faire des inventaires à la DOTT   Jeu 10 Juin 2010 - 13:36

Bonjour, aujourd'hui au lieu de préparer le BAC et de mettre le nez dans les cours, nous allons plutôt nous intéresser aux inventaires. Nous allons essayer de refaire un système d'inventaire à la DOTT (un inventaire pour chaque personnage jouables) ; c'est très simple de faire ce système.

Tout d'abord, dans ce tuto je ne ferai que deux personnages, vous adapterez en fonction du nombre de personnage de votre jeu.
J'utilise également la version 3.1 d'AGS. Z'êtes prêts ? Alors on y va !

1°) Gestion des personnages :

Bon, ici nous aurons deux personnages, Roger et Sam, que je vous présente :


Initialement, Roger sera le joueur de départ, il faudra cliquer sur Sam en mode Interact pour switcher de joueur (par exemple) et inversement, j'utilise pour cela la fonction Character.SetAsPlayer() :

Code:
function cSam_Interact()
{
  cSam.Say("A mon tour !");
/*Message permettant d'indiquer au joueur que le personnage est sous contrôle. */
  cSam.SetAsPlayer();
}

function cEgo_Interact()
{
  cEgo.Say("C'est parti !");
  cEgo.SetAsPlayer();
}

Dans le jeu, je dirige Roger, puis quand je clique sur Sam en mode Interact, je dirige ce dernier, puis à nouveau quand je clique sur Roger en mode Interact, celui-ci devient actif, etc...

2°) Création des GUI :

Vous devez faire maintenant au moins un GUI (ici on considérera que tous les GUI d'inventaire seront identiques), dans DOTT seule la couleur des cadres changeait ; ok, donc voici mon magnifique inventaire :


Oui, je sais, c'est celui du template default, ça va hein !
Vous devez bien évidemment insérer un minimum de contrôles au GUI, le plus important étant sans aucun doute l'Inventory Window permettant de stocker les items, eh bien c'est lui qui va être important, sélectionnez-le dans votre GUI, maintenant, regardez la propriété CharacterID en bas à droite :


Cette propriété va nous permette d'assigner un inventaire à un joueur particulier (-1 signifie joueur, donc quand on switcherait ça serait le même inventaire, ce que l'on ne veut pas), on va assigner l'ID de l'un de nos personnages, par exemple 0 pour Roger :


Désormais quand nous serons dans ce GUI avec un autre joueur que Roger, nous ne verrons rien.
Voilà, premier GUI OK, plus que le second.
Pour copier un GUI il y a une manière très simple : l'export/import

Tout d'abord sélectionnez votre GUI dans l'arbre à onglet :


Puis clique-droit dessus : Export GUI... Donnez-lui un nom bidon...
Puis clique-droit sur GUIs : Import GUI... Sélectionnez celui que vous venez d'exporter.

Et voilà il s'affiche avec un petit 2 à la fin pour chaque propriétés communes.


Il ne vous reste plus qu'à aller dans la propriété CharacterID et de la changer en 1 pour l'inventaire de Sam.

3°) Afficher les bons GUI :

Maintenant que nous avons nos GUI pour chaque personnage, nous devons afficher les GUI en fonction du personnage actif, si c'est Roger, alors on affiche le premier, si c'est Sam, alors on affiche le second, etc pour chaque personnage.

Les appels des inventaires se font quand on clique sur la petite mallette dans le template default, si vous avez fait autrement il suffit d'adapter.


Donc on va sur ce GUI, soit gIconbar, on sélectionne la mallette puis on modifie la fonction btnIconInv_Click :

Code:
function btnIconInv_Click(GUIControl *control, MouseButton button) {
 
  show_inventory_window();
}

Ah ? une autre fonction, elle a été créée par AGS pour configurer au mieux l'affichage du GUI. Pour aller la voir, cliquez sur le menu déroulant en haut et sélectionnez-la :


Code:
function show_inventory_window ()
{
  gInventory.Visible = true;
  // switch to the Use cursor (to select items with)
  mouse.Mode = eModeInteract;
  // But, override the appearance to look like the arrow
  mouse.UseModeGraphic(eModePointer);
}

Ici nous devons modifier le GUI à afficher en fonction du personnage ; on va le faire avec de simples conditions :

Code:
function show_inventory_window ()
{

  if(player == cEgo) gInventory.Visible = true;
  else gInventory2.Visible = true; // cSam

  // switch to the Use cursor (to select items with)
  mouse.Mode = eModeInteract;
  // But, override the appearance to look like the arrow
  mouse.UseModeGraphic(eModePointer);
}

L'avantage de l'écrire dans la fonction show_inventory_window, c'est qu'elle est appelée autre part également :

Code:
if (keycode == eKeyTab)  show_inventory_window();  // Tab, //show inventory

Ainsi, quelle que soit la manière d'afficher l'inventaire, ce sera toujours le bon GUI ! ^^

Et pour finir, dans la fonction permettant de quitter le GUI (en général c'est un bouton qui le fait), on efface tous les GUI pour être sûr :

Code:
function btnInvOK_Click(GUIControl *control, MouseButton button) {
   // They pressed the OK button, close the GUI
   gInventory.Visible = false;
   gInventory2.Visible = false;
   mouse.UseDefaultGraphic();
}

C'est une méthode pas si barbare parce que quand les GUI sont déjà effacés, cela prend moins de temps au CPU.

Et voilà, c'est finit !!! Alors pas très dur sourire

4°) Activer les items au départ :

Dans la liste d'items vous avez certainement reconnu la propriété PlayerStartsWithItem qui permet de débuter le jeu avec l'item en possession, le problème c'est que l'on ne peut que le faire avec le joueur de départ, donc pour ajouter des objets aux autres personnages (par exemple le scalpel de Laverne ou le décapsuleur de Hoagie) vous devez vous créer une petite fonction items_start et vous énumérerez les items de départ des personnages :

Code:
function items_start()
{
cHoagie.AddInventory(iDecapsuleur);
cLaverne.AddInventory(iScalpel);
...
}

Et vous faite un appel à cette fonction dans le game_start :

Code:
function game_start() { 
  // Put the code all in a function and then just call the function.
  // It saves cluttering up places like game_start.
  initialize_control_panel();
  items_start();
  // Use the KeyboardMovement module to, per default, replicate the standard
  // keyboard movement of most Sierra games. See KeyboardMovement.txt for more info
  KeyboardMovement.SetMode(eKeyboardMovement_Tapping);
}

Et voilà, si vous avez des questions, des remarques ou des suggestions, hésitez pas à me les communiquer sourire

A bientôt !

_________________
VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO !
Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Benjiman33
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 312

Age : 31

Localisation : Bordeaux-Toulouse

Date d'inscription : 27/07/2007


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Jeu 10 Juin 2010 - 14:50

Héhé Merci CrazyLegs...
Un tuto qui tombe à pic !
J'allais justement bientôt avoir besoin de faire un inventaire pour chaque personnage. Et je ne connaissais pas le coup du CharacterID donc j'aurais bataillé jpense...
J'essayerais ça quand j'aurai un peu de temps. Je dois aussi me pencher sur le changement de room et lors du changement de perso (à la DOTT) entre mes 3 petits cochons^^, mais je crois me rappeler que le simple fait de changer de perso principal change directement la room donc pratique (à vérifier).

merci en tout cas clin d'oeil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
-a-timburton-a-
Cliqueur Emérite
Cliqueur Emérite
avatar

Nombre de messages : 588

Date d'inscription : 17/05/2010


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Jeu 10 Juin 2010 - 15:21

Le tuto à l'air d'être parfait.

Grand boulot; merci à toi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Godzillu
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1557

Date d'inscription : 11/03/2007


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Jeu 10 Juin 2010 - 17:10

Et le bac alors!

Beau boulot tout de même soit dit en passant sourire

_________________
Ma vie, mon oeuvre au jour semestre à la semaine le jour semestre la semaine quand j'y pense : http://godzillu.blogspot.fr/ ou FB ou Twitter ou Instagram
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://godzillu.blogspot.fr/
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1513

Age : 24

Localisation : La Rochelle

Date d'inscription : 09/01/2008


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Jeu 10 Juin 2010 - 17:15

Merci ! sourire
J'espère que ça te sera utile !

_________________
VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO !
Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Benjiman33
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 312

Age : 31

Localisation : Bordeaux-Toulouse

Date d'inscription : 27/07/2007


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Dim 15 Aoû 2010 - 16:26

Salut crazy, je reup ton topic pour une petite précision:

Crazy Legs a écrit:
Cette propriété va nous permette d'assigner un inventaire à un joueur particulier (-1 signifie joueur, donc quand on switcherait ça serait le même inventaire, ce que l'on ne veut pas)

Es tu sur de ça ? Car je n'ai qu'un seul Inventaire dans mon Gui et lorsque je switch de perso, l'inventaire change aussi et les objets du nouveau perso remplacent ceux de l'ancien. Je pense qu'AGS mémorise tout seul les objets de chaque perso et fait le changement sans qu'on ai besoin de créer plusieurs inventaires.

Egalement une précision pour ceux qui ont lu ce topic et qui veulent faire un système total à la DOTT: Créez un bouton GUI avec la tête d'un perso. Lorsque vous cliquez dessus vous sélectionnez ce perso et lorsque vous "utilisez" un objet avec lui vous lui donnez cet objet. Utilisez le code suivant dans la fonction "Onclick" du bouton Gui:


if(player.ActiveInventory==null) // donc si c'est un simple clic sur la tête (pas d'activeInventory veut dire qu'on a pas sélectionné d'objet à transférer à player2)
{cplayer2.SetAsPlayer(); } // On prends le controle du perso
else { // sinon on lui donne l'objet
cplayer2.AddInventory(player.ActiveInventory); // cplayer2 va recevoir l'objet
player.LoseInventory(player.ActiveInventory);}// et le joueur 1 le perdre
}


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1513

Age : 24

Localisation : La Rochelle

Date d'inscription : 09/01/2008


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Dim 15 Aoû 2010 - 16:34

Citation :
Car je n'ai qu'un seul Inventaire dans mon Gui et lorsque je switch de perso, l'inventaire change aussi et les objets du nouveau perso remplacent ceux de l'ancien. Je pense qu'AGS mémorise tout seul les objets de chaque perso et fait le changement sans qu'on ai besoin de créer plusieurs inventaires.

Oui, mais tu dois alors assigner à chaque fois le nouveau cochon en tant que joueur ; et aussi je ne sais pas si y a moyen de changer l'apparence du GUI de l'inventaire en fonction du cochon actuel ?

_________________
VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO !
Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Benjiman33
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 312

Age : 31

Localisation : Bordeaux-Toulouse

Date d'inscription : 27/07/2007


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Dim 15 Aoû 2010 - 16:45

Oui quand je switch sur un cochon je le définis en tant que joueur:
cNouf.SetAsPlayer();
Tu dois forcémment le définir en tant que joueur pour l'utiliser donc l'utilité d'un 2è Gui me semble intéressante si tu veux changer l'apparence de ce Gui entre deux joueurs ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1513

Age : 24

Localisation : La Rochelle

Date d'inscription : 09/01/2008


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Dim 15 Aoû 2010 - 16:54

Oui et c'est comme ça dans DOTT ^^
En fait c'est ça le + du tuto c'est de bidouiller pour pouvoir changer l'apparence du GUI, par défaut on pouvait pas.

_________________
VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO !
Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Benjiman33
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 312

Age : 31

Localisation : Bordeaux-Toulouse

Date d'inscription : 27/07/2007


MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   Dim 15 Aoû 2010 - 17:04

Ok et en effet dans ce cas là ta technique me semble la seule solution...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [Tuto] Faire des inventaires à la DOTT   

Revenir en haut Aller en bas
 
[Tuto] Faire des inventaires à la DOTT
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Tuto] Faire des inventaires à la DOTT
» TUTO [Faire un canapé]
» [Tuto] Faire un joli Noeud
» [TUTO] Faire une colline .
» [Tuto] Faire de la Rouille

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: