E-magination
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


~ S'évader de la banalité... Et entrer dans l'imaginaire ! ~
 
AccueilGuelnika, le site de E-m !ChatS'enregistrerConnexion
Le Deal du moment : -17%
SSD interne Crucial SSD P3 1To NVME à ...
Voir le deal
49.99 €

 

 la base de données RMXP et les scenes ...

Aller en bas 
5 participants
AuteurMessage
dani_nouvel_star
Maker experimenté Lv 9
Maker experimenté Lv 9
dani_nouvel_star


Nombre de messages : 279
Age : 44

la base de données RMXP et les scenes ... Empty
MessageSujet: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeLun 09 Juil 2007, 13:56

la base de données RMXP et les scenes ... Coursls5

Je vais supposer que c'est monsieur l'ordinateur qui exécute les instructions qu'on lui donne dans le script. Il faut savoir que l'ordinateur lie le script dans un certain ordre de haut en bas. Pour les instructions, Il commence à lire après le "begin" et finit par le "end" qui lui est associé. Ce qui est logique. Dans Rpg Maker XP, il commence par lire ce fameux "main" que tout le monde connaît. En fait le "main" n'est que le titre d'une partie du script :
Voir image ci dessous :
Spoiler:
La partie (1) de l'image ci-dessus peut-être nommé comme on le veut. L'important c'est de lui mettre un titre explicite qui est en rapport avec le script qui lui est associé. Dans ce main (2) il y a ce fameux "begin" (3) et "end" (4) entre lesquels se trouvent des instructions.
Donc en gros, le script par défaut de rmxp est composé comme ceci :
-> suite de definition de classes

Code:
class Objet_1
  ...
end
class Objet_2
  ...
end
-> programme principal :
Code:
begin
  #instruction
end

remarque : on peut définir des constantes ou des modules avant le "begin".
la base de données RMXP et les scenes ... Coursls5
Charger la base de données

Donc on a vu jusqu'à maintenant que le programme lit les instructions entre "begin" et "end". Avant de commencer à lire des instructions, il faudrait que l'ordinateur charge la base de données que l'on a fait dans rmxp.

Voici l'endroit où on construit cette base de donnée :
la base de données RMXP et les scenes ... Bbdyx1
Je ne vais pas vous dire ce que c'est que cette boite de dialogue car tout le monde le sait je pense mais si vous savez pas, n'hésitez pas à demander. Dans cet boite de dialogue on a 13 onglets :

Pour charger ces bases de données, on les stocke dans 13 objets : $data_actors, $data_classes, $data_skills, etc.
On définit ces 13 objets comme ceci :
Code:
  $data_actors        = load_data("Data/Actors.rxdata")
  $data_classes      = load_data("Data/Classes.rxdata")
  $data_skills        = load_data("Data/Skills.rxdata")
  $data_items        = load_data("Data/Items.rxdata")
  $data_weapons      = load_data("Data/Weapons.rxdata")
  $data_armors        = load_data("Data/Armors.rxdata")
  $data_enemies      = load_data("Data/Enemies.rxdata")
  $data_troops        = load_data("Data/Troops.rxdata")
  $data_states        = load_data("Data/States.rxdata")
  $data_animations    = load_data("Data/Animations.rxdata")
  $data_tilesets      = load_data("Data/Tilesets.rxdata")
  $data_common_events = load_data("Data/CommonEvents.rxdata")
  $data_system        = load_data("Data/System.rxdata")

Ce chargement de base de données est à faire au début de la toute première scene du jeu : Scene_Title.
Si jamais on veut scripter une scene d'intro qui se déroule avant le Scene_Title il ne faut pas oublier de charger ces différentes bases de données.

Exemple pour le windowskin :

la base de données RMXP et les scenes ... Dsytpr7




la base de données RMXP et les scenes ... Tpcd6

TP : les scènes

Dans un projet vierge mettez ce script, à la place de main :


SCRIPT 1 AVEC LES COMMENTAIRES :
Code:
#==============================================================================
# ■ Main : par dani_nouvel_star
#    -> transitions graphique de 200 frames
#    -> création de l'objet "fenetre_de_dani" de la classe Window_Base
#    -> déplacement de cet objet par l'appuie des touches de direction
#    -> fin du programme si on appuie sur la touche action
#==============================================================================

begin
 
  # début du programme
 
  # avant de faire les toutes première instructions il faut au préalable
  # charger toutes les données que vous avez vous même rentrer dans l'interface
  # de rmxp.
  # Chargement de la base de donnée
  $data_actors        = load_data("Data/Actors.rxdata")
  $data_classes      = load_data("Data/Classes.rxdata")
  $data_skills        = load_data("Data/Skills.rxdata")
  $data_items        = load_data("Data/Items.rxdata")
  $data_weapons      = load_data("Data/Weapons.rxdata")
  $data_armors        = load_data("Data/Armors.rxdata")
  $data_enemies      = load_data("Data/Enemies.rxdata")
  $data_troops        = load_data("Data/Troops.rxdata")
  $data_states        = load_data("Data/States.rxdata")
  $data_animations    = load_data("Data/Animations.rxdata")
  $data_tilesets      = load_data("Data/Tilesets.rxdata")
  $data_common_events = load_data("Data/CommonEvents.rxdata")
  $data_system        = load_data("Data/System.rxdata")
 
  # je vais créer un objet fenetre_de_dani de la classe Window_Base. Et je
  # je vais l'afficher de manière progressive en faisant une transition
  # graphique. Je pense que vous devriez savoir ce qu'est une transistion
  # graphique, car on peut en faire avec les commandes d'évènements. Si vous ne
  # savez pas de quoi il s'agit, demandez moi ^^.
 
  # voici comment faire une transition graphique.
  # une transition se fait toujours entre deux images. S'il n'y a pas de
  # première image, il n'y a pas de transition possible.
  # Ma première image est un freeze (une photo, un screenshot) de l'écran à ce
  # moment là du programme. Et à ce moment là, l'image est noire. Donc je prend
  # une photo de cette image noire.
  Graphics.freeze
  # la photo de cet écran noire étant prise, je vais faire créer cet objet
  # fenetre_de_dani de la classe Window_Base mais
  # avant de créer un objet de la classe Window_Base, il faut créer la
  # variable globale $game_system de la classe Game_System, car la classe
  # Window_Base utilise cette objet pour récupérer son "windowskin", en effet
  # si vous regardez de plus près l'initialize de cette classe Window_Base, on
  # récupère le windowskin dans : $game_system.windowskin_name
  $game_system = Game_System.new 
  # je crée un objet fenetre_de_dani de la classe Window_Base
  fenetre_de_dani = Window_Base.new(0,0,100,150)
 
  # transition graphique qui se fait après entre la photo de l'écran noir et
  # l'affichage de l'objet "fenetre_de_dani" nouvellement crée.
  # entre parenthèse, l'argument représente le nombre de frames graphiques
  # pendant lesquelles va durer la transition. Pendant cette transition, il est
  # impossible de mettre une instruction.
  Graphics.transition(200)
 
  # 200 frames plus tard on arrive à la ligne suivante : 
  # boucle infinie
  loop do
    # on avance d'une frame graphique
    Graphics.update
    # on met à jour les inputs
    Input.update
   
    # mes instructions qui seront exécuter après le Graphics.update, appelé
    # quelques lignes auparavant, autrement dit les instructions qui sont
    # dans cette boucle infinie seront exécutées une fois par frame
   
    # si on appuie sur la touche BAS     
    if Input.trigger?(Input::DOWN)
      # je fait descendre l'objet fenetre_de_dani de 1 pixel
      fenetre_de_dani.y = fenetre_de_dani.y + 1
    end 
    # si on appuie sur la touche LEFT 
    if Input.trigger?(Input::LEFT)
      # je déplace l'objet fenetre_de_dani à gauche de 1 pixel
      fenetre_de_dani.x = fenetre_de_dani.x - 1
    end
    # si on appuie sur la touche RIGHT   
    if Input.trigger?(Input::RIGHT)
      # je déplace l'objet fenetre_de_dani à droite de 1 pixel
      fenetre_de_dani.x = fenetre_de_dani.x + 1
    end
    # si on appuie sur la touche UP     
    if Input.trigger?(Input::UP)
      # je fait monter l'objet fenetre_de_dani de 1 pixel
      fenetre_de_dani.y = fenetre_de_dani.y - 1
    end
    # si on appuie sur la touche C (action)
    if Input.trigger?(Input::C)
      break # on sort de la boucle infinie
    end
  end  # fin de la boucle infinie
 
  # Quand on sort de la boucle infinie on arrive à cet endroit du programme
  # on gèle l'écran, freeze graphique
  Graphics.freeze   
 
  # on libère la mémoire, on "efface" tous les objets crées durant le programme
  fenetre_de_dani.dispose
 
  # fin du programme   
end

Ce script paraît long car j'ai mis beaucoup de commentaire mais voici le script sans aucun commentaires. Essayez de deviner ce que fait chaque ligne, si vous avez des difficulté à comprendre certaines lignes vous pouvez regarder une nouvelle fois le script avec les commentaires.

SCRIPT 1 SANS LES COMMENTAIRES :
Code:
begin
  $data_actors        = load_data("Data/Actors.rxdata")
  $data_classes      = load_data("Data/Classes.rxdata")
  $data_skills        = load_data("Data/Skills.rxdata")
  $data_items        = load_data("Data/Items.rxdata")
  $data_weapons      = load_data("Data/Weapons.rxdata")
  $data_armors        = load_data("Data/Armors.rxdata")
  $data_enemies      = load_data("Data/Enemies.rxdata")
  $data_troops        = load_data("Data/Troops.rxdata")
  $data_states        = load_data("Data/States.rxdata")
  $data_animations    = load_data("Data/Animations.rxdata")
  $data_tilesets      = load_data("Data/Tilesets.rxdata")
  $data_common_events = load_data("Data/CommonEvents.rxdata")
  $data_system        = load_data("Data/System.rxdata")
  Graphics.freeze
  $game_system = Game_System.new 
  fenetre_de_dani = Window_Base.new(0,0,100,150)
  Graphics.transition(200)
  loop do
    Graphics.update
    Input.update
    if Input.trigger?(Input::DOWN)
      fenetre_de_dani.y = fenetre_de_dani.y + 1
    end 
    if Input.trigger?(Input::LEFT)
      fenetre_de_dani.x = fenetre_de_dani.x - 1
    end
    if Input.trigger?(Input::RIGHT)
      fenetre_de_dani.x = fenetre_de_dani.x + 1
    end
    if Input.trigger?(Input::UP)
      fenetre_de_dani.y = fenetre_de_dani.y - 1
    end
    if Input.trigger?(Input::C)
      break
    end
  end 
  Graphics.freeze   
  fenetre_de_dani.dispose
end


Voici ce que fait le script :

la base de données RMXP et les scenes ... Test1tl3

Voici une autre version du script qui fait exactement la même chose.
Insérer à la place de main le script suivant :

SCRIPT 2 AVEC UTILISATION D'UNE CLASSE SCENE :
Code:
#==============================================================================
# ■ Scene_Dani
#==============================================================================

class Scene_Dani
  #--------------------------------------------------------------------------
  # ● main
  #--------------------------------------------------------------------------
  def main
   
    # Cette partie chargement ne doit être fait que pour la toute première scene
    # du jeu.
    # Chargement de la base de donnée
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes      = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items        = load_data("Data/Items.rxdata")
    $data_weapons      = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies      = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata") 
   
   
    $game_system = Game_System.new
    @fenetre_de_dani = Window_Base.new(0,0,100,150)
    Graphics.transition(200)
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
   
    @fenetre_de_dani.dispose
  end
  #--------------------------------------------------------------------------
  # ● update
  #--------------------------------------------------------------------------
  def update
    if Input.trigger?(Input::DOWN)
      @fenetre_de_dani.y = @fenetre_de_dani.y + 1
    end 
    if Input.trigger?(Input::LEFT)
      @fenetre_de_dani.x = @fenetre_de_dani.x - 1
    end
    if Input.trigger?(Input::RIGHT)
      @fenetre_de_dani.x = @fenetre_de_dani.x + 1
    end
    if Input.trigger?(Input::UP)
      @fenetre_de_dani.y = @fenetre_de_dani.y - 1
    end
    if Input.trigger?(Input::C)
      $scene = nil
    end
  end
end




#==============================================================================
# ■ Main : par dani_nouvel_star
#==============================================================================

begin
  Graphics.freeze
  $scene = Scene_Dani.new
  while $scene != nil
    $scene.main
  end
end

Dans cet deuxième version, je me définis ma scene dans une classe Scene_Dani.
J'ai enlevé volonatairement les commentaires dans cette deuxième version pour que vous puissez y réfléchir plus longuement chez vous. Les scripts 1 et 2 font la même chose. Et si vous avez des questions, n'hésitez pas à poster sur ce topic. Wink


Dernière édition par le Lun 09 Juil 2007, 14:21, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité
Anonymous



la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeLun 09 Juil 2007, 14:18

alors là, ça mérite des compliments, j'ai pas eu besoin d'ouvrir rpg maker pour plus ou moins comprendre
pas mal
Revenir en haut Aller en bas
coco
Dieu Maker Lv 44
Dieu Maker Lv 44
coco


Nombre de messages : 2989
Age : 30

la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeLun 09 Juil 2007, 14:29

:oops: :oops: :oops: :oops: :oops: Ouah
Avec mon tuto tout pourri j'ai honte qu'en je vois le tien
Revenir en haut Aller en bas
Relm
---Fantôme--- Lv 0
Relm


Nombre de messages : 40942
Age : 33

la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeLun 09 Juil 2007, 17:55

Merci Dani, ça me semble très technique mais aussi pas mal complet et clair... C'est un tutorial de toi-même ?

____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Revenir en haut Aller en bas
dani_nouvel_star
Maker experimenté Lv 9
Maker experimenté Lv 9
dani_nouvel_star


Nombre de messages : 279
Age : 44

la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeLun 09 Juil 2007, 19:50

oui ce tuto est bien de moi,
j'essaie de faire un petit forum en ce moment et j'ai fait ça il y a pas mal de temps mais normalement j'explique un peu plus en détail ce qu'est cette classe Window_Base avant d'arriver à ce petit tuto qui n'est pas si technique que ça en fait ^^.

J'avais aussi fait ça pour un autre forum. Si tu veux des détails MP moi car l'admin va effacer mon message si je fais de la pub Laughing .
Revenir en haut Aller en bas
Relm
---Fantôme--- Lv 0
Relm


Nombre de messages : 40942
Age : 33

la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeLun 09 Juil 2007, 22:47

Citation :
J'avais aussi fait ça pour un autre forum. Si tu veux des détails MP moi car l'admin va effacer mon message si je fais de la pub
Tu confond avec Creative, du moment que la "pub" est justifiée, je m'en fiche, ça m'inquiète pas du tout... fufu

Donc bravo pour ton tuto ! Tu mérite une belle récompenses ! diable welcome

____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Revenir en haut Aller en bas
Uzumaki Naruto
RTP de base Lv 1
RTP de base Lv 1
Uzumaki Naruto


Nombre de messages : 18
Age : 29

la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeMar 10 Juil 2007, 15:00

C'est koa la récompense ?!
Revenir en haut Aller en bas
Quelqu'un
Boulet Lv 1
Boulet Lv 1
Quelqu'un


Nombre de messages : 2549
Age : 33

la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeMar 10 Juil 2007, 17:31

Des points d'expérience et de l'or sur le forum.

P.S.: Evites de faire du HS Naruto. Si tu as quelque chose à dire, fais-le ICI, Merci.

____________
la base de données RMXP et les scenes ... 433453J'ai faim ! Clic
Revenir en haut Aller en bas
dani_nouvel_star
Maker experimenté Lv 9
Maker experimenté Lv 9
dani_nouvel_star


Nombre de messages : 279
Age : 44

la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitimeMar 17 Juil 2007, 14:45

Si vous désirez voir quelles sont les autres propriétés que vous pouvez modifier vous pouvez regardez dans l'aide de RMXP :
Voici un screen :
la base de données RMXP et les scenes ... Aidedt3
Revenir en haut Aller en bas
Contenu sponsorisé





la base de données RMXP et les scenes ... Empty
MessageSujet: Re: la base de données RMXP et les scenes ...   la base de données RMXP et les scenes ... Icon_minitime

Revenir en haut Aller en bas
 
la base de données RMXP et les scenes ...
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
E-magination :: ~ Forums d'enrichissement ~ :: Apprentissage et partage :: RPG Maker XP :: Tutoriels / Scripts-
Sauter vers: