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

Partagez | 
 

 Objets d'inventaire qui ne veulent plus interagir avec un objet de Room

Aller en bas 
AuteurMessage
Samaël Pyro
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar

Nombre de messages : 22

Age : 20

Localisation : France - Normandie

Date d'inscription : 24/11/2015


MessageSujet: 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. confus
Merci d'avance pour votre aide. grand sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://samaelpyro.deviantart.com/
Arlann
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 211

Date d'inscription : 06/04/2016


MessageSujet: 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){
    }
}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Samaël Pyro
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar

Nombre de messages : 22

Age : 20

Localisation : France - Normandie

Date d'inscription : 24/11/2015


MessageSujet: 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 grand sourire
Merci beaucoup Arlann!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://samaelpyro.deviantart.com/
Contenu sponsorisé




MessageSujet: Re: Objets d'inventaire qui ne veulent plus interagir avec un objet de Room   

Revenir en haut Aller en bas
 
Objets d'inventaire qui ne veulent plus interagir avec un objet de Room
Revenir en haut 
Page 1 sur 1

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: