Bonjour,
Voilà, je viens juste donner une petite astuce qui pourrait peut-être utile à certaines personnes. En tout cas j'en ai eu besoin pour des events, donc je le partage. C'est une astuce qui est globalement faite pour l'utilisation de l'
EventExtender de Grim.
J'explique le principe : Supposons que l'on a deux variables notées X et Y qui servent à référencer des positions sur la map, X l'abscisse et Y l'ordonnée.
Notons Hx et Hy les positions du héros sur la map.
Supposons que l'on veuille placer un événement dans la direction dans laquelle le héros regarde, à une case de distance par exemple.
On aura alors le tableau suivant :
Direction | Valeur du champ "direction" | X voulu | Y voulu |
Nord | 8 | Hx | Hy-1 |
Sud | 2 | Hx | Hy+1 |
Est | 6 | Hx+1 | Hy |
Ouest | 4 | Hx-1 | Hy |
Dans les events de base, la manière de faire est simple, on fait une condition par direction, puis on effectue le changement des variables dans la condition.
Cependant, ceci est très long, et s'il faut en plus imbriquer à l'intérieur d'autres conditions pour d'autres événements (par exemple, selon le héros, ne pas rajouter 1 dans la direction mais un nombre dépendant du héros), on ne s'en sort pas
Voici en gros ce dont on a besoin :
Cependant, grâce à l'Event Extender, il est possible d'obtenir la direction sous le format d'un nombre (étant 2,4,6 ou 8 ), et il serait donc possible de trouver une fonction qui permettrait d'obtenir la valeur attendue
Direction | z = Valeur du champ "direction" | X-Hx voulu | Y-Hy voulu |
Nord | 8 | 0 | -1 |
Sud | 2 | 0 | 1 |
Est | 6 | 1 | 0 |
Ouest | 4 | -1 | 0 |
Bon, je vais pas vous faire attendre plus longtemps, en notant z la valeur de la direction, on a pour formule :
- Code:
-
X-Hx = ((z-2)%6 - (8-z)%6)/2
Y-Hy = (6-z)/4
Et voilà donc ce qu'on obtient finalement avec l'EventExtender (cmd(:heroes_direction) permet d'obtenir la direction) :
C'est quand même bien plus simple, et c'est équivalent à ce que l'on a fait au screen 1.
Voilà, c'était juste une petite astuce pour supprimer des conditions inutiles grâce à l'EventExtender, qui, je le souligne, est
nécessaire à qui veut faire de l'eventing rapide et pratique.
Edit : Oui, j'avais juste oublié un truc, je rappelle que la division euclidienne
n'est pas une division classique, et que par conséquent il faut faire attention à ce qu'on écrit ! Par exemple, si on veut obtenir non pas un décalage d'une case mais de deux cases, alors on aura
- Code:
-
Y-Hy = ((6-z)/4)*2
Cette expression
n'est pas équivalente à
- Code:
-
Y-Hy = (6-z)/2
.
Juste pour dire de bien faire attention aux factorisations !