| Changer objet d'une room avec un GUI ?? | |
|
|
Auteur | Message |
---|
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Changer objet d'une room avec un GUI ?? Lun 16 Mai 2011 - 17:35 | |
| Salut,
j'ai une nouvelle question à laquelle je ne trouve pas réponse sur le forum.
Alors voilà, j'ai une porte fermée (objet d'une room) qui s'ouvre avec un code secret (qui se tape dans un GUI). Lorsque le bon code est tapé, l'image de la porte doit changer car celle-ci devient "ouverte" et le joueur pourra finir le jeu (c'est un escape room).
PROBLEME : impossible de taper une fonction pour changer la view d'un objet dans le script du GUI ! apparemment dans n'importe quel GUI impossible de faire référence à un élément d'une room, que ce soit objet, hotspot..
MA SOLUTION PROVISOIRE : j'ai scripté un "if-else if" pour que lorsque je clique sur la porte elle s'ouvre si le bon code est tapé (en passant par une variable). Seulement ça ne va pas car il faudrait vraiment que la porte soit directement ouverte et que je n'ai pas besoin de cliquer !!
MERCI ENCORE PS : j'ai plein de questions, je fais un sujet par question pour que ce soit plus clair pour les autres ! _________________ |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Changer objet d'une room avec un GUI ?? Lun 16 Mai 2011 - 20:23 | |
| - kouzine a écrit:
- PROBLEME : impossible de taper une fonction pour changer la view d'un objet dans le script du GUI !
apparemment dans n'importe quel GUI impossible de faire référence à un élément d'une room, que ce soit objet, hotspot.. En théorie, tu devrais pouvoir faire référence à ces éléments n'importe où dans le script : chacun a un script o-name particulier, constant, ce qui t'assure d'éviter les ambiguïtés. Tu as essayé en passant par les tableaux, comme object[3] ou encore hotspot[5], etc. ? Et aussi, quelle version d'AGS utilises-tu ? En théorie ça ne fait pas de différence (les script o-name arrivent avec la version 2.71, mais bon...) - kouzine a écrit:
- MA SOLUTION PROVISOIRE : j'ai scripté un "if-else if" pour que lorsque je clique sur la porte elle s'ouvre si le bon code est tapé (en passant par une variable).
Seulement ça ne va pas car il faudrait vraiment que la porte soit directement ouverte et que je n'ai pas besoin de cliquer !! Bah, si vraiment tu veux passer par cette solution, tu peux vérifier la valeur de ta variable globale dans la fonction repeatedly_execute (appelée room_RepExec dans les scripts de pièce). Vu que cette fonction est exécutée à chaque cycle de jeu, le code réagira dès que la valeur de la variable sera modifiée. Mais donc normalement, y'a aucun soucis pour appeler un élément du jeu dans quelque script que ce soit... - kouzine a écrit:
- PS : j'ai plein de questions, je fais un sujet par question pour que ce soit plus clair pour les autres !
Ça c'est une très bonne chose ! _________________ 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 ! |
|
| |
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Re: Changer objet d'une room avec un GUI ?? Lun 16 Mai 2011 - 21:20 | |
| J'ai un GUI pour le code qui ouvre la porte, le script du bouton de VALIDATION est le suivant :
function VALIDATION_OnClick(GUIControl *control, MouseButton button) {
// ++++ CAS DE FIGURE 1 : La bonne combinaison ++++ if (Code1.Graphic == 32 && Code2.Graphic == 25 && Code3.Graphic == 29 && Code4.Graphic == 30) // ++ LE CODE == 9 2 6 7
{ PlaySound(7); PlaySound(9); cEgo.Say("C'est la bonne combinaison..."); gCLAVIER.Visible=false; VPORTE+=1; o9267.visible=true; }
J'AI LE MESSAGE D'ERREUR SUIVANT : GlobalScript.asc(541): Error (line 541): Undefined token 'o9267'
_________________
Dernière édition par kouzine le Lun 16 Mai 2011 - 21:47, édité 2 fois |
|
| |
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Re: Changer objet d'une room avec un GUI ?? Lun 16 Mai 2011 - 21:22 | |
| J'ai essayé avec l'ID de l'objet au lieu de son nom :
object(3).visible=true;
ça marche pas non plus mais ça donne un autre message d'erreur :
GlobalScript.asc(541): Error (line 541): PE04: parse error at 'object'
_________________
Dernière édition par kouzine le Lun 16 Mai 2011 - 21:47, édité 1 fois |
|
| |
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Re: Changer objet d'une room avec un GUI ?? Lun 16 Mai 2011 - 21:46 | |
| J'ai réussi c'est avec les crochets comme tu m'avais dit mais j'avais pas fais attention oups
object[3].Visible=true;
quand on est dans le global script c'est ce format là MERCI !!! _________________ |
|
| |
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Re: Changer objet d'une room avec un GUI ?? Lun 16 Mai 2011 - 22:40 | |
| MAIS ?? Puisque chaque objet a pour ID 0,1,2.... et que ça revient à zéro pour chaque piece, comment indiquer au programme de quel objet il s'agit ?? _________________ |
|
| |
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Re: Changer objet d'une room avec un GUI ?? Lun 16 Mai 2011 - 23:32 | |
| Pour agir sur un objet de la room 1 depuis la room 2 j'ai un problème : Room 1 : piece avec une porte fermee Room 2 : clavier qui permet d'entrer des codes + bouton pour refermer le clavier et retourner à la room 1. Si les 3 codes sont bons, la porte de la room1 doit etre ouverte quand j'y retourne mon script ne marche pas: function oRETOUR_AnyClick() { if((VEYE==1)&&(VDOIGT==1)&&(VPORTE==1)) ///ce sont les variables créées lorsque les codes sont bons {cEgo.ChangeRoom(1, 567, 370); ///le perso retourne a la room1 object[8].Visible=true;} ///la porte ouverte (object 8 de la room1) devient visibleelse {cEgo.ChangeRoom(1, 567, 370);} } } Lorsque je teste le jeu il bug au moment ou la porte devrait s'ouvrir, l'objet n'est pas reconnu : _________________ |
|
| |
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Re: Changer objet d'une room avec un GUI ?? Mar 17 Mai 2011 - 9:39 | |
| help... _________________ |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Changer objet d'une room avec un GUI ?? Mar 17 Mai 2011 - 10:53 | |
| Oui, au temps pour moi, après vérification, on ne peut pas accéder à un élément d'une pièce directement à partir du script d'une autre pièce. Il faut donc passer, d'une manière ou d'une autre, par une variable globale. Ensuite, tu vérifies sa valeur dans la fonction de pièce associée à Enters room (before fade-in) et c'est là que tu places ta commande object[8].Visible=true;. De plus la commande ChangeRoom ne change pas de pièce directement, donc ta commande object[8].Visible=true; dans ton code concerne la pièce 2, pas la pièce 1. _________________ 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 ! |
|
| |
kouzine Adepte de la Grande Tasse Bleue
Nombre de messages : 60
Date d'inscription : 12/05/2011
| Sujet: Re: Changer objet d'une room avec un GUI ?? Mar 17 Mai 2011 - 10:55 | |
| J'avais pas pensé à "Enters room (before fade-in)", merci encore une fois tu me sauves, décidément je vais te dédicacer mon jeu !!!! _________________ |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Changer objet d'une room avec un GUI ?? Mer 12 Mar 2014 - 14:23 | |
| je me permets de rebondir sur ce sujet, car le "Enters room before fade-in", indique que le script est lancé lorsqu'on arrive dans la pièce.
Comment faire lorsqu'on voudrait activer un objet à partir d'un Gui ou d'un Dialogue, alors qu'on est déjà DANS la pièce ? Exemple type, j'ai un objet jaune, j'ouvre un dialogue et à la fin de celui-ci, je voudrais que mon objet soit vert. Comment faire, puisque le dialogue ne peut pas gérer le SetView d'un objet qui appartient à une Room ? Peut-être en écrivant bien tout dans le "Enter room" et en faisant une sorte d'actualisation de la Room, en mettant un changeRoom vers la même pièce à la fin du dialogue ? |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Changer objet d'une room avec un GUI ?? Mer 12 Mar 2014 - 14:58 | |
| - filoulefilou a écrit:
- Comment faire, puisque le dialogue ne peut pas gérer le SetView d'un objet qui appartient à une Room ?
Question tout à fait légitime. Pour contourner ce problème il existe le tableau object qui contient tous les objets de la pièce en cours au moment où tu le consultes. Tu peux donc l'utiliser si tu sais que ton dialogue en question sera toujours exécuté dans la même pièce. Pour l'utiliser, tu repères le numéro ID de l'objet qui t'intéresse (c'est dans sa grille de propriété) puis au lieu de l'appeler par son nom de script genre oTruc tu l'appelles via le tableau comme ça par exemple object[3]. - Code:
-
// Les deux lignes suivants ont exactement le même effet oFleur.SetView(VASE); object[oFleur.ID].SetView(VASE); - filoulefilou a écrit:
- Peut-être en écrivant bien tout dans le "Enter room" et en faisant une sorte d'actualisation de la Room, en mettant un changeRoom vers la même pièce à la fin du dialogue ?
Idée inventive mais mauvaise : l'objet sera teint en vert dès la première entrée dans la pièce puisque le "enter room" se déclenchera, puis tu auras un effet de transition non voulu causé par ton ChangeRoom avec tous les événements d'entrée dans une nouvelle pièce que cela implique _________________ 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 ! |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Changer objet d'une room avec un GUI ?? Mer 12 Mar 2014 - 15:24 | |
| - Code:
-
Idée inventive mais mauvaise : l'objet sera teint en vert dès la première entrée dans la pièce puisque le "enter room" se déclenchera, puis tu auras un effet de transition non voulu causé par ton ChangeRoom avec tous les événements d'entrée dans une nouvelle pièce que cela implique Mais en couplant ça justement avec une variable et un IF ? Le dialogue se passe ou bien le bouton du GUI est cliqué, ça indique qu'on a fait le choix de la couleur verte , du coup dans le code on peut ajouter la variable Vert=1; et conclure par un changeroom, vers la même pièce que celle actuellement. Et donc dans le Enter Room, écrire : if ( Vert==0) { object.setview(blblabla) } else { object.setview(blablabla)} non ? |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Changer objet d'une room avec un GUI ?? Mer 12 Mar 2014 - 17:21 | |
| Oui c'est faisable effectivement (en l'occurrence tu pourrais te contenter d'une variable booléenne). Une autre solution que j'oubliais de te mentionner, et qui est peut-être la plus élégante ici, est de recourir à la fonction CallRoomScript. - Code:
-
// Quelque part dans ton script de dialogue CallRoomScript(1);
// Dans le script de ta pièce function on_call (int valeur) { if (valeur == 1) { oFleur.SetView(VASE); } } _________________ 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 ! |
|
| |
Contenu sponsorisé
| Sujet: Re: Changer objet d'une room avec un GUI ?? | |
| |
|
| |
| Changer objet d'une room avec un GUI ?? | |
|