[TUTO] [GBA] Apprendre à Scripter en Static - 2

Pages: [1] 2

Mickey`

  • Membre
  • 2746 posts
04 mai 2011, 19:53
Je prends la relève (autorisation de Sainior) :)

Avant tout, allez lire le premier tuto de Sainior :
~~> http://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 difficile ;)

setweather 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 '"Dommage !"
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 ;D)

          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 à lui ;)

On 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 simple ;)

random 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 ! :D
Cette 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[Message avant combat] 0x8[Message défaite] 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 ;)
« Modifié: 09 mars 2012, 21:30 par Mickey` »

The New Azerty

  • Membre
  • 2597 posts
04 mai 2011, 20:49

  Bonne continuation !

Light-Angel

  • Membre
  • 1610 posts
04 mai 2011, 21:16

  Bonne continuation !

²

Maintenant que j'ai réussi à assimiler les bases du scripting, du new est la bienvenue

Mickey`

  • Membre
  • 2746 posts
04 mai 2011, 21:23
Merci ;)

Météo ajoutée !

EDIT : Portes ajoutées.
« Modifié: 04 mai 2011, 21:38 par Mickey` »

Mickey`

  • Membre
  • 2746 posts
15 mai 2011, 16:58
15/5/2011 : MÀJ, ajout des flags ! ;)

Mickey`

  • Membre
  • 2746 posts
20 mai 2011, 18:09
20/5/2011 : MÀJ, ajout du countpokemon ! ;)

Light-Angel

  • Membre
  • 1610 posts
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`

  • Membre
  • 2746 posts
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`

  • Membre
  • 2746 posts
22 mai 2011, 09:48
22/5/2011 : MÀJ, ajout du giveegg ! ;)

Mickey`

  • Membre
  • 2746 posts
26 mai 2011, 21:23
26/5/2011 : MÀJ, ajout du setmaptile ! :)

Mickey`

  • Membre
  • 2746 posts
28 juin 2011, 13:44
28/6/2011 : MÀJ, ajout du random !

pokemonbonjour

  • Membre
  • 719 posts
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`

  • Membre
  • 2746 posts
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

  • Membre
  • 719 posts
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

  • Membre
  • 719 posts
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
« Modifié: 18 juillet 2011, 12:40 par pokemonbonjour »

Mickey`

  • Membre
  • 2746 posts
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

  • Membre
  • 719 posts
18 juillet 2011, 13:38
ah ouaip...

il faudra que je cherche

Mickey`

  • Membre
  • 2746 posts
09 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.

Myst

  • Membre
  • 1870 posts
09 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`

  • Membre
  • 2746 posts
09 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 :)

Myst

  • Membre
  • 1870 posts
09 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`

  • Membre
  • 2746 posts
09 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 :)

Arnik

  • Membre
  • 1812 posts
09 mars 2012, 19:21
Dis Mickey, on a qu'à faire comme on avait dit, non?

Mickey`

  • Membre
  • 2746 posts
09 mars 2012, 20:38
Tu peux me refaire une liste exacte s'il te plait ? :)

Arnik

  • Membre
  • 1812 posts
09 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`

  • Membre
  • 2746 posts
09 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) !

Myst

  • Membre
  • 1870 posts
09 mars 2012, 21:33
Super, j’étudie ça tout de suite :biere:.

Mickey`

  • Membre
  • 2746 posts
09 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)

Myst

  • Membre
  • 1870 posts
09 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`

  • Membre
  • 2746 posts
09 mars 2012, 21:43
Exactement, bon courage :win:

Pages: [1] 2    En haut ↑