Samaël Pyro C'est quoi la Tasse Bleue ?
Nombre de messages : 22
Age : 27
Localisation : France - Normandie
Date d'inscription : 24/11/2015
| Sujet: Objets d'inventaire qui ne veulent plus interagir avec un objet de Room Dim 1 Avr 2018 - 13:21 | |
| Bonjour tout le monde O/ Je me suis récemment remis à AGS, et ai donc décidé de terminer mon projet de rodage débuté l'an dernier (Lorsque j'ai appris les bases d'AGS.) Mais voilà j'ai un petit problème. Je bute sur un code qui en plus fonctionnait par le passée. Une fois en jeu seuls certains objet de l'inventaire peuvent interagir avec l'objet voulue de la room(Ici un feu). Cet interaction est essentiel et empêche actuellement la progression mon jeu à 50% de ce que j'ai déjà fait. Le but de cette énigme était de rassembler les différents ingrédients pour un rituel vaudou. Voici l'énoncé de l’énigme : Pour alimenter un rituel d'invocation. Il vous faut : - Des Os. (comme dans tout les rituels vaudou) (iInvItem4 = La poudre d'os = Objet 1 du rituel) - Un symbole de bonne fortune (iInvItem5 = Les/la piece(s) d'or = Objet 2 du rituel) - Et enfin une effigie de la personne que vous cherchez a joindre (iInvItem2 = Photo Elaine (est facultatif) et iInvItem7 = PhotoBob (est obligatoire) Il faudra jeter le tout dans un grand brasier afin de finaliser le rite et joindre la personne voulue. (Dans l'objet ofire)Tout fonctionne pour le mieux pour les iInvItem4(Os) et iInvItem5(Or) qui peuvent interagir avec l'objet ofire. Ce sont tout les autres items du jeu qui ne réagissent plus. Voici le code de ma room, la fonction concerné est la function ofire_UseInv() - Code:
-
// room script file function room_AfterFadeIn() { ofire.SetView(9); ofire.Animate(0, 5, eRepeat, eNoBlock, eForwards); chLeChuck.FaceLocation(450,223); }
function room_LeaveBottom() { chLeChuck.ChangeRoom(1, 45, 246); }
bool objet1Utilise = false; // True si l'objet 1 est placé dans le feu bool objet2Utilise = false; // True si l'objet 2 est placé dans le feu bool PiecesOr01 = false; // True si on a deja mis une piece d'or dans le feu
function LanceEvenementDeuxObjetsUtilises() { // Quand il ne manque plus que l'objet 3 a mettre dans le feu chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.FaceLocation(1,200); Display("Il ne manque plus qu'un seul element."); }
function ofire_UseInv() { if (player.ActiveInventory == iInvItem4) { // iInvItem4 = La poudre d'os = Objet 1 du rituel chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.LockView(10); chLeChuck.Animate(1, 7, eOnce, eBlock); chLeChuck.Animate(0, 7, eOnce, eBlock); chLeChuck.UnlockView(); chLeChuck.FaceLocation(1,200); Display("Les os"); player.LoseInventory(iInvItem4); // Supprime la Poudre d'os de l'iventaire objet1Utilise = true; if (objet2Utilise) LanceEvenementDeuxObjetsUtilises(); } else if (player.ActiveInventory == iInvItem5) { // iInvItem5 = Les/la piece(s) d'or = Objet 2 du rituel if (!PiecesOr01){ chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.LockView(10); chLeChuck.Animate(1, 7, eOnce, eBlock); chLeChuck.Animate(0, 7, eOnce, eBlock); chLeChuck.UnlockView(); chLeChuck.FaceLocation(1,200); Display("Les pieces"); PiecesOr01 = true; // Dira qu'il ne faudra pas remettre des pièces dans le feu au lieu de supprimer l'item de l'inventaire comme pour poudre d'os objet2Utilise = true; if (objet1Utilise) LanceEvenementDeuxObjetsUtilises(); } else if (player.ActiveInventory == iInvItem5) { // Quand on a deja mis une piece dans le feu if (PiecesOr01){ chLeChuck.FaceLocation(1,200); Display("Ca ne sert plus a rien d'y jeter une piece."); } else if (player.ActiveInventory == iInvItem2 && objet1Utilise && objet2Utilise) { // Lance une "cutscene" facultative en utilisant l'objet 3bis - C'est a partir d'ici que le reste du code ne veut plus marcher chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); // iInvItem2 = Photo Elaine = Objet 3bis du Rituel chLeChuck.LockView(10); // Debute animation mettre objet dans feu chLeChuck.Animate(1, 7, eOnce, eBlock); chLeChuck.Animate(0, 7, eOnce, eBlock); chLeChuck.UnlockView();// Termine animation mettre objet dans feu ofire.SetView(12); // Change le sprite Feu Normal en Feu Vaudou ofire.Animate(0, 5, eRepeat, eNoBlock, eForwards); chLeChuck.Walk(280,325, eBlock, eWalkableAreas); chLeChuck.FaceLocation(1,200); chElaine.LockView(18); // Rend le personnage visible dans la room en changeant son sprite de base(De sprite transparent a sprite personnage) chElaine.Animate(2, 7, eOnce, eBlock); chElaine.FaceLocation(1,200); chElaine.Say("Guybrush! On tourne encore en rond..."); chElaine.Say("Tu pourrais m'aider au moins... Guybrush? Tu m'ecoutes?.."); chElaine.FaceLocation(600,200); chElaine.Say("On sera jamais de retour a temps pour l'anniversaire de pere..."); chElaine.Animate(2, 7, eOnce, eBlock); chElaine.UnlockView(); Display("Hm... Interessant."); Display("Passons aux choses serieuses."); player.LoseInventory(iInvItem2); } else if (player.ActiveInventory == iInvItem7 && objet1Utilise && objet2Utilise) { // Lance la cutscene en mettant dans le feu iInvItem7 = PhotoBob = Objet 3 du Rituel chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.LockView(10); chLeChuck.Animate(1, 7, eOnce, eBlock); chLeChuck.Animate(0, 7, eOnce, eBlock); chLeChuck.UnlockView(); ofire.SetView(12); ofire.Animate(0, 5, eRepeat, eNoBlock, eForwards); chLeChuck.Walk(280,325, eBlock, eWalkableAreas); chLeChuck.FaceLocation(1,200); chBob.Walk(155,325, eNoBlock, eWalkableAreas); chBob.LockView(13); // Rend le personnage visible dans la room en changeant son sprite de base(De sprite transparent a sprite personnage) chBob.Animate(2, 7, eOnce, eBlock); // View13 = Animation d'apparition chBob.UnlockView(); chBob.LockView(15); // Passe chBob en view/sprite normal(e) player.LoseInventory(iInvItem7); // Supprime La photo de Bob player.LoseInventory(iInvItem2); // Supprime la photo d'Elaine player.AddInventory(iInvItem8); // Avoir cet item(SpawnBob) lance le dDialog0 avec Bob } else if (player.ActiveInventory == iInvItem2){ // Si on veut mettre un objet 3 (Ici PhotoElaine) avant les autres elements du rituel chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.FaceLocation(1,200); Display("Je devrais mettre les autres elements avant d'y mettre la photo."); } else if (player.ActiveInventory == iInvItem7){ // Si on veut mettre un objet 3 (Ici PhotoBob) avant les autres elements du rituel chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.FaceLocation(1,200); Display("Je devrais mettre les autres elements avant d'y mettre la photo."); } else if (player.ActiveInventory == iInvItem6){ // Si on veut mettre l'objet Livre dans le feu chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.FaceLocation(1,200); Display("Non, non, non! C'est totalement idiot de faire ca!"); } else { // Si on veut mettre un objet d'inventaire dan le feu chLeChuck.FaceLocation(1,200); Display("Y'a des tas de truc qu'on peut mettre dans ce feu mais pas celui-la."); } } } }
function ofire_Interact() { chLeChuck.Walk(250, 325, eBlock, eWalkableAreas); chLeChuck.LockView(10); chLeChuck.Animate(1, 7, eOnce, eBlock); chLeChuck.Animate(0, 7, eOnce, eBlock); chLeChuck.UnlockView(); chLeChuck.FaceLocation(1,200); Display("Outch! ca brule!"); Display("J'ai beau etre deja mort... Ca m'empeche pas d'avoir mal!"); }
function ofire_Look() // { chLeChuck.FaceLocation(1,200); Display("Ah! Le grand brasier de l'ile de Melee!"); Display("Je vais enfin avoir des reponses!"); Display("Enfin... J'espere...");
}
function hHotspot3_WalkOn() { if (BobGoodbye01){ chBob.Say("..."); // A la fin du dDialog0 LeChuck recoit l'iInvItem9 qui active la booleenne BobGoodBye01 chBob.Say("Capitaine?"); Display("Oui Bob?"); chBob.Say("Capitaine?.."); chBob.Say("Bip-Bip-Bip"); chBob.LockView(13); chBob.Animate(2, 7, eOnce, eBlock); chBob.UnlockView(); ofire.SetView(9); ofire.Animate(0, 5, eRepeat, eNoBlock, eForwards); Display("Bob!"); chLeChuck.FaceLocation(300,479); Display("La sortilege s'est entierement consume..."); Display("Il ne nous reste plus qu'a rendre visite a une vieille amie..."); Display("Elle doit avoir une boutique ici en ville."); player.LoseInventory(iInvItem9); hHotspot3.Enabled = false; } }
Donc voilà voilà, si cela se trouve c'est tout bête mais actuellement je vois où est le problème. Merci d'avance pour votre aide. |
|
Arlann Cliqueur Amateur
Nombre de messages : 286
Date d'inscription : 06/04/2016
| Sujet: Re: Objets d'inventaire qui ne veulent plus interagir avec un objet de Room Dim 1 Avr 2018 - 15:23 | |
| Salut, déjà je remarque un problème sur l'utilisation de l'item 5, car la deuxième condition "if (PiecesOr01)" ne peut pas se déclencher. Il faudrait faire : - Code:
-
if (player.ActiveInventory == iInvItem4) { } else if (player.ActiveInventory == iInvItem5) { if (!PiecesOr01){ } else if (PiecesOr01){ } } |
|
Samaël Pyro C'est quoi la Tasse Bleue ?
Nombre de messages : 22
Age : 27
Localisation : France - Normandie
Date d'inscription : 24/11/2015
| Sujet: Re: Objets d'inventaire qui ne veulent plus interagir avec un objet de Room Dim 1 Avr 2018 - 15:52 | |
| Et bien c'était bien ça le soucis Merci beaucoup Arlann! |
|