[Tuto][GBA]Le Scripting

Ce forum est dédié au Rom Hacking ! Vous pouvez poster ici tutos, créations (les votres et celles que vous aimez !), outils et même demander de l'aide aux spécialistes !
Avatar de l’utilisateur
MikaZ
Contributeur
Messages : 131
Enregistré le : Mar 3 Mar 2015 17:38
Contact :

[Tuto][GBA]Le Scripting

Messagepar MikaZ » Dim 13 Sep 2015 00:59

/!\Ce post sera actualisé pour ajouter au fur et à mesure les scripts et évité de les répartir à travers les différentes pages de conversation./!\

Je vais d'abord vous apprendre à ajouter les différents events qui contiendront nos futurs scripts.
C'est bon, vous suivez ? Let's go !

Ajouter personnage, pancarte et event

Matériel:
-Advance Map
-FSF

D'abord ouvrez votre ROM avec A-Map et allez sur la map que vous voulez. Allez ensuite dans l'onglet "Events":

Image


En bas à droite, il y a un cadre nommé "Gestionnaire d'Evènements", changer les valeurs à vos souhait. Moi j'ai rajouté un événement de chaque type:

Image


Après pour appliquer les changements faut cliquer sur le bouton "Changer Events" et repointer une fois. Si vous avez bien suivi les events que nous venons de créer vont apparaître en haut à gauche de la map actuellement chargée.

Image


Pour moi j'ai obtenu une pancarte ("S" orange), un script ("S" vert), un personnage et un warp ("W" violet):

Image


Voila :) vous avez appris comment ajouter des personnages, des pancartes et des scripts sur une map (aussi des warps mais ça nous servira pour un autre tuto ;) ). Maintenant que nous les avons insérés, nous allons en profiter pour les utiliser. Pour cela il faut chercher un offset libre (minimum 200 octets) et l'inscrire comme ci-dessous:

Image


Puis enfin cliquez sur "Ouvrir un script". On devrait y être:

Image


Nous allons donc maintenant pouvoir rentrer dans le vif du sujet :) .

.:Les messages de pancartes:.

Note: Ce type de script est à inséré dans les "S" oranges.

Voici le script d'une pancarte:

Code : Tout sélectionner

'---------------
#org 0x83C567F
msgbox 0x88E56B8 MSG_SIGN '""
end

'---------
'Strings
'---------
#org 0x8E56B8
= Ceci est un message.

Ça à l'air simple mais voyons cela de plus près.

Code : Tout sélectionner

'------------
#org 0x[offset]

Ceci est la base absolue. En gros, cette commande dit au jeu que votre script est sauvegarder dans la mémoire du jeu a l'offset indiqué.

Code : Tout sélectionner

msgbox 0x88E56B8 MSG_SIGN '""

"msgbox" indique que votre message s'affichera dans une boite de dialogue. Tout les dialogues commencent ainsi. "0x8[offset2]" est un appel au message. Cette commande indique au jeu d'afficher le texte codé à l'offset indiqué. Le texte en question sera présent plus bas dans le script."MSG_SIGN'"" " est le type de message à utilisé pour les pancartes.

Code : Tout sélectionner

'---------
'Strings
'---------

Indique que la suite du script est la zone où vous écrirez votre message.

Code : Tout sélectionner

#org 0x[offset]
= Ceci est un message.

"#org 0x[offset]" c'est là que l'on retrouve le même offset que celui utilisé par la "msgbox". Ce qui suit le "=" est le message. Si le texte que vous voulez écrire est assez long, utilisez l'ajusteur de texte présent dans le menu "Outils".

Voilà, vous avez créer votre premier script. Pour qu'il soit utilisable, il faut le compiler. Pour cela cliquez sur l'icone représentant un double engrenage. Une fenêtre s'affiche :

Image

Cliquez sur "Fermer" et là vous pouvez souffler car on a fini ;)


.:Les messages normaux:.

Note: Ce type de script est à inséré dans les personnages.

Vous avez repris votre souffle ;) ? Alors prenez une grande bouffée d'air :twisted: car ce n'est pas fini.

Code : Tout sélectionner

'---------------
#org 0x83FDE2
msgbox 0x88E7D2F MSG_FACE '""
end

'---------
'Strings
'---------
#org 0x8E7D2F
= Ceci est un message normal.

Ca ressemble beaucoup au message de pancarte, n'est pas ? Décortiquons:

Code : Tout sélectionner

'---------------
#org 0x[offset]

Pas besoin de réexpliquer ;)

Code : Tout sélectionner

msgbox 0x88E7D2F MSG_FACE '""

"msgbox 0x[offset2]" vous connaissez, "MSG_FACE" un peu moins. Cette commande permet que lorsque l'on parle au personnage il vous regarde.

Code : Tout sélectionner

---------
'Strings
'---------
#org 0x8E7D2F
= Ceci est un message normal.

Vous connaissez aussi, c'est comme dans le message de pancarte.


.:Les applymovements:.

Qu'est qu'ça !? Ce script permet, une fois insérer dans un personnage ou un script vert, de déplacer tout personnages présent sur la map. Compliquez ? Pas si sûr:

Code : Tout sélectionner

'------------
#org 0x896483
lock
applymovement 0x1 Ox889354F
waitmovement 0x0
release
end

'---------
'Movements
'---------
#org 0x89354F
#raw 0x56 '(!)
#raw 0xFE 'End of movements


Alors voyons cela.

Code : Tout sélectionner

lock

Cette commande est indispensable sinon attention au bug. Elle permet de bloquer la caméra dans la position actuelle.

Code : Tout sélectionner

applymovement 0x[id_du_perso] 0x8[offset]

C'est la commande en elle même. Mettre dans "id du perso" le numéro correspondant au personnage que vous voulez déplacer. Si vous voulez déplacer le joueur il faudra mettre "MOVE_PLAYER" et non un nombre.

Code : Tout sélectionner

waitmovement 0x0

Cela permet au jeu d'attendre que le mouvement soit fini avant d’exécuter la suite du script.

Code : Tout sélectionner

release
end

"release" débloque la caméra et "end" termine le script.

Code : Tout sélectionner

'---------
'Movements
'---------

Cela indique que nous entrons dans la zone où nous écrirons les mouvements à effectuer.

Code : Tout sélectionner

#org 0x[offset]
#raw 0x[id_du_mouvement]

Un mouvement commence toujours "#raw" la suite "0x[id_du_mouvement]" indique quel est le mouvement effectué.

Code : Tout sélectionner

#raw 0xFE 'End of movements

Ceci indique que c'est la fin des mouvements et que le script peut continuer à s'exécuter.


.:Les Giveitems:.

C'est ultra simple. Cela permet de donner, quand on parle à un personnage ou une pokéball, un item au joueur.
Vous allez en pleurer ;). Voici le script :

Code : Tout sélectionner

'------------
#org 0x89F345
giveitem 0x1 0x1 MSG_FIND
end

C'est tout ?
Bah oui, quand je vous dit que c'est simple :P.
Bon voyons cela:

Code : Tout sélectionner

'---------------
#org 0x[offset]

Ça vous connaissez.

Code : Tout sélectionner

giveitem 0x[id_d_item] 0x[quantité] MSG_FIND

"giveitem" est la commande. Le premier 0x1 est l'objet en lui même ou plutôt son ID dans le jeu (ici une masterball). Le deuxième 0x1 est la quantité d'objet que vous voulez donner au joueur. La j'ai une masterball, si j'en aurai voulu 3 par exemple, j'aurai mis 0x3. "MSG_FIND" est le message qui s'affichera quand vous obtiendrai votre objet.


Basique, termine le script.


.:Les GivePokemons:.

Très simple et très pratique. Cela donne au joueur un pokémon voulu. Associé à d'autres scripts cela peut faire un bon élément pour un scénario. Passons au code:

Code : Tout sélectionner

'---------------
#org 0x8C5474
givepokemon 0x90 0xA 0x1 0x0 0x0 0x0
fanfare 0x13E
msgbox 0x87A4FA0 MSG_NORMAL '""
waitfanfare
closeonkeypress
release
end

'---------
'Strings
'---------
#org 0x7A4FA0
= Tiens un PkMn !

Voyons cela:

Code : Tout sélectionner

'---------------
#org 0x8C5474
givepokemon 0x[id_du_pkmn] 0x[niveau] 0x[id_de_son_objet] 0x0 0x0 0x0

Le début ça devrait aller ;). Passons au "givepokemon". "0x[id_du_pkmn]" est l'espèce du pokémon en hexadécimal (ici un Artikodin)."0x[niveau]" est son niveau toujours en hexadécimal. Le "0x" d'après permet de lui faire tenir un objet (id encore en hexadécimal :P), ici je lui ai mis une masterball.
Les 3 "0x0" restants sont des fillers a mettre obligatoirement.
Passons à la suite :

Code : Tout sélectionner

fanfare 0x13E

C'est la musique qui se joue lorsque l'on obtient quelque chose dans le jeu.
Le "msgbox" qui suit est le message qui s'affiche pendant l'obtention du Pokémon.

Code : Tout sélectionner

waitfanfare

Cela fonctionne de la même manière que le "waitmovement", cela indique au jeu d'attendre que la fin de la musique d'obtention se finisse pour pouvoir exécuter la suite du script.

Code : Tout sélectionner

closeonkeypress

Permet à la fenêtre de dialogue de disparaitre que si l'utilisateur appui sur une touche. Et la fin vous connaissez alors ;).


.:Le message YESNO:.

Ce script est super pratique, il permet d'afficher un message auquel on peut répondre oui ou non.
Le voici:

Code : Tout sélectionner

'---------------
#org 0x8B3C45
faceplayer
msgbox 0x88F4463 MSG_YESNO '""
compare LASTRESULT 0x1
if 0x1 goto 0x88F487F
msgbox 0x88FB23B MSG_NORMAL '""
end

'---------------
#org 0x8F487F
msgbox 0x88F5674 MSG_NORMAL '""
end

'---------
' Strings
'---------
#org 0x8F4463
=Bonjour. Ca va ?

#org 0x8F5674
= Tout va bien alors ^^.

#org 0x8FB23B
= Ya des jours comme ça :(.

Ya quelques nouveautés:

Code : Tout sélectionner

faceplayer
msgbox 0x8[offset] MSG_YESNO '""

La première commande permet au personnage auquel on parle de se tourner vers nous. La deuxième vous la connaissez un peu il ya juste le type de message qui change. Au lieu de mettre "MSG_NORMAL" on met "MSG_YESNO"
qui fera appairaitre une fenêtre avec le chois "OUI" ou "NON".

Code : Tout sélectionner

compare LASTRESULT 0x1
if 0x1 goto 0x88F487F

La première commande "regarde" la réponse que vous avez donner. La deuxième agit en fonction de votre réponse. Concrètement on peut la traduire par: "Si la réponse est OUI aller à l'offset indiquer. Si NON continuer normalement le script."

Code : Tout sélectionner

'---------------
#org 0x8F487F
msgbox 0x88F5674 MSG_NORMAL '""
end

C'est la ou est reporter la suite du script si votre réponse est OUI. Vous pouvez y ce que vous voulez mais n'oubliez pas le "end" à la fin.

Bon c'était un peu coton à expliquer mais je pense que c'est encore peu compréhensible à certains endroits donc n'hésitez pas à me dire où et je modifierai en fonction.


.:La fonction call:.

Ce script est très pratique, il permet de réutiliser un script déjà fait sans avoir à réécrire son code. Exemple:

Code : Tout sélectionner

'---------------
#org 0x1A5774
fadescreen 0x1
fanfare 0x100
waitfanfare
special 0x0
fadescreen 0x0
return

Ce script permet de faire une transition vers un écran noir puis de jouer la musique de soin (comme dans les centres PkMns ), de soigner les PkMns du joueur et enfin de revenir à l'écran de jeu.
Si on veut réutiliser le script sans se taper la réécriture, on utilse cette commande:

Code : Tout sélectionner

call 0x8[offset_du_script]

Cela va appeler le script. Voici un petit exemple d'application:

Code : Tout sélectionner

'---------------
#org 0x808952
msgbox 0x8808D3A MSG_FACE '"Veille femme: Tu as l'air fatigué...."
call 0x81A5774
msgbox 0x8809122 MSG_FACE '"Veille femme: Te revoila sur pied."
end

'---------------
#org 0x1A5774
fadescreen 0x1
fanfare 0x100
waitfanfare
special 0x0
fadescreen 0x0
return


'---------
' Strings
'---------
#org 0x808D3A
= Veille femme: Tu as l'air fatigué.\nJe vais m'occuper de toi.

#org 0x809122
= Veille femme: Te revoilà sur pied.

Le "call" va appeler et exécuter ce qui se trouve à l'offset 0x1A5774 (le script de soin). Une fois fini, il va continuer normalement mon script.
Cela permet de gagner des octets dans la rom car ça prends beaucoup moins de place (surtout si vous réutiliser de gros scripts) d'écrire une ligne qu'un script.


.:Setwildbattle et wildbattle:.

Un wildbattle sert à combattre un Pokémon sauvage. On peut utiliser se cript soit dans les personnages soit dans les scripts verts.

.:Wildbattle (Musique dresseur R/S/E):.

Code : Tout sélectionner

'---------------
#org 0x[offset]
lock
faceplayer
setwildbattle 0x[id_du_PkMn] 0x[son_niveau] 0x[id_de_son_objet]
checksound
cry 0x[id_du_pokemon] 0x2
pause 0x28
waitcry
setflag 0x305
setflag 0x861
special 0x138
waitstate
clearflag 0x861
release
end

Bon ça va, ce n'est pas si terrible :twisted:.

Le début vous connaissez."faceplayer" dit au Pokémon de se tourner vers le joueur quand on lui parle.

Code : Tout sélectionner

setwildbattle 0x[id_du_PkMn] 0x[son_niveau] 0x[id_de_son_objet]

Cela défini le Pokémon que l'on s'apprête à combattre. L'id du Pokémon, de l'objet et du niveau doivent être en hexadécimal ! Sinon c'est simple.

Code : Tout sélectionner

checksound
cry 0x[id_du_pokemon] 0x2
pause 0x28
waitcry

"checksound" permet de "changer sur le cri du Pokémon.
La fonction "cry" appelle et lit le cri du Pokémon indiqué (toujours en hexadécimal).
La "pause" (café :D ) fait une... pause dans le jeu avant d’exécuter la suite du script, 0x28 est le temps de la pause.
Finalement on attend le cri du Pokémon (en combat apparemment) avec la ligne "waitcry".

Code : Tout sélectionner

setflag 0x305
setflag 0x861
special 0x138
waitstate
clearflag 0x861

Tout ça c'est les écran de jeu en combat, ect. C'est juste à copier/coller. D'ailleurs la musique en combat est celle de Rubis/Saphir en combat de dresseur.

Note:
Je sais que le "special 0x138" déclenche un combat sauvage avec le dernier Pokémon défini en mémoire, donc soit celui défini par le "setwildbattle" soit en l’occurrence le dernier Pokémon rencontré (dresseur ou sauvage, K.O ou pas car oui il garde en mémoire son statu, son nombre de PVs ses PPs, sa nature, ect)
Enfin on termine avec "release" et "end"

.:Wildbattle (Musique combat sauvage):.

Code : Tout sélectionner

'---------------
#org 0x[offset]
lock
cry 0x[id_du_pokemon] 0x2
pause 0x28
wildbattle 0x[id_du_PkMn] 0x[son_niveau] 0x[id_de_son_objet]
release
end

Et voui, c'est tout.Au lieu que le combat se déclenche avec la commande "special 0x138", il se déclenche directement avec la commande "wildbattle", plus adapté par exemple si vous voulez faire une attaque de horde (plusieurs Pokémons sauvages qui vous attaquent les uns à la suite des autres).


.:Trainerbattle et trainerbattle2:.

.:Trainerbattle:.

Comme son nom l'indique le "trainerbattle" permet de déclenché un combat avec un dresseur lorsque l'on est dans son champ de vue.
C'est simple et super pratique. Voici:

Code : Tout sélectionner

'------------
#org 0x[offset]
trainerbattle 0x0 0x[id_du_dresseur] 0x8[offset2] 0x8[offset3]
end

'---------
'Strings
'---------
#org 0x[offset2]
= Message quand il vous voit

#org 0x[offset3]
= Message défaite

Le combat se déclenche avec la commande "trainerbattle". L'id du dresseur (en hexadécimal) peut être choisi grâce à un logiciel comme A-trainer (pour son utilisation se sera un autre tuto). Tout est dit dans le code après.
Voilà c'est tout !? Mais non rassurer vous je vous réserve un autre type de trainerbattle :twisted: .

.:Trainerbattle2:.

Qu'est ce qui change ? Pas grand chose je vous l'accorde:

Code : Tout sélectionner

'------------
#org 0x[offset]
trainerbattle 0x2 0x[id_du_dresseur] 0x8[offset2] 0x8[offset3] 0x8[offset4]
end

'------------
#org 0x[offset4]

'suite du script

end

'---------
'Strings
'---------
#org 0x[offset2]
= Message quand il vous voit

#org 0x[offset3]
= Message défaite


Y a deux nouveaux trucs. Le "0x" après le "trainerbattle" devient "0x2". Un pointeur, ou offset si vu préféré, a fait son apparition à la fin de cette même commande. Il intervient en cas de victoire sur le dresseur et reprend le script sur l'offset indiqué.

Code : Tout sélectionner

'------------
#org[offset4]

'suite du script

end


Ceci est la suite de votre script vous pouvez y mettre ce que vous voulez.

Note: Ce type de script est utilisé par exemple pour les champions d'arènes.

.:Les "specials":.

Ce script, malgré sa simplicité, est un outil très puissant. Il peut soigner les Pokemon du joueur, téléporter le joueur lancer une animation, demander au joueur de donner un surnom, etc. Bref, en clair il permet de faire beaucoup de choses tout en étant court. Voici la bête:

Code : Tout sélectionner

'------------
#org 0x[offset]
special 0x[id_du_special]


L'id du special est bien sur un nombre en hexadécimal. Une liste de ces specials est afficher en bas de page.


.:Le warp:.
Je pense que vous l'attendiez celui la. Donc comme je l'ai promis le voici:

Code : Tout sélectionner

'------------
#org 0x[offset]
warp 0x[id_bank] 0x[id_map] 0x[id_du_warp] 0x[coordonnée_1] 0x[coordonnée_2]
end

Déjà il faut que vous choisissez la map dans laquelle vous voulez vous téléporter. Noter son ID de Bank et son numéro. C'est ce que vous mettrez à la place de "[id_bank]" et "[id_map]". L'id du warp est son numéro évènement, visible sur A_Map. "[coordonnée_1]" et "[coordonnée_2]" sont ces coordonnées visible soit en bas de l'écran soit sur le côté de l'onglet "event" quand votre warp est sélectionner.
Voila, simple et pratique. A coupler avec deux ou trois applymovements quelques msgbox, ça donnera un bon résultat ;).


