Logiciels & ROM Pokemon

Les Scripts Spéciaux

Salut à vous tous !

Ce tuto a pour but de regrouper et d'expliquer certains scripts dont on a pas forcément l'idée d'utiliser et qui pourtant pourraient être bien utiles.
Je tiens à préciser que vous devez avoir la base du scripting pour comprendre ce que je vais vous expliquer, donc direction le tuto d'apprentissage au scripting si vous n'avez jamais scripté.

Le Braille


Pour commencer, je vais vous apprendre à utiliser un script inatendu.
Qui n'a jamais rêvé de mettre du piment dans sa hack ? Des énigmes incroyables à résoudre? Avec des messages codés?
C'est ce qui m'amène aujourd'hui à vous apprendre à effectuer le script du braille ! Le braille avait été utilisé dans RF/VF en 2004 pour l'énigme du trou percé. Vous vous en souvenez ?

Bien, voici le code :

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


'---------
' Braille
'---------
#org 0x[offset2]
#braille [**********]


Maintenant, décortiquons tout ça !


  • D'abord on déclare l'offset :
  • #org 0x[offset1]


  • Puis on "lock" les mouvements :
  • lockall


    Jusque là, rien de nouveau. Mais vient ensuite une fonction "braille" avec un offset qui repointe vers le contenu de cette fonction.

    braille 0x8[offset2]


    C'est donc cela la fonction "braille".

    Maintenant, concernant le contenu de cette fonction "braille",

    '---------
    ' Braille
    '---------


    On a, bien sûr, l'offset pointé,

    #org 0x[offset2]


    Puis enfin, le contenu.

    #braille [**********]


    À la place du "[**********]" vous pouvez saisir votre texte braille.
    C'est tout ? Eh oui ! Il suffit juste d'écrire ce que vous voulez en majuscules, cool non ?

    Voici un exemple de braille simple :

    '---------------
    #org 0x1641AE
    lockall
    braille 0x81A7CB1
    waitkeypress
    releaseall
    end


    '---------
    ' Braille
    '---------
    #org 0x1A7CB1
    #braille HELLO


    Par contre, si vous souhaitez assembler un texte un peu plus long, la tâche se complique.
    Il faut altérer les codes, mais je vais me renseigner sur ce sujet car je ne comprends pas entièrement son fonctionnement.

    Pour les plus avancés, vous pouvez coupler le braille avec vos connaissances pour faire de magnifiques casse-têtes et autre énigmes. Voici un script qui vous donnera des idées :

    '---------------
    #org 0x[offset/A]
    lockall
    checkflag 0x2E3
    if 0x1 goto 0x8[offset/B]
    msgbox 0x8[offset1] MSG_YESNO
    compare LASTRESULT 0x0
    if 0x1 goto 0x8[offset/C]
    msgbox 0x8[offset2] MSG_KEEPOPEN
    braille 0x8[offset3]
    waitkeypress
    releaseall
    end

    '---------------
    #org 0x[offset/B]
    msgbox 0x8[offset4]
    releaseall
    end

    '---------------
    #org 0x[offset/C]
    msgbox 0x8[offset5]
    releaseall
    end


    '---------
    ' Strings
    '---------
    #org 0x[offset1]
    = La porte ne s'ouvre pas. L'examiner de plus près?

    #org 0x18B91C
    = En s'approchant plus près, on peut voir des écritaux sur la porte.

    #org 0x[offset4]
    = C'est ouvert!

    #org 0x[offset5]
    = [player] n'est qu'une pourriture qui pige rien au braille.


    '---------
    ' Braille
    '---------
    #org 0x[offset3]
    #braille COUPE


    Ce script est tiré de l'énigme du trou percé. C'est parfait pour mettre à l'épreuve le joueur avant de rentrer dans une grotte, manoir ou autre.
    Je vous résume ce qui se passe : tout d'abord le script interroge le player s'il veut s'approcher de la porte. Si non, le player se fait pourrir et le script se termine, si oui, le script apprend au player qu'il est écrit quelque chose et le braille est déclenché. Si le joueur a compris ce qu'il est écrit (coupe, naturellement), celui-ci n'a qu'à utiliser la technique attendue, et... magie ! Le script se déclenche et un texte apparaît disant que la porte est ouverte. Et elle l'est effectivement, ingénieux n'est-ce pas ?

    Vous pouvez ainsi remarquer que ce genre de script, utilisé intelligemment, n'est pas si inutile finalement.

    Voilà, s'en est fini avec le braille ! Ouf ! Passons maintenant à autre chose.

    Le Move Camera


    Bien, on va s'attaquer à un applymovement. Applymovement !? Mais on connais déjà ça ! Nan mais pas n'importe lequel, le fameux mais peu connu "Move Camera" !
    Waaa, keskessékessa ! Un peu d'anglais enfin ! Cela signifie, bouger la caméra. Et ça s'utilise comme un vulgaire applymovement !

    Allez, voilà le code :

    '---------------
    #org 0x[offset1]
    applymovement MOVE_CAMERA 0x8[offset2]
    waitmovement 0x0
    release
    end



    '-----------
    ' Movement
    '-----------
    #org 0x[offset2]
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0xFE 'End of Movements


    Comme vous l'avez remarqué, ça n'a rien de bien différent avec l'applymovement dont vous aviez l'habitude. Sauf qu'au lieu de déclarer le personnage qui se déplace, vous indiquez la camera par la fonction "MOVE_CAMERA". Encore une fois, cela peut vous sembler inutile, ben pas tant que ça finalement...

    Un petit exemple :

    '---------------
    #org 0x[offset/A]
    msgbox 0x8[offset1] MSG_NORMAL
    applymovement MOVE_CAMERA 0x8[offset2]
    waitmovement 0x0
    release
    end


    '---------
    'Strings
    '---------
    #org 0x[offset1]
    = Regarde ! Là haut!\pUn Pokémon Légendaire !!!


    '-----------
    ' Movement
    '-----------
    #org 0x[offset2]
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0x9 'Step Up (Normal)
    #raw 0xFE 'End of Movements


    Alors, pas mal pour votre scénario finalement hein ? Ça peut servir !

    Alien Invasion


    Je vais désormais vous apprendre un script que vous ne connaissez pas, c'est impossible, puisqu'il n'a jamais été utilisé. Alors que fait-il dans un jeu Pokémon ? Eh bien on n'en sait rien.

    Tout d'abord, qu'est-ce que c'est que ce script ? Ce petit script n'est en fait qu'un vulgaire spécial. Et oui, rien de bien compliqué à réaliser, son numéro est le "6A".

    D'accord, ok, mais il sert à quoi ce spécial ? Ce script fait apparaître (tenez vous bien) un message très bizarre suivi d'un son d'extraterrestre ! Je ne vous fais pas de blague, si si ça existe ! Voici le code :


    '---------------
    #org 0x[offset]
    special 0x6A
    end

    Et oui, je vous l'avais dit, rien de bien compliqué ! Je ne le décortique pas, vous êtes sensé savoir ce qu'est un spécial.
    Bien, testez le code et vous verrez, ça marche ! Mais alors où est l'utilité de ce code ? Ma foi vous pourrez vous en servir lors d'une animation dans votre scénario, par exemple : "Il y eu un tremblement de terre, le Rival et moi-même étions affolé, et c'est alors que nous entendîmes des sons bizarres..."
    Cela peut-être pas mal pour votre jeu, n'est-ce pas ?

    Distributeur De Boissons


    Dans cette dernière partie, je vais vous apprendre à faire un distributeur de boissons. Et je vous le dis, c'est bien plus compliqué que ce que vous croyez : car c'est un script de 115 lignes ! Heureusement je suis là pour vous passer ce script :


    '---------------
    #org 0x16C05C
    lockall
    preparemsg 0x8195554 '"Un distributeur! Que choisir?"
    waitmsg
    showmoney 0x0 0x0 0x0
    goto 0x816C06D

    '---------------
    #org 0x16C06D
    multichoice 0xC 0x0 0x1A 0x0
    copyvar 0x4001 LASTRESULT
    copyvar 0x8000 0x4001
    compare 0x8000 0x0
    if 0x1 goto 0x816C0AB
    compare 0x8000 0x1
    if 0x1 goto 0x816C0BC
    compare 0x8000 0x2
    if 0x1 goto 0x816C0CD
    msgbox 0x81955B0 MSG_KEEPOPEN '"Pas soif!"
    goto 0x816C175

    '---------------
    #org 0x16C0AB
    setvar 0x4000 0x1A
    checkmoney 0xC8 0x0
    goto 0x816C0F3

    '---------------
    #org 0x16C0BC
    setvar 0x4000 0x1B
    checkmoney 0x12C 0x0
    goto 0x816C0F3

    '---------------
    #org 0x16C0CD
    setvar 0x4000 0x1C
    checkmoney 0x15E 0x0
    goto 0x816C0F3

    '---------------
    #org 0x16C175
    hidemoney 0x0 0x0
    releaseall
    end

    '---------------
    #org 0x16C0F3
    compare LASTRESULT 0x0
    if 0x1 goto 0x816C159
    checkitemroom 0x4000 0x1
    compare LASTRESULT 0x0
    if 0x1 goto 0x816C167
    compare 0x4001 0x0
    if 0x1 call 0x816C0DE
    compare 0x4001 0x1
    if 0x1 call 0x816C0E5
    compare 0x4001 0x2
    if 0x1 call 0x816C0EC
    updatemoney 0x0 0x0 0x0
    bufferitem 0x0 0x4000
    sound 0x63
    msgbox 0x819558C MSG_KEEPOPEN '"Et hop! [buffer1]!"
    additem 0x4000 0x1
    goto 0x816C14D

    '---------------
    #org 0x16C159
    msgbox 0x8195572 MSG_KEEPOPEN '"Oups! Pas assez d'argent!"
    goto 0x816C175

    '---------------
    #org 0x16C167
    msgbox 0x8195598 MSG_KEEPOPEN '"L'inventaire est plein!"
    goto 0x816C175

    '---------------
    #org 0x16C0DE
    paymoney 0xC8 0x0
    return

    '---------------
    #org 0x16C0E5
    paymoney 0x12C 0x0
    return

    '---------------
    #org 0x16C0EC
    paymoney 0x15E 0x0
    return

    '---------------
    #org 0x16C14D
    preparemsg 0x8195554 '"Un distributeur! Que choisir?"
    waitmsg
    goto 0x816C06D


    '---------
    ' Strings
    '---------
    #org 0x195554
    = Un distributeur! Que choisir?

    #org 0x1955B0
    = Pas soif!

    #org 0x19558C
    = Et hop! [buffer1]!

    #org 0x195572
    = Oups! Pas assez d'argent!

    #org 0x195598
    = L'inventaire est plein!

    Ce script n'est qu'une longue suite de conditions : "SI blablabla, ALORS blablabla..."
    C'est donc un code compliqué, dont je vous ferais l'honneur de ne pas expliquer et détailler. Soyez heureux, je le partage avec vous !



    Ça y est, on en a fini !
    N'hésitez pas à me pointer du doigt les éventuelles erreurs que j'aurais laissé derrière moi.
    À vous de travailler maintenant ! Laissez aller votre imagination, vous trouverez bien des idées fabuleuses à mettre en œuvre !


    Par Flow'

    Par Loris