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

Partagez | 
 

 Les script dans les dialogues

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: Les script dans les dialogues   Dim 22 Avr 2012 - 23:38

Déjà bonjour,
Ca faisait un moment que je n'étais pas revenu.
J'ai eu envie de reprendre un peu AGS, pour ça j'ai téléchargé la mise à jour 3.2 et là, le début des problèmes.
On dirait bien que des choses ont changé depuis l'ancienne version au niveau des dialogues.

Je m'explique, dans l'ancienne version si je me souviens bien, il suffisait de mettre un espace et l'on pouvait y ajouter très simplement des lignes de script, il semble que cela ne soit plus possible.

Du coup, ma question :
Dans la nouvelle version comment faire pour ajouter des scripts dans les dialogues ?

Rien que ça par exemple :

Code:
// Dialog script file
@S  // Dialog startup entry point


chero: Que faire ?

@1
 WaitKey(100);
 SailorZ1.Visible=false;
 PataA1.Visible = true;

Merci d'avance
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 : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: Les script dans les dialogues   Lun 23 Avr 2012 - 1:20

Salut filoulefilou, bon retour par ici ^^

filoulefilou a écrit:
Je m'explique, dans l'ancienne version si je me souviens bien, il suffisait de mettre un espace et l'on pouvait y ajouter très simplement des lignes de script, il semble que cela ne soit plus possible.
En consultant l'aide de la 3.2.1 je n'ai pas vu de changement par rapport à la 3.1.
Il me semble que la page d'aide en français est à jour sur ce point.

As-tu essayé d'indenter les commandes avec deux espaces au lieu d'un ? A l'aide d'une tabulation ?

Je n'ai pas profondément recherché sur le forum officiel, mais il ne semble pas y avoir de sujet concernant un éventuel changement dans les dialogues avec AGS 3.2...

_________________
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 En ligne
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: Re: Les script dans les dialogues   Lun 23 Avr 2012 - 14:20

Alors, oui oui, j'ai testé la tabulation et voilà ce qu'il me dit :

j'entre la ligne de code :

Code:
// Dialog script file
@S  // Dialog startup entry point
chero: blablabla 
  Wait(30);
  SailorZ.Visible = true;

et j'ai le rapport d'erreur

Code:
Dialog 1(5): Error (line 5): Undefined token 'SailorZ'
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 : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: Les script dans les dialogues   Lun 23 Avr 2012 - 16:21

filoulefilou a écrit:
Code:
Dialog 1(5): Error (line 5): Undefined token 'SailorZ'
Ok, alors s'il butte sur ça sans buter sur ce qu'il y a avant, c'est que le problème vient sûrement de là plutôt que d'un problème d'indentation.

Est-ce que SailorZ est un objet ? Si c'est le cas, alors c'est normal qu'AGS ne reconnaisse pas le mot-clé : les objets sont locaux à chaque pièce, ce qui signifie que tu ne peux pas y faire référence hors de la pièce où ils se trouvent. Les dialogues étant des objets globaux, hors pièce, tu ne peux pas manipuler les objets par leur nom de script à l'intérieur. En revanche tu peux utiliser le tableau object comme ça par exemple :
Code:
  if (player.Room == N) // N : le numéro de pièce où se trouve l'objet
    object[M].Visible = true;  // M : le numéro de l'objet en question dans la pièce
Si ce n'est pas ça le problème, et que SailorZ est un personnage, es-tu sûr que ton personnage ne s'appelle pas plutôt sailorZ par exemple ?
A part ça je vois vraiment pas d'où ça peut venir...

_________________
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 En ligne
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: Re: Les script dans les dialogues   Lun 23 Avr 2012 - 17:17

C'est bien un objet, je pense que tu as trouvé la solution.
Je test et te dis ça
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: Re: Les script dans les dialogues   Mar 24 Avr 2012 - 17:09

Bon, visiblement, ça n'est pas possible d'agir sur les objets visibles d'une Room, depuis un dialogue.
La solution, contourner le problème en faisant autrement et en évitant le dialogue grand sourire
C'est nul, mais je n'ai rien trouvé de mieux.

Le problème du dialogue, c'est que même dans une suites d'actions, celui-ci sera exécuté à la fin de toutes les actions. Je m'explique:

On veut faire une sorte de suite d'animations avec des objets qui apparaissent et disparaissent et l'on veut aussi introduire un dialogue au milieu avec choix:
Allez savoir pourquoi, même si l'on écrit dans l'ordre:
O1.visible = true;
O2.visible =false;
dDialogue1.Start();
O3.visible = true;
etc...

D'une manière totalement anarchique, le dialgue sera exécuté APRÈS l'action O3.visible = true;
Ce qui visuellement n'aura aucun sens vu que vous vouliez naivement donner l'illusion que le dialogue permettait de faire apparaitre le l'objet O3...

Si quelqu'un connait la solution pour permettre suite à un dialogue de faire apparaitre un objet dans une pièce ... Qu'il la donne sourire

Sinon, pendant que j'y suis, j'ai quelques questions :

Est-ce que ce code fonctionne ? En gros, faire en sorte qu'une animation fonctionne uniquement si le view du personnage == 3
Ça pourrait servir pour les déguisements ou bien pour une arme. le coup de bâton fonctionne si le personnage porte un bâton... etc

Code:
If (cEgo.View == 3)
 { blablablablabla}


Je me demandais aussi, est-ce qu'il est possible de changer de Speech style, pendant le jeu ?
Notamment dans function room_AfterFadeIn() d'une room ...

Un truc du genre :
Game.speechstyle = SierreWithBackground ;

Et après modifier en
Game.speechstyle = Lucasarts;

C'est possible ?


Et changer l’apparence d'un objet dans l'inventaire ?
On change de monde, on change de style graphique , les objets de inventaires sont visuellement modifiés. Car sinon, il y a bien la solution de créer une copie de l'objet avec un autre visuel et d'en supprimer un, pour le remplacer par l'autre... Mais bon.


Et enfin, dernière question , Une sorte de room qui serait une carte, une fois rangée dans sa poche, il faudrait que le personne se retrouve au même endroit qu'il était en activant l'objet.
J'avais déjà utilisé quelque chose d'un peu similaire avec un téléphone dans mon ancien jeu.
Est-ce que le code comme ça fonctionne :

Ajouter une fonction :

Code:

cEgo.ChangeRoom(cEgo.PreviousRoom,previousx, previousy);
Sur la carte dans le bouton "retour"

Et l'objet "carte" dans function Interact ()
Mettre un truc du genre :
Code:

previousx = cEgo.x;
previousy = cEgo.y;

cEgo.ChangeRoomAutoPosition(N de la room carte);

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 : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: Les script dans les dialogues   Mer 25 Avr 2012 - 2:22

filoulefilou a écrit:
Bon, visiblement, ça n'est pas possible d'agir sur les objets visibles d'une Room, depuis un dialogue.
Euh, si, normalement c'est tout à fait possible.
C'est d'ailleurs ce qu'un type reçoit comme conseil sur cette page. Par contre peut-être que l'effet n'est pas immédiat, je ne sais pas j'ai pas testé et je suis sous Linux ces temps-ci.

filoulefilou a écrit:
D'une manière totalement anarchique, le dialgue sera exécuté APRÈS l'action O3.visible = true;
Alors même si lorsque je débogue des codes, je fulmine de l'incohérence patente des ordinateurs face au bon sens humain, il n'y a aucun chaos (ou anarchie si tu veux) dans l'exécution d'instructions par un moteur clin d\\\\'oeil
Tu peux voir sur cette page de l'aide la logique (peu intuitive peut-être, certes) de l'ordre d'exécution des instructions par le moteur d'AGS.
Certaines fonctions, dont la fonction Start des dialogues ont besoin d'être mises à la fin de la pile pour éviter certains conflits.

filoulefilou a écrit:
Si quelqu'un connait la solution pour permettre suite à un dialogue de faire apparaitre un objet dans une pièce ... Qu'il la donne sourire
Qu'est-ce que tu penses de la solution qu'on essaie depuis le début, mettre l'instruction object[N].Visible = true; directement dans le dialogue ? clin d\\\\'oeil
Quoi que tu fasses, il faudra mettre une instruction à la fin de ton dialogue, que ce soit pour y afficher directement l'objet ou pour modifier une variable de façon à récupérer ailleurs dans le script que le dialogue est terminé.
Je te renvoie à nouveau à cette page du forum officiel où il y a sûrement des pistes intéressantes.

filoulefilou a écrit:

Est-ce que ce code fonctionne ? En gros, faire en sorte qu'une animation fonctionne uniquement si le view du personnage == 3
Ça pourrait servir pour les déguisements ou bien pour une arme. le coup de bâton fonctionne si le personnage porte un bâton... etc

Code:
If (cEgo.View == 3)
 { blablablablabla}
Je ne vois pas vraiment de problème pour ce code. En revanche garde à l'esprit que la propriété View retourne la vue en cours du personnage (donc ça peut très bien être l'idle view par exemple).
Peut-être que tu préférerais utiliser la propriété NormalView ?
Attention aussi, AGS ne comprendra pas If si tu gardes le 'i' majuscule.

filoulefilou a écrit:
Je me demandais aussi, est-ce qu'il est possible de changer de Speech style, pendant le jeu ?
Notamment dans function room_AfterFadeIn() d'une room ...

Un truc du genre :
Game.speechstyle = SierreWithBackground ;

Et après modifier en
Game.speechstyle = Lucasarts;

C'est possible ?
Regarde la fonction globale SetSpeechStyle, je pense que c'est dont tu as besoin.
Si cette fonction est là, c'est bien pour pouvoir modifier le style en cours de jeu clin d\\\\'oeil

filoulefilou a écrit:
Et changer l’apparence d'un objet dans l'inventaire ?
On change de monde, on change de style graphique , les objets de inventaires sont visuellement modifiés. Car sinon, il y a bien la solution de créer une copie de l'objet avec un autre visuel et d'en supprimer un, pour le remplacer par l'autre... Mais bon.
Plutôt que remplacer un objet d'inventaire par un autre, tu peux préférer simplement changer sa propriété Graphic, ce qui changera simplement l'image que tu lui associes.

filoulefilou a écrit:
Et enfin, dernière question , Une sorte de room qui serait une carte, une fois rangée dans sa poche, il faudrait que le personne se retrouve au même endroit qu'il était en activant l'objet.
Tu peux aussi utiliser un GUI qui prend tout ou partie de l'écran. Ou même une image calque (ou "Overlay").

filoulefilou a écrit:
Est-ce que le code comme ça fonctionne :

Ajouter une fonction :

Code:

cEgo.ChangeRoom(cEgo.PreviousRoom,previousx, previousy);
Sur la carte dans le bouton "retour"

Et l'objet "carte" dans function Interact ()
Mettre un truc du genre :
Code:

previousx = cEgo.x;
previousy = cEgo.y;

cEgo.ChangeRoomAutoPosition(N de la room carte);

Encore une fois, je ne vois pas de problème dans ce code (j'imagine que previousx et previousy sont des variables int globales).

Mais je ne saurais que trop te conseiller de tester directement tes codes pour voir le résultat clin d\\\\'oeil

Bon courage en tout cas !

_________________
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 En ligne
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 259

Date d'inscription : 24/05/2010


MessageSujet: Re: Les script dans les dialogues   Jeu 3 Mai 2012 - 23:01

Alors voilà, j'ai bien essayé la fonction "SetSpeechStyle(eSpeechSierraWithBackground)"
Mais visiblement, si elle fonctionne, elle ne concerne QUE le joueur principal et ne change pas le speechstyle des autres caractères, pnj, etc...

Est-ce normal ?

EDIT:
Erratum ! Ca fonctionne ... (Sauf sur un personnage, j'ignore pourquoi... les mystères de l'informatique)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Les script dans les dialogues   Aujourd'hui à 17:21

Revenir en haut Aller en bas
 
Les script dans les dialogues
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Les script dans les dialogues
» [Résolu] Font avec accents et cédilles dans les dialogues
» [Recherche] Un script pour les dialogues
» Déclaration de variables dans le script header
» script menu catégories d'items

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: