Qu'est ce qu'un Level Script ?
Depuis le temps que je vous le promettais ! Je m'emmerde, donc je vous sors l'incontournable dans le domaine du scripting : le level script. C'est pas facile. Mais c'est pas difficile non plus, bien qu'il vous faudra des pré-requis. On y va
Introduction
Okay, alors déjà, c'est quoi le level script et à quoi ça sert concrètement ? Eh bien, pour tout vous dire, ça nous permettra de faire déclencher un script lorsqu'on arrive sur la map, lorsqu'on parle à quelqu'un, lorsqu'on fait un évènement spécial... Les possibilités sont infinies, oui, j'ai bien dis INFINIES. C'est très pratique pour les scénarios et c'est un ingrédient très très important pour la réussite d'une hack-rom.
Pré-requis
- Savoir scripter (surtout les bases), c'est important, je ne vous expliquerai pas tout ce que j'ai évoqué dans mon tuto' sur le scripting ;
- Avoir Advance Map ;
- Avoir XSE (assigné à A-Map) ;
- Avoir les bases sous Advance Map (savoir l'utiliser quoi ; cf. mon tuto' d'initiation).
Le principe
On va passer du temps sur A-Map et sur XSE. Mais on commence par Advance Map. Chargez votre ROM, et allez sur une map qui vous intéresse. Une fois ceci fait, vous devez cliquer sur l'onglet "Header" ou "Entête".
On va s'intéresser surtout à la partie encadrée en rouge. Donc, une fois là, cliquez sur "Supprimer" jusqu'à ce qu'il n'y ait plus rien, s'il y a déjà des level script présent. Puis, sélectionnez "Ajouter". Vous venez de créer un nouveau level script.
Il faut maintenant choisir quel type de level script vous allez prendre. Déroulez donc la liste "Type de script".
Il vous faut savoir que vous choisirez le plus souvent le type "02". Pourquoi ? Eh bien, chaque type a des restrictions. Ainsi, le numéro 04 ne supporteras pas les applymovements, et autres. Le numéro 01 vous permettra lui d'agir avec la map. Le numéro 02 supporte à peu près toutes les commandes et ne se reproduit pas (sauf exception, je vous expliquerai après).
Choisissons le 02. A présent, il va vous falloir trouver un offset (2000 octets de préférences, ou plus grand), et vous l'inscrivez dans la case "Offset du script 2". Enfin, cliquez sur "Ouvrir un script".
XSE s'ouvre. Ecrivez votre script. Mais avant de compiler, il vous faudra inscrire à la fin (avant le "release" et le "end") :
setvar 0x[Valeur1] 0x1
Mais... Pourquoi ? Pour faire simple, ça mettra la variable à 1, ce qui l'empêchera de se déclencher une nouvelle fois. Avant l'exécution du script, la variable est à 0. Pour la première valeur, c'est juste une identification de votre variable : 4040, 4050, 4060, ... Il faut prendre une valeur libre. Cette valeur il vous faudra aussi l'inscrire dans la case "Identifiant". Donc, si je récapitule, j'ai ça :
On compile, puis on clique sur "Sauvegarder". Repointage obligatoire, un offset à 64 octets suffit largement. Et bien, on a fini ! Testez, une fois que vous entrez sur votre map, votre script se déclenche !
Aller plus loin
Okay, alors voilà la dernière partie. Je vais vous montrer comment remettre une variable à 0, ce qui est extrêmement simple. C'est super de savoir faire ça, car ça nous permettra par exemple de faire se déclencher un script seulement si la ligue est battue, seulement si un évènement quelconque s'est produit, si vous avez parlez à telle ou telle personne... Bref, c'est pratique.
Donc, je commence. La valeur de ma variable de tout à l'heure, 4040, va me reservir. Eh oui : cette valeur "marque" en quelque sorte votre script, donc c'est grâce à ça qu'on va pouvoir agir avec notre script depuis un autre script. La commande pour remettre une variable à zéro est simple :
setvar 0x[Valeur1] 0x0
Dans mon cas, [valeur1] sera 4040. Et voilà ! Testez une fois votre level script normalement, allez parlez à quelqu'un qui a cette commande dans son script, et vous verrez que quand vous retournerez sur la map, le level script se re-déclenchera !
A partir de là, vous pouvez faire absolument n'importe quoi. Par exemple, vous pouvez mettre la valeur de départ à 1, comme ça, le script ne se déclenche que quand la variable est remise à zéro grâce à un autre script.
Histoire de terminer en beauté, sachez que les variables ne se limitent pas à des 0 et des 1... Eh oui, vous pouvez mettre autant de chiffre que vous voulez ! Quand je vous disais que c'était puissant.
Enjoy !
L'équipe ROM-Hacking de Pokémon Trash