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

Partagez | 
 

 [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…

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


Nombre de messages : 136

Date d'inscription : 06/04/2016


MessageSujet: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Ven 30 Sep 2016 - 16:11

J’ai créé une fonction pour gérer mes dialogues, elle se compose d’une variable String pour le texte du dialogue et de paramètres optionnels définis en enum.

Mon problème est que dès que j’utilise une virgule dans mon dialogue (à l’intérieur des " " qui encadre la String), l’autocomplétion d’AGS se lance pour me proposer un paramètre… Quand ma String est terminée la virgule qui doit appeler le premier paramètre appelle donc le suivant.
En bref, l’autocomplétion saute autant de paramètres qu’il y a de virgules dans le texte du dialogue…
Pour utiliser correctement ma fonction, je dois taper mes dialogues sans virgule et les rajouter ensuite, ou définir mes paramètres en me passant de l’autocomplétion…

Une autre idée concernant ce problème ?


Dernière édition par Arlann le Sam 1 Oct 2016 - 7:30, édité 1 fois
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: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Ven 30 Sep 2016 - 19:28

Je crois que je vois ce que tu veux dire : seul le surlignage/la suggestion dynamique des paramètres de ta fonction dans l'autocomplétion est affecté par le fait que tu entres des virgules dans la chaîne qui correspond à ton premier paramètre.
En première lecture de ton message, je me méprenais et pensais que c'était le texte dans l'éditeur lui-même qui était affecté.

J'ai remarqué ce problème par le passé, ça m'a jamais vraiment perturbé plus que ça, du coup j'ai jamais cherché de solution. Une variante de ta solution est de temporairement entrer une chaîne vide comme premier paramètre, définir tes paramètres optionnels, puis revenir remplir ta chaîne par la suite (ça évite d'ajouter chaque virgule une par une).

_________________
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
Arlann
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 136

Date d'inscription : 06/04/2016


MessageSujet: Re: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Ven 30 Sep 2016 - 21:48

Oui c'est exactement ça, j'ai peut être confondu suggestion dynamique et autocomplétion dans mon explication, je ne sais pas quel est le bon terme.

Ce petit bug est intéressant à connaître, ce n'est pas très grave mais au début je me suis arraché les cheveux car je ne comprenais pas pourquoi certains paramètres disparaissaient « aléatoirement » quand j'utilisais ma fonction...

Finalement j'ai passé tous les paramètres en optionnels pour ne pas avoir à gérer ce problème quand je taperai la majorité des dialogues. Du coup cela m’amène à une deuxième question !

Un des paramètres est le choix d'activer ou non un « timer » pour passer les dialogues automatiquement. Il est donc optionnel et réglé sur eTimerOn de base.
Exemple :
Code:
// dans mon script header
enum TimerStyle {
   eTimerOn,
   eTimerOff,
};

import void Parler(this Character*,String dialogue, TimerStyle timer = eTimerOn) ;

Je voudrai donner la possibilité au joueur  de choisir dans les options du jeu si par défaut le timer est réglé sur On ou Off, tout en gardant la possibilité pour moi de définir sa valeur dans mon script quand j'en ai besoin.

En résumé je voudrais avoir une variable booléenne choixTimerStyle accessible par l'utilisateur qui change le paramètre timer  dans l'import de ma fonction pour donner ça :
Code:
import void Parler(this Character*,String dialogue, TimerStyle timer = eTimerOff) ;

Je ne sais pas si ma requête est très claire... Et si mon approche est bonne...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 1278

Age : 27

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Sam 1 Oct 2016 - 0:44

Si j'ai bien compris, ne peux-tu pas créer un bouton qui permettrait de faire varier cette variable choixTimerStyle de cette manière :
Code:
function btnChoixTimerStyle_OnClick(GUIControl *control, MouseButton button)
{
   if (choixTimerStyle == true) choixTimerStyle = false;
   else if (choixTimerStyle == false) choixTimerStyle = true;
}

Et ensuite, dans ta fonction Parler :

Code:
void Parler(this Character*,String dialogue, TimerStyle timer) {
  if ((timer == eTimerOn) || (choixTimerStyle == true)){
     //Le code à exécuter
}

  else if ((timer == eTimerOff) || (choixTimerStyle == false)){
     //Le code à exécuter
}
}

En l'état c'est sûrement très imparfait et il faudrait adapter le principe à ce que tu veux faire, mais dans l'idée est-ce ce que tu recherches ?

_________________
"Je pense que la Terre tourne autour du soleil à une vitesse de 30 kilomètres par seconde et que je suis là, accroché à ce bolide de feu qui fonce d'un infini à un autre, accroché à une table, suspendu dans le vide, pendant que, sérieusement, drogué, abruti, inconscient, j'affirme que nous sommes désolés d'apprendre la perte d'un colis expédié le 4 et que nous ferons l'impossible pour réparer cet incident."

L'Employé, Jacques Sternberg.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Arlann
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 136

Date d'inscription : 06/04/2016


MessageSujet: Re: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Sam 1 Oct 2016 - 7:23

Ce n'est pas exactement ça mais ça me donne une bonne piste au lieu de m'acharner à vouloir changer la valeur par défaut dans la déclaration import...

Le problème c'est que je veux « garder la main » sur cette option pour forcer la valeur quand j'en ai besoin et passer outre la valeur par défaut.

Je vais donc rajouter une valeur dans mon enum, utiliser une variable booléenne choixTimerStyle dans les options du jeu et essayer de faire quelque chose comme ça :

Code:
// dans mon script header
enum TimerStyle {
   eTimerOn,
   eTimerOff,
   eTimerDefaut
};

import void Parler(this Character*,String dialogue, TimerStyle timer = eTimerDefaut) ;


// dans mon script
void Parler(this Character*,String dialogue, TimerStyle timer) {

   if ( timer == eTimerDefaut && choixTimerStyle == true ) timer = eTimerOn ;
   else if ( timer == eTimerDefaut && choixTimerStyle == false ) timer = eTimerOff ;

   // la suite de mon code

}


Il y a peut être plus simple mais je pense que ça va fonctionner ainsi.

Merci à vous deux !
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: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Sam 1 Oct 2016 - 22:26

Je trouve ta décision finale très bonne, c'est probablement la plus propre d'ailleurs.
Sinon, est-ce que tu as essayé de passer une variable comme valeur par défaut dans ta déclaration import, comme ça ?
Code:
import void Parler(this Character*,String dialogue, TimerStyle timer = choixTimerStyle) ;
À vrai dire je doute que ça fonctionne (je pense que les instructions import sont exécutées une fois au début du jeu épicètou, du coup soit le fait d'avoir une variable plaira pas au moteur, soit ça pourra pas changer dynamiquement dans le jeu, mais sètonjamè), et je trouve ça aussi moins propre que ta solution (sans trop savoir expliquer pourquoi).

_________________
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
Arlann
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 136

Date d'inscription : 06/04/2016


MessageSujet: Re: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Dim 2 Oct 2016 - 7:37

A première vue je ne comprends pas trop l’idée puisque choixTimerStyle est une variable booléenne alors que TimerStyle est un enum.
J’ai quand même essayé mais AGS refuse de compiler car :
Output a écrit:
Parameter default value must be literal
Kitai a écrit:
(je pense que les instructions import sont exécutées une fois au début du jeu épicètou, du coup soit le fait d'avoir une variable plaira pas au moteur, soit ça pourra pas changer dynamiquement dans le jeu, mais sètonjamè)
Voilà c'était ça le sens profond de ma question !
Quand je cherchais à modifier « de façon dynamique » ma ligne d’import j’ai essayé quelque chose comme ça.
Code:
// dans le script header
function UpdateParametreUtilisateur( bool choixUtilisateur) {
   if (choixUtilisateur == true ) import void Parler(this Character* , String dialogue, TimerStyle timer = eTimeOn );
   else import void Parler(this Character* , String dialogue, TimerStyle timer = eTimeOff );
}
Mais :
Output a écrit:
'import' not allowed inside function body
Ce qui ne m’étonne pas vraiment mais il fallait bien que j’essaye !
Il reste peut-être la possibilité d’encapsuler tout ça dans une structure, mais ce serait vraiment tordu car la solution décrite plus haut fonctionne parfaitement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 1278

Age : 27

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Dim 2 Oct 2016 - 11:41

Oui dans ce cas là il faudrait que timer soit lui-même une bool, mais quoi qu'il en soit cette option serait moins adaptée si tu veux "forcer" le timer dans certains cas.

_________________
"Je pense que la Terre tourne autour du soleil à une vitesse de 30 kilomètres par seconde et que je suis là, accroché à ce bolide de feu qui fonce d'un infini à un autre, accroché à une table, suspendu dans le vide, pendant que, sérieusement, drogué, abruti, inconscient, j'affirme que nous sommes désolés d'apprendre la perte d'un colis expédié le 4 et que nous ferons l'impossible pour réparer cet incident."

L'Employé, Jacques Sternberg.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Arlann
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 136

Date d'inscription : 06/04/2016


MessageSujet: Re: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Dim 2 Oct 2016 - 12:44

Oui c'est bien ce que j'ai essayé de faire mais il s'avère qu'on ne peut pas définir un paramètre optionnel à partir d'une autre variable.
Output a écrit:
Parameter default value must be literal
Que ce soit avec une bool une String une enum..., les paramètres optionnels ont besoin d'une définition littérale.
Cela répond peut être à la question  : peut ont changer les instructions import pendant le jeu ?
A mon avis, c'est impossible... perplexe
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…   Aujourd'hui à 8:03

Revenir en haut Aller en bas
 
[résolu]Problème avec l’autocomplétion des paramètres dans une fonction personnalisée…
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec mon natbaztag tag
» [Résolu] Problème avec le log TilesetEditor
» [help] Problème avec ma Dreamcast
» [Résolu] Problème avec un script.
» [Résolu] Problème GTA:SA "Configuration merde"

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: