\[TUTO\] \[GBA\] Apprendre à Scripter en Static - 2
Mickey` - 4 mai 2011 à 19:53
Je prends la relève (autorisation de Sainior)
Avant tout, allez lire le premier tuto de Sainior :
~~> https://www.pokemontrash.com/club/rom-hacking/%28tuto%29%28gba%29-apprendre-a-scripter/
Étant donné que le tuto de Sainior n'est pas complet, et qu'il n'a malheureusement plus le temps de s'en occuper, je m'occupe de continuer les leçons
Je vais essayer de faire aussi simple que lui
Vous avez déjà les ressources sur l'autre topic
Spritevisible & spriteinvisible
Spoiler
Vous connaissez déjà les commandes showsprite et hidesprite. Spritevisible et spriteinvisible fonctionnent un peu de la même façon.'---------------
#org 0x710730
lock
msgbox 0x87107B0 MSG_FACE '"Ciao !"
applymovement 0x4 0x8710830
waitmovement 0x0
spriteinvisible 0x4 0x3 0x0
release
end
'---------
' Strings
'---------
#org 0x7107B0
= Ciao !
'-----------
' Movements
'-----------
#org 0x710830
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0xFE 'End of Movements
Une seule nouvelle commande.spriteinvisible 0x4 0x3 0x0
spriteinvisible débute la commande. 0x4, c'est le numéro du personnage. 0x3, c'est la bank sur laquelle le personnage se trouve. 0x0, c'est la map.Mais attention, quand vous faites cette commande, le sprite est invisible, mais il est toujours présent sur la map, contraire au hidesprite qui le supprime complètement. Ainsi, même si le sprite est invisible, si vous parlez au "fantôme", le script s'exécutera quand même.
Vous me direz, "mais alors quel est l'avantage ?". C'est simple, pas besoin de flag, il reste invisible même si vous bougez. Vous pouvez aussi ainsi faire disparaitre votre sprite même si vous êtes sur une autre map (mais dans ce cas, il faut quand même le flag).
spritevisible est exactement pareil, mais dans le sens inverse
Météo
Spoiler
Les commandes suivantes servent à changer la météo.
'---------------
#org 0x7109C4
lock
msgbox 0x8710A44 MSG_FACE '"Il va pleuvoir !"
setweather 0x3
doweather
pause 0x28
msgbox 0x8710AC4 MSG_NORMAL '"Et maintenant, il va faire le même..."
resetweather
doweather
release
end
'---------
' Strings
'---------
#org 0x710A44
= Il va pleuvoir !
#org 0x710AC4
= Et maintenant, il va faire le même\ntemps qu'avant.
Voyons ça de plus près, rien de bien difficilesetweather 0x3
doweather
setweather 0x3 dit au script de préparer le temps 0x3 (ici, 0x3 = la pluie).doweather dit au script d'exécuter le temps préparé. Pas de paramètres requis pour cette commande.
resetweather
doweather
resetweather dit au sript de péparer le temps normal de la map (visible dans l'onglet "Entête".doweather, pareil, dit au script d'exécuter le temps préparé.
Aucun paramètre requis à nouveau pour ces deux commandes.
À noter que "doweather" doit suivre, sans exception, chaque commande de météo. Si vous ne mettez pas cette commande dans votre script, le temps ne se déclenchera pas
Voici une liste de toutes les météos possibles :
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
(Merci à pokemonbonjour pour la liste)Animations des portes
Spoiler
'---------------
#org 0x710B84
lock
checkflag 0x221
applymovement 0x6 0x8710C04
waitmovement 0x0
setdooropened 0x10 0xD
doorchange
applymovement 0x6 0x8710C84
waitmovement 0x0
hidesprite 0x6
setdoorclosed 0x10 0xD
doorchange
setflag 0x221
release
end
'-----------
' Movements
'-----------
#org 0x710C04
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x1 'Face Up
#raw 0xFE 'End of Movements
#org 0x710C84
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements
What's new ?setdooropened 0x10 0xD
doorchange
setdooropened est la commande qui ouvre une porte sur la map. 0x10 et 0xD sont les coordonnées respectives X et Y de la porte sur la map.doorchange n'est pas tout à fait indispensable, mais ça donne un résultat tout simplement meilleur. doorchange peut se comparer à par exemple un waitfanfare. Ainsi, grâce à cette commande, le script attend que la porte soit ouverte complètement pour continuer le script.
Utile, si vous avez mélangé à un applymovement, car quand le perso passe avant que la porte ne s'ouvre, ça le fait pas ! :P
setdoorclosed 0x10 0xD
doorchange
setdoorclosed marche exactement comme setdooropened, mais pour fermer une porte.doorchange ne change pas justement ^^
15/5/2011 - MAJ
Les flags
Spoiler
On y va, c'est un peu coton à expliquer mais on va le faire !'---------------
#org 0x710F55
lock
checkflag 0x240
if 0x1 goto 0x8711115
msgbox 0x8710FD5 MSG_FACE '"Je suis gentil, je te donne un obj..."
giveitem 0x1 0x1 MSG_OBTAIN
msgbox 0x8711055 MSG_FACE '"A ploush !"
setflag 0x240
release
end
'---------------
#org 0x711115
msgbox 0x8711195 MSG_FACE '"T'as déjà eu ton objet !"
clearflag 0x240
release
end
'---------
' Strings
'---------
#org 0x710FD5
= Je suis gentil, je te donne un objet.
#org 0x711055
= A ploush !
#org 0x711195
= T'as déjà eu ton objet !
Décortiquons.'---------------
#org 0x710F55
lock
Rien de particulier.checkflag 0x240
if 0x1 goto 0x8711115
checkflag 0x240 va regarder si le flag n°240 est activé ou pas.if 0x1 goto 0x8[offset] ordonne au script d'aller à cet offset si le flag n°240 est activé.
Mais comment s'active-t-il ? Attendez un instant
msgbox 0x8710FD5 MSG_FACE '"Je suis gentil, je te donne un obj..."
giveitem 0x1 0x1 MSG_OBTAIN
msgbox 0x8711055 MSG_FACE '"A ploush !"
Un msgbox, simple, suivi d'un giveitem (Master ball), et d'un nouveau msgbox.Rien de bien particulier non plus.
setflag 0x240
On y vient ! Voilà comment le flag n°240 s'active.La commande "setflag 0x[numéroduflag]" active le flag.
Ainsi, quand je vais parler à la personne la première fois, il va me dire "Je te donne un objet", il me donne l'objet, puis me dit "A ploush". Ici, le flag 240 s'active. Ainsi, si je reparle une deuxième fois à la personne, "checkflag 0x240" va détecter que le flag est activé. Je vais donc être envoyé à la deuxième partie de mon script. La personne me dira donc "Tu as déjà eu l'objet". Ainsi, je ne pourrai pas obtenir l'objet à l'infinie.
Continuons.
clearflag 0x240
clearflag 0x240, comme son nom l'indique, supprime, désactive le flag n°240.Comme ça, quand je parle pour la deuxième fois à la personne, "clearflag" désactive le flag.
Ainsi, si je lui reparle une troisième fois, "checkflag 0x240" va voir que le flag n'est pas activé. Donc, le script continue normalement.
Ici, dans mon exemple, les flags ne sont pas très importants, étant donné que grâce au clearflag, je peux obtenir l'objet à l'infinie. Si je ne l'obtenir qu'une fois, il faut supprimer "clearflag 0x240" du script
À noter que vous pouvez activer un flag allant de 0001 à FFFF.
Certains flags importants sont déjà utilisés dans le jeu, faites attention, cela peut provoquer quelques bugs dans le jeu.
Flags spéciaux
Il existe des flags spéciaux qui active certaines choses dans le jeu (donner un bagde, ajouter un menu...). Voici un exemple :
'---------------
#org 0x711215
msgbox 0x8711295 MSG_FACE '"Tiens, prends ces chaussures de sp..."
setflag 0x82F
end
'---------
' Strings
'---------
#org 0x711295
= Tiens, prends ces chaussures de sport !
Voici la commande du flag spécial :setflag 0x82F
Ici, ce flag donne les chaussures de sport au joueur.Voici les listes des flags spéciaux :
Rouge Feu / Vert Feuille
Débloquer le menu Pokémon : 0x828
Débloquer le Pokédex : 0x829
Chaussures de sport : 0x82F
Badge 1 : 0x820
Badge 2 : 0x821
Badge 3 : 0x822
Badge 4 : 0x823
Badge 5 : 0x824
Badge 6 : 0x825
Badge 7 : 0x826
Badge 8 : 0x827
Rubis / Saphir
Débloquer le menu Pokémon : 0x800
Débloquer le Pokédex : 0x801
Débloquer le Pokénav : 0x802
Chaussures de sport : 0x860
Badge 1 : 0x807
Badge 2 : 0x808
Badge 3 : 0x809
Badge 4 : 0x80A
Badge 5 : 0x80B
Badge 6 : 0x80C
Badge 7 : 0x80D
Badge 8 : 0x80E
Emeraude
Débloquer le menu Pokémon : 0x860
Débloquer le Pokédex : 0x861
Débloquer le Pokénav : 0x862
Chaussures de sport : 0x8C0
Badge 1 : 0x867
Badge 2 : 0x868
Badge 3 : 0x869
Badge 4 : 0x86A
Badge 5 : 0x86B
Badge 6 : 0x86C
Badge 7 : 0x86D
Badge 8 : 0x86E
On a fini pour les flags !
20/5/2011 - MAJ
Le Countpokemon
Spoiler
Mais qu'est-ce c'est ? Cela sert à compter le nombre de Pokémon dans votre équipe (non pas possible !). Cela peut-être utile pour des zones où l'on ne peut rentrer qu'avec un certain nombre de Pokémon...'---------------
#org 0x7114C4
lock
countpokemon
compare LASTRESULT 0x1
if 0x1 goto 0x8711544
compare LASTRESULT 0x2
if 0x1 goto 0x8711644
compare LASTRESULT 0x3
if 0x1 goto 0x8711784
compare LASTRESULT 0x4
if 0x1 goto 0x8711BB4
compare LASTRESULT 0x5
if 0x1 goto 0x8711CB4
compare LASTRESULT 0x6
if 0x1 goto 0x8711DB4
msgbox 0x8711B34 MSG_FACE '"Tu as 0 Pokémon."
release
end
'---------------
#org 0x711544
msgbox 0x87115C4 MSG_FACE '"Tu as 1 Pokémon."
release
end
'---------------
#org 0x711644
msgbox 0x8711704 MSG_FACE '"Tu as 2 Pokémon."
release
end
'---------------
#org 0x711784
msgbox 0x8711AB4 MSG_FACE '"Tu as 3 Pokémon."
release
end
'---------------
#org 0x711BB4
msgbox 0x8711C34 MSG_FACE '"Tu as 4 Pokémon."
release
end
'---------------
#org 0x711CB4
msgbox 0x8711D34 MSG_FACE '"Tu as 5 Pokémon."
release
end
'---------------
#org 0x711DB4
msgbox 0x8711E34 MSG_FACE '"Tu as 6 Pokémon."
release
end
'---------
' Strings
'---------
#org 0x711B34
= Tu as 0 Pokémon.
#org 0x7115C4
= Tu as 1 Pokémon.
#org 0x711704
= Tu as 2 Pokémon.
#org 0x711AB4
= Tu as 3 Pokémon.
#org 0x711C34
= Tu as 4 Pokémon.
#org 0x711D34
= Tu as 5 Pokémon.
#org 0x711E34
= Tu as 6 Pokémon.
Plutôt long, mais simple.countpokemon
Voici la commande qui déclenche tout.coutpokemon, comme son nom l'indique, regarde le nombre de Pokémon présent(s) dans votre équipe.
compare LASTRESULT 0x1
if 0x1 goto 0x8711544
compare LASTRESULT 0x1 va regarder si countpokemon a compté 1 Pokémon dans l'équipe.Si oui (= if 0x1), il va à un certain offset. On retrouve cet offset plus bas :
'---------------
#org 0x711544
msgbox 0x87115C4 MSG_FACE '"Tu as 1 Pokémon."
release
end
~~> Avec un message disant "Tu as 1 Pokémon."C'est logique
compare LASTRESULT 0x2
if 0x1 goto 0x8711644
Si countpokemon voit que vous n'avez pas 1 seul Pokémon dans votre équipe, il continue de compter. Le nombre d'après ? 2. (Bravo, une première S vous attend ).compare LASTRESULT 0x2 fait exactement la même chose que compare LASTRESULT 0x1, mais pour 2 Pokémon. Si c'est le cas, il va à un nouvel offset :
'---------------
#org 0x711644
msgbox 0x8711704 MSG_FACE '"Tu as 2 Pokémon."
release
end
Qui est celui-là, avec un message disant "Tu as 2 Pokémon."Logique toujours.
Ce sera la même chose avec "compare LASTRESULT 0x3, 0x4, 0x5 et 0x6".
msgbox 0x8711B34 MSG_FACE '"Tu as 0 Pokémon."
A la fin du script, juste après les compare LASTRESULT, arrive un message simple :"Tu as 0 Pokémon". C'est normal, si le script arrive jusqu'ici, c'est que le joueur n'a ni 1, 2, 3, 4, 5, ni 6 Pokémon dans son équipe. Calcul ~~> Il en a donc 0 (le max possible étant 6).
Donc ce message s'affichera. Normalement ça devrait jamais arriver, car le joueur est censé avoir 1 Pokémon minimum tout le temps. (sauf si c'est le tout tout début du jeu).
Voilà, c'est fini pour le countpokemon. Alors, facile non ?
22/5/2011 - MAJ
Giveegg
Spoiler
Aujourd'hui, on va apprendre à faire un giveegg !C'est exactement la même chose que pour un givepokemon (Cf. tuto de Sainior, je vais pas tout réexpliquer), mais cela donne un oeuf !
'---------------
#org 0x712104
lock
checkflag 0x245
if 0x1 goto 0x8712384
faceplayer
msgbox 0x8712184 MSG_YESNO '"Tu veux un oeuf ?"
compare LASTRESULT 0x1
if 0x1 goto 0x8712204
msgbox 0x8712284 MSG_NORMAL '"ommage !"
release
end
'---------------
#org 0x712384
msgbox 0x8712404 MSG_FACE '"Mon oeuf va bien ?"
release
end
'---------------
#org 0x712204
giveegg 0x19
fanfare 0x13E
msgbox 0x8712304 MSG_NORMAL '"Prends-le !"
waitfanfare
closeonkeypress
setflag 0x245
release
end
'---------
' Strings
'---------
#org 0x712184
= Tu veux un oeuf ?
#org 0x712284
= Dommage !
#org 0x712404
= Mon oeuf va bien ?
#org 0x712304
= Prends-le !
Vous voyez, c'est comme le givepokemon, sauf que la commande est encore plus simple !Voici la seule nouvelle commande :
giveegg 0x19
giveegg est la commande qui donne l'oeuf. 0x19, c'est le numéro du Pokémon en hexa. Ici, c'est un Pikachu, (25 en décimal ~~> 19 en hexa).Rien d'autre ! Le Pokémon sera niveau 5.
Donc, rien de bien compliqué si vous connaissez déjà le givepokemon (je le redis, j'ai pas ré-expliquer, Sainior l'a très bien fait )
26/5/2011 - MAJ
Setmaptile
Spoiler
Oulahh, c'est quoi ça ? C'est simple, en fait, le setmaptile change un bloc de la map sur laquelle vous vous trouvez au moment. C'est pas dur, et c'est plutôt bien pour certains scénarios (oui, rappelez vous, [je sais plus dans quelle version] un mec creuse une grotte au fur et à mesure que vous capturez des zarbis ! On peut utiliser le setmaptile pour ce genre de choses).'---------------
#org 0x71279C
lock
setmaptile 0xB 0xE 0x4 0x0
special 0x8E
release
end
Deux nouvelles commandes :setmaptile 0xB 0xE 0x4 0x0
setmaptile lance la commande. 0xB et 0xE sont respectivement les positions X et Y du bloc à changer sur la carte où vous vous trouvez.0x4, c'est le numéro du bloc en hexa que vous voulez faire apparaître à la position donnée. Comment connaître sur numéro ? Simple, allez dans Advance Map, cliquez sur le bloc choisi et regardez en bas à gauche : "Bloc : XXX Offset : YYYYYY" est affiché. Mémorisez le numéro du bloc, c'est cette valeur que vous devez entrer dans la commande. (le nombre est déjà en hexa, vous ne changez donc rien).
0x0, c'est le numéro de comportement. (0x0, vous pouvez passer, 0x1, vous pouvez pas)
special 0x8E
Cette commande est à mettre après chaque setmaptile. En gros, elle "re-affiche l'écran", de telle sorte que le bloc changé apparaisse. Sans cette commande, seul le comportement du bloc changera, pas son image.Dans mon script, sur la position X : B et Y : E, un bloc avec une fleur s'affichera, et je pourrais passer dessus.
Voilà, on en a fini avec le setmaptile !
Ps : Je n'ai pas trouvé le moyen pour que le bloc reste changé une fois qu'on change de map. Si quelqu'un trouve un moyen, merci de me MP
28/6/2011 - MAJ
Random
Spoiler
Avant tout, je voudrai remercier Sainior qui m'a appris ça, donc merci à luiOn va apprendre à faire une commande de hasard, un tirage au sort en quelque sorte. Pour cela, nous allons utiliser la commande "ramdom". Voici un exemple de script qu'on peut faire :
'---------------
#org 0x6E41BC
lock
msgbox 0x86E42BC MSG_FACE '"Combien ?"
random 0x4
compare LASTRESULT 0x0
if 0x1 goto 0x8271029
compare LASTRESULT 0x1
if 0x1 goto 0x8271129
compare LASTRESULT 0x2
if 0x1 goto 0x8271229
compare LASTRESULT 0x3
if 0x1 goto 0x86E433C
release
end
'---------------
#org 0x271029
msgbox 0x82710A9 MSG_NORMAL '"1"
release
end
'---------------
#org 0x271129
msgbox 0x82711A9 MSG_NORMAL '"2"
release
end
'---------------
#org 0x271229
msgbox 0x82712A9 MSG_NORMAL '"3"
release
end
'---------------
#org 0x6E433C
msgbox 0x86E43BC MSG_NORMAL '"4"
release
end
'---------
' Strings
'---------
#org 0x6E42BC
= Combien ?
#org 0x2710A9
= 1
#org 0x2711A9
= 2
#org 0x2712A9
= 3
#org 0x6E43BC
= 4
C'est assez long, mais très très simplerandom 0x4
compare LASTRESULT 0x0
if 0x1 goto 0x8271029
random 0x4 est la commande principale. random lance la commande, et 0x4 est le nombre de possibilité au tirage au sort.compare LASTRESULT 0x0, 0x1, 0x2 et 0x3, vous connaissez. On compare la valeur choisie par le random. Une fois la valeur trouvée, if 0x1 goto 0x8[Offset] vous envoie sur l'offset choisi.
Ainsi, dans ce script, j'ai 1 chace sur 4 de tomber sur "1", 1 chance sur 4 de tomber de "2", 1 chance sur 4 de tomber sur "3" et 1 chance sur 4 de tomber sur "4".
Voilà, c'est tout pour le random ! Merci encore à Sainior
9/3/2012 - MAJ
Trainerbattle2, setflagtrainer & clearflagtrainer et goto
Spoiler
Un 4 en 1 ! :DCette partie va concerner, vous l'aurez compris, les combats.
Avant les explications, voici un script, Myst a donné l'idée, ce qui m'a donné l'envie de vous apprendre ces trois commandes.
'---------------
#org 0x807642
trainerbattle 0x2 0x2EF 0x0 0x88076C2 0x8807742 0x8801BBD
end
'---------------
#org 0x801BBD
settrainerflag 0x2EF
goto 0x8807642
'---------
' Strings
'---------
#org 0x8076C2
= Combat ?
#org 0x807742
= Bravo !
(Ici, je n'ai pas utilisé le cleartrainerflag, mais vous verrez que c'est le même fonctionnement que le settrainerflag)trainerbattle 0x2 0x2EF 0x0 0x88076C2 0x8807742 0x8801BBD
Le trainerbattle2 fonction exactement comme le trainerbattle simple, à une chose prêt : un offset.L'utilité ? Il permet de poursuivre un script en cas de victoire et non pas d'arrêter le script après le combat. Il est par exemple utilisé dans les arènes.
Voici la composition :
trainerbattle 0x2 0x[Numéro du dresseur] 0x0 0x8 0x8 0x8[Suite du script]
La commande commence comme le trainerbattle simple, par "trainerbattle". La différence vient ensuite : au lieu de mettre "0x0" (qui correspond à un trainerbattle simple), on met "0x2", qui correspond au trainerbattle2.Viens ensuite comme avant le "0x0" obligatoire, le pointeur vers le message d'engagement du combat et le pointeur vers le message de défaite.
Enfin, vient un troisième et dernier pointeur : le pointeur vers la suite du script. Et oui, car pour poursuivre ensuite le script, on dit au script d'aller chercher la suite quelque part !
Voici où nous amène ce pointeur :
'---------------
#org 0x801BBD
settrainerflag 0x2EF
goto 0x8807642
Ah, le voilà enfin le settrainerflag !settrainerflag 0x2EF
Pour simplement, on associe chaque dresseur à un flag. Ainsi, le dresseur 1 a le flag 1, le dresseur 459 a le flag 459, de même que le dresseur 6BF a le flag 6BF. Le flag d'un dresseur permet en quelque sorte de pouvoir le combattre. Quand vous combattez un dresseur et que vous le battez, le flag est supprimé, il est donc impossible de le combattre à nouveau.settrainerflag permet donc de réactiver le flag. Ainsi, ici, le flag 2EF sera réactivé, donc le combat du dresseur se lancera de nouveau.
goto 0x8807642
Vient maintenant le goto 0x8.Cette commande est archi simple : c'est juste un pointeur.
goto indique "va à" (vive l'anglais) et 0x8[Offset] est le pointeur où le script doit aller.
Si on regarde mon script dans l'ensemble : le combat se lance. Comme c'est un trainerbattle2, on continue à l'offset suivant. Le settrainerflag permet de réactiver le flag et de recombattre le dresseur. Le goto ordonne ensuite au script de revenir à l'offset de départ. Le combat se lance alors. Puis, on revient au second offset, on réactive le flag, on revient au premier, et ainsi de suite.
Ainsi, ce script ne se termine JAMAIS ! (Sauf si vous tombez KO). Vous pourrez combattre tant que c'est possible le dresseur.
Couplé à un random (vu dans le chapitre précédent), vous pouvez alors de cette façon combattre un nombre de dresseurs défini aléatoirement et sans s'arrêter
Pour ce qui est du cleartrainerflag, il fonctionne de la même manière que le settrainerflag, mais à l'inverse : Si vous utilisez cette commande, le dresseur qui possède le numéro de ce flag ne pourra plus être combattu.
Voilà, c'était peu de nouveautés
En cours de construction, d'autres scripts seront ajoutés d'ici peu
The New Azerty - 4 mai 2011 à 20:49
Bonne continuation !
giratino - 4 mai 2011 à 21:16
Bonne continuation !
²
Maintenant que j'ai réussi à assimiler les bases du scripting, du new est la bienvenue
Mickey` - 4 mai 2011 à 21:23
Merci
Météo ajoutée !
EDIT : Portes ajoutées.
Mickey` - 15 mai 2011 à 16:58
15/5/2011 : MÀJ, ajout des flags !
Mickey` - 20 mai 2011 à 18:09
20/5/2011 : MÀJ, ajout du countpokemon !
giratino - 20 mai 2011 à 19:09
Le "bravo, une 1ère S vous attend" m'a fait bien rire quand j'ai étudié le script. Il va m'être utile celui-mà
Mickey` - 20 mai 2011 à 20:22
En fait c'est que mon prof de français me dit souvent xD
Content de t'avoir aidé
Mickey` - 22 mai 2011 à 09:48
22/5/2011 : MÀJ, ajout du giveegg !
Mickey` - 26 mai 2011 à 21:23
26/5/2011 : MÀJ, ajout du setmaptile !
Mickey` - 28 juin 2011 à 13:44
28/6/2011 : MÀJ, ajout du random !
pokemonbonjour - 18 juillet 2011 à 10:53
sainior m'avait fait passer une liste de certains temps...
Okay, alors voilà les commandes et les valeurs :
setweather (il active le temps)
doweather (il complète la commande du haut)
Valeurs :None = 0x0
Reflected Clouds = 0x1
Normal = 0x2
Rain = 0x3
3 Snowflakes = 0x4
Thunderstorm = 0x5
Fog = 0x6
Snow = 0x7
Sandstorm = 0x8
Diagonal Fog = 0x9
Thin Fog = 0xA
Bit Dark = 0xB
Overheat = 0xC
Thunderstorm2 = 0xD
None = 0xE
Mickey` - 18 juillet 2011 à 11:59
Ha ouais, merci de m'y avoir fait penser, j'avais oublié. Je rajouterai d'ici peu avec les noms en français
pokemonbonjour - 18 juillet 2011 à 12:17
des météos?
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
pokemonbonjour - 18 juillet 2011 à 12:39
[...]26/5/2011 - MAJ
Setmaptile
Spoiler
Oulahh, c'est quoi ça ? C'est simple, en fait, le setmaptile change un bloc de la map sur laquelle vous vous trouvez au moment. C'est pas dur, et c'est plutôt bien pour certains scénarios (oui, rappelez vous, [je sais plus dans quelle version] un mec creuse une grotte au fur et à mesure que vous capturez des zarbis ! On peut utiliser le setmaptile pour ce genre de choses).'---------------
#org 0x71279C
lock
setmaptile 0xB 0xE 0x4 0x0
special 0x8E
release
end
Deux nouvelles commandes :setmaptile 0xB 0xE 0x4 0x0
setmaptile lance la commande. 0xB et 0xE sont respectivement les positions X et Y du bloc à changer sur la carte où vous vous trouvez.0x4, c'est le numéro du bloc en hexa que vous voulez faire apparaître à la position donnée. Comment connaître sur numéro ? Simple, allez dans Advance Map, cliquez sur le bloc choisi et regardez en bas à gauche : "Bloc : XXX Offset : YYYYYY" est affiché. Mémorisez le numéro du bloc, c'est cette valeur que vous devez entrer dans la commande. (le nombre est déjà en hexa, vous ne changez donc rien).
0x0, c'est le numéro de comportement. (0x0, vous pouvez passer, 0x1, vous pouvez pas)
special 0x8E
Cette commande est à mettre après chaque setmaptile. En gros, elle "re-affiche l'écran", de telle sorte que le bloc changé apparaisse. Sans cette commande, seul le comportement du bloc changera, pas son image.Dans mon script, sur la position X : B et Y : E, un bloc avec une fleur s'affichera, et je pourrais passer dessus.
Voilà, on en a fini avec le setmaptile !
Ps : Je n'ai pas trouvé le moyen pour que le bloc reste changé une fois qu'on change de map. Si quelqu'un trouve un moyen, merci de me MP
[...]
pour qu'il reste tu fait un level script...
comme ça à l'entrée sur la map, il est modifié automatiquement.
grotte métamo(emeraude)
'---------------
#org 0x1ED031
checkflag 0x864
if 0x1 call 0x81ED03B
end
'---------------
#org 0x1ED03B
setmaptile 0x2D 0x5 0x9F 0x1
setmaptile 0x2D 0x6 0xA7 0x0
return
</details>
Mickey` - 18 juillet 2011 à 13:24
Oui, mais tu vois le changement à chaque fois. D'autant plus que si tu fais un level script, tu dois t'arranger pour que le setvar présent à l'intérieur soit remis à 0 à chaque fois. Donc au final c'est pas mieux
Merci pour la liste, je la rajoute desuite.
pokemonbonjour - 18 juillet 2011 à 13:38
ah ouaip...
il faudra que je cherche
Mickey` - 9 mars 2012 à 17:22
Désolé de remonter le topic, c'est pour de la nouveauté !
Est-ce que vous voulez certains scripts en particulier ?
Je peux agrandir le tuto à la demande.
mystogan640 - 9 mars 2012 à 17:29
Moi j'ai une idée de script légèrement "fantaisiste" que je voudrais inserer en tête, mais la difficulté est au rendez vous et cela risque d'être long. Je propose ou tu préféré te concentrer sur du "basique".
Mickey` - 9 mars 2012 à 17:31
Le tuto concerne les commandes, je les explique et fais un petit script démo, après à vous de les coupler pour faire un bon scénario
mystogan640 - 9 mars 2012 à 17:35
En gros ce serai un commande pour une trainerbattle "en boucle" avec des poke aléatoires, a la fin du combat tu peux soit quitter, soit refaire un combat. Tu cerne le principe? une sorte de tour de combat ou tu peux faire du levelling sans t'ennuyer.
Mickey` - 9 mars 2012 à 18:56
Pas compliqué du tout... une simple question de random !
Mais intéressant, cela permettrait d'apprendre le trainerbattle2 et le settrainerflag en même temps, ainsi que le goto même si tout est très logique...
Je ferai ça d'ici peu
Arnikum Plus - 9 mars 2012 à 19:21
Dis Mickey, on a qu'à faire comme on avait dit, non?
Mickey` - 9 mars 2012 à 20:38
Tu peux me refaire une liste exacte s'il te plait ?
Arnikum Plus - 9 mars 2012 à 20:58
Je vais essayer:
-la fonction KEEPOPEN
-Movesprite
-Spritebehave
-playsong
Aussi,
-Comment faire disparaître un sprite par un flag.
Je pense que c'est ça.
Mickey` - 9 mars 2012 à 21:32
Oké, on verra ça d'ici peu.
Pour faire disparaître un sprite, le hidesprite est là (déjà expliqué) (le flag permet de le maintenir)
MÀJ : Ajout du trainerbattle2, settrainerflag & cleartrainerflag, et goto (4 en 1) !
mystogan640 - 9 mars 2012 à 21:33
Super, j'étudie ça tout de suite :biere:.
Mickey` - 9 mars 2012 à 21:36
Ces 3 fonctions couplées permettent de faire exactement ce que tu as dit (mais faut rajouter le random, là à toi de faire, je fais pas tout le boulot :P)
mystogan640 - 9 mars 2012 à 21:41
Ouais, t'en fais pas, maintenant que j'ai toutes les pièces du puzzle, j'ai plus qu'a les remettes dans l'ordre.
Mickey` - 9 mars 2012 à 21:43
Exactement, bon courage :win:
gearX0001 - 1 novembre 2012 à 18:32
Juste pour le giveegg voici la liste des pokémons en hexa ( dsl les noms des pokémons sont en anglais ) :
MISSINGNO 0x0
BULBASAUR 0x1
IVYSAUR 0x2
VENUSAUR 0x3
CHARMANDER 0x4
CHARMELEON 0x5
CHARIZARD 0x6
SQUIRTLE 0x7
WARTORTLE 0x8
BLASTOISE 0x9
CATERPIE 0xA
METAPOD 0xB
BUTTERFREE 0xC
WEEDLE 0xD
KAKUNA 0xE
BEEDRILL 0xF
PIDGEY 0x10
PIDGEOTTO 0x11
PIDGEOT 0x12
RATTATA 0x13
RATICATE 0x14
SPEAROW 0x15
FEAROW 0x16
EKANS 0x17
ARBOK 0x18
PIKACHU 0x19
RAICHU 0x1A
SANDSHREW 0x1B
SANDSLASH 0x1C
NIDORANF 0x1D
NIDORINA 0x1E
NIDOQUEEN 0x1F
NIDORANM 0x20
NIDORINO 0x21
NIDOKING 0x22
CLEFAIRY 0x23
CLEFABLE 0x24
VULPIX 0x25
NINETALES 0x26
JIGGLYPUFF 0x27
WIGGLYTUFF 0x28
ZUBAT 0x29
GOLBAT 0x2A
ODDISH 0x2B
GLOOM 0x2C
VILEPLUME 0x2D
PARAS 0x2E
PARASECT 0x2F
VENONAT 0x30
VENOMOTH 0x31
DIGLETT 0x32
DUGTRIO 0x33
MEOWTH 0x34
PERSIAN 0x35
PSYDUCK 0x36
GOLDUCK 0x37
MANKEY 0x38
PRIMEAPE 0x39
GROWLITHE 0x3A
ARCANINE 0x3B
POLIWAG 0x3C
POLIWHIRL 0x3D
POLIWRATH 0x3E
ABRA 0x3F
KADABRA 0x40
ALAKAZAM 0x41
MACHOP 0x42
MACHOKE 0x43
MACHAMP 0x44
BELLSPROUT 0x45
WEEPINBELL 0x46
VICTREEBEL 0x47
TENTACOOL 0x48
TENTACRUEL 0x49
GEODUDE 0x4A
GRAVELER 0x4B
GOLEM 0x4C
PONYTA 0x4D
RAPIDASH 0x4E
SLOWPOKE 0x4F
SLOWBRO 0x50
MAGNEMITE 0x51
MAGNETON 0x52
FARFETCHED 0x53
DODUO 0x54
DODRIO 0x55
SEEL 0x56
DEWGONG 0x57
GRIMER 0x58
MUK 0x59
SHELLDER 0x5A
CLOYSTER 0x5B
GASTLY 0x5C
HAUNTER 0x5D
GENGAR 0x5E
ONIX 0x5F
DROWZEE 0x60
HYPNO 0x61
KRABBY 0x62
KINGLER 0x63
VOLTORB 0x64
ELECTRODE 0x65
EXEGGCUTE 0x66
EXEGGUTOR 0x67
CUBONE 0x68
MAROWAK 0x69
HITMONLEE 0x6A
HITMONCHAN 0x6B
LICKITUNG 0x6C
KOFFING 0x6D
WEEZING 0x6E
RHYHORN 0x6F
RHYDON 0x70
CHANSEY 0x71
TANGELA 0x72
KANGASKHAN 0x73
HORSEA 0x74
SEADRA 0x75
GOLDEEN 0x76
SEAKING 0x77
STARYU 0x78
STARMIE 0x79
MRMIME 0x7A
SCYTHER 0x7B
JYNX 0x7C
ELECTABUZZ 0x7D
MAGMAR 0x7E
PINSIR 0x7F
TAUROS 0x80
MAGIKARP 0x81
GYARADOS 0x82
LAPRAS 0x83
DITTO 0x84
EEVEE 0x85
VAPOREON 0x86
JOLTEON 0x87
FLAREON 0x88
PORYGON 0x89
OMANYTE 0x8A
OMASTAR 0x8B
KABUTO 0x8C
KABUTOPS 0x8D
AERODACTYL 0x8E
SNORLAX 0x8F
ARTICUNO 0x90
ZAPDOS 0x91
MOLTRES 0x92
DRATINI 0x93
DRAGONAIR 0x94
DRAGONITE 0x95
MEWTWO 0x96
MEW 0x97
CHIKORITA 0x98
BAYLEEF 0x99
MEGANIUM 0x9A
CYNDAQUIL 0x9B
QUILAVA 0x9C
TYPHLOSION 0x9D
TOTODILE 0x9E
CROCONAW 0x9F
FERALIGATR 0xA0
SENTRET 0xA1
FURRET 0xA2
HOOTHOOT 0xA3
NOCTOWL 0xA4
LEDYBA 0xA5
LEDIAN 0xA6
SPINARAK 0xA7
ARIADOS 0xA8
CROBAT 0xA9
CHINCHOU 0xAA
LANTURN 0xAB
PICHU 0xAC
CLEFFA 0xAD
IGGLYBUFF 0xAE
TOGEPI 0xAF
TOGETIC 0xB0
NATU 0xB1
XATU 0xB2
MAREEP 0xB3
FLAAFFY 0xB4
AMPHAROS 0xB5
BELLOSSOM 0xB6
MARILL 0xB7
AZUMARILL 0xB8
SUDOWOODO 0xB9
POLITOED 0xBA
HOPPIP 0xBB
SKIPLOOM 0xBC
JUMPLUFF 0xBD
AIPOM 0xBE
SUNKERN 0xBF
SUNFLORA 0xC0
YANMA 0xC1
WOOPER 0xC2
QUAGSIRE 0xC3
ESPEON 0xC4
UMBREON 0xC5
MURKROW 0xC6
SLOWKING 0xC7
MISDREAVUS 0xC8
UNOWN 0xC9
WOBBUFFET 0xCA
GIRAFARIG 0xCB
PINECO 0xCC
FORRETRESS 0xCD
DUNSPARCE 0xCE
GLIGAR 0xCF
STEELIX 0xD0
SNUBBULL 0xD1
GRANBULL 0xD2
QWILFISH 0xD3
SCIZOR 0xD4
SHUCKLE 0xD5
HERACROSS 0xD6
SNEASEL 0xD7
TEDDIURSA 0xD8
URSARING 0xD9
SLUGMA 0xDA
MAGCARGO 0xDB
SWINUB 0xDC
PILOSWINE 0xDD
CORSOLA 0xDE
REMORAID 0xDF
OCTILLERY 0xE0
DELIBIRD 0xE1
MANTINE 0xE2
SKARMORY 0xE3
HOUNDOUR 0xE4
HOUNDOOM 0xE5
KINGDRA 0xE6
PHANPY 0xE7
DONPHAN 0xE8
PORYGON2 0xE9
STANTLER 0xEA
SMEARGLE 0xEB
TYROGUE 0xEC
HITMONTOP 0xED
SMOOCHUM 0xEE
ELEKID 0xEF
MAGBY 0xF0
MILTANK 0xF1
BLISSEY 0xF2
RAIKOU 0xF3
ENTEI 0xF4
SUICUNE 0xF5
LARVITAR 0xF6
PUPITAR 0xF7
TYRANITAR 0xF8
LUGIA 0xF9
HOOH 0xFA
CELEBI 0xFB
TREECKO 0x115
GROVYLE 0x116
SCEPTILE 0x117
TORCHIC 0x118
COMBUSKEN 0x119
BLAZIKEN 0x11A
MUDKIP 0x11B
MARSHTOMP 0x11C
SWAMPERT 0x11D
POOCHYENA 0x11E
MIGHTYENA 0x11F
ZIGZAGOON 0x120
LINOONE 0x121
WURMPLE 0x122
SILCOON 0x123
BEAUTIFLY 0x124
CASCOON 0x125
DUSTOX 0x126
LOTAD 0x127
LOMBRE 0x128
LUDICOLO 0x129
SEEDOT 0x12A
NUZLEAF 0x12B
SHIFTRY 0x12C
NINCADA 0x12D
NINJASK 0x12E
SHEDINJA 0x12F
TAILLOW 0x130
SWELLOW 0x131
SHROOMISH 0x132
BRELOOM 0x133
SPINDA 0x134
WINGULL 0x135
PELIPPER 0x136
SURSKIT 0x137
MASQUERAIN 0x138
WAILMER 0x139
WAILORD 0x13A
SKITTY 0x13B
DELCATTY 0x13C
KECLEON 0x13D
BALTOY 0x13E
CLAYDOL 0x13F
NOSEPASS 0x140
TORKOAL 0x141
SABLEYE 0x142
BARBOACH 0x143
WHISCASH 0x144
LUVDISC 0x145
CORPHISH 0x146
CRAWDAUNT 0x147
FEEBAS 0x148
MILOTIC 0x149
CARVANHA 0x14A
SHARPEDO 0x14B
TRAPINCH 0x14C
VIBRAVA 0x14D
FLYGON 0x14E
MAKUHITA 0x14F
HARIYAMA 0x150
ELECTRIKE 0x151
MANECTRIC 0x152
NUMEL 0x153
CAMERUPT 0x154
SPHEAL 0x155
SEALEO 0x156
WALREIN 0x157
CACNEA 0x158
CACTURNE 0x159
SNORUNT 0x15A
GLALIE 0x15B
LUNATONE 0x15C
SOLROCK 0x15D
AZURILL 0x15E
SPOINK 0x15F
GRUMPIG 0x160
PLUSLE 0x161
MINUN 0x162
MAWILE 0x163
MEDITITE 0x164
MEDICHAM 0x165
SWABLU 0x166
ALTARIA 0x167
WYNAUT 0x168
DUSKULL 0x169
DUSCLOPS 0x16A
ROSELIA 0x16B
SLAKOTH 0x16C
VIGOROTH 0x16D
SLAKING 0x16E
GULPIN 0x16F
SWALOT 0x170
TROPIUS 0x171
WHISMUR 0x172
LOUDRED 0x173
EXPLOUD 0x174
CLAMPERL 0x175
HUNTAIL 0x176
GOREBYSS 0x177
ABSOL 0x178
SHUPPET 0x179
BANETTE 0x17A
SEVIPER 0x17B
ZANGOOSE 0x17C
RELICANTH 0x17D
ARON 0x17E
LAIRON 0x17F
AGGRON 0x180
CASTFORM 0x181
VOLBEAT 0x182
ILLUMISE 0x183
LILEEP 0x184
CRADILY 0x185
ANORITH 0x186
ARMALDO 0x187
RALTS 0x188
KIRLIA 0x189
GARDEVOIR 0x18A
BAGON 0x18B
SHELGON 0x18C
SALAMENCE 0x18D
BELDUM 0x18E
METANG 0x18F
METAGROSS 0x190
REGIROCK 0x191
REGICE 0x192
REGISTEEL 0x193
KYOGRE 0x194
GROUDON 0x195
RAYQUAZA 0x196
LATIAS 0x197
LATIOS 0x198
JIRACHI 0x199
DEOXYS 0x19A
CHIMECHO 0x19B
Ciel étoilé - 1 novembre 2012 à 18:40
Tout le monde sait utiliser google.
Yoshi 59 - 1 novembre 2012 à 18:43
Et en plus , il me semble qu'elle était présente dans le tuto scripting de Sainior ....
(avec bien d'autres en plus)
darklives - 7 février 2013 à 15:43
> Et en plus , il me semble qu'elle était présente dans le tuto scripting de Sainior ....
(avec bien d'autres en plus)
Bon, celle-ci a l'avantage d'être déjà en hex, mais tout le monde ne connaît pas les noms US des pomon, donc je ne sais pas si ça vaut vraiment le coup :/
'Fin bref, ça peut toujours être utile, mais ce serait kool entre balises
Mickey` - 7 février 2013 à 17:58
Donc pas tellement utile. Mais un UP pour ça l'est encore moins.