Ce cours consistera à créer un CTSS ( Custom Title Screen Systeme = écran titre)
Je vous invite déjà à prendre connaissance de la démo, pour que vous ayez en tête l'animation
Ça vous aidera surement à comprendre.
Et je vous invite aussi
à boire l’apéro à récupérer les images dans la démo ainsi que le script skip tittle de Wortana
- Spoiler:
Dans le script vous avez ses 3 lignes dans les portions de code.
MAP_ID = 2
START_XY = [8,7]
START_MEMBER = [1,2,3]
Map id: C'est le numéro de la map du départ.
Start xy: C'est la position de départ du héros.
Start Member C'est le numéros id du/des héros dans cette séquence. (Qui revient à la normal après la menu afficher).
Demo : http://www.mediafire.com/file/dxnf0e4dzw1px6x/CTSS.exe
Voici la première page de l’évent.
Alors je vais expliquer grossièrement le fonctionnement.
un évent sur 2 page :
Une page pour l'affichage
Une page pour le curseur
Et un évent commun pour rafraichir un peut tout ça ( non pas avec de l'eau )
Event page 1
Affichage d'image
- Spoiler:
Maintenant je vais expliquer ce qu'il s'y passe ligne par ligne.
"Modifier l'accès au menu : Désactivé"On désactive donc le menu pour éviter que le joueur se sirote une potion pendant l'écran titre. ( ou autre chose qui sait)
Ensuite l'affichage d'image.
Et oui, le secret du CTSS c'est les images rien de moins.
Afficher image : 10, 'fondnoir' opacité 255Ici on affiche une image noir ( ou blanc bleu etc, c'est vous qui voyez)
elle va nous permettre de nous faire un petit fondu pour nous laisser voir notre CTSS
Afficher l'image : 1, 'fond' opacité 255Ici on affiche l'image qui sera en fond. le fond ici est l'image rouge.
dessus on va y superposer tout ce qui va suivre.
Afficher l'image : 2, 'tuto', opacité 0
Afficher l'image : 3, 'trop moche',(300%,300%), opacité 0 <= noter que j'ai zoomé l'image à 300% 300%.
pour comprendre regarder l’apparition de cette image et regarder la suite
C'est deux images doivent normalement etre des images de décoration / illustration.
Mais j'allais pas faire un joli truc pour vous !!
Afficher l'image : 4, 'Nouvellepartie', opacité 0
Afficher l'image : 5, 'charger', opacité 0
Afficher l'image : 6, 'Quitter', opacité 0C'est 3 images sont (comme vous l'avez constatez ) les images de "nouvelle partie", "charger" et "quitter"
Remarquez que c'est 5 dernières image sont en opacité 0
Et oui, pour éviter qu'elle ne s'affiche tout de suite.
Maintenant que tout les images sont "afficher" on va pouvoir commencer l'animation.
alors :
On va commencer par faire disparaitre cette image noir pour nous laissez voir le fond ( rouge)
Donc :
Déplacer image : 10, opacité 0 en 60 frames attendre la fin.On fait une petite attente de 15 frames.
Ensuite on va faire apparaitre notre image 2
Déplacer image : 2, opacité 255 en 60 frames attendre la fin.On fait une petite attente de 20 frames.
On fait maintenant apparaitre l'image 3
Déplacer image : 3, opacité 255 en 120 frames (100%,100%) attendre la fin. ( la on remet la taille normale de l'image pour donner l'impression que l'image était parti faire un tour)
Ensuite j'ai mis un effet sonore, mais libre à vous de ne pas en mettre, mais ca donne un petit plus.
un petit flash de l'écran pour pousser un peu plus l'effet ^^
et une attente de 30 frames.
Ensuite je lance un BGM qui sera la musique de l'écran titre.
Bien sur vous pouvez la lancer à n'importe quel moment.
Bon, jusque là il n'y a pas de soucis, c'était relativement simple, juste quelques affichage d'image rien de bien sorcier.
Maintenant nous allons faire apparaitre les images 4-5 et 6, mais en plus ça on en plus rajouter
les images 7 8 et 9, qui seront en fait la surbrillance lors du passage du curseur.
Donc j'ai fais ça comme ceci :
Déplacer image : 4, opacité 255, 15 frames
Afficher une image : 7, 'Nouvellepartieselectioné', opacité 0attendre 15 frames.
Donc on fait apparaitre l'image nouvelle partie et on affiche l'image nouvelle partie en opacité 0
Donc on prépare les images de séléction.
Et on fait ca pour les deux suivantes
Déplacer image : 5, opacité 255, 15 frames
Afficher une image : 8, 'chargerselectionné', opacité 0attendre 15 frames.Déplacer image : 6, opacité 255, 15 frames
Afficher une image : 9, 'Quitterselectionné', opacité 0attendre 15 frames.On appelle
l’événement commun Refresh CTSSEt on active
l'interrupteur local A.
Donc l'interrupteur local A nous permet d’accéder à la 2eme page.
Mais avant de continuer, je vais me tourner vers cet événement commun qui va être très important pour la suite.
Event Commun
- Spoiler:
Alors, l’évent commun va en fait nous servir à l'affichage de la sélection
et oui RM c'est un peu une chèvre faut tout lui dire ...
Donc va commencer par créer nos variable.
Pour l’évent commun une seule sera utile.
Donc créer une condition
Si la variable [0001:cursor] == 0action
Fin de condition.le curseur aura 3 actions
Cursor == 0 => Nouvelle partie
Cursor == 1 => Charger partie
Cursor == 2 => Quitter
Vous pouvez bien sur en faire plus, ca dépendera du nombre d'option possible.
Bien j'explique les conditions
Si la variable [0001:cursor] == 0 ( si le curseur est sur "nouvelle partie" )
Déplacer image 7 opacité 255 ( afficher l'image 7 "nouvelle partie sélectionné" )
Déplacer image 8 opacité 0 (L'image 8 et 9 reste en opacité 0 car Quitter et charger ne sont pas selectionné)
Déplacer image 9 opacité 0Fin de condition.Donc la sélection de nouvelle partie est terminer.
Pour charger et quitter c'est pareil sauf qu'il faut changer l'opacité de l'image correspondant
Si la variable [0001:cursor] == 1Déplacer image 7 opacité 0 Charger partie
Déplacer image 8 opacité 255Déplacer image 9 opacité 0Fin de condition.Si la variable [0001:cursor] == 2Déplacer image 7 opacité 0 Quitter le jeu
Déplacer image 8 opacité 0Déplacer image 9 opacité 255Fin de condition.et c'est tout pour l’évent commun.
Si certaine chose ne sont pas compris au niveau du curseur, peut être que la suite vous aidera.
Event page 1
Création du curseur
Et maintenant, attaquons nous à la derniere partie de notre CTSS
la page numéro 2 !
Bon à partir de maintenant, si vous ne comprenez rien au variable, je vous conseil d’arrêter là et de comprendre leur utilisation. ( j'en ferais peut être un cours si personne ne le fait )
- Spoiler:
Alors nous allons maintenant créer notre curseur et y associer des touches.
Maintenant, nous allons faire comprendre à RM que la touche bas est égale à la variable
touche pressé == 1
et pareil pour les touches suivantes.
j'vous conseil d'être attentif sinon vous allez être perdu.
Condition : Si la touche Bas est pressée ( pour naviguer dans l'écran titre )
Appeler script : Sound.play_cursor ( pour émettre le son du curseur lors de l'appuie des touches.
Opération : variable [002:touchepressé] = 1 ( donc quand la variable touche pressé est égale à 1 ca veut dire que c'est la touche bas qui a été pressé)
Opération : variable [001:cursor] =+ 1 ( on rajoute +1 à la variable cursor)
Cette partie là est vachement importante, pensez à bien relire si vous n'avez pas compris.
Ensuite dans cette même condition on rajoute une seconde condition qui va permettre de créer une sorte de boucle ( exemple : Lorsque vous etes sur Quitter, en réapuyant sur bas ca retourne sur nouvelle partie)
Condition : Si la touche Bas est presséeAppeler script : Sound.play_cursor
Opération : variable [002:touchepressé] = 1Opération : variable [001:cursor] =+ 1 Condition : si [001:cursor] > 2 ( ce qui veut dire que au dessus de 2 il n'y a plus rien )
Opération : Variable [001:cursor] = 0 ( donc si on va au delà de 2 le curseur devient egale à 0 et 0 = nouvelle partie)
Appeler evenement commun "refreshCTSS". (on rafraichis avec l'event commun pour eviter d'éventuel bug d'affichage )
fin de condition
Appeler evenement commun "refreshCTSS".
fin de conditionEnsuite vous faite pareil pour la touche haut
sauf que les valeurs vont changer.
Condition : Si la touche Haut est presséeAppeler script : Sound.play_cursor
Opération : variable [002:touchepressé] = 2 ( donc quand la variable touche pressé est égale à 2 ca veut dire que c'est la touche haut qui a été pressé)
Opération : variable [001:cursor] =- 1 ( on retire 1 à la variable cursor )
Condition : si [001:cursor] > 0 ( ce qui veut dire que au dessous de 0 il n'y a plus rien )
Opération : Variable [001:cursor] = 2 ( donc si on va au dessous de 0 le curseur devient egale à 2 et 2 = Quitter)
Appeler evenement commun "refreshCTSS". (on rafraichis encore avec l'event commun pour eviter d'éventuel bug d'affichage )
fin de condition
Appeler evenement commun "refreshCTSS".
fin de conditionVoilà votre curseur est terminé.
Maintenant il faut pouvoir lancer une nouvelle partie et en charger une.
Donc vous allez faire une 3eme condition ( un peu plus chiante )
NOUVELLE PARTIE :
Condition : Si la touche C est pressée ( la touche est égale à la touche Entrée pour RM )
Opération variable [002:touchepressée] = 3 ( pareil que la touche bas et haut quand touche pressée est = 3 c'est égale à la touche Entrée pour RM )
Condition : Si la variable [001:cursor] = 0 ( si la variable est égale à nouvelle partie)
Appeler script : Sound.play_decision ( le son de validation)
Graphics.frame_count = 0 ( cette ligne permet de remettre votre temps de jeu à 0.)
Arreter BGM : 7 secondes ( on arrete la musique de l'écran titre en fondu )
deplacer image : 10 fondnoir opacité 255, 170 frames attendre la fin ( on affiche l'image fondnoir en fondu)
Effacer image : 1
Effacer image : 2
Effacer image : 3
Effacer image : 4
Effacer image : 5 (Et on efface toute les autres images)
Effacer image : 6
Effacer image : 7
Effacer image : 8
Effacer image : 9Téléporter l'équipe : [002:Mapdépart], (X,Y) (on téléporte le héros sur la map de commencement de votre jeu)
fin de conditionVoilà vous pouvez dorénavant lancer une nouvelle partie
CHARGER PARTIE
Condition : Si variable [001:cursor] == 1 ( si la variable est égale à Charger partie)
Appeller script : @continue_enabled = (Dir.glob('Save*.rvdata').size > 0) ( la il cherche le fichier save.rvdata je suppose ... ouai la par contre j'passe pour un guignole)
: if @continue_enabled (si une partie est sauvegardé)
: Sound.play_decision ( jouer son de validation )
: $scene = Scene_File.new(false, false, true) ( ouvrir la fenetre de chargement de partie)
: else ( sinon )
: Sound.play_buzzer ( jouer son de "nontapasdepartiechargé" ouai j'ai pas trouvé le mot adéquate ... )
: end ( fin de condition )
Fin de conditionVoilà pour le charger partie
QUITTER PARTIE
Condition : si variable [001:cursor] == 2déplacer image 10, 'fondnoir',opacité 255, 180 framesAppeler script : Sound.play_decision ( son de validation )
Audio.bgm_fade(800) ( fait disparaitre la musique d'écran titre)
Audio.bgs_fade(800) ( fait disparaitre le BGS si il y en a.)
$scene = nil ( quitte le jeu)
Fin de conditionVoilà pour Quitter et vous avez finis votre CTSS
Mais quand il y en a plus il y en a encore
On va finir ce CTSS par une "sécurité".
Et oui, si on laisse tel quel le curseur va foiré lamentablement.
Essayez vous verrez
donc on va rajouter ceci tout à la fin :
Condition : si variable [002:touchepressée] != 0
boucle
condition : si variable [002:touchepressée] == 1
Condition : si la touche bas est pressée
>
Sinon
sortir de la boucle
fin de condition
fin de condition
condition : si variable [002:touchepressée] == 2
Condition : si la touche haut est pressée
>
Sinon
sortir de la boucle
fin de condition
fin de condition
condition : si variable [002:touchepressée] == 3
Condition : si la touche C est pressée
>
Sinon
sortir de la boucle
fin de condition
fin de conditionattendre 1 frame fin de boucleattendre 1 frame fin de conditionattendre 1 framePour cette dernière partie, je ne sais pas vraiment comment vous expliquer le fonctionnement, mais faite le test avec et sans et ça vous dira tout
Bon eh bien ... j'ai mal au doigts moi :/
Si vous avez des questions, posez les à la suite.
Si vous avez des bugs lors de la conception de votre CTSS envoyez les moi par MP.
Aller bon travail ! =)