.:Giveegg:.
Encore plus simple que le "givepokemon", voici le "giveegg":

Code : Tout sélectionner

'------------
#org [offset]
giveegg 0x[id_du_pokemon_dans_l_oeuf]
end

La commande change juste de "givepokemon" à "giveegg".
Voila y a plus qu'a donner l'id du Pokémon en hexadécimal. Pas besoin de donner so niveau ni son objet tenu, c'est un oeuf.


.:Météo:.

Code : Tout sélectionner

'------------
#org [offset]
setweather 0x[id_du_temps]
doweather
pause 0x50
resetweather
doweather
end

Voila c'est pas si terrible :P. Sérieusement, "setweather" permet de définir le temps indiquer après le "0x" (Liste des temps possibles plus bas), "doweather" l'exécute."resetweather" redéfini le temps par défaut de la map.


.:Checkgender:.
On va y aller molo, voilà:

Code : Tout sélectionner

'------------
#org 0x[offset]
lock
faceplayer
checkgender
compare 0x800D 0x0
if 0x1 goto 0x8[offset_gars]
compare 0x800D 0x1
if 0x1 goto 0x8[offset_meuf]
end

'------------
#org 0x[offset_gars]
msgbox 0x8[offset1] MSG_FACE '""
release
end

'------------
#org 0x8[offset_meuf]
msgbox 0x8[offset2] MSG_FACE '""
release
end

'---------
'Strings
#org 0x[offset1]
=Salut mec !

#org 0x[offset2]
=Salut meuf !

Keskia de nouveau:

Code : Tout sélectionner

checkgender
compare 0x800D 0x0
if 0x1 goto 0x8[offset_gars]
compare 0x800D 0x1
if 0x1 goto 0x8[offset_meuf]

"checkgender" démarre la commande."compare 0x800D" ne change pas, cela permet d'amorcer la comparaison. "0x0" pour le gars et "0x1" pour la fille. Les "if" et "goto" envoie le script, à l'offset indiquer, selon le résultat. Simple et utile pour les scénars.


.:Le Braille:.
Aussi simple qu'un "msgbox", ce script permet de créer de véritables énigmes, comme dans R/S/E dans les salles de Régi's:

Code : Tout sélectionner

'---------------
#org 0x[offset]
lockall
braille 0x8[offset1]
waitkeypress
releaseall
end


'---------
' Braille
'---------
#org 0x[offset1]
#braille [Votre message qui sera transformer en braille]

Au lieu d'activer la commande par "msgbox", elle s'active par "braille" suivi de l'offset.

Code : Tout sélectionner

'---------
' Braille
'---------
#org 0x[offset1]
#braille [Votre message qui sera transformer en braille]

C'est la même utilité que la section "'Strings" sauf que le texte est précédé de la balise "#braille" au lieu d'un "=".
C'est fini, j'espère trouver des énigmes badass dans vos Rom-Hack.


.:Animation des portes:.
Gros script assez simple pour de bons scénars:

Code : Tout sélectionner

'------------
#org [offset]
lock
setdooropened 0x[position_X] 0x[position_Y]
doorchange
setdoorclosed 0x[position_X] 0x[position_Y]
doorchange
release
end

"setdooropened" permet d'ouvrir la porte à la position X,Y donnée.
"doorchange" est comme un "waitfanfare", il attend que la porte est entièrement ouverte avant de continuer le script.
"setdoorclosed" comme "setdooropened" mais pour fermer la porte.
Pis la fin plus besoin d'expliquer ;)
Voilà c'est tout, si ce n'est que coupler à quelques "applymovements" ce script peut-être redoutable.


.:Showpokepic/Hidepokepic:.

Code : Tout sélectionner

'------------
#org [offset]
lock
msgbox 0x8[offset1] MSG_NORMAL ""'
showpokepic 0x[ID_du_Pokémon] 0x[position_fenêtre_en_X] 0x[position_fenêtre_en_Y]
msgbox 0x8[offset2] MSG_NORMAL ""'
hidepokepic 0x[ID_du_Pokémon]
end

'---------
'Strings
'---------
#org 0x[offset1]
= [Message1]

#org 0x[offset2]
= [Message2]

Rien de plus simple, on fait apparaître la fenêtre grâce à la commande "showpokepic" suivi du numéro en hexadécimal du Pokémon. Pour les coordonnées je vous conseille de mettre 0xA en X et 0x3 en Y.
"hidepokepic" suivi du numéro en hexadécimal du Pokémon ferme la fenêtre.


.:Showsprite/Hidesprite:.
Petit script sympas pour jouer au fantôminus:

Code : Tout sélectionner

'------------
#org 0x[offset]
lock
checkflag 0x[numéro_du_flag]
hidesprite 0x[numéro_du_personnage]
msgbox 0x8[offset2] MSG_NORMAL '""
showsprite 0x[numéro_du_personnage]
release
end

'---------
'Strings
'---------
#org 0x[offset2]
= Votre Message !


Keskya de new ? Bah cela :

Code : Tout sélectionner

checkflag 0x[numéro_du_flag]

Et se sera indispensable car le numéro du flag sera inscrit dans l'ID du personnage, dans A-Map, que vous voulez faire apparaître ou disparaître.

Code : Tout sélectionner

hidesprite 0x[numéro_du_personnage]

Le numéro du personnage apparaît sur A-Map, dans la section "Event", quand celui-ci est sélectionné.
"hidesprite" permet donc de faire disparaître le personnage dont le numéro est indiqué après le "0x" ( en hexadécimal, pensez donc a convertir !)
"showsprite" fonctionne de la même manière que "hidesprite" mais cela fait apparaître le personnage mais il n'est plaçable qu'après un hidesprite.
A la place de "0x[numéro_du_personnage]" vous pouvez mettre "LASTTALKED" ce qui aura pour effet de faire disparaître le dernier personnage a qui vous avez parlez dans le jeu.


.:Spritevisible/Spriteinvisible:.

Code : Tout sélectionner

'------------
#org 0x[offset]
lock
applymovement 0x[ID_personnage] 0x8[offset2]
waitmovement 0x0
spriteinvisible 0x[ID_du_personnage] 0x[bank_de_map] 0x[numéro_de_map]
release
end

'---------
'Movements
'---------
#org 0x[offset2]
#raw 0x0
#raw 0xFE

Rien de bien particulier.
La seule nouvelle commande est "spriteinvisible". Ce qui suit est déjà expliqué, les nombres sont cependant en hexadécimal.ATTENTION !!! Le sprite est toujours présent sur la map, vous pouvez parlez au personnage même s'il est invisible.
Le "spritevisible", bah c'est pareil dans le sens inverse.


.:Les flags :.
Rien de plus simple, il ya cependant 3 commandes pour gérer les flags.

Code : Tout sélectionner

'------------
#org 0x[offset]
checkflag 0x[numéro_du_flag]
if 0x1 goto 0x8[offset2]
msgbox 0x8[offset3] MSG_NORMAL '""
setflag 0x[numéro_du_flag]
end

'------------
#org 0x[offset2]
clearflag 0x[numéro_du_flag]
end

'---------
'Strings
'---------
#org 0x[offset3]
=Votre message

"checkflag" (souvent couplé avec "if...goto") vérifie si le flag choisi est activé. Le "if...goto" renvoie le script à l'offset indiqué après le goto.
A ce stade, le script continue normalement vu que le flag n'est pas activé et donc le "msgbox" s'exécute.
Le scipt continue et exécute le "setflag" qui a pour but d'activer le flag choisi.
Si on réexécute le script, le "checkflag" va donc détecté que le flag choisi est activé et va lancer la deuxième partie du script qui est à l'[offset2].
A cette offset, le script execute un "clearflag" qui désactivera notre flag choisi.
Vu qu'il n'est plus activé, si le script est réexécuter , on reverra notre "msgbox".
Voilà j'espère que que j'ai été assez clair, si ce n'est pas le cas dites le moi ;).

.:Random:.
Aujourd'hui nous allons apprendre à générer un nombre aléatoire dans un script.
On va faire un truc simple histoire de ne pas trop vous embrouillez. Voilà:

Code : Tout sélectionner

'------------
#org [offset]
lock
msgbox 0x8[offset2] MSG_FACE '""
random 0x2
compare LASTRESULT 0x0
if 0x1 goto 0x8[offset3]
compare LASTRESULT 0x1
if 0x1 goto 0x8[offset4]
release
end

'------------
#org 0x[offset3]
msgbox 0x8[offset5] MSG_NORMAL '""
release
end

'------------
#org 0x[offset4]
msgbox 0x8[offset6] MSG_NORMAL '""
release
end

'---------
'Strings
'---------
#org 0x[offset2]
= Pile ou Face ?

#org 0x[offset5]
= Pile !

#org 0x[offset6]
= Face !

Ce n'est pas si compliqué. Une nouvelle commande:

Code : Tout sélectionner

random 0x[nombre_maximum_choisi]

La fonction "random" choisira un nombre entre 1 et le nombre (en hexadécimal) inscrit après le "0x". Ici, le jeu ne pourra choisir q'un nombre entre 1 et 2, un pile ou face en somme. Pour interpreter, le résultat obtenu par la fonction "random", on utilisera :

Code : Tout sélectionner

compare LASTRESULT 0x0
if 0x1 goto 0x8[offset3]
compare LASTRESULT 0x1
if 0x1 goto 0x8[offset4]

Ces lignes vont comparer si le résultat est 1 pour la première commande et 2 pour la deuxième. Si le résultat est 1, le script est renvoyer à l'offset 3. Si ce n'est pas le cas, le script continue et va vérifier le deuxième résultat (qui ser aforcement vrai si le premier est faux) et renverra le script a l'offset 4.
Le reste de script est du classique pas besoin de réexpliquer.
Sur ce à un prochain script ;).

==================
/!\A venir/!\

.:Le Countpokemon:.

.:Setflagtrainer & clearflagtrainer :.

.:Setmaptile :.
===================
.:Quelques ressources necessaire:.

.:ID des mouvements (applymovement):.

Pokémon Rouge Feu/Vert Feuille FR-US:

Code : Tout sélectionner

Tourne la tête vers le bas: 0x00
Tourne la tête vers le Haut: 0x01
Tourne la tête vers la gauche: 0x02
Tourne la tête vers la droite: 0x03
Fait un pas en bas (Très lentement): 0x08
Fait un pas en haut (Très lentement): 0x09
Fait un pas à gauche (Très lentement): 0x0A
Fait un pas à droite (Très lentement): 0x0B
Fait un pas en bas (lentement): 0x0C
Fait un pas en haut (lentement): 0x0D
Fait un pas à gauche(lentement): 0x0E
Fait un pas à droite (lentement): 0x0F
Fait un pas en bas (Normalement): 0x10
Fait un pas en haut (Normalement): 0x11
Fait un pas à gauche (Normalement): 0x12
Fait un pas à droite (Normalement): 0x13
Saute de 2 cases vers le bas 0x14
Saute de 2 cases vers le haut 0x15
Saute de 2 cases vers la gauche 0x16
Saute de 2 cases vers la droite 0x17
Fait un pas en bas (rapide) 0x1D
Fait un pas en haut (rapide) 0x1E
Fait un pas à gauche (rapide) 0x1F
Fait un pas à droite (rapide) 0x20
Step on the Spot Down 0x21
Step on the Spot Up 0x22
Step on the Spot Left 0x23
Step on the Spot Right 0x24
Step on the Spot Down (Fast) 0x25
Step on the Spot Up (Fast) 0x26
Step on the Spot Left (Fast) 0x27
Step on the Spot Right (Fast) 0x28
Step on the Spot Down (Very Fast) 0x29
Step on the Spot Up (Very Fast) 0x2A
Step on the Spot Left (Very Fast) 0x2B
Step on the Spot Right (Very Fast) 0x2C
Se tourne vers le bas (Non-Instant) 0x2D
Se tourne vers le haut (Non-Instant) 0x2E
Se tourne vers la gauche (Non-Instant) 0x2F
Se tourne vers la droite (Non-Instant) 0x30
Glisse vers le bas 0x31
Glisse vers le haut 0x32
Glisse vers la gauche 0x33
Glisse vers la droite 0x34
Glisse vers le bas sur son pied gauche 0x3D
Glisse vers le haut sur son pied gauche 0x3E
Glisse vers la gauche sur son pied gauche 0x3F
Glisse vers la droite sur son pied gauche 0x40
Glisse vers le bas sur son pied droit 0x41
Glisse vers le haut sur son pied droit 0x42
Glisse vers la gauche sur son pied droit 0x43
Glisse vers la droite sur son pied droit 0x44
Se tourne vers le joueur 0x4A
Face Away from Player 0x4B
Saute d'une case vers le bas 0x4E
Saute d'une case vers le haut 0x4F
Saute d'une case vers la gauche 0x50
Saute d'une case vers la droite 0x51
Saute sur place(Facing Down) 0x52
Saute sur place (Facing Up) 0x53
Saute sur place (Facing Left) 0x54
Saute sur place (Facing Right) 0x55
Saute sur place (Facing Down->Up) 0x56
Saute sur place (Facing Up->Down) 0x57
Saute sur place (Facing Left->Right) 0x58
Saute sur place (Facing Right->Left) 0x59
Disparait0x60
Réapparait 0x61
"!" box popup 0x62
"?" box popup 0x63
"X" box popup 0x64
"!!" box popup 0x65
"^_^" box popup 0x66
Arbre coupé 0x69


Pokémon Rubis/Saphir (FR-US):

Code : Tout sélectionner

0x54 ' Hide
0x55 ' Show
0x56 ' !
0x57 ' ?
0x58 ' Coeur au dessus de la tête
0x5A ' Pokeball au dessus de la tête
0x10 ' Delay0
0x11 ' Delay1
0x12 ' Delay2
0x13 ' Delay3
0x14 ' Delay4

' Step
0x00 ' Down0
0x01 ' Up0
0x02 ' Left0
0x03 ' Right0
0x04 ' Down1
0x05 ' Up1
0x06 ' Left1
0x07 ' Right1
0x08 ' Down2
0x09 ' Up2
0x0A ' Left2
0x0B ' Right2
0x17 ' Left3
0x18 ' Right3
0x15 ' Down3
0x16 ' Up3
0x2D ' Down4
0x2E ' Up4
0x2F ' Left4
0x30 ' Right4

' Running
0x35 ' RunDown
0x36 ' RunUp
0x37 ' RunLeft
0x38 ' RunRight
0x7E ' RunDown2
0x7F ' RunUp2
0x80 ' RunLeft2
0x81 ' RunRight2

' Hop & Jump
0x0C ' HopTileDown
0x0D ' HopTileUp
0x0E ' HopTileLeft
0x0F ' HopTileRight
0x3A ' HighHopDown
0x3B ' HighHopUp
0x3C ' HighHopLeft
0x3D ' HighHopRight
0x46 ' HopDown
0x47 ' HopUp
0x48 ' HopLeft
0x49 ' HopRight
0x4A ' HopDown180
0x4B ' HopUp180
0x4C ' HopLeft180
0x4D ' HopRight180
0x42 ' JumpDown
0x43 ' JumpUp
0x44 ' JumpLeft
0x45 ' JumpRight

' Straf (May have glitches)
0x19 ' StDown1
0x1A ' StUp1
0x1B ' StLeft1
0x1C ' StRight1
0x1D ' StDown2
0x1E ' StUp2
0x1F ' StLeft2
0x20 ' StRight2
0x21 ' StDown3
0x22 ' StUp3
0x23 ' StLeft3
0x24 ' StRight3
0x25 ' StDown4
0x26 ' StUp4
0x27 ' StLeft4
0x28 ' StRight4
0x6A ' StDown1i
0x6B ' StUp1i
0x6C ' StLeft1i
0x6D ' StRight1i
0x6E ' StDown5
0x6F ' StUp5
0x70 ' StLeft5
0x71 ' StRight5

'Special
0x31 ' SlideFaceDown
0x32 ' SlideFaceUp
0x33 ' SlideFaceLeft
0x34 ' SlideFaceRight
0x86 ' IceSlideDown
0x87 ' IceSlideUp
0x88 ' IceSlideLeft
0x89 ' IceSlideRight

' Glitchy
0x3E ' Up0A
0x3F ' Down0A
0x4E ' Down0B
0x63 ' Up0B
0x65 ' Right0A
0x66 ' RunStopLoopDown
0x67 ' RunStopLoopUp
0x68 ' RunStopLoopLeft
0x69 ' RunStopLoopRight
0x72 ' Down15
0x73 ' Up15
0x74 ' Left15
0x75 ' Right15
0x7A ' Down6
0x7B ' Up6
0x7C ' Left6
0x7D ' Right6
0x82 ' Down7
0x83 ' Up7
0x84 ' Left7
0x85 ' Right7

' EXIT
0xFE

Pokémon Emeraude:

Code : Tout sélectionner

Se déplace lentement en Bas (Down), Haut (Up), Gauche (Left), Droite (Right)

#raw 0x4 'Step Down (Slow)
#raw 0x5 'Step Up (Slow)
#raw 0x6 'Step Left (Slow)
#raw 0x7 'Step Right (Slow)



Se déplace normalement en Bas (Down), Haut (Up), Gauche (Left), Droite (Right)

#raw 0x8 'Step Down (Normal)
#raw 0x9 'Step Up (Normal)
#raw 0xA 'Step Left (Normal)
#raw 0xB 'Step Right (Normal)



Délai avant un mouvement

#raw 0x10 'Delay1
#raw 0x11 'Delay2
#raw 0x12 'Delay3
#raw 0x13 'Delay4
#raw 0x14 'Delay5



Regarde dans la direction actuelle

#raw 0x3E 'Face Player



End of Movements (à toujours placer à la fin des mouvements)

#raw 0xFE 'End of Movements

.:Listes Pokémons/objets (en décimal):.

Pokémons (en anglais):

Code : Tout sélectionner

BULBASAUR 1
IVYSAUR 2
VENUSAUR 3
CHARMANDER 4
CHARMELEON 5
CHARIZARD 6
SQUIRTLE 7
WARTORTLE 8
BLASTOISE 9
CATERPIE 10
METAPOD 11
BUTTERFREE 12
WEEDLE 13
KAKUNA 14
BEEDRILL 15
PIDGEY 16
PIDGEOTTO 17
PIDGEOT 18
RATTATA 19
RATICATE 20
SPEAROW 21
FEAROW 22
EKANS 23
ARBOK 24
PIKACHU 25
RAICHU 26
SANDSHREW 27
SANDSLASH 28
NIDORAN|w| 29
NIDORINA 30
NIDOQUEEN 31
NIDORAN|m| 32
NIDORINO 33
NIDOKING 34
CLEFAIRY 35
CLEFABLE 36
VULPIX 37
NINETALES 38
JIGGLYPUFF 39
WIGGLYTUFF 40
ZUBAT 41
GOLBAT 42
ODDISH 43
GLOOM 44
VILEPLUME 45
PARAS 46
PARASECT 47
VENONAT 48
VENOMOTH 49
DIGLETT 50
DUGTRIO 51
MEOWTH 52
PERSIAN 53
PSYDUCK 54
GOLDUCK 55
MANKEY 56
PRIMEAPE 57
GROWLITHE 58
ARCANINE 59
POLIWAG 60
POLIWHIRL 61
POLIWRATH 62
ABRA 63
KADABRA 64
ALAKAZAM 65
MACHOP 66
MACHOKE 67
MACHAMP 68
BELLSPROUT 69
WEEPINBELL 70
VICTREEBEL 71
TENTACOOL 72
TENTACRUEL 73
GEODUDE 74
GRAVELER 75
GOLEM 76
PONYTA 77
RAPIDASH 78
SLOWPOKE 79
SLOWBRO 80
MAGNEMITE 81
MAGNETON 82
FARFETCH'D 83
DODUO 84
DODRIO 85
SEEL 86
DEWGONG 87
GRIMER 88
MUK 89
SHELLDER 90
CLOYSTER 91
GASTLY 92
HAUNTER 93
GENGAR 94
ONIX 95
DROWZEE 96
HYPNO 97
KRABBY 98
KINGLER 99
VOLTORB 100
ELECTRODE 101
EXEGGCUTE 102
EXEGGUTOR 103
CUBONE 104
MAROWAK 105
HITMONLEE 106
HITMONCHAN 107
LICKITUNG 108
KOFFING 109
WEEZING 110
RHYHORN 111
RHYDON 112
CHANSEY 113
TANGELA 114
KANGASKHAN 115
HORSEA 116
SEADRA 117
GOLDEEN 118
SEAKING 119
STARYU 120
STARMIE 121
MR. MIME 122
SCYTHER 123
JYNX 124
ELECTABUZZ 125
MAGMAR 126
PINSIR 127
TAUROS 128
MAGIKARP 129
GYARADOS 130
LAPRAS 131
DITTO 132
EEVEE 133
VAPOREON 134
JOLTEON 135
FLAREON 136
PORYGON 137
OMANYTE 138
OMASTAR 139
KABUTO 140
KABUTOPS 141
AERODACTYL 142
SNORLAX 143
ARTICUNO 144
ZAPDOS 145
MOLTRES 146
DRATINI 147
DRAGONAIR 148
DRAGONITE 149
MEWTWO 150
MEW 151
CHIKORITA 152
BAYLEEF 153
MEGANIUM 154
CYNDAQUIL 155
QUILAVA 156
TYPHLOSION 157
TOTODILE 158
CROCONAW 159
FERALIGATR 160
SENTRET 161
FURRET 162
HOOTHOOT 163
NOCTOWL 164
LEDYBA 165
LEDIAN 166
SPINARAK 167
ARIADOS 168
CROBAT 169
CHINCHOU 170
LANTURN 171
PICHU 172
CLEFFA 173
IGGLYBUFF 174
TOGEPI 175
TOGETIC 176
NATU 177
XATU 178
MAREEP 179
FLAAFFY 180
AMPHAROS 181
BELLOSSOM 182
MARILL 183
AZUMARILL 184
SUDOWOODO 185
POLITOED 186
HOPPIP 187
SKIPLOOM 188
JUMPLUFF 189
AIPOM 190
SUNKERN 191
SUNFLORA 192
YANMA 193
WOOPER 194
QUAGSIRE 195
ESPEON 196
UMBREON 197
MURKROW 198
SLOWKING 199
MISDREAVUS 200
UNOWN 201
WOBBUFFET 202
GIRAFARIG 203
PINECO 204
FORRETRESS 205
DUNSPARCE 206
GLIGAR 207
STEELIX 208
SNUBBULL 209
GRANBULL 210
QWILFISH 211
SCIZOR 212
SHUCKLE 213
HERACROSS 214
SNEASEL 215
TEDDIURSA 216
URSARING 217
SLUGMA 218
MAGCARGO 219
SWINUB 220
PILOSWINE 221
CORSOLA 222
REMORAID 223
OCTILLERY 224
DELIBIRD 225
MANTINE 226
SKARMORY 227
HOUNDOUR 228
HOUNDOOM 229
KINGDRA 230
PHANPY 231
DONPHAN 232
PORYGON2 233
STANTLER 234
SMEARGLE 235
TYROGUE 236
HITMONTOP 237
SMOOCHUM 238
ELEKID 239
MAGBY 240
MILTANK 241
BLISSEY 242
RAIKOU 243
ENTEI 244
SUICUNE 245
LARVITAR 246
PUPITAR 247
TYRANITAR 248
LUGIA 249
HO-OH 250
CELEBI 251
TREECKO 277
GROVYLE 278
SCEPTILE 279
TORCHIC 280
COMBUSKEN 281
BLAZIKEN 282
MUDKIP 283
MARSHTOMP 284
SWAMPERT 285
POOCHYENA 286
MIGHTYENA 287
ZIGZAGOON 288
LINOONE 289
WURMPLE 290
SILCOON 291
BEAUTIFLY 292
CASCOON 293
DUSTOX 294
LOTAD 295
LOMBRE 296
LUDICOLO 297
SEEDOT 298
NUZLEAF 299
SHIFTRY 300
NINCADA 301
NINJASK 302
SHEDINJA 303
TAILLOW 304
SWELLOW 305
SHROOMISH 306
BRELOOM 307
SPINDA 308
WINGULL 309
PELIPPER 310
SURSKIT 311
MASQUERAIN 312
WAILMER 313
WAILORD 314
SKITTY 315
DELCATTY 316
KECLEON 317
BALTOY 318
CLAYDOL 319
NOSEPASS 320
TORKOAL 321
SABLEYE 322
BARBOACH 323
WHISCASH 324
LUVDISC 325
CORPHISH 326
CRAWDAUNT 327
FEEBAS 328
MILOTIC 329
CARVANHA 330
SHARPEDO 331
TRAPINCH 332
VIBRAVA 333
FLYGON 334
MAKUHITA 335
HARIYAMA 336
ELECTRIKE 337
MANECTRIC 338
NUMEL 339
CAMERUPT 340
SPHEAL 341
SEALEO 342
WALREIN 343
CACNEA 344
CACTURNE 345
SNORUNT 346
GLALIE 347
LUNATONE 348
SOLROCK 349
AZURILL 350
SPOINK 351
GRUMPIG 352
PLUSLE 353
MINUN 354
MAWILE 355
MEDITITE 356
MEDICHAM 357
SWABLU 358
ALTARIA 359
WYNAUT 360
DUSKULL 361
DUSCLOPS 362
ROSELIA 363
SLAKOTH 364
VIGOROTH 365
SLAKING 366
GULPIN 367
SWALOT 368
TROPIUS 369
WHISMUR 370
LOUDRED 371
EXPLOUD 372
CLAMPERL 373
HUNTAIL 374
GOREBYSS 375
ABSOL 376
SHUPPET 377
BANETTE 378
SEVIPER 379
ZANGOOSE 380
RELICANTH 381
ARON 382
LAIRON 383
AGGRON 384
CASTFORM 385
VOLBEAT 386
ILLUMISE 387
LILEEP 388
CRADILY 389
ANORITH 390
ARMALDO 391
RALTS 392
KIRLIA 393
GARDEVOIR 394
BAGON 395
SHELGON 396
SALAMENCE 397
BELDUM 398
METANG 399
METAGROSS 400
REGIROCK 401
REGICE 402
REGISTEEL 403
KYOGRE 404
GROUDON 405
RAYQUAZA 406
LATIAS 407
LATIOS 408
JIRACHI 409
DEOXYS 410
CHIMECHO 411

Objets (en anglais):

Code : Tout sélectionner

Master Ball 1
Ultra Ball 2
Great Ball 3
Poké Ball 4
Safari Ball 5
Net Ball 6
Dive Ball 7
Nest Ball 8
Repeat Ball 9
Timer Ball 10
Luxury Ball 11
Premier Ball 12
Potion 13
Antidote 14
Burn Heal 15
Ice Heal 16
Awakening 17
Parlyz Heal 18
Full Restore 19
Max Potion 20
Hyper Potion 21
Super Potion 22
Full Heal 23
Revive 24
Max Revive 25
Fresh Water 26
Soda Pop 27
Lemonade 28
Moomoo Milk 29
Energypowder 30
Energy Root 31
Heal Powder 32
Revival Herb 33
Ether 34
Max Ether 35
Elixir 36
Max Elixir 37
Lava Cookie 38
Blue Flute 39
Yellow Flute 40
Red Flute 41
Black Flute 42
White Flute 43
Berry Juice 44
Sacred Ash 45
Shoal Salt 46
Shoal Shell 47
Red Shard 48
Blue Shard 49
Yellow Shard 50
Green Shard 51
HP Up 63
Protein 64
Iron 65
Carbos 66
Calcium 67
Rare Candy 68
PP Up 69
Zinc 70
PP Max 71
Guard Spec. 73
Dire Hit 74
X Attack 75
X Defend 76
X Speed 77
X Accuracy 78
X Special 79
Poké Doll 80
Fluffy Tail 81
Super Repel 83
Max Repel 84
Escape Rope 85
Repel 86
Sun Stone 93
Moon Stone 94
Fire Stone 95
Thunderstone 96
Water Stone 97
Leaf Stone 98
Tinymushroom 103
Big Mushroom 104
Pearl 106
Big Pearl 107
Stardust 108
Star Piece 109
Nugget 110
Heart Scale 111
Orange Mail 121
Harbor Mail 122
Glitter Mail 123
Mech Mail 124
Wood Mail 125
Wave Mail 126
Bead Mail 127
Shadow Mail 128
Tropic Mail 129
Dream Mail 130
Fab Mail 131
Retro Mail 132
Cheri Berry 133
Chesto Berry 134
Pecha Berry 135
Rawst Berry 136
Aspear Berry 137
Leppa Berry 138
Oran Berry 139
Persim Berry 140
Lum Berry 141
Sitrus Berry 142
Figy Berry 143
Wiki Berry 144
Mago Berry 145
Aguav Berry 146
Iapapa Berry 147
Razz Berry 148
Bluk Berry 149
Nanab Berry 150
Wepear Berry 151
Pinap Berry 152
Pomeg Berry 153
Kelpsy Berry 154
Qualot Berry 155
Hondew Berry 156
Grepa Berry 157
Tamato Berry 158
Cornn Berry 159
Magost Berry 160
Rabuta Berry 161
Nomel Berry 162
Spelon Berry 163
Pamtre Berry 164
Watmel Berry 165
Durin Berry 166
Belue Berry 167
Liechi Berry 168
Ganlon Berry 169
Salac Berry 170
Petaya Berry 171
Apicot Berry 172
Lansat Berry 173
Starf Berry 174
Enigma Berry 175
Brightpowder 179
White Herb 180
Macho Brace 181
Exp. Share 182
Quick Claw 183
Soothe Bell 184
Mental Herb 185
Choice Band 186
King's Rock 187
Silverpowder 188
Amulet Coin 189
Cleanse Tag 190
Soul Dew 191
Deepseatooth 192
Deepseascale 193
Smoke Ball 194
Everstone 195
Focus Band 196
Lucky Egg 197
Scope Lens 198
Metal Coat 199
Leftovers 200
Dragon Scale 201
Light Ball 202
Soft Sand 203
Hard Stone 204
Miracle Seed 205
Blackglasses 206
Black Belt 207
Magnet 208
Mystic Water 209
Sharp Beak 210
Poison Barb 211
Nevermeltice 212
Spell Tag 213
Twistedspoon 214
Charcoal 215
Dragon Fang 216
Silk Scarf 217
Up-grade 218
Shell Bell 219
Sea Incense 220
Lax Incense 221
Lucky Punch 222
Metal Powder 223
Thick Club 224
Stick 225
Red Scarf 254
Blue Scarf 255
Pink Scarf 256
Green Scarf 257
Yellow Scarf 258
Mach Bike 259
Coin Case 260
Itemfinder 261
Old Rod 262
Good Rod 263
Super Rod 264
S.S. Ticket 265
Contest Pass 266
Wailmer Pail 268
Devon Goods 269
Soot Sack 270
Basement Key 271
Acro Bike 272
PokéBlock Case 273
Letter 274
Eon Ticket 275
Red Orb 276
Blue Orb 277
Scanner 278
Go-goggles 279
Meteorite 280
Rm. 1 Key 281
Rm. 2 Key 282
Rm. 4 Key 283
Rm. 6 Key 284
Storage Key 285
Root Fossil 286
Claw Fossil 287
Devon Scope 288
TM01 289
TM02 290
TM03 291
TM04 292
TM05 293
TM06 294
TM07 295
TM08 296
TM09 297
TM10 298
TM11 299
TM12 300
TM13 301
TM14 302
TM15 303
TM16 304
TM17 305
TM18 306
TM19 307
TM20 308
TM21 309
TM22 310
TM23 311
TM24 312
TM25 313
TM26 314
TM27 315
TM28 316
TM29 317
TM30 318
TM31 319
TM32 320
TM33 321
TM34 322
TM35 323
TM36 324
TM37 325
TM38 326
TM39 327
TM40 328
TM41 329
TM42 330
TM43 331
TM44 332
TM45 333
TM46 334
TM47 335
TM48 336
TM49 337
TM50 338
HM01 339
HM02 340
HM03 341
HM04 342
HM05 343
HM06 344
HM07 345
HM08 346
Oak's Parcel 349
Poké Flute 350
Secret Key 351
Bike Voucher 352
Gold Teeth 353
Old Amber 354
Card Key 355
Lift Key 356
Helix Fossil 357
Dome Fossil 358
Silph Scope 359
Bicycle 360
Town Map 361
VS Seeker 362
Fame Checker 363
TM Case 364
Berry Pouch 365
Teachy TV 366
Tri-pass 367
Rainbow Pass 368
Tea 369
Mysticticket 370
Auroraticket 371
Powder Jar 372
Ruby 373
Sapphire 374

.:Listes des spécials:.

RF/VF et R/S/E:

Code : Tout sélectionner

special 0x0 - Guérit les POKéMONS
special 0x3C - Acces au PC de LEO (RF/VF)
special 0x98 - Aller à la Montagne (R/S)
special 0x9C - Wally Catch (R/S)
special 0x9F - choisir un Pokemon (R/S et RF/VF)
special 0xE0 - Pokeblock (R/S)
special 0x10F - Recommencer le jeu
special 0x110 - Le Hall de la Gloire (Ligue Pokémon) et les Crédits
special 0x111 - Animation de l'Ascenseur
special 0x119 - Effet de l'Orbe de Groudon(R/S)
special 0x131 - Tremblement de Terre (R/S)
special 0x132 - Salles d'Exposition
special 0x136 - Tremblement de Terre (RF/VF)
special 0x137 - Battaile de Lave
special 0x138( dans les scripts verts )- Recombat le même Pokémon que le dernier rencontré
special 0x156 - Combat avec un Fantôme (RF/VF)
special 0x157 - Monter sur le Vélo (RF/VF)
special 0x161 - Commencer à Surfer (RF/VF)
special 0x166 - Surnom
special 0x16F - Activer le National Dex (RF/VF)
special 0x17B - Animation du Sea Gallop (?????)
special 0x191 - SS. Anne
special 0x1F3 - Activer le National Dex (Emeraude)


Emeraude:

Code : Tout sélectionner

0 - Soigner Pokemon
3 - Fait passer le héros dans le warp utiliser en dernier
8 - Créer une base secrète
E - Ouvrir le pc de la base secrète
22 - Message d'attente avant échange Link
24 - Ouvre le menu de sauvegarde (Ne pas oublier de mettre la commande waitstate juste après)
2A - Ouvre le menu de choix Pokémon (Pour zone de combat)
2F - Ouvre le sac à baie
3A - Le héros se retourne avec une "!" au dessus de la tête
3B - Joue la musique d'une rencontre avec un dresseur
3E - Provoque un combat contre un dresseur (Par défaut et sans pokémon)
3F - Ouvre le PC
61 - Affiche l'animation d'arrosage
62 - Créer ou modifier son profil
63 - Affiche votre profil
6A - Ouverture d'un message bizarre accompagné d'un son extraterrestre
6F - Un message qui raconte une histoire ...
70 - Ouvre un menu de choix (En rapport avec l'histoire du 6F)
71 - Choisir bureau (???)
9B - Affiche l'animation du téléphérique
9D - Changer l'heure
9E - Affiche l'heure
9F - Choisir starter + Combat contre Zigzaton
A0 - Animation avec Timmy (Explication "Comment capturer un pokemon")
A1 - Propose de donner un surnom au premier Pokémon de l'équipe
A2 - Choisir un pokemon dans l'équipe
A4 - Mixeur de baie
B2 - "En quête de dresseur" Journaliste Ines
BF - Choisir un Pokémon à déposer en pension
C0 - Récupérer Pokémon mis en pension
C5 - Eclosion d'un oeuf (Il fait éclore le premier Pokémon de l'équipe ... Bizarre)
C7 - Affiche les résultats de la zone combat
D3 - Ouvre la boite Pokeblock
D8 - Analyse du Pokedex
DE - Choisir Pokémon (???)
DF - Affiche les capacités Combat et concours du premier Pokémon
E3 - Enseigner une capacité au premier pokémon
EF - Déclenche un combat contre un dresseur de la zone combat (Gamin Hugo)
F4 - Arrête la musique
F8 - Choisir Pokémon pour un défi (?)
FD - Afficher PC du héros
FE - Affiche la carte
101 - Animation Evolution
106 - Affiche record de vitesse pour le mixeur de baie
109 - Affiche écran d'accueil du PC
10A - Consulter les données du panthéon
10B - Affiche le diplôme certifiant que le héros à remplit tout le pokédex
111 - Affiche le bateau
112 - Redémarre le jeu
113 - Victoire de la Ligue Pokémon + Crédit
114 - Effet ascenseur
11C - Effet Orbe rouge + Seisme
12E - Passe dans le warp menant au dernier point d'atterissage (Flightspot) utilisé
133 - Effet Seisme
134 - Affiche étage (Ascenseur)
139 - Combat contre Kyogre
13A - Combat contre Groudon
13B - Combat contre Légendaire (Rayquaza?)
13D - Fait trembler l'écran pendant 1 seconde
13F - Effet Flash
140 - Faire passer le héros dans le warp utiliser en dernier (Sans son)
141 - Effet de chute en passant au dernier warp utilisé
142 - Affiche un pokemon inconnu (?)
145 - Combat contre un pokemon (?)
15D - Redémarrer le jeu


.:Listes des temps possibles:.

Code : Tout sélectionner

Rien = 0x0
Reflets des nuages = 0x1
Normal = 0x2
Pluie = 0x3
Neige (peu) = 0x4
Orage = 0x5
Brouillard = 0x6
Neige = 0x7
Tempête de sable = 0x8
Brouillard en diagonale = 0x9
Brouillard mince = 0xA
Un peu sombre = 0xB
Surchauffe = 0xC
orage (2) = 0xD
aucun = 0xE

Source des ressources: Pokémon Trash
==================

C'est tout pour l'instant car d'autres scripts vont arriver ;).
Modifié en dernier par MikaZ le Ven 3 Juin 2016 10:53, modifié 37 fois.
"Attention au pouvoir de l'Aura." Lucario

"Tchii est Tchii, c'est Hideki qui a trouvé ce nom ." Tchii

Ma chaine YouTube

Avatar de l’utilisateur
XeR
Testeur indépendant
Messages : 157
Enregistré le : Sam 2 Juin 2012 21:01
Contact :

Re: [Tuto][GBA]Le Scripting

Messagepar XeR » Dim 13 Sep 2015 03:37

Joli tuto.
J'avais essayé de toucher aux outils de RH y'a quelques temps.
Est-ce que tu sais si le langage de scripting est :
- Fait par Nintendo, et directement inclus dans le jeu ?
- Déjà existant (type LUA), et inclus dans le jeu ?
- Déjà existant, mais généré depuis le jeu, puis réinjecté dans le jeu ?
- Fait par le dev du soft, généré depuis le jeu, puis réinjecté ?

Par exemple, je sais que les scripts utilisés par Call of Duty sont fait en QuakeC (CoD c'est juste un gros mod de Quake Arena en fait. :D)

Avatar de l’utilisateur
MikaZ
Contributeur
Messages : 131
Enregistré le : Mar 3 Mar 2015 17:38
Contact :

Re: [Tuto][GBA]Le Scripting

Messagepar MikaZ » Dim 13 Sep 2015 10:36

Je n'en ai aucune idée pour être franc.
Je pense quand même que c'est Nintendo après sa peut directement les logiciels qui nous donne ce langage et au moment de compiler il retranscrit tout dans le langage originale du jeu.
"Attention au pouvoir de l'Aura." Lucario

"Tchii est Tchii, c'est Hideki qui a trouvé ce nom ." Tchii

Ma chaine YouTube

Avatar de l’utilisateur
MikaZ
Contributeur
Messages : 131
Enregistré le : Mar 3 Mar 2015 17:38
Contact :

Re: [Tuto][GBA]Le Scripting

Messagepar MikaZ » Sam 3 Mar 2018 20:19

Playsong:

Code : Tout sélectionner

0x0 Arrête toutes les musisques
0x1 Bruit échange Link
0x2 Pc
0x3 Pc éteint
0x4 Pc allumé
0x5 Bruit "Clique pour passer un dialogue"
0x6 Affichage menu
0x7 Léger bruit quand on ne peut pas passer
0x8 Porte 1
0x9 Porte 2
0xA Saut de barrière
0xB Prendre le vélo
0xC Rocher qui tombe
0xD Attaque normale
0xE Attaque super efficace
0xF Retire Pokémon en combat
0x10 Random
0x11 Fuite en combat
0x12 Porte Centre PkMn
0x13 Bateau qui part
0x14 Random
0x15 Exclamation

J'en testerai d'autre plus tard
"Attention au pouvoir de l'Aura." Lucario

"Tchii est Tchii, c'est Hideki qui a trouvé ce nom ." Tchii

Ma chaine YouTube


Retourner vers « Discussions Rom Hacking »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité