Scripter avec XSE
Bienvenue dans ce tuto que vous attendiez tous... ou pas.
Ce tuto est un dès plus important et le plus important du moment, donc soyez attentifs.
Bon, pour le moment, il n'y a que le sommaire, je commencerai vraiment le tuto demain.
Passez une bonne lecture =)
Sommaire :Partie 0 : Introduction : A propos de XSE et des scriptsPartie 1-1 : Message : Etude des composants d'un script de message simplePartie intermédiaire 1 : Utiliser Free Space Finder pour trouver un offset librePartie Intermédiaire 2 : Compiler puis inserer un script dans la romPartie intermédiaire 3 : Utiliser le "TextAdjuster"Partie 1-2 : Message : Commandes en "\"Partie 1-3 : Message : Messages avancésPartie intermédiaire 4 : Les "flags"Partie 2-1 : Les "Give" : GivepokémonPartie 2-2 : Les "Give" : GiveitemPartie 2-3 : Les "Give" : GiveeggPartie 3 : WarpsPartie 4 : PokemartPartie 5 : CheckgenderPartie 6 : ApplymovementsPartie 7 : CountPokémonPartie 8 : SpecialPartie 9 : WildbattlePartie 10 : TrainerBattlePartie 11 : WeatherCommandsPartie 12-1 : Hide and Show Sprite : HideSpritePartie 12-2 : Hide and Show Sprite : ShowSpritePartie 13 : MoveSpritePartie 14 : MoneyCommandsPartie 15 : CoinCommandsPartie 16 : PokepicPartie 17 : DoorCommandsVous êtes impressionnés par le nombre de parties? C'est normal ^^ Je ne connais que les parties 1 à 9 personnellement, mais j'aurai le temps d'apprendre les autres avant d'y arriver dans le tutoriel, si possible.
En effet, la partie 11 puis 14 à 17 ne sont peut-être réalisables qu'avec un autre logiciel nommé PokeScript, mais je pense que c'est possible avec XSE, même si je n'en ai pas entendu parlé dans des tutoriels.
Sinon, le sommaire ne sera pas comme ça définitivement : je peux déplacer des parties et en ajouter (il en manque de 5 à 10, ou peut-être plus ^^)
EDIT : Je suis aller vérifier, on peut faire la partie 11 avec XSE
Bon, commençons les choses sérieuses =)
Partie 0 : Introduction : A propos de XSE et des scriptsD'abord, pour suivre ce tutoriel, vous aurez besoin de VBA, de XSE et d'une rom pokémon GBA. Tout est disponible dans la section téléchargements.
XSE est un logiciel de scripting développé par HackMew et qui est sortit le 1er Juin de cette année. Il permet de créer des scripts comme un simple éditeurs de texte puis de les compiler.
Dans les roms Pokémon , les scripts permettent de faire un nombre très important de chose : les combats contre des dresseurs, les dialogues, donner un pokémon, etc...
Maintenant, l'interface de XSE :
- Spoiler:
Voila à quoi ressemble XSE. Maintenant, passons à la description de toutes les fonctions.
- Spoiler:
1 : Permet d'ouvrur un nouvel "onglet" pour avoir plusieurs scripts ouverts en même-temps.
2 : Permet d'ouvrir un script déjà enregistré auparavant. (".rbc")
3 : Permet d'enregister le script. (Enregistrer en France)
4 : Permet d'enregistrer le script. (Enregistrer Sous en France)
5 : Permet de fermer l'"onglet" actuel
6 : Permet de voir les scripts les plus récents et de les ouvrir
7 : Permet de fermer XSE
Je finirai cette partie après.
Partie 1-1 : Message : Etude des composants d'un script de message simpleBon, c'est l'heure de commencer les choses sérieuses. Nous allons étudier un script de message simple, pour connaitre les bases du scripting.
En scripting, ce que l'on appelle un message simple, ce sont les messages servants à parler à des personnages. A la fin de cette partie, vous saurez faire parler un personnage avec un message simple. Après, il y a d'autre types de messages : les messages oui/non et les messages de pancartes.
Aller, commençons. Voici un script de message simple:
- Code:
-
#Dynamic 0xXXXXXX
#org @start
lock
faceplayer
message @simplemessage
boxset 0x6
release
end
#org @simplemessage
=Ceci est un message simple.
Maintenant, décortiquons ce script en commençant par le début.
#Dynamic 0xXXXXXX : A mettre au début de chaque script obligatoirement. Vous devrez, pour chaque script, remplacer le "XXXXXX" par un offset libre, c'est à dire un endroit libre, de la rom. Pour trouver un offset libre, reportez vous à la Partie intermédiaire 1 : "Utiliser Free Space Finder pour trouver un offset libre"
Cette ligne sert à XSE pour savoir où il doit mettre le script dans la rom.
#org @start : Autre commande très importante. Vous devrez obligatoirement mettre "#org @", mais le mot "start" n'est pas obligatoire. Mais attention, vous ne pouvez pas marquer n'importe quel mot, cela dépendra du type de script, dans le cas des mesages simples, le "@start" est obligatoire.
lock : Cette commande sert à bloquer le personnage à qui l'on parle. Si on ne met pas cette commande, le texte s'affiche mais le personnage continue à se déplacer.
Bien sur, cette commande n'est pas obligatoire dans tout les scripts.
faceplayer : Cette commande sert à tourner le personnage à qui l'on parle dans la direction du sprite du joueur. Car même si la commande "lock" permet de bloquer le personnage à qui l'on parle, il ne nous regarde pas forcément, il regarde dans la direction dans laquelle il regardait déjà juste avant qu'on lui parle.
Comme "lock", cette commande n'est pas obligatoire.
message @simplemessage : Cette commande sert à faire parler le personnage. Dans ce script ci, c'est celui à qui l'on parle, mais dans d'autres, ça peut très bien être sans parler au personnage, comme un évenement à l'entrée sur une map. Vous pouvez mettre ce que vous voulez après le @, du moment que ce qui est marqué après n'est composé que de lettres simples, c'est à dire pas de chiffres, pas de tirets, pas d'accents, pas de crochet ni de parenthèse, et aucun autre caractère. Par contre, il ne faut jamais mettre deux fois la même chose après un @ dans un script.
boxset 0x6 : Commande importante pour la boite de dialogue, a mettre obligatoirement après "message @" dans un script de message simple. Sachez qu'il existe plusieurs boxsets, comme par exemple "boxset 0x5" pour afficher un oui/non, mais nous reviendrons dessus après.
release : Commande à mettre à la fin chaque script, juste avant le "end". Sert à terminer le script.
end : A mettre obligatoirement à la fin de chaque script, sert à terminer le script.
#org @simplemessage
=Ceci est un message simple. : Bon, c'est un peu plus compliqué. Vous n'êtes pas obligés de mettre ces commande (la dernière n'en étant pas vraiment une) à la fin, vous auriez pu mettre ça juste après "message @simplemessage", mais je préfère faire comme ça, et je vous conseille de faire comme ça.
Bon, explications. On va dire que ceci est une partie secondaire du script, la partie principale étant le gros bloc. Et au début de chaque partie, il faut remettre le "#org @". Par contre, cette fait, vous n'êtes pas obligés de mettre "@start", mais vous ne pouvez pas mettre n'importe quoi non plus. Pour que le jeu comprenne qu'il doit mettre cette partie juste après "message @simplemessage", vous devez remettre la même chose que ce qui était marqué après "message".
Et à la ligne en dessous, mettez le signe "=" puis votre message. Attention, votre message doit être collé au "=", ne mettez pas d'espace, sinon votre message débutera par un espace. Ok, c'est pas la mort, mais ça fait tout de même moins joli.
Voila, vous pouvez maintenant faire des messages simples, mais n'oubliez pas de sauvegarder votre script sinon vous ne pourrez pas le mettre dans votre rom.
Partie intermédiaire 1 : Utiliser Free Space Finder pour trouver un offset librePour cette partie, vous aurez besoin de Free Space Finder, disponible dans la section téléchargement.
Comme je l'ai dit dans la partie précédente, vous avez besoin de remplacer le "XXXXXX" de "0xXXXXXX" par un offset libre. Pour cela, nous allons utiliser Free Space Finder. Ne vous inquiétez pas, ce logiciel est très facile d'utilisation.
Lancez le logiciel, vous aurez ça:
- Spoiler:
Faites Fichier ==> Charger ROM... et sélectionnez votre rom.
Vous aurez ça (sans les cadres rouges):
- Spoiler:
Maintenant, ne modifiez aucun paramètre et, comme montré par les cadres rouges, cliquez sur rechercher (une chaine de 6 chiffres et lettres majuscules s'affiche normalement) puis sur copier.
Il ne vous reste plus qu'à faire clique droit puis coller après le "#Dynamic 0x" de votre script. (En enlevant les XXXXXX bien sûr ^^)
Partie Intermédiaire 2 : Compiler puis inserer un script dans la romBon, vous avez votre script sauvegardé à un endroit sur votre ordinateur, vous avez remplacé les "X" de l'offset, mais il vous reste à mettre votre script dans votre rom.
Ouvrez XSE, et faites tools ==> Batch Compiler ou Ctrl+B, voila ce qui apparait :
Cliquez sur les trois points et choisissez votre Rom. Maintenant, cliquez sur "Browse..." et choisissez le dossier où est enregistrer le script. Là, les scripts (".rbc" et ".rbh") de ce dossier apparaissent dans la case blanche avec un carré devant :
Cliquez sur le carré du script que vous voulez compiler (il n'y a qu'un script pour moi), ne modifiez pas les options et cliquez sur "compile". Une nouvelle fenêtre s'ouvre :
Cliquez sur Copy sans rien toucher puis ouvrez Advance Map et chargez votre rom.
Mon script est un script de message, mais le votre peut être d'un type différent, mais dans tout les cas, la procédure reste assez semblable.
Ouvrez le map où vous voulez mettre le script, j'ai choisi Jadielle. Cliquez sur l'onglet Events.
Descendez tout en bas de la barre à droire. Tout en bas est le nombre d'évents. Mon script étant un dialogue avec un personnage, je clique sur la petite flèche qui va vers le haut à côté du nombre de personnages puis sur changer events.
Tout en haut à gauche de la map est alors apparu un "P" (c'est un "S" si vous ajoutez un script ou une pancarte).
Maintenant, dans la colonne de gauche, allez à "Offset du script", enlevez tout les 0 et collez ce que vous aviez copié après la compilation du script à la place, tout en laissant le "$".
Ensuite, déplacez le "P" à l'endroit où vous le voulez sur la carte, cliquez sur le petit bonhome vert de Pokémon Emeraude situé sur la barre en haut d'advance map et dans la barre de droite, allez à "N° du sprite" et choisissez le sprite voulu.
En image :
- Spoiler:
Il ne vous reste plus qu'à tester le tout avec VBA ^^
Partie intermédiaire 3 : Utiliser le "Text Adjuster"Dans cette partie, nous allons travailler sur un outils intégré dans XSE : le Text Adjuster.
Le texte adjuster sert, comme son nom l'indique, à ajuster le texte, car quand les textes sont trop longs sans sauter de ligne, le texte, dans le jeu, continue à défiler sur la même ligne en dépassant du cadre, ce qui le rend illisible.
Pur ce tuto, pour montrer un bon exemple, je vais utiliser un texte assez long pour pouvoir utiliser le Text Adjuster qui sera : "Ceci est un texte long qui servira comme exemple pour le tuto sur le Text Adjuster".
Donc lancez XSE et faites Tools ==> Text Adjuster ou Ctrl+T
Ceci apparaitra :
Cliquez sur le grand espace blanc et mettez votre texte. Cliquez sur "Convert" puis copiez ce qui vient d'apparaître. Collez le ensuite dans votre script à l'endroit où doit se situer le texte du message dans le script (après le #org @cequevousavezdefiniplushautdanslescript). Ne prêtez pas attention aux \n se trouvant peut-être dans votre script après l'utilisation du Text Adjuster, nous verrons ça dans la partie suivante :
Partie 1-2 : Message : Commandes en "\"Les commandes en "/" sont des commandes à mettre DANS LE TEXTE permettant de faire apparaître des choses dans le texte et d'agir sur celui-ci.
Ewemple :
\c\h01\h00Quel est ton nom?\nAh! Ton nom est \v\h01!
Liste de ces commandes "\" :
\n : Fais passer le message à une nouvelle ligne.
\p : Fais passer le message dans une nouvelle boîte de dialogue/Sauter une ligne.
\h : Utiliser pour mettre des caractères spéciaux. Liste de ces caractères (faite par Seth-Kun de Pokécommunity, merci à lui).
- Spoiler:
00=
01=À
02=Á
03=Â
04=Ç
05=È
06=É
07=Ê
08=Ë
09=Ì
0B=Î
0C=Ï
0D=Ò
0E=Ó
0F=Ô
10=Æ
11=Ù
12=Ú
13=Û
14=Ñ
15=ß
16=à
17=á
19=ç
1A=è
1B=é
1C=ê
1D=ë
1E=ì
20=î
21=ï
22=ò
23=ó
24=ô
25=æ
26=ù
27=ú
28=û
29=ñ
2A=º
2B=ª
2C=·
2D=&
2E=+
34=[Lv]
35==
36=;
51=¿
52=¡
53=[PK]
54=[MN]
55=[PO]
56=[Ke]
57=[BL]
58=[OC]
59=[K]
5A=Í
5B=%
5C=(
5D=)
68=â
6F=í
79=[u]
7A=[D]
7B=[L]
7C=[R]
A1=0
A2=1
A3=2
A4=3
A5=4
A6=5
A7=6
A8=7
A9=8
AA=9
AB=!
AC=?
AD=.
AE=-
AF=·
B0=[...]
B1="
B2=["]
B3='
B4=[']
B5=[m]
B6=[f]
B7=$
B8=,
B9=[x]
BA=/
BB=A
BC=B
BD=C
BE=D
BF=E
C0=F
C1=G
C2=H
C3=I
C4=J
C5=K
C6=L
C7=M
C8=N
C9=O
CA=P
CB=Q
CC=R
CD=S
CE=T
CF=U
D0=V
D1=W
D2=X
D3=Y
D4=Z
D5=a
D6=b
D7=c
D8=d
D9=e
DA=f
DB=g
DC=h
DD=i
DE=j
DF=k
E0=l
E1=m
E2=n
E3=o
E4=p
E5=q
E6=r
E7=s
E8=t
E9=u
EA=v
EB=w
EC=x
ED=y
EE=z
EF=[>]
F0=:
F1=Ä
F2=Ö
F3=Ü
F4=ä
F5=ö
F6=ü
F7=[u]
F8=[d]
F9=[l]
FA=\l
FB=\p
FC=\c
FD=\v
FE=\n
FF=\x
\l : Fais passer à une nouvelle ligne APRES le \n si utilisé
\v : Permet d'afficher certains noms spéciaux :
- Spoiler:
Nom du joueur : \v\h01
Nom du rival : \v\h06
\c : Permet de mettre le message en couleur. Mettez cette commande au début de votre sans message sans mettre d'espaces. Liste des couleurs pour rouge-feu : (Encore merci à Seth-Kun)
- Spoiler:
White - \c\h01\h00
Black - \c\h01\h02
Grey - \c\h01\h03
Red - \c\h01\h04
Orange - \c\h01\h05
Dark Green - \c\h01\h06
Cyan - \c\h01\h07
Blue - \c\h01\h08
Light Blue - \c\h01\h09