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

Partagez | 
 

 Changer objet d'une room avec un GUI ??

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


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: 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 !

_________________
grand sourire
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: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
kouzine
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: 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'


_________________
grand sourire


Dernière édition par kouzine le Lun 16 Mai 2011 - 21:47, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
kouzine
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: 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'


_________________
grand sourire


Dernière édition par kouzine le Lun 16 Mai 2011 - 21:47, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
kouzine
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: 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 !!!

_________________
grand sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
kouzine
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: 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 ??

_________________
grand sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
kouzine
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: 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 visible
else

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





_________________
grand sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
kouzine
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: Re: Changer objet d'une room avec un GUI ??   Mar 17 Mai 2011 - 9:39

help...

_________________
grand sourire
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: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
kouzine
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 60

Date d'inscription : 12/05/2011


MessageSujet: 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 !!!!

_________________
grand sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
filoulefilou
Cliqueur Amateur
Cliqueur Amateur


Nombre de messages : 260

Date d'inscription : 24/05/2010


MessageSujet: 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 ?
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: 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 clin d\\\\'oeil

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


Nombre de messages : 260

Date d'inscription : 24/05/2010


MessageSujet: 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 ?
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: 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 !
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: Changer objet d'une room avec un GUI ??   Aujourd'hui à 8:03

Revenir en haut Aller en bas
 
Changer objet d'une room avec un GUI ??
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Changer objet d'une room avec un GUI ??
» AGS 3 : Les changements par rapport aux versions précédentes
» Sauvegarde avec "erreur 16" depuis la dernière mise à jour
» dummy
» Ma game-room ( avec une grande partie de ma collec'!)

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: