Partagez
Aller en bas
Dany
Dany
Membre

Nombre de messages : 773
Age : 23
Distinction : aucune
Date d'inscription : 16/11/2010
http://gamers-studio.forumofficiel.fr/

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Apprendre le RGSS3 {2}: Une jolie fenêtre

le Ven 23 Jan 2015 - 21:42
J'ai fait un premier chapitre, que certain on apprécier et d'autre pas, car sa ressemble plus du ruby que le RGSS3.
Et j'avoue, mais mieux avoir, quelques bases avant d'attaquer sur quelque chose de lourd.

Avant de commencer, je vais donner la solution de l'exercice du premier chapitre:
Code:
class Message_Add
  def add_message_game
   $game_message.add("Je suis un script!")
  end
end
Comme j'ai dit, fallait regarder dans le script Game_Interpreter, a partir de la ligne: 251.
Bien sûr, il y a peut-être une autre manière de le faire.

Passons au deuxième chapitre!

Chapitre 2: Une fenêtre qui n'a rien de luxe!


Nous allons voir comment créer une fenêtre:

  • Des Class
  • Des fonctions


Note: Les ° permet de changer le mot a votre manière.

Donc pour commencer notre fenêtre, on va donc créer une class:

Code:
class Window_Tuto < Window_Base #Créer la class Window_Tuto°.

end #Ferme la class.


Vous avez dû remarquer le < Window_Base, et que vous voulez savoir a quoi il sert.
Cela veut dire que notre class va hérité "des codes" de la class Window_Base, sans ça, on peut pas créer de fenêtre.

Une fois que notre class et créer, on va donc commencer a mettre une fonction, un 'def', et n'oublier pas, pas de majuscule!
/!\ On ne pourras pas appeler comme on veut, la première fonction!

Code:
class Window_Tuto < Window_Base #Créer la class Window_Tuto°.
 def initialize #Créer la fonction initialize.

 end #Ferme la fonction.
end #Ferme la class.


Donc, faut impérativement nommé comme ça, car il récupéra le code de la class Window_Base, pour l'instant, il ne récupère rien du script de Window_Base.

On va désigner la taille et la position de la fenêtre.

Code:
class Window_Tuto < Window_Base #Créer la class Window_Tuto°.
 def initialize #Créer la fonction initialize.
 super(0, 0, Graphics.width, Graphics.height)

 end #Ferme la fonction.
end #Ferme la class.


Ce mot, super, va lancer code de la class Window_Base, de la fonction "initialize", suivi de la position et la taille de la fenêtre, donc il récupère le code 'initialize' du script Window_Base
super(X, Y, Largeur, Hauteur)
X = Position Horizontal.
Y = Position Vertical.
Largeur = Largeur de la fenêtre.
Hauteur = Hauteur de la fenêtre.

Maintenant, on va créer une nouvelle class pour ouvrir notre fenêtre, et oui, on ne peut pas l'ouvrir notre fenêtre comme ça.
On va devoir recréer une class, au-dessus ou au-dessous, du code d'avant.
Donc, on va créer une scene, qui va hériter la class Scene_Base:

Code:
class Scene_Tuto < Scene_Base #Créer la class Scene_Tuto°.

end #Ferme la class.


On va créer trois fonctions, deux fonctions ne doit pas être renommé!

Code:
class Scene_Tuto < Scene_Base #Créer la class Scene_Tuto°.
 def start #Ne pas renommer la fonction
 end #Ferme la fonction.

def update #Ne pas renommer la fonction
end #Ferme la fonction.

def create_window_tuto #Créer la fonction create_window_tuto°
end #Ferme la fonction.
end #Ferme la class.


Nous allons travailler dans la fonction update, on va faire en sorte que dès qu'on appuie sur le bouton X, la fenêtre va ce fermer.
On va donc, récupérer le code dans Scene_Base, en écrivant "super", sans rien, dans la fonction update,
puis nous allons faire en sorte que si la touche X et pressé, faire: fermé la fenêtre tuto, et de jouer un son.

Code:
def update #Ne pas renommer la fonction
super #Lance le code de l'héritage
return_scene if Input.trigger?(:B)
if Input.trigger?(:B)
 Sound.play_cancel
end
end #Ferme la fonction.

return_scene if Input.trigger?(:B)
return_scene signifie que le jouer retourne sur la map.
if Input.trigger?(:B)
Donc c'est une condition, donc si(if) le joueur appuie sur un le bouton(Input.trigger?) "X" (:B) alors, on retourne sur la map(return_scene).

Et on refait une autre condition, qui va, dès qu'on appuie sur la touche "X", le jeu joueras un son de retour(Sound.play_cancel).

Donc une fois l'update créer, on va dans notre 'def' que nous avons donner un nom différent.
Et nous allons appeler notre Window_Tuto, avec une seule ligne.

Code:
def create_window_tuto #Créer la fonction create_window_tuto°
 @window_tuto = Window_Tuto.new
end #Ferme la fonction.


@window_tuto est une variable qui contient notre fenêtre tuto(= Window_Tuto)
Et lanceras notre fenêtre.

Maintenant, vous penser avoir finir pour notre fenêtre?
Faux! Il nous reste encore une 'def' a faire, pour qui exécute notre fonction, qui nous permet d'ouvrir la fenêtre Window_Tuto.
Donc, dans le 'def' start, on va lancer le code de notre héritage, donc notre Scene_Base, et d'appeler notre fonction, que moi je l'est appeler comme ça: create_window_tuto.

Code:
def start #Ne pas renommer la fonction
 super
 create_window_tuto
end #Ferme la fonction.


Bien, notre deux scènes, sont maintenant terminer.
Maintenant, on va par appel de script, appeler notre fenêtre.
On va donc utiliser ce code: SceneManager.call(x)
x = notre scène.
Donc ma scène s’appelle Scene_Tuto, donc a la place du x je vais mettre Scene_Tuto.
SceneManager.call(Scene_Tuto)

Passons a la pratique!
Exercice:
Je veux que vous afficher deux variable de class, contenant un chiffre et un mot, dans la console.

J'avoue, dans le premier épisode, je n'est pas parler des Variables, alors, je vous invite de lire le fichier d'aide de RPG Maker VX Ace, pour le trouver, ou ici!

Si vous avez fait l'exercice, poster le a la suite de ce post.
Et je vous donnerais le résultat, par MP, si oui ou non vous l'avez réussi.

Remerciement:
LightNox, vincent26

Bonne chance et bon courage pour l'exercice! Wink
MachineFr
MachineFr
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 22/08/2015

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 2:43
Bonjour et merci pour ces tutoriel, j'ai deux problemes, j'espere que vous pourrez m'aidez, de un, j'ai tout copié collé, tout fait parfaitement, mais rien ne se passe lorsque je lance, comme si je n'avais rien fait, pourtant j'ai creer l'evenement avec le script pour ouvrir ce que tu as écrit mais rien du tout .

Deuxièmement, je ne comprend pas en quoi "return_scene if Input.trigger?(:B)
if Input.trigger?(:B)" vas faire quoi que ce soit avec le bouton X il n'y rien qui les rapproche, cela ouvre juste le menu, et pour les sons pareils, cela ne rajoute rien, les sons du menu sont déjà incorporé dans les bases du jeu, rien ne change ..

merci de m'avoir lus et j'espère que tu m'aidera
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 13:29
Salut Smile

Donne ton script pour voir le problême Wink

Pour ce qui est du deuxièmement essaye de supprimer ces ligne pour tester tu verra qu'elle sont nécessaire Wink
Après le codage n'est pas parfait pour cette méthode cela te semblera peut-être plus clair :
def update #Ne pas renommer la fonction
super #Lance le code de l'héritage
if Input.trigger?(:B)
Sound.play_cancel
return_scene
end
end #Ferme la fonction.
MachineFr
MachineFr
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 22/08/2015

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 14:35
Merci beaucoup, alors voila le script :
class Window_Tuto < Window_Base #Créer la class Window_Tuto°.
def initialize #Créer la fonction initialize.
super(0, 0, Graphics.width, Graphics.height)

end #Ferme la fonction.
end #Ferme la class.

class Scene_Tuto < Scene_Base #Créer la class Scene_Tuto°.
def start #Ne pas renommer la fonction
create_window_tuto
end #Ferme la fonction.

def update #Ne pas renommer la fonction
super #Lance le code de l'héritage
return_scene if Input.trigger?(:B)
if Input.trigger?(:B)
Sound.play_cancel
end #Ferme la fonction.
end #Ferme la fonction.

def create_window_tuto #Créer la fonction create_window_tuto°
@window_tuto = Window_Tuto.new
end #Ferme la fonction.
end #Ferme la class.
voila, donc je pense ne pas mettre tromper a ce sujet

Pour ce qui est du deuxième on est bien d'accord que le bouton "X" est censé ouvrir le menu (comme echap) ? et sinon les bruit son exactement les même que lorsque je crée un nouveau projet, rien ne change
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 16:09
As-tu bien fait l'appel de script depuis un event car ton code fonctionne (juste il manque le 'super' dans la def start)

tient le revoila avec la modif :

Code:

class Window_Tuto < Window_Base #Créer la class Window_Tuto°.
  def initialize #Créer la fonction initialize.
    super(0, 0, Graphics.width, Graphics.height)

  end #Ferme la fonction.
end #Ferme la class.

class Scene_Tuto < Scene_Base #Créer la class Scene_Tuto°.
  def start #Ne pas renommer la fonction
    super
    create_window_tuto
  end #Ferme la fonction.

  def update #Ne pas renommer la fonction
    super #Lance le code de l'héritage
    if Input.trigger?(:B)
      Sound.play_cancel
      return_scene
    end #Ferme la fonction.
  end #Ferme la fonction.

  def create_window_tuto #Créer la fonction create_window_tuto°
    @window_tuto = Window_Tuto.new
  end #Ferme la fonction.
end #Ferme la class.

sinon pour la touche le truc c'est que si tu regarde pour modifier les touche (F1) X est associer a B
autre exemple Shift est A pour RM
W est R
Enter et Espace sont C pour RM etc..

C'est vraiment bizarre mais RM est fait ainsi. Donc pour le trigger?(:B) cela correspond au test de la touche X (Ou echap ou encore 0 du num pad)
MachineFr
MachineFr
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 22/08/2015

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 16:22
Merci de m'aider, donc oui, mon appelle de script est celui-ci : SceneManager.call(Scene_Tuto) mis dans un personnage qui a comme déclenchement "contacte avec le heros, donc tout est bien.
F1 m'ouvre juste la fenetre d'aide, comment ouvrir la fenêtre pour modifier les touches ?


vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 17:53
Ton personnage est bien au même niveaux que le héros ?
dans le jeu appuye sur F1 tu a ensuite un onglet keyboard
MachineFr
MachineFr
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 22/08/2015

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 18:23
oui et ok tout est nickel dans les touche :/

s'il te plait, pourrai tu me copié/coller ta ligne 1411 de "game_interpreter" je crois que c'est la d'ou viens le probleme,il y avais un probleme avec cette ligne donc je l'avais uspprimer, elle doit etre utilse pour sa jsutement
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 19:47
Ha oki je comprend XD

Ne jamais supprimer une ligne qui bug de 1 et de 2 ne jamais toucher au script de base de RM ^^

en faite tu a supprimer la ligne qui interprète le script :
eval(script)

en faites si tu fait un appel de script et que le script que tu appel bug alors c'est toujours cette ligne qui sera indiquer dans l'erreur ^^ mais l'erreur ne vient jamais de la mais de ce que contient ton script Wink

MachineFr
MachineFr
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 22/08/2015

Apprendre le RGSS3 {2}: Une jolie fenêtre Empty Re: Apprendre le RGSS3 {2}: Une jolie fenêtre

le Dim 23 Aoû 2015 - 23:26
Parfait ça marche, merci beaucoup de m'avoir aidez, une toute derniere question , j'ai refait tout a ma sauce, je devais faire un affichage de panneau pour montrer le nom de ville, tout est bien fait ,sauf que vu que j'ai vouert la class Scene_Tuto avec comme héritage Scene_Map (pour qu'on voit toujours la map) et bah l'affichage se referme plus,y'aurai pas un code pour fermer le "super"
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum