Partagez
Aller en bas
XakuX
XakuX
Membre

Nombre de messages : 1263
Age : 24
Localisation : là où tu n'auras jamais l'idée de chercher !
Distinction : * Bougre d'âne


Le bizu' à son Coco' [Facile] Ajouter une option dans le menu ou l'écran titre 344805
[Coco' Smile]

Membre aux désirs inassouvis de domination mondiale. [Maître du destin]
Date d'inscription : 13/12/2008

[Facile] Ajouter une option dans le menu ou l'écran titre Empty [Facile] Ajouter une option dans le menu ou l'écran titre

le Ven 14 Jan 2011 - 23:40
Bien le bonjour cher maker !
Ah, ça fait longtemps que j'avais plus posté ici, en fait non, j'y ai jamais posté en fait [Facile] Ajouter une option dans le menu ou l'écran titre 522164 (ah oui, et je me permets de copier mon message de l'autre forum, j'enlève juste ce qui conscerne XP ^^)
M'enfin, aujourd'hui, petit cours sur la façon de rajouter une option dans les différents menus du jeu !
Ce qui avait déjà senti le coup venir: Oui, nous iront dans ce sanctuaire sacré connu sous le nom "d'éditeur de script", et pire, nous en changerons des lignes de certains scripts [Facile] Ajouter une option dans le menu ou l'écran titre 522164 !
NON MAIS RESTEZ-LA !
Car oui, si il y a écrit "facile" dans le titre, ce n'est pas juste pour faire rire les singes nudistes du Guatemala. Non, ce tutoriel est essentiellement fais pour vous, oui vous, très cher maker qui n'avez aucune expérience en script dont la simple évocation de ce nom vous fait trembler jusqu'à votre organe génital (pour les filles, j'ai un peu du mal à voir ce que ça peut donner, mais ça doit sans doute être possible [Facile] Ajouter une option dans le menu ou l'écran titre 522164)
Je précise juste une chose, tout ce qui est en italique n'est pas vraiment utile, pour votre culture ou plus généralement pour votre humour [Facile] Ajouter une option dans le menu ou l'écran titre 522164
Bon, trêves de conneries, passons à du concret:

I: AJOUTER UNE OPTION (ou plus) DANS LE MENU

1)Conneries diverses et variées
(je vous le dis tout de suite, vous pouvez allez directement à la prochaine phrase en gras, à moins que vous ayez un peu de temps pour rire [Facile] Ajouter une option dans le menu ou l'écran titre 522164)

Nous allons tout d'abord nous attaquer aux options dans le menu du jeu, pour 2 raisons: parce que c'est le plus simple, et qu'en plus il existe déjà un tutoriel de notre bon ami Douk sur le sujet (que je vous invite évidemment à ne pas lire, puisque je vais sans doute pas mal reprendre d'élément [Facile] Ajouter une option dans le menu ou l'écran titre 522164: http://www.rpgmakervx-fr.com/t1795-rajouter-une-option-dans-un-menuperso-en-modifiant-son-script-simple) dont je reprendrai l'exemple sans doute, mais ajouterai 2-3 explications supplémentaires histoire d'avoir certaines notions de script plus tard qui vous saurons sans doute très bénéfique par la suite (Oui, un jour vous vous direz "Ahlala, qu'est-ce que j'aurais fait si XakuX n'avait pas pondu ce merveilleux tutoriel", et vous faites bien de penser ça, vous partez avec de l'avance par rapport aux autres [Facile] Ajouter une option dans le menu ou l'écran titre 522164)

Bien, je vais juste faire un bref rappel de ce qu'est RGSS, RGSS2, Ruby dont les définitions et les emplois me font couramment rire [Facile] Ajouter une option dans le menu ou l'écran titre 522164
Si vous voulez, le Ruby est la base du RGSS, le Ruby est un langage universel qui permet d'utiliser des variables, des conditions, et autres fonctions essentiels à la création d'un code digne de ce nom !
RGSS (Ruby Game Script System) est un langage exclusif à Rpg Maker, qui s'inspire de la syntaxe du Ruby (on peut même dire qu'il la copie tant c'est similaire). Dans des termes un peu plus technique, le Ruby c'est le concept de base, la théorie, tandis que le RGSS est tourné objet, avec une véritable application visuel Wink

2)1ère partie: ajouter le nom dans le menu
(comme tout à l'heure, go to prochaine phrase en gras [Facile] Ajouter une option dans le menu ou l'écran titre 522164)

