| [résolu] Aide pour créer un petit puzzle par substitution d'images. | |
|
|
|
Auteur | Message |
---|
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Jeu 20 Nov 2014 - 21:09 | |
| Remplace la ligne par - Code:
-
if (activeItem) player.LoseInventory(activeItem); |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Jeu 20 Nov 2014 - 22:08 | |
| Le jeu se lance, mais dès que je clique, mon curseur disparait et rien d'autre |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Jeu 20 Nov 2014 - 22:20 | |
| EDIT : as tu essayé d'inverser les 0 et les 1 dans le SetGameOption du room_load ? Sinon, essayes en rajoutant un mouse.EnableMode(eModeUseinv); - Code:
-
function echangeObjets() { int x = mouse.x; int y = mouse.y; if (GetLocationType(x, y) != eLocationObject) return; // J'ai un peu changé le code ici, étant donné que Object* objetsurvole = Object.GetAtScreenXY(x, y); // la fonction n'a d'effet que si on clique sur un objet int tempSprite; InventoryItem *activeItem = player.ActiveInventory; if (activeItem != null) { tempSprite = activeItem.CursorGraphic; } else { tempSprite = S_VIDE; //Remplace par le numéro du spite transparent } player.ActiveInventory = null; player.LoseInventory(activeItem); if (objetsurvole.Graphic == S_UN) { player.AddInventory(iUn); player.ActiveInventory = iUn; } else if (objetsurvole.Graphic == S_DEUX) { player.AddInventory(iDeux); // Comme ce code. player.ActiveInventory = iDeux; } else if (objetsurvole.Graphic == S_TROIS) { player.AddInventory(iTrois); player.ActiveInventory = iTrois; } // si object.Graphic == S_VIDE, on ne fait rien mouse.EnableMode(eModeUseinv); // <- ici je pense objetsurvole.Graphic = tempSprite; } function verifieSiSucces() { if (oUn.Grapphic == iUn && oDeux.Graphic == iDeux && oTrois.Graphic == iTrois) { // condition de victoire, doit être différent de la disposition d'origine, je suppose aMonJingleDeVictoire.Play(eBlock, eOnce); monBoolGlobalDePuzzleReussit = true; player.ChangeRoom(WHATEVER); } } Si tu ne t'en sors pas, j’essaierai de le faire en vrai ce week end dans un template de room. Tu utilise quel template de jeu déjà ? |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Jeu 20 Nov 2014 - 22:27 | |
| - chefgeorges a écrit:
- Le jeu se lance, mais dès que je clique, mon curseur disparait et rien d'autre
Dès que tu cliques n'importe où ou bien dès que tu cliques sur un des objets ? _________________ 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 ! |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Ven 21 Nov 2014 - 17:40 | |
| - Kitai a écrit:
- chefgeorges a écrit:
- Le jeu se lance, mais dès que je clique, mon curseur disparait et rien d'autre
Dès que tu cliques n'importe où ou bien dès que tu cliques sur un des objets ? Dès que je cliques sur un objet avec le curseur Interagir. |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Sam 22 Nov 2014 - 2:13 | |
| As-tu bien associé des images à tes objets d'inventaire iUn, iDeux et iTrois ? _________________ 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 ! |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Sam 22 Nov 2014 - 15:54 | |
| Non... Du coup j'ai mis une "image curseur" pour chaque objet Du coup : je clique sur un objet, le curseur avec le sprite de l'objet apparait, le sprite de l'objet se "vide" et... je peux plus rien faire d'autre En fait je clique, je clique... plus rien ne se passe. Pas moyen de "déposer" l'image sur un autre objet. |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Sam 22 Nov 2014 - 16:47 | |
| Étrange... peut être en utilisant l'évènement _UseInv au lieu de _AnyClick ? En tout cas, on avance ! On y est presque, courage ! |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Sam 22 Nov 2014 - 22:28 | |
| Ouais, sinon y aller un peu plus brutalement et tout gérer directement dans la fonction on_click. _________________ 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 ! |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Jeu 27 Nov 2014 - 14:23 | |
| VIVANT ! IL EST VIVAAANT !! lol Oui, ça fonctionne... bon il y a un p'ti "mais" quant même, mais le script est OK En fait je m'évertuais à vouloir mettre le fonction sur le mode Utiliser. J'ai tout effacé est testé avec le mode Tout Clic, et là miracle Le petit "mais" vient du fait que ça m'embête justement que quelque soit le mode de la souris, le script se lance. Car du coup je peux pas prévoir de dialogues sur les objets et en plus ça risque de déstabiliser le joueur Mais bon ça fonctionne |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Jeu 27 Nov 2014 - 18:02 | |
| Dans ce cas, un petit - Code:
-
if (mouse.Mode == eModeUseInv || mouse.Mode == eModeInteract) judicieusement bien placé dans la fonction plus haut, ça devrai faire l'affaire. |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Jeu 27 Nov 2014 - 18:17 | |
| Ah mais oui Testé et approuvé ça fonctionne parfaitement Merci beaucoup, j'ai pas mal appris (même si j'avoue ne pas encore tout maitriser du code de cette fonction ). Je vous laisserai découvrir ce puzzle et surtout ce qu'il déclenchera dans l'Ep.II |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Sam 27 Déc 2014 - 13:31 | |
| En pleine phase de test, j'ai découvert un petit bug avec ce script qui malheureusement bloque complètement la progression dans le jeu Je m'explique... J'ai choisi de faire en sorte de sélectionner les outils en cliquant aussi avec le clic droit (rotation des outils - SelectNextMode()). Quand je clique sur un objet de l'inventaire, mais que je ne l'utilise pas, celui-ci reste dans la "roue" des outils (je clic-droit et après les outils je le vois réapparaitre). Ce n'était jusqu'ici pas très génant. Sauf que si je clique sur un objet de l'inventaire, puis avec l'outil Utiliser sur un des cadres de ce script, l'objet de l'inventaire se colle sur le cadre et disparait même de mon inventaire ! - Code:
-
if (IsGamePaused() == 1) // Game is paused, so do nothing (ie. don't allow mouse click) { } else if (button == eMouseLeft) { ProcessClick(mouse.x,mouse.y, mouse.Mode); if (mouse.Mode == eModeWalkto) { player.Walk(mouse.x+GetViewportX(), player.y, eNoBlock, eWalkableAreas); } if ((player.Room == 4) || (player.Room == 38)) { player.Walk(mouse.x+GetViewportX(), mouse.y, eNoBlock, eWalkableAreas); } } else // right-click, so cycle cursor { mouse.SelectNextMode(); } |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Dim 28 Déc 2014 - 13:37 | |
| Pour pallier au problème, si le mini-jeu se passe dans une pièce réservée exclusivement à ça, on peut enrichir les fonctions d'entrée et sortie de pièce que Billbis propose avec une mise en mémoire et une restauration de l'objet d'inventaire actif : - Code:
-
InventoryItem* Inventaire_bak; function room_Load() { SetGameOption (FIXEDINVCURSOR , 0) // c'est peut-être 1, l'aide est pas super claire Inventaire_bak = player.ActiveInventory; }
function room_Leave() { SetGameOption (FIXEDINVCURSOR , 1) // c'est peut-être 0, l'aide est pas super claire player.ActiveInventory = Inventaire_bak; } _________________ 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 ! |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Dim 28 Déc 2014 - 19:32 | |
| Non, malheureusement ça ne fonctionne pas. Même en inversant 0 et 1. (Et j'ai corrigé FIXEINVCURSOR en OPT_FIXEINVCURSOR). |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Dim 28 Déc 2014 - 22:11 | |
| Excuse-moi, j'ai oublié un petit player.ActiveInventory = null; : - Code:
-
InventoryItem* Inventaire_bak; function room_Load() { SetGameOption (OPT_FIXEDINVCURSOR , 0) // c'est peut-être 1, l'aide est pas super claire Inventaire_bak = player.ActiveInventory; player.ActiveInventory = null; }
function room_Leave() { SetGameOption (OPT_FIXEDINVCURSOR , 1) // c'est peut-être 0, l'aide est pas super claire player.ActiveInventory = Inventaire_bak; } Normalement ce code devrait s'assurer que tu n'as aucun objet d'inventaire "en main" au début du puzzle, et donc prévenir la perte de cet objet lorsque tu cliques sur une case. En effet le code qu'a donné Billbis dans la page précédente a pour effet lors d'un clic sur une case de supprimer de l'inventaire du joueur l'objet qu'il tient dans la main à ce moment-là (qui devrait normalement toujours correspondre à une des cases, justement). _________________ 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 ! |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Lun 29 Déc 2014 - 10:07 | |
| Alors, oui ça marche, mais dans un seul cas : si j'avais déjà un objet en main avant d'entrer dans la pièce. Mais si, une fois dans la pièce, je prends en main un objet, puis clique avec l'outil Utiliser sur un cadre, le résultat est le même. Idem si je clique avec l'objet d'inventaire sur un cadre. Est-ce que la solution ne serait pas aussi d'ajouter un if() au tout début de function echangeObjets() du type : si objet sélectionné différent de objetsurvole.Graphic = (les Id des cadres), alors Inventaire_bak = player.ActiveInventory; player.ActiveInventory = null; ? EDIT : En testant le jeu, je pense que cette façon de faire va me causer d'autres problèmes. En effet, après avoir changé de personnage et être passé dans cette pièce, en cliquant sur un objet de l'inventaire celui-ci a pris l’apparence d'un autre objet appartenant à un autre personnage mais c'était bien le bon objet (car celui-ci a fonctionné). Je continue les tests pour vérifier ça... EDIT²: en fait tout mes objets prennent l'apparence du même objet une fois activé. J'essaie d'inversé le 0 et le 1 pour voir... EDIT 3: Idem ! Je crois que je vais abandonner SetGameOption, ça créé bien trop de soucis J'ai la solution de bloquer l'inventaire, en l'expliquant "rigolotement" histoire de justifier la chose |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu] Aide pour créer un petit puzzle par substitution d'images. Mar 30 Déc 2014 - 12:37 | |
| En fait je ne comprends pas trop pourquoi le joueur devrait encore avoir accès à son inventaire durant cette phase de puzzle, mais si c'est le cas j'imagine que la solution de passer par les objets d'inventaire pour gérer le tout n'est pas idéal. Une solution alternative serait de définir un mode de curseur spécial pour la souris, et d'utiliser ChangeModeGraphic pour lui donner l'apparence de l'objet sélectionné dans le puzzle. Si je reprends l'idée du code de Billbis, ça donnerait quelque chose comme ça : - Code:
-
function echangeObjets() {
if (mouse.Mode != eModeSpecial) return; // On vérifie que le mode de la souris est bien le mode dédié (remplace "Special" par ce que tu auras défini)
int x = mouse.x; int y = mouse.y; if (GetLocationType(x, y) == eLocationObject) { Object* objetsurvole = Object.GetAtScreenXY(x, y); }
int tempSprite = mouse.GetModeGraphic(eModeSpecial);
if (objetsurvole.Graphic == S_UN) mouse.ChangeModeGraphic(eModeSpecial, S_UN); } else if (objetsurvole.Graphic == S_DEUX) mouse.ChangeModeGraphic(eModeSpecial, S_DEUX); else if (objetsurvole.Graphic == S_TROIS) mouse.ChangeModeGraphic(eModeSpecial, S_TROIS); objetsurvole.Graphic = tempSprite; }
function verifieSiSucces() { if (oUn.Graphic == S_DEUX && oDeux.Graphic == S_TROIS && oTrois.Graphic == S_UN) { // condition de victoire, doit être différent de la disposition d'origine, je suppose aMonJingleDeVictoire.Play(eBlock, eOnce); monBoolGlobalDePuzzleReussit = true; player.ChangeRoom(WHATEVER); } } On s'assure à l'entrée de la pièce de rendre disponible le mode spécial, et que son graphic est "vide" : - Code:
-
function room_Load() { mouse.ChangeModeGraphic(eModeSpecial, S_VIDE); mouse.EnableMode(eModeSpecial); mouse.Mode = eModeSpecial; }
function room_Leave() { mouse.DisableMode(eModeSpecial); } Et la fonction de clic qui va bien : - Code:
-
function oMesObjets_AnyClick() { echangeObjets(); verifieSiSucces(); } _________________ 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: [résolu] Aide pour créer un petit puzzle par substitution d'images. | |
| |
|
| |
| [résolu] Aide pour créer un petit puzzle par substitution d'images. | |
|