Salut,
Alors je ne suis pas certain de comprendre ce que tu veux faire, mais je peux t'expliquer ce que fait le code que tu as collé.
Quand l'exécution arrive à ligne
- Code:
-
if (cNico.ChangeRoom(4) && cNico.LoseInventory(iDevis)){
, le jeu va essayer de vérifier que
cNico.ChangeRoom(4) et
cNico.LoseInventory(iDevis) valent
true. Or
ChangeRoom et
LoseInventory sont des commandes, c'est-à-dire qu'elles
accomplissent des actions. En l'occurrence,
cNico.ChangeRoom(4) a pour
effet de transporter cNico dans la pièce numéro 4 et
cNico.LoseInventory(iDevis) a pour
effet de retirer l'objet iDevis à cNico. Autrement dit, pour vérifier si la condition de ton
if est remplie, le jeu va déplacer
cNico dans la pièce 4 puis lui retirer l'objet
iDevis (s'il l'avait auparavant). Je ne connais pas la valeur que chacune de ces commandes retourne après avoir été exécutée, mais je ne suis pas sûr que ce soit
true. Et je suis quasiment certain que de toute façon tu n'avais pas l'intention de faire subir toutes ces mésaventures à
cNico avec ton
if.
Peut-être que ce que tu voulais plutôt faire, c'est vérifier que
cNico a les propriétés d'être actuellement dans la pièce numéro 4 et de ne pas être en possession de l'objet
iDevis. Et pour vérifier ces propriétés, eh bien il faut vérifier... des propriétés ! La première des propriétés que tu veux vérifier (je suppose) c'est le numéro de la pièce dans laquelle se trouve le personnage, cette propriété s'appelle astucieusement
Room. L'autre propriété c'est celle de ne pas avoir l'objet
iDevis. Là les choses sont un peu plus complexes car c'est en fait une négation de propriété que tu cherches à vérifier : la négation de la propriété d'avoir l'objet
iDevis. Seulement AGS ne propose pas d'emblée de propriété
simple "possède l'objet
iDevis" pour la bonne raison que chaque projet peut définir des objets différents. Il va donc falloir passer par une fonction qui peut exprimer la relation d'un personnage avec n'importe quel objet, et cette fonction c'est
HasInventory. En fin de compte, ton
if ressemblera à ça :
- Code:
-
if (cNico.Room == 4 && cNico.HasInventory(iDevis) == false){
Ensuite tout me semble aller plutôt bien dans ton code, jusqu'à cette ligne :
cNico.LockViewAligned(4, 0, eAlignCentre);. Est-ce que tu cherches simplement à redonner une animation normale à ton personnage, c'est-à-dire celle qu'il avait avant l'autre
LockViewAligned 2 lignes plus haut ? Si c'est le cas, utilise plutôt la commande
UnlockView, qui est justement faite pour ça et qui est de toute façon attendue après la commande
LockView(Aligned).
Je ne suis pas certain de comprendre l'intérêt de la présence de cette ligne :
cNico.ChangeRoom(4, 1400, 1050);. Est-ce que tu ne vérifiais pas, juste avant, que
cNico se trouve dans la pièce 4 ? S'il se trouve déjà dans la pièce 4, pourquoi essayer de l'y transporter à nouveau ?
De plus, tu quittes le jeu juste après (
QuitGame(0);) donc le joueur n'aura pas le temps de remarquer ce changement de pièce.
Dernier commentaire, ton code semble se trouver dans la fonction
room_Load. Si c'est le cas, quel besoin as-tu de vérifier la pièce dans laquelle se trouve
cNico ? Ce personne n'est-il pas le personnage joueur ?
Voilà, j'espère t'avoir éclairé sur le fonctionnement du code que tu as rapporté.
PS : "o
u plusieurs"