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

Partagez | 
 

 [RESOLU] Changement apparences du perso auto + utiliser Item

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: [RESOLU] Changement apparences du perso auto + utiliser Item   Dim 28 Avr 2013 - 23:41

Salut,

je me galère un peu à stabiliser les changements d'apparence de mon personnage.
Il débute d'abord avec une tenue spécifique au début du jeu seulement.
J'aimerai savoir comment forcer en permanence le "LockView" après que le perso ai changé d'apparence,
et ceux, pour chaque changement d'apparence.

En somme, il commence avec l'apparence 1 et peut se balader comme ça,
jusqu'à ce qu'il trouve ensuite de nouveaux vêtements, apparence 2.

Pour l'instant, je me vois obligé de spécifier dans le script de chaque room la view à utiliser :

function room_Load()
{
cEgo.LockView(APPARENCE_VOULU);
}

C'est juste super lourd, en plus quand il changera d'apparence, ca va trop etre galère pour qu'il l'a garde dans ces mêmes rooms...
J'imagine qu'avec des conditions dans le script, y'a moyen de faire quelque chose (du genre "si apparence02 récupérée et portée, alors ne plus utiliser apparence01 dans aucune room), mais je vois pas du tout comment faire.





Aussi, j'aimerai donc pouvoir utiliser un item sur le perso, pour lui faire changer d'apparence.
Genre, le perso rammasse des vêtements, qui apparaissent ensuite dans son inventaire.
Je voudrai donc quand on utilise cet item sur le hero, qu'il utilise ensuite la view de la nouvelle apparence.

J'espère être asser clair sourire

Merci d'avance, le script c'est super, mais ça me rend un peu ouf par moment !

_________________


Dernière édition par XZS le Mar 30 Avr 2013 - 13:30, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
Skippy92
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Age : 38

Localisation : Bagneux

Date d'inscription : 02/03/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 6:02

Ce n'est pas ce qu'il faut faire, je pense.
LockView, c'est quand tu veux faire une action précise en dehors des views par défaut, pour ramasser un objet, par exemple.

Mais pour changer durablement les views par défaut, ça doit être :
cEgo.NormalView = 0; // en mettant à la place de 0 la view de ton perso quand il marche.
cEgo.IdleView = 0; // en mettant à la place de 0 la view de ton perso quand le joueur ne fait rien (se gratter par exemple).
cEgo.SpeechView = 0; // en mettant à la place de 0 la view de ton perso quand il parle.



Pour les autres views que tu voudrais et qui peuvent varier suivant les vêtements, comme pour ramasser un objet, je créerai une variable globale que tu appelles par exemple ViewPick, de type integer.

Ensuite, lors du firstload de ta première room, tu mets :
ViewPick = 0; // en mettant à la place de 0 ta view de ton perso quand il ramasse un objet.

Quand après tu changes de vêtements, il n'y a plus qu'à modifier cette variable.
Et dans l'action de prendre un objet, tu mets cEgo.LockView(ViewPick);
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 9:33

Comme on le disait sur ce sujet, la commande LockView est à utiliser pour des changements d'apparence temporaires ; et pour un changement d'apparence permanent comme tu le désires XZS, il faut utiliser la commande ChangeView.

PS : la propriété NormalView est en lecture seule (readonly) ce qui signifie qu'on ne peut pas changer sa valeur, contrairement à ce que tu proposes Skippy. C'est justement ChangeView qui permet de la changer.
En revanche cette propriété (NormalView) est utile justement pour lancer la bonne animation temporaire (par exemple "ramasser l'objet"), c'est-à-dire celle avec les bons vêtements dans notre exemple. Il suffit de vérifier la valeur comme suit :
Code:
if (player.NormalView == /* la vue normale des vêtements A */) player.LockView( /* la vue d'animation des vêtements A */ );
else if (player.NormalView == /* la vue normale des vêtements B */) player.LockView( /* la vue d'animation des vêtements B */ );
// etc...
player.Animate(player.Loop, 0, eOnce, eBlock); // On lance l'animation préalablement sélectionnée
player.UnlockView(); // On redonne la vue normale au personnage

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Skippy92
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Age : 38

Localisation : Bagneux

Date d'inscription : 02/03/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 9:55

Au temps pour moi, j'ai été un peu trop rapide.
NormalView n'est pas une fonction en fait, mais une propriété.

Par contre, c'est bien ça pour l'IdleView et le SpeechView ?


Quant à l'utilisation de NormalView, bah oui, pas bête.
Pas besoin de créer une variable globale quant il suffit de tester NormalView pour lancer la View la plus adaptée.

Merci pour tes lumières !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 10:50

Skippy92 a écrit:
Par contre, c'est bien ça pour l'IdleView et le SpeechView ?
Pour la SpeechView oui, c'est ça, mais pour l'IdleView c'est en lecture seule là aussi : il faut utiliser la commande SetIdleView.

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 14:08

Merci à vous deux pour ces infos sourire

En fait, je me suis peut-être mal exprimé, plus précisément voilà mon cas :

- Le personnage utilise par défaut les sprites "apparence 01" (déplacement, idle, talk, ...).

- Le jeu commence sur une animation unique du perso (il est assis puis se lève),
après ça, le personnage utilise les animations "apparence 01", pour se déplacer, etc.
Du coup, dans la "room01" (la toute première du jeu), j'ai dû indiquer dans le script :
"Force l'utilisation de l'animation unique d'intro, puis passe à l'animation normale "apparence 01".

- A cause de ça, dans les "room02", "room03", etc. je dois indiquer au chargement de room :
Force l'utilisation de l'animation normale "apparence 01", sinon le jeu utilise l'animation unique du début du jeu (le mec qui se lève).

- Un peu plus loin dans le jeu, le joueur trouve une clé qui lui permet d'ouvrir un bâtiment de la "room01" (la 1re du jeu, donc) qui était vérouillé jusqu'ici, pour aller y récupérer des vêtements (qui seront ceux de "apparence 02" du perso). Le joueur les récupères dans son inventaire. Il peut donc les mettre ou rester dans son "apparence 01" actuelle.

- Mais, vu que j'ai déjà indiqué dans les room01, 02, etc. que je forçais l'utilisation de "apparence 01" pour le perso, je vais être bloqué si le perso utilise "apparence 02", car dans chaque room, le script forcera l'utilisation de "apparence 01"... Qui plus est, si le joueur a le choix de garder "apparence 01" ou utiliser "apparence 02", mon script sera totalement foireux.


En somme :
- comment forcer l'utilisation de tel ou tel "View" pour un moment donné du jeu, sans devoir l'indiqué dans le script de CHAQUE room.
- comment laisser le joueur choisir l'apparence qu'il veut pour le personnage, à n'importe quel moment du jeu.
- comment appliquer/retirer les vêtements "apparence 02", "apparence 03", etc. dans l'inventaire, sur le joueur.

C'est vraiment pas évident d'expliquer ça avec des mots !
Si l'un de vous aimerai voir le code-source du jeu, pour y voir plus clair, je lui envoi bien volontiers.
Quitte à reprendre le le développement du début (les décors et sprites étant déjà faits), pour avoir un code propre et logique dès le départ...
(y'a 6 rooms pour l'instant, le développement est pas encore super poussé du coup).
Merci beaucoup pour votre précieuse aide ! sourire

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
Skippy92
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Age : 38

Localisation : Bagneux

Date d'inscription : 02/03/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 18:01

Je ne comprends pas pourquoi tu forces d'utiliser telle ou telle apparence dans tes rooms.
Tu changes d'apparence sur une action de la part du joueur, pas quand tu changes de room.
Quand tu changes de room, tu conserves les apparences paramétrées tant que tu n'en changes pas.

Admettons que ton perso ai le costume 1 sur le dos et le costume 2 dans l'inventaire.
Quand tu fais "Utiliser costume 2 sur Ego", tu dois :
- Retirer costume 2 de l'inventaire
- Ajouter costume 1 de l'inventaire
- Changer la view normale : cEgo.ChangeView(X);
- Changer la view pour parler : cEgo.SpeechView = Y;
- Changer la vue d'attente : cEgo.SetIdleView(Z, 30);

Que ce soit en agissant sur un costume en tant qu'objet ou en tant qu'objet d'inventaire, c'est pareil.
Je ne suis pas encore expert, Kitai ou quelqu'un d'autre pourra sûrement t'en dire plus, mais je pense que tu es parti sur quelque chose pour compliqué alors que le problème est en fait simple il me semble.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 20:05

En fait c'est surtout que j'ai mal démarré mon affaire sourire
Ca fait 3 semaines à peine que je script avec AGS, j'ai jamais réellement fait du code avant.
Du coup, j'ai pas la logique qu'il faut, je me retrouve avec un script bien galère !

Je vais repartir de zéro le développement du jeu, pour le script, pour avoir des bases saines.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 20:18

Coucou XZS !
Pas d'inquiétude à avoir, tout ce que tu voudrais implémenter me semble largement possible avec AGS !
Kitai et Skippy t'ont déjà donnés toutes les fonctions nécessaire à faire ce que tu veux, je te propose la mise en œuvre suivante.
Les codes que je te propose peuvent contenir quelques coquilles, donc essais de le comprendre plutôt que de le copier coller sauvagement. N'hésites pas à consulter l'aide d'AGS intensivement, pas exemple ici en Français.
Attention à ne pas mélanger le déclencheur d'un part et son effet d'autre part.
Si j'ai bien compris ton problème, on a deux cas différents:
1) le perso qui se lève (effet) au début (déclencheur)
2) le perso qui s’habille (effet) lorsqu'il s'habille (déclencheur) grand sourire

le cas 1
On a affaire ici à une cinématique d'introduction, somme toute assez banale. Le déclencheur que je te propose d'utiliser est le First time enter room, dans l'onglet "éclair" ou Event de l'éditeur de Room.
Comme l'animation en question est temporaire, son effet passera par la fonction LockView. Notes bien que dans ce cas dans l'éditeur de personnage, il faut mettre les vues NORMALES, et pas cette animation exceptionnelle.
Code:
function room_FirstLoad()
{
 StartCutscene(eSkipAnyKey); //on commence une cutscene skippable
  cEgo.LockView(VEGOSELEVE); //VEGOSELEVE est le nom de la vue ou le personnage se lève.
  cEgo.Animate(0, 3, eOnce, eBlock); //On lance l'animation
  cEgo.UnlockView(); // on reviens à la vue Normale
 EndCutscene(); //fin de la cinématique d'intro
}

Cas 2
Là, les changements d'animations sont plus définitif qu'une simple animation qui se lance une seule fois. On va donc plutôt passer par les fonctions ChangeView et associées.
Comme ces changements de tenues seront fréquents, on va en faire une fonction qu'on appellera en temps voulu. Cette fonction, tu peux la mettre dans ton GlobalScript.asc, ou mieux, la mettre dans un Fichier de Script (clic droit sur scripts -> New Script), j'ai appelé le mien MiscFunctions (fonctions diverses).
Cette fonction prendra comme paramètre la tenue spécifié, et modifiera les animations en conséquences.
Comme nous sommes des pros-grammeurs, plutôt que passer par des int, on passera par un enum, qui se déclare dans le header du script, ici MiscFunction.ash :
Code:
enum Tenue { //déclaration de l'enum
  eToutNu,
  eTenueUn,
  eTenueDeux //ajoutes plus de lignes pour plus de tenue
};
Et la fonction en question dans MiscFunction.asc :
Code:
function ChangerTenue(this Character*, Tenue ChoixTenue) //déclaration de la fonction
{
  if(this == cEgo){ //si la fonction est appliqué à cEgo. Remplacer cEgo par le nom du personnage voulu.
    if (ChoixTenue == eToutNu){
      this.ChangeView(1);
      this.SpeechView = 2; //Notez la petite incosistance d'AGS
      this.ThinkView = 3; //Ça sert à rien de modifier les vues Think, Blink et Idle si tu ne les utilises pas...
      this.BlinkView = 4;
      this.SetIdleView(5, 40);
    }
    else if(ChoixTenue == eTenueUn){
      this.ChangeView(6);
      this.SpeechView = 7;
      this.ThinkView = 8;
      this.BlinkView = 9;
      this.SetIdleView(10, 40);
    }
    else if(ChoixTenue == eTenueDeux){
      //...
      //Remplissez ici comme des grands
    }
  }
  else if(this == cRoger){
    //... Si un deuxième personnage se déshabille
  }
}
Puis on exporte la fonction dans le MiscFunction.ash avec la déclaration... import !
Code:
enum Tenue { //déclaration de l'enum
  eToutNu,
  eTenueUn,
  eTenueDeux //ajoutes plus de lignes pour plus de tenue
};

import function ChangerTenue(this Character*, Tenue ChoixTenue);
(pas besoins de déclarer deux fois l'enum, hein. Je l'ai remis juste pour que vous compreniez bien).
Cette fonction peut maintenant s'utiliser où on veut comme ça :
Code:
cEgo.ChangerTenue(eTenueUn);
Si tout va bien, la magie de l'autocomplétion devrai agir deux fois. clin d\\\\'oeil
Où on veut, donc. C'est là que ce pose le problème du déclencheur et j'ai pas tout compris à ce que tu voulais. grand sourire
Tu peux par exemple le faire lorsque le joueur utilise un objet d'inventaire (des vêtements) sur lui même :

Code:
function cEgo_UseInv()
{
 if(player.ActiveInventory == iPantalon) {
  cEgo.ChangerTenue(eTenueUn);
 }
}
Pour la gestions de l'inventaire, tu peux ajouter un objet via AddInventory, et le retirer via LoseInventory, et tu peux le faire soit dans le script sous le déclencheur, soit carrément dans le fonction ChangerTenue. Il faudrait que je sache plus précisément ce que tu veux pour pouvoir trancher.
Par exemple :
Code:
function ChangerTenue(this Character*, Tenue ChoixTenue)
{
  if(this == cEgo){ //si la fonction est apliqué à cEgo. Remplacer cEgo par le nom du personnage voulu.
    if (ChoixTenue == eToutNu){
      this.ChangeView(1);
      this.SpeechView = 2; //Notez la petite incosistance d'AGS
      this.ThinkView = 3; //Ca sert à rien de modifier les vues Think, Blink et Idle si tu ne les utilises pas...
      this.BlinkView = 4;
      this.SetIdleView(5, 40);
      this.AddInventory(iChemise);
      this.AddInventory(iPantalon);
    }
    else if(ChoixTenue == eTenueUn){
      this.ChangeView(6);
      this.SpeechView = 7;
      this.ThinkView = 8;
      this.BlinkView = 9;
      this.SetIdleView(10, 40);
      this.LoseInventory(iPantalon);
    }
    else if(ChoixTenue == eTenueDeux){
      //...
      //Remplissez ici comme des grands
    }
  }
}

Trois petites remarques pour finir :
-Les events Walk onto region et Walk off region sont des déclencheurs pertinents pour changer la vue du personnage tant qu'il est dans une région donnée (ie le faire se baisser dans un conduit d'aération).
-Certains codent les vêtements comme des personnages indépendants qui suivent leur porteur à une distance nulle et à une vitesse infini (FollowCharacter).
-Kitai rajouterai sans doute une bonne dizaine d'if supplémentaires à mes scripts pour être sur qu'il ne fassent pas de bêtise même si on les utilisent mal. C'est une bonne habitude à prendre. langue

_________________
Mon petit DevBlog


Dernière édition par Billbis le Lun 29 Avr 2013 - 22:07, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 29 Avr 2013 - 20:31

P'tain, tu déchires Billbis !

J'commençais à perdre un peu espoir car, malgré l'aide utile de Skippy92 et Kitai,
j'ai trop l'impression que j'suis pas fait pour coder. Encore une fois, c'est la première vraie fois que je m'essai au script/code/développement. J'ai deux trois notions de HTML mais c'est tout. sourire

Après, j'fais en sorte de comprendre le code sans le copier/coller tout simplement. Là, en plus c'est commenté, c'est juste trop bien !

Je sens que c'est le "enum Tenue" qui va m'être d'une grande aide.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
Skippy92
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Age : 38

Localisation : Bagneux

Date d'inscription : 02/03/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Mar 30 Avr 2013 - 7:55

