Il faut passer par la fonction
repeatedly_execute déjà présente dans ton
global_script par défaut et qui permet de vérifier des conditions "en permanence". En effet, ce que tu veux faire c'est que si le curseur ne se trouve pas dans une zone prédéfinie, alors l'inventaire n'est pas affiché. Il faut donc vérifier en permanence si le curseur est à cette position. Mais attention : il faut que le bouton pour l'afficher se trouve dans cette même zone, sinon l'inventaire disparaitra sitôt apparu.
Pour mon exemple, je vais considérer que tu utilise le GUI du template BASS, qui est situé en haut de l'écran et mesure 42 pixels de hauteur. Je vais considérer aussi que le bouton est situé dans cette zone et ne contient aucun pixel plus bas que ça (sinon on va avoir le même problème).
On pourrait vérifier si le curseur survole le GUI mais, plus simple, on peut simplement vérifier s'il est ou non à la hauteur qui nous intéresse. Et si ce n'est pas le cas, alors on demande à AGS de masquer l'inventaire et d'afficher le bouton.
Ce qui va donner (à copier dans ta fonction
repeatedly_execute, donc) :
- Code:
-
if (mouse.y > 41){ //Si le curseur se trouve sous la coordonnée Y 41 (0 à 41 étant les pixels occupés par l'inventaire)
gInventoryBar.Visible = false;
gMonBouton.Visible = true; //à remplacer par le vrai nom de GUI du bouton :-p
}
Mais attention ! En faisant ça, si tu modifies la hauteur de la fenêtre d'inventaire, il faudra changer la coordonnée à prendre en compte. Pour éviter ça, tu peux à la place calquer la valeur sur la hauteur du GUI (en considérant qu'il restera en haut de l'écran, si tu le passe en bas, ça ne marchera plus) :
- Code:
-
if (mouse.y > gInventoryBar.Height - 1){ //Il faut penser à retirer 1 à la hauteur du GUI, étant donné que le premier pixel est à la coordonnée 0.
gInventoryBar.Visible = false;
gMonBouton.Visible = true;
}
Ainsi si tu modifie le hauteur de la fenêtre d'inventaire, alors la coordonnée à prendre en compte s'adaptera automatiquement.
- Ravaillac a écrit:
- Soit dit en passant très sympa le coup du manuel en français !... Mais des exemples de trucs à faire les plus fréquents auraient été bienvenus... Car là c'est extrêmement frustrant il y a plein d'infos supers et tout... Mais avec des exemples de fonctions complètes ça faciliterait la tâche à bon nombre de gens qui ne sont pas habitués au code.
L'aide en ligne n'est autre qu'une traduction de la version anglophone du manuel. Il a moins comme fonction de proposer des tutos poussés que de lister les différents éléments qu'on peut utiliser dans AGS. C'est en tout cas comme ça que je le vois, personnellement.