Ce petit rappel fait, nous allons enfin voir nos très cher ligne de code qui nous sont si cher... Enfin, pas encore pour vous, mais ça ne serait tardé [Facile] Ajouter une option dans le menu ou l'écran titre 522164
Bon, pour ceux qui s'inquiéterait, je ne vais pas faire les étapes dans le même ordre que Douk, parce que j'aimerai rajouté 2-3 autres choses, enfin bref, de toute façon, vous n'avez pas à savoir pourquoi je fais comme ça, c'est comme ça et puis c'est tout [Facile] Ajouter une option dans le menu ou l'écran titre 522164

Vous avez donc, dans votre script menu (nommé Scene_Menu généralement, sauf si vous l'avez changé), des lignes qui doivent s'apparenter à ça (que ce soit celui de base ou un autre, généralement, vous trouverez ces quelques lignes, et si ce n'est pas le cas, n'hésiter pas à poster votre script ici, je vous indiquerai la démarche Wink ):
Version VX:
Code:
def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # If number of party members is 0
      @command_window.draw_item(0, false)    # Disable item
      @command_window.draw_item(1, false)    # Disable skill
      @command_window.draw_item(2, false)    # Disable equipment
      @command_window.draw_item(3, false)    # Disable status
    end
    if $game_system.save_disabled            # If save is forbidden
      @command_window.draw_item(4, false)    # Disable save
    end
  end

Et ces commandes, que veulent-elles donc bien vouloir dire quoi donc que c'est-ce que donc le sens de quoi ?
Bon ceux qui ont quelques notions d'anglais ont peut-être quelques pistes, et encore, ce n'est pas vraiment clair juste comme ça, donc je vous explique rapidement le script

def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end

@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index

if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end

if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end

end
l'indication "def" signifie que nous entrons dans une "définition", une sorte de mini-fonction qui va nous servir de raccourci: en gros, si, dans ce script, vous mettez "create_command_window", cela appellera toutes les commandes qui se trouvent dans cette définition !
Ah oui, et j'espère que je ne vous apprends rien en disant qu'il faut mettre des "end" à la fin d'une commande pour dire qu'elle est fini ?
Donc en gros, si vous voulez, lorsqu'on lance le jeu, on lance une commande qui implique une définition qui en implique plusieurs autres et ainsi de suite, en gros, tout les scripts sont des imbrications de définition Smile
Bon, d'ors et déjà, si vous ne comprenez pas tout, ne vous inquiétez pas, vous comprendrez un autre jour, plus tard, si vous suivez quelques cours de prog' Wink

ici, on indique que les variables s1, s2, s3 ... Prennent pour valeur le nom donné dans le lexique de la base de donnée (vocab::skill signifie "prendre le nom du menu compétence donné dans le lexique"), si jamais vous voulez essayer, vous pouvez changer ces valeurs par celles que vous voulez entre guillemet (exemple: s2 = "j't'ai fait peur", bon, ça vous ramènera toujours au même menu, c'est juste pour le nom dans le menu, pas le contenu lui-même ^^)
Enfin une commande un peu intéressante Very Happy
Je vais essayer de vous détailler parti par parti:
Déjà, la première ligne: vous voyez bien que c'est une équation (ou "égalité" si ce terme barbare vous est encore inconnu dans votre éducation, ce que je n'espère pas [Facile] Ajouter une option dans le menu ou l'écran titre 522164) la partie gauche c'est la variable à laquelle on attribue la partie droite (c'était déjà le cas avec pour les s1, s2 etc... mais il ne m'est pas venu à l'esprit de le dire, enfin pour des fonctions simple comme ça, je pense que tout le monde avait compris)
Bon, juste pour simple information, la variable a un @ au début du nom, ce qui signifie (pour le logiciel) qu'elle est applicable dans tout le script, si elles n'ont rien devant leur nom (sauf cas particulier des attributs que l'on traitera un autre jour, dans une autre vie peut-être [Facile] Ajouter une option dans le menu ou l'écran titre 522164), c'est qu'elles sont utilisable uniquement dans la définition, et si elles ont un $, c'est qu'elles sont utilisables dans tout les scripts (et c'est pour permettre d'avoir un plus large choix de nom que l'on fait ça Smile )
Ceci dit, attaquons la partie droite de la première ligne, le "Window_Command.new" indique que nous allons utiliser le script "Window_Command", les scripts Windows sont des scripts un peu particulier, lorsqu'on les associes avec une parenthèse et des valeurs précises, ils forment une fenêtre (comme les messages si vous voulez Smile ). Celle-ci indique que nous allons avoir un choix (avec curseur et tout le tralala, comme en évent) les valeurs dans la parenthèse indique le nom de chaque choix (je ne m'étalerai pas plus sur les coordonnées de la fenêtre, c'est un peu compliqué Smile ). Donc les gens un peu malin on compris que l'on reprenait les variables plus haut qui avait le nom des différentes options, OH BAH CA ALORS, COMME C'EST BIZARRE [Facile] Ajouter une option dans le menu ou l'écran titre 522164
Pour ceux qui aurait encore bien compris, si, à la place de s1 dans ce bout de code, vous mettez "Screugneugneu", ça fonctionnera aussi et changera le nom Wink
la seconde ligne indique qu'il faudra directement relié l'emplacement du curseur à la variable @menu_index, enfin c'est un peu compliqué, donc vous pouvez oublier ça pour le moment, rien d'intéressant à votre niveau ^^

Ici, nous avons un passage très intéressant et très important: Si l'équipe est composé d'aucun membre, les options ne doivent pas être activable, ne me demander pas comment on se retrouve sans personne dans son équipe, je suis moi même incapable de le faire (enfin si, mais c'est en bidouillant les scripts, rien qui ne puisse vous arrivez par mégardes ^^) Donc vous pouvez totalement oublié ces lignes, ce sont juste des correctifs en cas de bug Wink
Celle-ci est déjà un peu plus compréhensible, c'est si vous désactivez l'option sauvegarder en évent, celle-ci ne doit pas pouvoir être activé dans le menu, je vous laisse essayer de comprendre comment ça marche, ce n'est pas non plus un grand manque à votre niveau Smile

En voila un paragraphe bien coloré [Facile] Ajouter une option dans le menu ou l'écran titre 522164

A partir de là, si vous avez un QI supérieur à celui d'une moule, et que vous avez lu approximativement tout ce qui précédait, vous devriez avoir une mince idée de comment faire, non ?
Il y a 2 possibilités:
Soit vous êtes quelqu'un d'organisé et vous rajouter un s7="schmilblick" à la suite de s6 et vous rajouter ce s7 à l'emplacement que vous désirez dans la parenthèse (celui-ci déterminant l'ordre dans le menu Wink )
soit vous êtes un gros bordelique et vous ajouter directement "schmilblick" dans la parenthèse à l'emplacement que vous voulez, mais ne vous plaignez pas si, une fois avoir fait votre gros bordélique plusieurs fois, vous ne vous y retrouver pas [Facile] Ajouter une option dans le menu ou l'écran titre 522164

3)Deuxiême partie: appliquer une commande au nouveau nom

Car oui, jusqu'alors, si vous ne l'avez toujours pas compris, vous n'avez rajouté qu'un nom dans votre menu, il en se passe rien si vous essayer de lancer votre nouvelle option (même je pense que ça plantera, enfin pas le gout d'essayer [Facile] Ajouter une option dans le menu ou l'écran titre 522164)
Alors attaquons nous désormais à la seconde partie que vous allez devoir changer pour appliquer une fonction à votre commande, qu'elle soit pas là juste par esthétique, comme tout à l'heure, vous devrez retrouver, dans votre script, un bout de code qui ressemble à ça:
Code:
    case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Skill, equipment, status
        start_actor_selection
      when 4      # Save
        $scene = Scene_File.new(true, false, false)
      when 5      # End Game
        $scene = Scene_End.new
      end
(ligne 88 du script de base dans RMVX)

Une rapide explication, sans couleur, mais il y a beaucoup de chose que vous n'allez pas trop comprendre à mon avis:
case @command_window.index: indique au logiciel qu'il faut faire un ensemble de condition celon la valeur de la variable @command_window.index qui, je vous le rappelle, est celle qui détermine l'emplacement du curseur, chaque possibilité est établie par un when, when 0 signifie: "si la variable vaut 0, faire ..." une sorte de raccourci de condition Smile
$scene : variable essentielle, elle indique la scène active (menu, combat, map, écran titre...) l'autre partie de l'inéquation est donc un script dans la rubrique Scene (et ceux qui voit venir le coup, nous ferons un retour sur la scene_map sans doute :P)
star_actor_selection: une définition qui porte si bien son nom: elle déclenche un choix du héros avant de lancer la scène associée Wink

donc si vous avez mis votre nouvelle option en 7ême position dans la parenthèse de l'ancienne définition, la fonction sera associé à When 6 ici (en gros, tout à l'heure, vous regliez le nom, maintenant, il faut dire ce que ça va faire Very Happy)
Encore une fois, 2 choix s'offre à vous, soit vous avez un script tout prévu et à ce moment vous faites comme disait Douk: $scene = Scene_Liste_Monstres.new
Soit, vous n'avez pas de script, mais vous voulez faire ça en évent (si vous êtes un peu doué en event, ou que vous suiviez un tutoriel, peut-être un futur de moi qui sait [Facile] Ajouter une option dans le menu ou l'écran titre 522164) vous mettez ça:
Code:
$scene = Scene_Map.new
$game_player.reserve_transfer(map_id, x, y, direction)
en remplacant map_id par le numéro de votre map (lorsque vous la crée, elle s'appelle "Map_001" par exemple, l'id c'est 1 Wink ) x par la position x de votre héros, y par la position y de votre héros, et direction par sa direction ( 8=haut, 4=gauche, 6=droite, 2=bas)

II: MÊME PROGRAMME AVEC L'ÉCRAN TITRE

Oh, mais nom d'un XakuX pas frais, on en a déjà (pourquoi y en a qui rit quand je dis ce mot là ? [Facile] Ajouter une option dans le menu ou l'écran titre 522164) fini avec le menu !
Et si maintenant vous allez dans le script Scene_Title, vous allez retrouver nos commandes quasiment à l'identique, c'est-y pas mignon tout plein ça Very Happy (l'ordre est juste inversé sur VX, enfin rien de dramatique) Vous devriez maintenant être capable de vous en sortir Smile
AH SI, il y a une assez grosse différence, étant donné que le joueur n'as pas chargé de partie, il va falloir lui faire appliquer les commandes d'une nouvelle partie, voila donc ce que je vous conseille:
Copier la définition qui s'appelle command_new_game, et coller la plus loin dans votre script (n'oublier pas de bien placé votre end Wink ) et changer la de nom (un nom qui coincide avec votre nouvelle commande si possible ^^)
Dans la définition, vous avez ces 2 commandes:
Code:
    $game_map.setup($data_system.start_map_id)    # Initial map position
    $game_player.moveto($data_system.start_x, $data_system.start_y)
Il vous suffit de remplacer la valeur dans la parenthèse de la première commande par le numéro de votre Map, et dans la seconde, de remplacer ce qu'il y a das la parenthèse par la coordonnée X de départ de votre héros, une virgule, suivi de la coordonnée Y Smile
Et bien évidemment, d'appeller cette définition à la place de la scene comme dans le menu Wink

Si vous avez tout lu, c'est déjà un miracle, et si vous avez tout compris, je ne peux que vous féléciter, vous avez du potentiel dans la programmation Smile
Je vous invite d'ailleurs à essayer d'analyser d'autre script maintenant que vous avez toutes ces notions en tête, vous devriez comprendre déjà certaines choses qui vous passait complêtement au-dessus de la tête il y a peu, et ça vous permettra de progresser bien plus vite qu'avec des tutoriels (enfin, à mon humble avis, et de nombreux scripteurs, on a commencé comme ça pour la plupart Wink )


Bonne continuation !

PS: Si j'ai dis des conneries (des vrais, évidemment [Facile] Ajouter une option dans le menu ou l'écran titre 522164) n'hésitez pas à me le faire remarquer Wink