Super Billbis, tu peux pratiquement transformer ton post en tuto.
Je n'en ai pas besoin pour le moment, puisque je dois d'abord bosser mon scénario, mais je garde précieusement ton post sous le coude pour avoir une trame pour savoir comment créer une fonction complète.
sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Mar 30 Avr 2013 - 8:33

XZS a écrit:
Je sens que c'est le "enum Tenue" qui va m'être d'une grande aide.
A vrai dire, même si les enums sont bien pratiques comme moyen mnémotechnique, pour l'autocomplétion et pour la clarté du code, c'est surtout esthétique. Le coeur du code, c'est bien la fonction ChangerTenue, d'ailleurs on peut la faire avec des ints à la place :
Code:
    function ChangerTenue(this Character*, int ChoixTenue)
    {
      if(this == cEgo){ //si la fonction est apliqué à cEgo. Remplacer cEgo par le nom du personnage voulu.
        if (ChoixTenue == 0){
          this.ChangeView(1);
          this.SpeechView = 2; //Notez la petite incosistance d'AGS
          this.ThinkView = 3; //Ca sert à rien de modifier les vues Think, Blink et Idle si tu ne les utilises pas...
          this.BlinkView = 4;
          this.SetIdleView(5, 40);
          this.AddInventory(iChemise);
          this.AddInventory(iPantalon);
        }
        else if(ChoixTenue == 1){
          this.ChangeView(6);
          this.SpeechView = 7;
          this.ThinkView = 8;
          this.BlinkView = 9;
          this.SetIdleView(10, 40);
          this.LoseInventory(iPantalon);
        }
        else if(ChoixTenue == 2){
          //...
          //Remplissez ici comme des grands
          this.LoseInventory(iChemise);
        }
      }
    }

Skippy a écrit:
Super Billbis, tu peux pratiquement transformer ton post en tuto.
Je n'en ai pas besoin pour le moment, puisque je dois d'abord bosser mon scénario, mais je garde précieusement ton post sous le coude pour avoir une trame pour savoir comment créer une fonction complète.
C'est vrai que la première fonction est assez dur à réaliser, malgré le tutoriel. D'ailleurs, j'ai moi même bien galéré.
L'idée d'en faire le sujet d'un petit tutoriel sur ce forum me trotte dans la tête depuis un petit bout de temps.
Je pense le faire sur l'exemple de la fonction FaceDirection qui est très pratique et très simple !

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Mar 30 Avr 2013 - 13:32

J'ai marqué le sujet comme [RESOLU], puisque y'a tout ce qu'il faut pour y répondre sourire
Je me relance dans la graaaande aventure du script.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Sam 4 Mai 2013 - 0:08

Après avoir tout bien suivi à la lettre, j'avais toujours un soucis : je ne pouvais pas appliquer la tenue au personnage.
Tout ça, parce que j'avais bêtement oublié de préciser la "view" à utiliser ! J'ai cherché un bon bout de temps...
Bref, tout fonctionne nickel, maintenant !

J'ai juste une dernière demande à ce sujet. J'aimerai que mon personnage dise quelque chose à propos de la tenue,
(du genre "Ca me va pas trop mal...") une fois qu'il l'a porte, mais juste la toute première fois qu'il l'a met, pas à chaque fois. Des idées ?

Ca m'a bien remotivé à continuer le développement ! J'suis repartie de zéro pour pas mal de trucs, j'en ai profité
pour changer complètement l'apparence du personnage principale, je le dessine et l'anime à la main, au lieu d'utiliser
un personnage en 3D. C'est plus long, mais bien plus personnel.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Sam 4 Mai 2013 - 8:18

Pour ce genre de chose, l'idée est de déclarer une variable booléenne, et de la rendre fausse au premier appel. Tu peux le faire soit sous le déclencheur, soit s'il y en a plusieurs directement dans la fonction :
Code:

bool bVetementSeyant = true;

function ChangerTenue(this Character*, int ChoixTenue)
        {
          if(this == cEgo){
            if (ChoixTenue == 0){
              this.ChangeView(1);
              this.SpeechView = 2;
              this.ThinkView = 3;
              this.BlinkView = 4;
              this.SetIdleView(5, 40);
              this.AddInventory(iChemise);
              this.AddInventory(iPantalon);
            }
            else if(ChoixTenue == 1){
              this.ChangeView(6);
              this.SpeechView = 7;
              this.ThinkView = 8;
              this.BlinkView = 9;
              this.SetIdleView(10, 40);
              this.LoseInventory(iPantalon);
            }
            else if(ChoixTenue == 2){
              //...
              //Remplissez ici comme des grands
              this.LoseInventory(iChemise);
              if (bVetementSeyant) { //si bVetementSeyant == true
                player.Say("Que je suis beau dans ces vêtements.");
                bVetementSeyant = false; //Maintenant le bool est faux, et le if ne sera plus jamais executé
              }
            }
          }
        }
Note qu'il existe des petites subtilités dans l'étendu des variables. Ici notre variable est locale au script de la fonction, et bVetementSeyant ne sera pas accessible dans les script des rooms.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 6 Mai 2013 - 13:40

Billbis, merci encore ! Sans toi, j'aurai soit un jeu bancal soit un script complètement foireux sourire
Du coup, tout marche super bien, mais plus ça avance dans le développement, plus je dois faire face à des cas de figures exceptionnels.

Là, par exemple, il faudrait que le joueur soit capable d'interagir avec des hotspots uniquement si il est dans tel tenue mais pas dans une autre. J'ai testé en utilisant les "bool" et les "if", mais ça ne donne rien. Je ne sais pas comment dire au jeu "si le joueur a telle tenue, active/désactive l'interaction avec ce hotspot".

Je cherche par moi-même, mais faut une certaine connaissance de AGS pour piger, y'a comme un manque de consistance (est-ce que c'est à mettre en parenthèse, ou après un point ou un signe "=", ...).

D'ici ce soir je fais en sorte de mettre une première version jouable du jeu dans son premier "niveau". Après, je vais m'éclater à piger comment fonctionne les dialogues...


EDIT :
J'ai tenté des variantes de ça :
Code:
bool bTenue02 = true; //Pour que le jeu vérifie qu'on ai bien la tenue02

function hHotspot6Entree_WalkOn() //Le hotspot qui active l'action "interdit d'entrer ici"
{

      if (bTenue02) {
            cKeum.StopMoving(); //"Keum" c'est le nom pour le personnage principal
            cVideur.SpeechView = 12; //"Videur" c'est le videur qui empêche l'accès à la room suivante, tant qu'on a pas la "Tenue02"
            cVideur.Say("Hey, c'est une soirée interdite aux gens en petit slip !");
            cKeum.Walk(850, 530, eBlock, eWalkableAreas); //Le perso s'éloigne un peu.
      }
      else if (bTenue03) {
          cVideur.Say("Bonsoir Madame, vous pouvez entrer !");
          hHotspot6Entree.Enabled = false; //Le hotspot "interdit d'entrer ici" est désactivé pour toujours.
          hHotspotEntreeOK.Enabled = true; //Le hotspot, qui permet de changer de room, s'active.
        }
        }
Ca marche la première fois, le videur bloque l'accès et le joueur s'éloigne.
Mais même si j'ai la bonne tenue, le code s'active toujours... perplexe

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 6 Mai 2013 - 17:00

Salut XZS,

Comme tu l'as remarqué, un changement de tenue pour un personnage dans AGS implique de changer ses views : sa vue normale, sa vue de dialogue, sa vue pensive, sa vue d'attente et sa vue de clignement (ça en fait pas mal !).
Ce qui signifie que selon la tenue que le personnage porte, sa vue normale (par exemple) sera différente. C'est donc ce genre de chose qui va permettre à ton code de savoir quelle tenue porte le personnage. Pas besoin de passer par des variables booléennes.

La fonction ChangerTenue que t'a proposée Billbis se charge justement de redéfinir toutes ces vues selon chaque tenue, et notamment la vue normale avec ChangeView. Par exemple, Billbis a imaginé d'assigner la vue normale numéro 6 lorsque tu passes la valeur 2 comme paramètre à la fonction ChangerTenue. C'est-à-dire que si tu décides de donner la "deuxième tenue" au personnage (d'entrer la commande cEgo.ChangerTenue(2);), ce personnage aura la vue normale numéro 6. Dès lors, tu pourras savoir n'importe où ailleurs dans le script si le personnage utilise cette "deuxième tenue" en vérifiant si sa vue normale est la vue numéro 6.

En résumé, ton code donnerait plutôt quelque chose comme ça :
Code:
function hHotspot6Entree_WalkOn() //Le hotspot qui active l'action "interdit d'entrer ici"
{
      // Note l'utilisation de NormalView pour consulter la vue normale du personnage,
      // potentiellement préalablement (re)définie par ChangeView
      if (player.NormalView == 1) { // Si la vue normale du joueur est 1 (selon ce que tu as défini), c'est qu'il porte la première tenue (slip)
          cKeum.StopMoving(); //"Keum" c'est le nom pour le personnage principal
          cVideur.SpeechView = 12; //"Videur" c'est le videur qui empêche l'accès à la room suivante, tant qu'on a pas la "Tenue02"
          cVideur.Say("Hey, c'est une soirée interdite aux gens en petit slip !");
          cKeum.Walk(850, 530, eBlock, eWalkableAreas); //Le perso s'éloigne un peu.
      }
      else if (player.NormalView == 6) { // Si la vue normale du joueur est 6 (selon ce que tu as défini), c'est qu'il porte la deuxième tenue (pas slip, tenue de madame)
          cVideur.Say("Bonsoir Madame, vous pouvez entrer !");
          hHotspot6Entree.Enabled = false; //Le hotspot "interdit d'entrer ici" est désactivé pour toujours.
          hHotspotEntreeOK.Enabled = true; //Le hotspot, qui permet de changer de room, s'active.
      }
}

Enfin je ne suis pas certain que tu utilises les variables booléennes correctement. Ces variables n'ont pas de sens "en elles-mêmes" : définir une variable bTenue02 ne suffit pas à la faire correspondre au fait que le personnage porte la tenue 2. Pour que cette variable ait ce sens, il faut que tu modifies sa valeur à chaque fois que le personnage enfile ou enlève la tenue, dans la fonction ChangerTenue par exemple. Si tu utilises la variable comme ça, alors elle variera nécessairement en même temps que la vue normale du personnage :
Code:
bool bVetementSeyant = true;
bool bTenue02 = false; // Au début du jeu, le personnage ne porte pas la tenue 2 (par exemple) : FALSE

function ChangerTenue(this Character*, int ChoixTenue)
        {
          if(this == cEgo){
            if (ChoixTenue == 1){
              // Tenue 1, on ne porte pas la tenue 2 : FALSE
              bTenue02 = false;
              this.ChangeView(1);
              this.SpeechView = 2;
              this.ThinkView = 3;
              this.BlinkView = 4;
              this.SetIdleView(5, 40);
              this.AddInventory(iChemise);
              this.AddInventory(iPantalon);
            }
            else if(ChoixTenue == 2){
              // Tenue 2, TRUE
              bTenue02 = true;
              this.ChangeView(6);
              this.SpeechView = 7;
              this.ThinkView = 8;
              this.BlinkView = 9;
              this.SetIdleView(10, 40);
              this.LoseInventory(iPantalon);
            }
            else if(ChoixTenue == 3){
              // Tenue 3, on ne porte pas la tenue 2 : FALSE
              bTenue02 = false;
              //...
              //Remplissez ici comme des grands
              this.LoseInventory(iChemise);
              if (bVetementSeyant) { //si bVetementSeyant == true
                player.Say("Que je suis beau dans ces vêtements.");
                bVetementSeyant = false; //Maintenant le bool est faux, et le if ne sera plus jamais executé
              }
            }
          }
        }
Si tu utilises ta variable bTenue02 comme ça, alors tu peux regarder sa valeur pour déterminer si le personnage porte bien la tenue 2 ou non. Mais comme je te l'ai dit, ce serait redondant avec le fait de regarder quelle est la vue normale du personnage pour déterminer quelle tenue il porte.

Est-ce que c'est à peu près clair ?

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !


Dernière édition par Kitai le Lun 6 Mai 2013 - 17:49, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 66

Age : 35

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 6 Mai 2013 - 17:42

Merci Kitai, j'aurai pas pensé à changer d'approche, en utilisant la View active comme déclencheur. Mais ça fonctionne tout-à-fait ! Je sais que je vais avoir relativement régulièrement besoin de ce genre de code dans mon jeu, car le personnage aura parfois encore à changer d'apparence.

Pour les bool, j'ai déjà plus ou moins pigé le fonctionnement, grâce à l'aide précédente de Billibis, après j'me foire encore de temps à autre avec quand même sourire

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/LBQ3TS
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Lun 6 Mai 2013 - 17:48

XZS a écrit:
Merci Kitai, j'aurai pas pensé à changer d'approche, en utilisant la View active comme déclencheur.
Eh ouais, parfois faut revenir aux fondamentaux : simplement regarder à quoi ressemble le personnage pour voir ce qu'il porte comme fringues clin d\\\\'oeil

Attention toutefois à bien distinguer la "vue active" dans le sens de "vue actuellement utilisée par le personnage" de la "vue normale" : la vue en cours est retournée par View et peut être diverse selon que le personnage utilise actuellement une animation exceptionnelle ou non, tandis que la vue normale est retournée par NormalView et correspondra toujours à la vue utilisée pour faire marcher le personnage "en temps normal" (c'est-à-dire lorsque tu n'as pas utilisé LockView pour utiliser une animation exceptionnelle).

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Skippy92
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Age : 38

Localisation : Bagneux

Date d'inscription : 02/03/2013


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Mar 7 Mai 2013 - 8:43

XZS a écrit:
Pour les bool, j'ai déjà plus ou moins pigé le fonctionnement, grâce à l'aide précédente de Billibis, après j'me foire encore de temps à autre avec quand même sourire
Le bool doit servir de "test" dans ton code.
Et effectivement, il faut bien penser à coder le changement de sa valeur pour la passer à true ou à false.
Et le test de cette valeur permet de décider ce que le personnage peut ou non faire en fonction de cette variable.

J'ajouterai en complément de bien considérer que de déclarer un bool en début de room ne permet d'utiliser cette variable que dans la room concernée et pas ailleurs.
Si à un moment tu as besoin de modifier le bool d'une room alors que tu te trouves dans une autre room (ex : j'appuie sur un bouton qui me déverrouille la porte d'une autre pièce), il te faut créer une variable globale.
Car à moins que je ne me trompe ne connaissant pas encore suffisamment AGS, tu ne peux pas modifier la valeur d'une variable d'une pièce dans laquelle tu ne te trouves pas.
Merci aux spécialistes de me le confirmer ou de l'infirmer si je suis dans l'erreur !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Mar 7 Mai 2013 - 16:33

Skippy92 a écrit:
J'ajouterai en complément de bien considérer que de déclarer un bool en début de room ne permet d'utiliser cette variable que dans la room concernée et pas ailleurs.
Si à un moment tu as besoin de modifier le bool d'une room alors que tu te trouves dans une autre room (ex : j'appuie sur un bouton qui me déverrouille la porte d'une autre pièce), il te faut créer une variable globale.
Car à moins que je ne me trompe ne connaissant pas encore suffisamment AGS, tu ne peux pas modifier la valeur d'une variable d'une pièce dans laquelle tu ne te trouves pas.
Merci aux spécialistes de me le confirmer ou de l'infirmer si je suis dans l'erreur !
C'est tout à fait vrai. Cela dit, il existe plusieurs façon de déclarer une variable globale : Dans l'onglet Global Variable de l'éditeur, ou bien uniquement via le script en les important dans un en-tête.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Mar 7 Mai 2013 - 17:03

Mon dieu, la vérité vient de m'éclater au visage : en fait Billbis est un robot qui se charge de lier les pages entre elles le plus possible !
Mais pourquoi fait-il ça... pour améliorer le référencement du forum et prendre le pouvoir ? Hmm... c'est louche !

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé




MessageSujet: Re: [RESOLU] Changement apparences du perso auto + utiliser Item   Aujourd'hui à 19:52

Revenir en haut Aller en bas
 
[RESOLU] Changement apparences du perso auto + utiliser Item
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu] Changement de perso (demande de conseils et astuces)
» [RESOLU]passer de boite auto a manuelle ?
» [RESOLU] Changement de propriétaire
» Changement de perso.
» changement a cataclysme...

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: