L'idée est pas bête du tout MarvinS, cependant un problème se pose : encore celui des pointeurs !
Comme on le sait, dans AGS toutes les variables doivent être déclarées avec leur type. En l'occurrence, celle globale que l'on veut créer sera une variable qui référera à un objet.
Dons, si la variable se nomme
objet, on voudra pouvoir faire
- Code:
-
objet.Clickable = false;
, ainsi
objet réfère bien à un objet et est donc du type
Object.
Bien sûr ce n'est pas l'objet proprement dit, elle y fait référence, et on doit donc ici utiliser un pointeur. On la délarera donc ainsi :
- Code:
-
Object *objet;
, afin de définir une variable référant à un objet.
Mais l'assembleur et ses aléas, à notre grand damne, ne se laisse pas manipuler si aisément. Lorsque dans le
Player enters Room on voudra définir cette variable comme référant à
oMonobjet (car c'est bien là ce que j'ai compris que l'on voulait faire... me trompé-je ?), eh bien il faudrait taper ceci :
- Code:
-
objet = oMonobjet;
Jusqu'ici, tout va bien, on n'a aucun message d'erreur (mais le code fait-il exactement ce à quoi nous nous attendons ?)
Arrive alors le moment de taper dans
dialog_request la commande
- Code:
-
objet.Clickable = false;
, c'est-à-dire dans le Global Script.
Aucun message toujours à l'assemblage du jeu. On le lance tout content donc, estimant avoir bien rempli son office, et arrive le moment de rendre l'objet incliquable : et paf ! "
Null pointer referenced".
Voilà le problème qui survient. Alors j'ai pas tout compris personnellement, mais il doit y avoir quelque chose comme une "
localisation" de la variable lorsqu'on lui donne sa référence dans le script de la Room. Ou bien encore le passage même du référencement se passe mal, mais l'assembleur juge la syntaxe correcte (ce qui expliquerait sa non-réaction lors de l'assemblage).
Bien gênant donc, mais je propose une solution intermédiaire en espérant qu'elle passe : utiliser la vieille syntaxe
- Code:
-
object[N].Clickable = false;
, N étant le numéro de l'objet dans la Room.
Bien sûr à partir de ce moment, il faut être sûr que le code ne sera appelé que dans la Room où se trouve l'objet en question pour éviter toute collision/tout bug ^^
En espérant avoir aidé et non démoralisé :p
Bon codage.