Dernière édition par XakuX le Sam 15 Jan 2011 - 11:34, édité 2 fois
freezia
freezia
Staffeux retraité

Nombre de messages : 1734
Distinction : Elu membre de l'année 2009 haut la main.
Inventeur du Mapping Show.

caricaturatationeur de la comu'
[ Dudu']
Date d'inscription : 18/02/2008

[Facile] Ajouter une option dans le menu ou l'écran titre Empty Re: [Facile] Ajouter une option dans le menu ou l'écran titre

le Sam 15 Jan 2011 - 10:44
C'est vraiment pas mal comme découverte-adaptation des commandes rgss . On acquéri un minimum de connaissance qui permettrons de bricoler la config des scripts à sa sauce .
Bon, peut être que l'énorme pavé de texte en dissuaderai les moins motivés, espace un peu le tout et même si ce n'est pas un mal, peut être faudra t'il se modérer sur les phrases casual, histoire de pas casser le rythme du lecteur; L'introduction des couleurs est pas une mauvaise idée en soi mais lire du bleu foncé c'est pas très agréable, peut être faudrait t'il adapter ça en sous-titres de couleur .
Plus quelques fautes par ci par là ... faudra quand même essayer d'alléger un maximum la charge caractériel de ton tuto le prochain coup .
Au final, me concernant, j'ai quand même appris deux ou trois trucs utiles et si j'ai quelques ennuis dans le domaine, je penserais à me référencer ici .
Frozen
Frozen
Membre

Nombre de messages : 584
Age : 24
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

[Facile] Ajouter une option dans le menu ou l'écran titre Empty Re: [Facile] Ajouter une option dans le menu ou l'écran titre

le Sam 15 Jan 2011 - 11:18
@XakuX a écrit:et direction par sa direction (si je me trompe pas: 0=haut, 1=gauche, 2=droite, 3=bas)

Je sais pas si ça correspond avec ce qu'on doit mettre dans le script, mais quand on stock la direction dans une variable c'est:
Haut: 8
Bas: 2
Droite: 6
Gauche: 4
XakuX
XakuX
Membre

Nombre de messages : 1263
Age : 24
Localisation : là où tu n'auras jamais l'idée de chercher !
Distinction : * Bougre d'âne


Le bizu' à son Coco' [Facile] Ajouter une option dans le menu ou l'écran titre 344805
[Coco' Smile]

Membre aux désirs inassouvis de domination mondiale. [Maître du destin]
Date d'inscription : 13/12/2008

[Facile] Ajouter une option dans le menu ou l'écran titre Empty Re: [Facile] Ajouter une option dans le menu ou l'écran titre

le Sam 15 Jan 2011 - 11:27
C'est vrai que c'est chargé, surtout que j'ai tendance à partir vers tout et n'importe quoi, d'ailleurs c'est pour ça qu'il y a de l'italique, donc la prochaine fois, j'essayerai de faire plus concis que ça Smile
Pour les fautes, j'en ai croisé tellement que j'ai un peu abandonné de toutes les corrigés ^^'
Le bleu foncé, je change ça tout de suite Smile

Pour la direction, tu as raison effectivement, je suis aller voir dans les scripts, c'est pas une commande que j'utilise souvent, donc bon :P
Et je vais aussi aller vérifier si la commande fonctionne bien pour l'écran titre parce que je viens de penser que j'ai fait ça au feeling XD
EDIT: Ouai c'est bon j'ai vérifié, ça marche, y avait pas de raison que ça marche pas, surtout si c'est moi qui l'a fait [Facile] Ajouter une option dans le menu ou l'écran titre 522164

Merci pour vos commentaires Smile
Contenu sponsorisé

[Facile] Ajouter une option dans le menu ou l'écran titre Empty Re: [Facile] Ajouter une option dans le menu ou l'écran titre

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum