AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

Partagez
 

 Fusion/Merge des scripts écrans titre (med-exp)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 41
Inscrit le : 26/05/2008
Messages : 2360

Fusion/Merge des scripts écrans titre (med-exp) Empty
MessageSujet: Fusion/Merge des scripts écrans titre (med-exp)   Fusion/Merge des scripts écrans titre (med-exp) Icon_minitimeMar 15 Juil 2008 - 15:51

Nom du tutoriel : Fusion / Merge des scripts pour les écrans titre.

Niveau du tutoriel : Médium à Expert (n'essayez pas ça seul si vous n'avez pas des bases en scripting)

Notre objectif : Probablement la pire gaffe de ma vie... Je vais essayer de vous expliquer comment prendre deux scripts ou plus de surcharge pour que vous utilisiez les fonctionnalités que vous voulez des deux Scripts. Vous pourrez donc améliorer votre script et avoir une version personnalisé et probablement unique de menu.

Description du tutoriel : Ça dépends bien de ce que vous voulez fusionner. Pour ce tutoriel, je prendrai 3 scripts de surcharge de Scene_Title. C'est trois scripts sont sur le forum: [url="https://rpg-maker-vx.bbactif.com/partage-de-scripts-f24/jukebox-t1167.htm"]JukeBox[/url], [url="https://rpg-maker-vx.bbactif.com/partage-de-scripts-f24/ecran-titre-customisable-a-l-infini-t1107.htm"]Customizer[/url] et [url="https://rpg-maker-vx.bbactif.com/partage-de-scripts-f24/mettre-une-intro-avant-l-ecran-titre-t932.htm"]PréIntro[/url]. Vous aurez besoin de l'éditeur de script et de savoir ce que vous voulez exactement faire avec votre script. Puisque vous allez utiliser Customizer, je vous suggère de prendre un des skins se trouvant dans la section des [url="https://rpg-maker-vx.bbactif.com/les-costums-f52/"]Costums[/url]. Un minimum de connaissance en script ne serait pas mal si vous voulez faire la même chose avec d'autre script, mais pour faire ce tuto, vous devriez être en mesure de tout faire par vous même...

Tutoriel : Comme pour le tuto de KGC, je vais faire mon possible pour expliquer le mieux possible car des screens autre que pour le résultat final ne servirait à rien. C'est un tutoriel de Scripting.

Bon avant de faire quoi que ce soit, prenez une grande inspiration et soiyez relaxe sinon vous voudrez jetter votre ordinateur par la fenêtre...

Suggestion: Fusion/Merge des scripts écrans titre (med-exp) 296962 pour ne pas faire Fusion/Merge des scripts écrans titre (med-exp) 80245 . Pas de Fusion/Merge des scripts écrans titre (med-exp) 694892 .

Si vous n'y arrivez pas du premier coup, ne perdez pas courrage... Moi, j'ai des diplômes Fusion/Merge des scripts écrans titre (med-exp) 144542 dans ce domaine...

Bon ok, vous êtes prêts... C'est parti...

Premièrement, downloader les scripts que vous voulez fusionner et mettez les dans votre Editeur de script... Je vous suggère même de vous faire une section spéciale ou deux pour séparer vos scripts.... COMMENT ON FAIT ÇA??? Pas de panique, je vais tout expliquer, j'ai même un screen pour vous mes chanceux... Donc vous allez entre la section qui a le main (les section sont les titre qui commences par des triangles si vous avez la version japonaise des scripts). Donc juste avant la section du Main, vous allez insérer deux espaces blancs. Vous retourner sur le triangle de la section main et vous copier le nom (pour obtenir le triangle) et vous coller ce nom dans le 2e espace avant cette section. Vous garder que le triangle et vous écrivez le nom que vous voulez... Dans ce cas, j'ai choisi de l'appeler fusion. Normalement, vous n'avez que la section Material et Main, mais mon projet comprends beaucoup de script et j'utilise cet environnement pour les scripts que je retravaille pour le forum... C'est pour ça que j'ai beaucoup de nouvelles sections. Razz

Une image vaut mille mots:
Spoiler:

Une fois que celà est fait, vous pouvez recommencer pour avoir les script avant fusion et après fusion. Je suggère fortement de conserver vos originaux et de ne pas les modifier directement, ainsi, si vous faites une erreur, c'est plus facile si vous avez encore les originaux que de tenter de rammener le script à son état d'origine. (Moi, comme j'ai déjà d'autre section, je n'en rajoute pas d'autre, mais vous voyez le principe). Maintenant, placer vos scripts dans ces nouvelles sections... (pour une question d'esthétique laisser toujours une ligne blanche entre les sections quand vous insérer des scripts dans une section...) Donc, insérez vous un nouveau script dans votre toute nouvelle section Fusion. Appelez-le Mon_Title_Fusion. Ce nom n'a aucune espèce d'importance, il va juste vous servir à le retrouver si vous en fusionnez d'autre (les menu de sauvegarde ou les menus du jeu par exemples).

Vous devriez donc avoir quelque chose qui ressemble à ça :
▼ Fusion
Mon_Title_Fusion

Bon. Rien n'a encore été fait... Je sais... C'est maintenant que le fun commence. Ceux qui ont déjà suivit mes tutoriel de scripting vont savoir de quoi je parle. Pour les autres, un fait important à savoir. Lorsqu'on surcharge une méthode (surcharge = on réécrit sa définition) seul la dernière définition rencontrée est conservée. Puisqu'on ne prendra que les méthodes qui nous intéresse dans chaque script, il est fortement recommendé de conserver le script Scene_Title original à sa places dans les ressources de jeu car ce ne sont pas toutes les méthode de cette classe qui seront surchargée. Seul les méthodes surchargées seront modifié, les autres resteront tel quel, et c'est ce que nous voulons. Disons que vous voulez afficher le JukeBox en premier... Il est primordial que vous trouviez ce qui est différent par rapport à Scene_Title car on ne veut pas écrire de chose en double pour rien et surtout, on ne veut pas écrire des chose en double dans notre script sinon la fusion ne fonctionnera pas. Dans le cas de JukeBox il s'agit uniquement de update et create_command_window. Dans votre nouveau script, commencer par dire que vous aller surcharger les fonctionnalité de Scene_Title en inscrivant :
Code:
class Scene_Title < Scene_Base

end
Tous le code que vous aller fusionner devra se situer dans les ligne entre class et end.

Donc si vous copiez les deux méthodes (update et create_command_window) vous avez ce qu'il faut pour afficher un menu comme vous voulez. Voyez comment JukeBox est inséré dans le menu. Si vous voulez ajouter un menu Extra à la fin, vous n'avez qu'à immiter le JukeBox.

Ok la partie facile est passé, maintenant, regardons pour ajouter PréIntro. PréIntro a des définitions qui précède class Scene_Title. Faites la même chose... Coller ce code avant class Scene_Title comme ceci.
Code:
$PRE_START_DEF = false #true = intro avant écrant titre false = menu en commencant
$PRE_START_MAP = 1 #index de la map à afficher comme intro
$PRE_START_WIN = $PRE_START_DEF

class Window_Command < Window_Selectable
    def get_height
    return (@item_max.to_i * 32)
  end
end

class Scene_Title < Scene_Base
#{...}
end
Étourdi Je vous donnerai le code résultant à la fin du tutoriel... Ne vous inquiétez pas.

Bon remarquez, Préintro redéfini lui aussi update et create_command_window. Il les redéfini car ce script élimine l'apparission de Continuer si ce dernier n'est pas nécessaire. Copier ces méthode avant leur équivalent dans votre version fusionnée. Vous devriez avoir quelque chose comme :
Code:
def update
{code du preintro}
end
def update
{code du jukebox}
end
def create_command_window
{code du preintro}
end
def create_command_window
{code du jukebox}
end

Remarquer lequel de ces deux code est plus complexe à intégrer dans l'autre et faite un choix. Il semble plus sage de mettre le code de jukebax dans celui de preintro plutot que l'inverse dans ce cas... Donc copier le contenu du update de jukebox dans le update de preintro en faisant les ajustements. Ici, il y a 2 branches, s'il y a une sauvegarde ou s'il n'y en a pas. Dans la branche où il y a une sauvegarde, copier le code tel quel. Dans l'autre branche, faites le décalage nécessaire pour ne pas afficher le sélection Continuer. Ensuite, vous effacer les vestiges de la méthode update de jukebox pour n'avoir qu'une seule fois la méthode update. Je vous laisse faire l'exercices. Vous comparerez au script final. Faites sensiblement le même genre de manipulation pour create_command_window. Attention : assurez-vous de garder les changements. Jukebox a des modifications qu'on veut garder, mais préintro aussi. Par exemple, le fait que la fenêtre est positionner en hauteur automatiquement.

Ensuite, copiez les méthode pre_game, start, post_start, pre_terminate et terminate dans votre menu de fusion puisqu'elle sont modifié dans PreIntro pour justement modifier le fait d'avoir une intro avant l'écran titre et que JukeBox n'avait pas modifer ces méthodes. Bon voilà... JukeBox et PréIntro sont fusionnés. Il reste Costumizer.

Là ici, j'allais vous lister tout ce qui devait être fait pour ajouter Costumizer, mais je me suis aperçu en faisant les manipulation de fusion que ce script devait être refait au complet... DeadlyDan n'a pas penser que son script était incomplet et que quelqu'un pourrait vouloir faire autre chose avec ce menu... À partir d'ici, on tombe dans la partie EXPERT du tuto.

Cette fois, certaines chose seront plus rapide. Les modules ajouter pour le costumizer est certainement quelque chose qu'on désire garder. Copiez-le avant le class Scene_Title de votre fusion comme pour le preintro. Tant qu'à faire cette modification, profitez-en pour ajouter cette constante dans le module.
Code:
IMAGE_JUKEBOX = [ "jukebox", "jukebox_2" ]
Du coup, vous devrez créer cette images dans votre répertoire system. Pour les tests, ouvrez vous un éditeur d'image ou copiez simplement deux des fichiers déjà présents dans le skin et renomez les jukebox et jukebox2. Par la suite, question de se simplifier la vie pour ce qui va suivre ajouter également dans ce module le code suivant :
Code:
    ITEM_IMAGES = [IMAGE_NEW, IMAGE_CONTINUE, IMAGE_QUIT, IMAGE_JUKEBOX]
    CONTINUE_POS = 1 #un array commence à la position 0

Étant donnée la complexité des changement, il faut tout repenser. Plusieurs fonctions sont à ajouter, certaines sont à éliminer, mais pas totalement, il faut revoir l'architecture des fonction du costumizer... Bref, tout devait être reforger...
Si vous avez le niveaux ont poursuit.
Dans la fonction update, il faut changer les occurences de @command_window.index par @menu_index. Dans le code que j'ai fait, JukeBox est situer après Quitter, mais si vous voulez le placer différemment, n'oublier pas de modifier vos index dans cette méthode et de placer votre image avec le bon index dans ITEM_IMAGES.

Ensuite, il faut ajouter create_menu. C'est la première méthode que j'ai du remodeler... Voilà la nouvelle version, je vous laisse vous familiariser avec sa nouvelle apparence.
Code:
  def create_menu
    padding = 5
    @menu_item = []
    @menu_images = DeadlyDan_Title::ITEM_IMAGES.clone
   
    if ( !@continue_enabled )
      @menu_images.delete_at DeadlyDan_Title::CONTINUE_POS
    end
   
    for i in 1..@menu_images.size
      @menu_item.push ( Sprite.new )
    end

    for i in 1..@menu_images.size
      @menu_item[(i-1)].blend_type = 0
      @menu_item[(i-1)].bitmap = Cache.system ( @menu_images[(i-1)][0] )
      @menu_item[(i-1)].x = ( ( Graphics.width / 2 ) - ( @menu_item[(i-1)].bitmap.width / 2 ) )
      @menu_item[(i-1)].y = ( ( Graphics.height / (0.5 * @menu_images.size) ) - ( @menu_item[(i-1)].bitmap.height / 2 ) + ( @menu_item[(i-1)].bitmap.height / 1.4 + padding )*(i-1))
    end
    @menu_item[0].bitmap = Cache.system ( @menu_images[0][1] )
   
    @menu_count = @menu_item.size
    @menu_index = 0
  end
On voit que cette méthode est dynamique plutot que statique. Il y a parcontre un problème. Disons que j'ai modifié très rapidement et très grossièrement. Vous pourrez ajuster par vous même rendu là... Lorsqu'on ajuste le y, (0.5 * @menu_images.size) sert à placer le menu. Par contre, vous l'essayerez, ce n'est pas le meilleur coéficient possible car il y a une différence visible de positionnement entre le menu qui affiche charger et celui qui ne l'affiche pas. Amusez-vous à trouver un meilleur coefficient si vous le voulez.

J'ai fait le même genre de modification sur update menu (les for i in 1.. plutot que la méthode statique). De plus, puisque nous n'affichons pas Continuer si on en a pas de besoin, la méthode est de beaucoup simplifié.
Code:
  def update_menu
    if ( Input.repeat? ( Input::UP ) or Input.repeat? ( Input::DOWN ) )
      last_index = @menu_index
     
      if ( Input.repeat? ( Input::DOWN ) )
        if ( @menu_index < ( @menu_count - 1 )  )
          @menu_index += 1
        else
          @menu_index = 0
        end
      end
     
      if ( Input.repeat? ( Input::UP ) )
        if ( @menu_index > 0  )
          @menu_index -= 1
        else
          @menu_index = ( @menu_count - 1 )
        end
      end
     
      if ( @menu_index != last_index )
        Sound.play_cursor
      end
     
      for i in 0..@menu_images.size-1
        if ( i == @menu_index )
          @menu_item[i].bitmap = Cache.system ( @menu_images[i][1] )
        else
          @menu_item[i].bitmap = Cache.system ( @menu_images[i][0] )
        end
      end
    end   
  end
Finalement, on finit avec des modification simples, il faut reprendre command_new_game et changer la ligne close_command_window par dispose_menu, dans start, remplacer create_command_window par create_menu, retirer les open/close de post_start et pre_terminate et mettre dispose_menu au lieu de close_command_window dans terminate.

Là à ce stade, ce n'était pas une fusion simple. Elle est plus simple si on n'a ni jukebox ni effacement du continuer. Mais peu importe. Si vous avez réussit à suivre : Félicitation. Sinon, ce n'est pas bien grave, vous vous essayerai plus tard, quand vous maitriserez le Ruby. Pour le moment je vais poster le script final obtenu ICI.

Si vous avez des questions (et ça j'en suis persuadé Razz) n'hésiter pas. J'y répondrai au meilleur de moi-même.

Auteur : Votre humble partenaire, Hikari le fantastique. Intelligent
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
OR-K
Prêtre Lv13
Prêtre Lv13
avatar


Masculin Age : 31
Inscrit le : 19/06/2008
Messages : 877

Fusion/Merge des scripts écrans titre (med-exp) Empty
MessageSujet: Re: Fusion/Merge des scripts écrans titre (med-exp)   Fusion/Merge des scripts écrans titre (med-exp) Icon_minitimeMar 15 Juil 2008 - 16:14

Ca c'est un bon tuto de notre maître Hikari comme je les aime !
Sans tester, j'ai tout lu (Si si Razz) et... j'essayerais plus tard quand j'aurai un peu plus de temps devant moi et quand je serais au calme.
En tous cas :
Félicitations à toi Hikari !
On peut te vénérer maintenant (Même si on pouvait déjà avant :nyahaha:)
Revenir en haut Aller en bas
ibiky-ushiha
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Age : 35
Inscrit le : 07/07/2008
Messages : 498

Fusion/Merge des scripts écrans titre (med-exp) Empty
MessageSujet: Re: Fusion/Merge des scripts écrans titre (med-exp)   Fusion/Merge des scripts écrans titre (med-exp) Icon_minitimeMar 15 Juil 2008 - 17:50

Enfin Fusion/Merge des scripts écrans titre (med-exp) 959580 merci a toi c'est le plus beau jour de ma vie :chou: Coeur

MERCIII Fusion/Merge des scripts écrans titre (med-exp) 16629 Fusion/Merge des scripts écrans titre (med-exp) 231922 C\\'est bien

Tu nous a rendue un grand service.
Revenir en haut Aller en bas
Contenu sponsorisé




Fusion/Merge des scripts écrans titre (med-exp) Empty
MessageSujet: Re: Fusion/Merge des scripts écrans titre (med-exp)   Fusion/Merge des scripts écrans titre (med-exp) Icon_minitime

Revenir en haut Aller en bas
 

Fusion/Merge des scripts écrans titre (med-exp)

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» [VX] Fusion de scripts d'écran titre + préintro.
» Usine à écrans titre.
» Fusion de script d'écran titre (carte+appuyez sur start+ecran titre animé)
» Fonds d'écrans (wallpapers)
» Usine d'écrans-titres de FalconPilot ! [Ouvert]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Apprentissage :: Programmation: Events & RGSS :: Cours-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit