Dans cet très bref tutoriel, nous allons voir comment il est possible de se servir de l'event Externder pour créer facilement une jauge !
AsbtractUne jauge est quelque chose de très simple (et souvent très facile à réaliser), cependant, l'event making complique tout ça en ne permettant pas d'agir sur le zoom d'une image au moyen de variables.
Nous allons étudier quelques commandes que propose l'event Extender pour rendre ça plus facile.
Exemple 1: Une simple jaugeVoici ce que nous allons essayer de faire avec le moins de lignes possible.
Dans cet article je vais utiliser la syntaxe des variables locale. Donc pour créer une variable, dans un appel de script je n'ai qu'a faire : set(ID, valeur), et pour accéder à ma variable locale, get(ID).
Voici les images que j'aies utilisées:
Le fond de la jauge:
Et son corps:
Pour que notre jauge se rafraichisse en temps réel sur la carte, nous allons créer un évènement en processus parallèle qui aura d'abord pour rôle d'afficher les deux images.
Donc l'image 1 sera notre fond de jauge (je l'ai positionné à 15, 15), et à la même position, l'image 2 qui contient elle, la jauge.
Ensuite nous allons, juste après, créer une boucle avec un "attendre 1 frame" pour éviter les lags.
C'est dans cette boucle que nous allons modifier notre image.
La documentation de l'event extender nous indique que nous avons une commande qui nous permet de modifier le zoom d'une image: (ici
Lien vers la documentation des images)
Cette commande est :
- Code:
-
cmd(:picture_zoom, id, zoom_x, zoom_y)
Pour que notre jauge réduise bien en fonction du nombre de point de vie, il nous suffira de ne modifier que le zoom_x et de laisser le zoom_y à 100. (dans le cas d'une jauge horizontale ! Si la jauge avait été verticales ^^ il aurait fallu agir sur le zoom_y).
A ce stade ci, on remarque que contrairement à l'event Making classique, on gagne du temps, effectivement, il ne faut plus s'amuser à faire 100 conditions pour chaque %tage de la barre. Il suffit d'effectuer le calcul et de lui passer les variables en argument !
Mais l'event Extender simplifie aussi le calcul du pourcentage.
Pour celà nous pouvons utiliser la commande percent:(
Référencée ici
Cette commande prendra 1 valeur et 1 max et renverra un pourcentage. Par exemple:
cmd(:percent, 25, 50) renverra 50.
Couplé aux commandes cmd(:hp, id_heros) et cmd(:max_hp, id_heros), calculer un pourcentage de vie devient un jeu d'enfant !
Donc dans notre boucle, nous allons créer 3 variables locales, 1 pour les HP, 1 pour les HP max et une pour le pourcentage, ce qui nous donne, dans un appel de script:
(on admet que notre jauge est pour le héros 1 donc l'index de hp et max_hp est 1)
- Code:
-
set(1, cmd(:hp, 1))
set(2, cmd(:max_hp, 1))
set(3, cmd(:percent, get(1), get(2)))
On a créé trois variable locale, la première qui prend les hp du héros 1, la deuxième qui prend les hp maximums du héros 1 et la troisieme qui calcul le %, on à donc get(3) qui contient un pourcentage de point de vie du héros 1.
On peut maintenant ajouter un appel de script (ou alors le mettre dans celui ci à la suite des définition de variables) la commande picture_zoom qui va nous changer notre zoom:
- Code:
-
cmd(:picture_zoom, 2, get(3), 100)
Donc on modifie le zoom_x de l'image 2 et on laisse le zoom_y à 100%.
Ce qui nous donne:
Et voila, notre jauge est prête et fonctionnelle !
Notez qu'il aurait été possible de faire ceci :
Mais je vous avoue que je trouve la syntaxe avec des variables locales plus claire
Nous aurions pu aussi faire V[1] = cmd(:hp, 1) par exemple, mais ça aurait pu créer un effet de bord si la variable 1 avait été déjà utilisée. Par contre, si vous possédiez déjà une variable HP et HPMax qui est toujours à jours (event en processus parallèle commun par exemple), vous auriez pu faire ça:
- Code:
-
cmd(:picture_zoom, 2, cmd(:percent, V[2], V[3]), 100)
En admettant que vos deux variables aient étés la variable 2 et 3.
ConclusionVoici un exemple tout simple de l'utilisation de l'event Extender !
J'espère que ça vous aura donné un exemple de simplification envisageable avec ce système !
Si vous avez des questions, n'hésitez pas à me contacter !