| Une room qui change radicalement de décor après une action | |
|
+3Thebroch chefgeorges paperbackwriter 7 participants |
Auteur | Message |
---|
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Une room qui change radicalement de décor après une action Lun 24 Aoû 2015 - 10:10 | |
| Bonjour à tous!
Je m'arrache les cheveux sur ça !! Voila, j'ai une room avec, disons, les murs bleus et un objet à activer. Je souhaite qu'une fois l'objet activé, l'ambiance de la room change, en gros un nouveau background, et qu'une nouvelle zone cliquable apparaisse.
1) Envoyer le player dans une nouvelle room me semble trop compliqué car je devrais recoder toutes les entrées de room.
2) La question la plus importante: dois-je utiliser le background, c'est a dire un nouveau background (un des 5 utilisables) ?
3) Comment est géré le background ? Est ce considéré comme une nouvelle room? Les hotspots du backhround de base sont ils conservés ?
Merci pour votre aide à tous car je sèche vraiment, j'essaie d'apprendre mais il y a encore trop de zones floues ! |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Une room qui change radicalement de décor après une action Lun 24 Aoû 2015 - 10:36 | |
| Oui, la solution la plus simple est d'utiliser l'un des 4 autres background possible pour ta room. J'ai déjà fait ça sur WIMD2 et ça fonctionne très bien. Je te donne une piste. Essaie d'en tirer quelque chose et si tu trouves pas, reviens ici on te guidera Wiki - setbackgroundframe |
|
| |
Thebroch Cliqueur Emérite
Nombre de messages : 603
Age : 24
Localisation : Lorient
Date d'inscription : 23/07/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Lun 24 Aoû 2015 - 10:43 | |
| Bon j'ai aucune idée de comment on gère les backgrounds mais ta solution 1 est pas trop mal , tu crée un Template de la salle de ton choix et après tu l'importe comme une autre room , tu change le fond écran (il doit etre de la même taille ) et tu ajoute la hotspots , ce qui me semble une bonne idée. (si non les anciens n' hésitez pas a me le dire ) EDIT: j'avais pas vu la reponse de chefgeorges _________________ Le café au bois ça consiste à moudre une cafetière et à la mettre dans des copeaux de bois.
|
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Lun 24 Aoû 2015 - 10:50 | |
| Ok ca marche merci pour votre aide je vais bidouiller..
Par contre juste une question le nouveau background est juste un fond ? Les hotspots du background principal seront toujours là ? |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Une room qui change radicalement de décor après une action Lun 24 Aoû 2015 - 11:29 | |
| Oui c'est ça. A la base, le background principal et les 4 autres servent à faire un fond animé simple. Mais on peut tout-à-fait les détourner de cet usage premier |
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Mar 25 Aoû 2015 - 12:10 | |
| Petite question, comment "appeler" le background dans le code ? et comment l'empêcher d'alterner entre le background principal et le secondaire ?
Je vais essayer de coder quelque chose comme ça (exemple):
Quand on utilise la pile sur le ventilo, tous les papiers de la pièce s'envolent (quel exemple!) C'est à dire quand on utilise ipile sur le hotspot ventilo, le background principal avec toutes les feuilles de papier est remplacé par le second background sans feuilles et avec quelques objets renversés.
|
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Une room qui change radicalement de décor après une action Mar 25 Aoû 2015 - 12:30 | |
| C'est pas un peu brutal comme transition ? Tu as les moyens de faire une animation ou pas ? Mais sinon, un truc du genre: - Code:
-
function oVentilo_UseInv() { player.Walk(565, 404, eBlock); if (player.ActiveInventory == iPile) { player.LoseInventory(iPile); // rajoute ici pleins d'animations et d'effets sonores spectaculaires SetBackgroundFrame(2); // c'est cette ligne qui t’intéresse } else { DefaultInvInteraction(player.ActiveInventory); } } Attention, j'ai pu laisser quelques typos... N’oublie pas de générer la fonction oVentilo_UseInv() avec dans l'éditeur ! Bon courage |
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Mar 25 Aoû 2015 - 13:32 | |
| Super c'est bien cette fonction "setbackgroundframe" qui me manquait! Par contre, j'essaie maintenant de bloquer la frame du background sur 2 une fois que l'action est passée, même quand le joueur rentre dans la pièce. J'ai essayé ça : - Code:
-
function room_AfterFadeIn() { SetBackgroundFrame(0); if (player.LoseInventory(ipile)) { SetBackgroundFrame(1); }} Mais du coup je perds ma pile dès que je rentre dans la pièce, rien de plus. Comment fixer cette frame(2) ? |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Une room qui change radicalement de décor après une action Mar 25 Aoû 2015 - 14:47 | |
| Tu y es presque Déjà je mettrai SetBackgroundFrame(0); dans function room_Load() et non dans function room_AfterFadeIn(), histoire d'éviter des petits "bugs" graphiques au chargement de ta room. - Code:
-
if (player.LoseInventory(ipile)) { SetBackgroundFrame(1); } Ce n'est pas au bon endroit. Là, à chaque entrée dans la pièce, AGS va chercher à vérifier une fois si en même temps tu perds un objet... ce qui est impossible, lol. Vois plus simple : je présume que si tu as mis une ligne if (player.LoseInventory(ipile) c'est que tu as codé un truc du style : "si je clic sur tel objet ou hotspot, je perds ipile de mon inventaire". Et bien ajoute tout simplement ta ligne SetBackgroundFrame(1); à cet endroit (Dès que tu perds ton objet d'inventaire ipile, le background change) (EDIT : j'avais pas lu la réponse précédente de Billbis, du coup je m'y perd un peu dans tes background. Tu pourrais préciser à quoi correspond SetBackgroundFrame(0); SetBackgroundFrame(1); et SetBackgroundFrame(2); ?)Par contre, dès que tu reviendras dans cette pièce, AGS va charger SetBackgroundFrame(0); du coup Il faut donc lui dire un truc du genre : - Code:
-
function room_Load() { if (player.HasInventory(ipile) == false) // vérifie si le player n'a pas l'objet ipile { SetBackgroundFrame(1); } else { SetBackgroundFrame(0); } |
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Mar 25 Aoû 2015 - 17:39 | |
| Super très astucieux !! Merci à vous pour votre aide, cela fait maintenant (et seulement) 4 jours que je suis entré dans le "monde merveilleux" du code, je n'en ai jamais fait avant et j'essaie de m'y faire petit à petit!
je n'avancerais pas aussi vite sans vous tous!!
Pour répondre à ta question, Billbis a proposé un exemple avec background principal (1) et secondaire (2), dans mon exemple c'était respectivement (0) et (1) |
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Mer 26 Aoû 2015 - 10:28 | |
| Hello! J'ai testé le code, par contre, très étrange, j'ai un "nested functions not supported" - Code:
-
function Room_Load() { if (player.HasInventory(icitron) == false) { SetBackgroundFrame(1); } else { SetBackgroundFrame(0); }} Ici ce n'est pas une pile mais un citron Est ce une bêtise de débutant ou est ce autre chose ? Car je ne vois vraiment pas d'ou ca peut venir. PS: j'ai essayé avec }} et avec } à la fin, les deux ne marchent pas.. |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: Re: Une room qui change radicalement de décor après une action Mer 26 Aoû 2015 - 10:58 | |
| As-tu essayé ça:
} }
a la fin _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Une room qui change radicalement de décor après une action Mer 26 Aoû 2015 - 11:32 | |
| Ca veux dire qu'il manque une "}" dans le script en question. Cherche bien ! Si tu ne vois pas, poste ici tout le script. Le message d’erreur doit renvoyer une ligne, non ? C'est laquelle ? Le "}" manquant est au dessus. |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Une room qui change radicalement de décor après une action Mer 26 Aoû 2015 - 13:07 | |
| Oui c'est l'oubli classique (et ça nous arrive tous !) |
|
| |
Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: Une room qui change radicalement de décor après une action Mer 26 Aoû 2015 - 13:58 | |
| "nested functions not supported" => le truc qui te colle des frissons chaque fois que ça apparaît. |
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Mer 26 Aoû 2015 - 16:15 | |
| Exactement Shai la, j'ai eu mon lot de frissons depuis hier ! Voici le code entier, maintenant j'ai un message d'erreur "erreur interne", qui me renvoie à la ligne 18 avec le Room load .. Je vais bien finir par y arriver à faire ce changement de background !! - Code:
-
// room script file
function hportedroite_AnyClick() { player.ChangeRoom(1); }
function energie_UseInv() { if (player.ActiveInventory == icitron) { player.LoseInventory(icitron); monbool2 = true; } }
function Room_Load() { if (player.HasInventory(icitron) == false) { SetBackgroundFrame(1); } else { SetBackgroundFrame(0); } } |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Une room qui change radicalement de décor après une action Mer 26 Aoû 2015 - 17:17 | |
| Il semble que tes accolades soient bien ouvertes et refermées maintenant, donc plus de souci de ce côté là (tout du moins dans le code que tu as collé). L'erreur pourrait éventuellement provenir d'une mauvaise correspondance entre le nom de la fonction associée à l'événement d'entrée dans la pièce dans la grille que tu vois lorsque tu cliques sur dans l'éditeur de pièce, et celui que tu as effectivement dans ton code. Est-ce que, par hasard, le nom dans la grille ne serait pas room_Load, avec un 'r' minuscule ? PS : pour une meilleure lisibilité, essaie d'indenter les lignes systématiquement dans ton code. Ça t'aidera en particulier s'il te manque des }, comme ça : - Code:
-
// room script file
function hportedroite_AnyClick() { player.ChangeRoom(1); }
function energie_UseInv() { if (player.ActiveInventory == icitron) { player.LoseInventory(icitron); monbool2 = true; } }
function Room_Load() { if (player.HasInventory(icitron) == false) { SetBackgroundFrame(1); } else { SetBackgroundFrame(0); } } _________________ 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 ! |
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Jeu 27 Aoû 2015 - 0:02 | |
| Merci à toi Kitai !! Il s'agissait en effet du R majuscule à mettre en minuscule!! Je l'ai changé plusieurs fois quand le code ne fonctionnait pas, ne sachant pas d'ou cela venait !! Pour en revenir au background qui change: J'ai réussi à obtenir ce que je voulais, c'est à dire un background (0) fixe, qui se change de façon définitive en background (1) après une action spécifique. Et ce même apres un retour dans la room. J'ai du utiliser une variable booleenne, mais je pense qu'il y a bien plus simple. Pourtant, sans cela , j'avais: -Soit le background(0) se remettai lors d'un quitter/retour room -Soit le background (1) n'apparaissait pas apres l'interaction -Soit le background (1) était déjà là avant l'interaction ! voici mon code, surement améliorable ! - Code:
-
function energie_UseInv() { if (player.ActiveInventory == icitron) { player.LoseInventory(icitron); SetBackgroundFrame(1); monbool2 = true; } }
function room_Load() { if (monbool2) { SetBackgroundFrame(1); } else { SetBackgroundFrame(0); } }
Merci beaucoup pour votre aide, n'hésitez à me dire s'il est améliorable ! |
|
| |
paperbackwriter Adepte de la Grande Tasse Bleue
Nombre de messages : 51
Date d'inscription : 19/08/2015
| Sujet: Re: Une room qui change radicalement de décor après une action Jeu 27 Aoû 2015 - 11:55 | |
| Après plusieurs tests, je bloque sur la dernière partie du code. L'apparition du background (1) s'accompagne de l'apparition d'une feuille, clickable, qui sera zoomée par le joueur pour la lire . J'ai donc fait une room supplémentaire pour cette feuille en gros plan. Depuis quelques jours je me demande pourquoi utiliser des hotspots pour des portes etc, car je n'arrivais pas à les rendre non-clickable. J'ai trouvé cela tout à l'heure , la fonction "enabled" pour désactiver un hotspot. Pourtant, cela ne fonctionne pas dans mon code. Voici le déroulé de l'action (un peu farfelu les objets!) : -Le joueur utilise un citron (objet ovoide) sur une sphère d'énergie. -Quand il passe à l'action, le citron disparait de son inventaire, le background change pour un citron en suspension dans la sphère d'anergie. -Une feuille apparait au sol (mon hotspot jusqu'alors inactif) en cliquant dessus , on la regarde en détail. LE CODE : - Code:
-
function energie_UseInv() { if (player.ActiveInventory == icitron) { player.LoseInventory(icitron); SetBackgroundFrame(1); monbool2 = true; } }
function room_Load() { hfeuille.Enabled = false; if (monbool2) { SetBackgroundFrame(1); hfeuille.Enabled = true; } else { SetBackgroundFrame(0); } }
function hfeuille_AnyClick() { player.ChangeRoom(6); } Mon problème est que, lorsque l'on passe au background (1) , le hotspot de la feuille n'est toujours pas clickable, alors que je l'ai mis sur "true". Et pourtant, si j'inverse les valeurs, cest a dire si je demande à AGS de rendre clickable le Hotspot avant l'action et inactif apres, cela fonctionne !! PS: j'utilise un hotspot pour la feuille car : 1- elle apparait en meme temps que le background (1) 2-j'ai essayé avec un objet, et celui ci n'était clickable qu'une seule fois. C'est pour cela que je m'intéresse aux hotpots activé/ désactivé, car ils permettent de rester clickable ou non tout au long du jeu. |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Une room qui change radicalement de décor après une action Jeu 27 Aoû 2015 - 16:59 | |
| Si j'ai bien suivi, tu mets simplement ton hfeuille.Enabled = true; dans ton premier code : - Code:
-
function energie_UseInv() { if (player.ActiveInventory == icitron) { player.LoseInventory(icitron); SetBackgroundFrame(1); hfeuille.Enabled = true; // ici par exemple monbool2 = true; } } Un truc que j'ai eu du mal à imprimer au début sur AGS c'est que les function sont vérifiées une fois par AGS. Par exemple, AGS vérifie une fois, au pré-chargement, ce qu'il y a dans function_room_Load() (c'est pour ça qu'il y a aussi des Repeatedly execute qui vérifie à chaque cycle une action déterminée) |
|
| |
Contenu sponsorisé
| Sujet: Re: Une room qui change radicalement de décor après une action | |
| |
|
| |
| Une room qui change radicalement de décor après une action | |
|