Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: [Rmxp] Vocab
MessagePublié: 02 Aoû 2009, 11:38 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Juin 2008, 00:00
Messages: 476
Logiciel(s) préféré(s): Scintilla based
Point(s) Fort(s): Rubyismes
Points d'aide: 60/60

Créations :

- [Rmxp] Vocab

- [Rmxp] Visible Equipment

- [Rmxp] Animated Title

- [XP/VX] Cache Extension


Voir ses créations

Vocab


Auteur : Wawower

Description :
Ce script permet de gérer aisément le vocabulaire personnalisable par l'utilisateur via une table du Database Management.

Utilisation :
Le script créé une table database Vocab, elle a pour colonnes : id, nom, description, value
Les modifications par l'utilisateur sont restreintes (via une scene d'edition custom) à la colonne value.

Pour créer une nouvelle ligne à la table :
Code: Tout sélectionner
Database::Vocab.add_row('Name') { |row|
   row.description = "Description de la ligne pour l'utilisateur"
   row.value = "Valeur par défaut"
}
Database::Vocab.add_row('Name2', 'Constante') { |row|
   row.value = "Valeur par défaut"
}
Database::Vocab.add_row('Name3') { |row|
   row.description = "Description de la ligne pour l'utilisateur"
}
Database::Vocab.add_row('Name4')

Le block (facultatif) permet d'assigner une description et/ou une valeur par défaut, il n'est appelé que si la ligne n'existe pas déjà.
'Name' est une chaîne représentant le nom dans la database mais aussi le nom de la constante du module Vocab correspondante s'il n'est pas spécifié en deuxième argument.
La description est adaptée automatiquement à la largeur de la fenêtre, pas besoin de rajouter des "\n" ^^.

Pour récupérer la valeur :
Code: Tout sélectionner
Vocab::Name
Vocab::Constante
Vocab::Name3
Vocab::Name4


Sommaire :

  1. Dependances
  2. Script de base
  3. Scene d'édition


Haut
 Profil  
 
 Sujet du message: Re: [Rmxp] Vocab
MessagePublié: 02 Aoû 2009, 11:38 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Juin 2008, 00:00
Messages: 476
Logiciel(s) préféré(s): Scintilla based
Point(s) Fort(s): Rubyismes
Points d'aide: 60/60

Créations :

- [Rmxp] Vocab

- [Rmxp] Visible Equipment

- [Rmxp] Animated Title

- [XP/VX] Cache Extension


Voir ses créations

Dépendances :

Database Management & Database Editor


Haut
 Profil  
 
 Sujet du message: Re: [Rmxp] Vocab
MessagePublié: 02 Aoû 2009, 11:40 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Juin 2008, 00:00
Messages: 476
Logiciel(s) préféré(s): Scintilla based
Point(s) Fort(s): Rubyismes
Points d'aide: 60/60

Créations :

- [Rmxp] Vocab

- [Rmxp] Visible Equipment

- [Rmxp] Animated Title

- [XP/VX] Cache Extension


Voir ses créations

Script de base :
Code: Tout sélectionner
#===============================================================================
# *** Vocab
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Un script permettant de gerer aisement le vocabulaire personnalisable par l'utilisateur via une
# table du Database Management.
#===============================================================================

   #===========================================================================
   # ** Vocab
   # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   # Declaration du module qui contiendra les constantes
   #===========================================================================
   module Vocab; end

   #===========================================================================
   # ** Database::Vocab
   # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   # Declaration de la table database Vocab
   #===========================================================================
   Database.create_table('Vocab') { |t|
      t.column(:description, Database::String, :default => 'NA')
      t.column(:value, Database::String, :default => 'NA')
   }
 
   class << Database::Vocab
     
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Database::Vocab.new_row / Database::Vocab.vocab_row
      # -------------------------------
      # Alias et redefinition de new_row qui permettent de desactiver la création de ligne
      #  par l'utilisateur
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias vocab_new_row new_row
      def new_row; end

      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Database::Vocab.add_row
      #     name :  Le nom de la ligne; ce sera aussi le nom de la constante de Vocab
      #     block : Block pour pouvoir specifier les valeurs par défaut.
      # -------------------------------
      # Méthode de création d'une nouvelle ligne et de la constante correspondante
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      def add_row(name, const_name = name, &block)
         row = find {|r| r.name == name }
         if row.nil?
            row = vocab_new_row
            row.name = name
            block.call(row) if block_given?
         end
         const_name.tr!(' ', '_')
         ::Vocab.const_set(const_name, row.value)
      end
      
   end


Haut
 Profil  
 
 Sujet du message: Re: [Rmxp] Vocab
MessagePublié: 30 Nov 2009, 15:15 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Juin 2008, 00:00
Messages: 476
Logiciel(s) préféré(s): Scintilla based
Point(s) Fort(s): Rubyismes
Points d'aide: 60/60

Créations :

- [Rmxp] Vocab

- [Rmxp] Visible Equipment

- [Rmxp] Animated Title

- [XP/VX] Cache Extension


Voir ses créations

Scene d'édition :

Code: Tout sélectionner
#===============================================================================
# *** Scene_DataVocab
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Une scène d'edition custom qui permet de restreindre les modifications de la table Vocab à la colonne value
#===============================================================================
 
  class Scene_DataVocab
      
      #========================================================================
      # ** Window_Help
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # La fenetre délivrant les informations necessaires à l'utilisateur sur la ligne en modification
      # (nom et description)
      #========================================================================
      class Window_Help < Window_Base
         
         # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         # * Initialisation.
         # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         def initialize(row)
            super(0, 0, 640, 480)
            self.contents = Bitmap.new(608, 448)
            contents.font.name = $fontface
            contents.font.size = $fontsize
            refresh(row)
         end

         # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         # * Rafraichissement.
         # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         def refresh(row)
            contents.clear
            contents.draw_text(0, 0, 608, 32, row.name)
            contents.draw_text(0, 128, 608, 32, 'Description :')
            descr = ['']
            row.description.each(' ') {|word|
               tmp = descr.last.clone << word
               width = contents.text_size(tmp).width
               a = (width >= 608 ? descr : descr.last)
               a << word
            }
            descr.each_with_index {|line, i|
               contents.draw_text(0, 164+i*32, 608, 32, line)
            }
         end
         
      end
      
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * table_index : index de la table Database::Vocab.
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      @@table_index = Database.tables.index(Database::Vocab)
      
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Initialisation.
      #       row_id : la ligne en modification.
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      def initialize(row_id)
         @table = Database.tables[@@table_index]
         @row_id = row_id
      end

      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Main.
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
      def main
         @window_help = Window_Help.new(@table[@row_id])
         @window = Window_TextField.new(0,0,640)
         @window.back_opacity = 0
         @window.y = 64
         @window.value = @table[@row_id].value
         @window.active = @window.visible = true
         Graphics.transition
         while $scene == self
            Graphics.update
            Input.update
            update
         end
         Graphics.freeze
         @window_help.dispose
         @window.dispose
      end
      
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Mise à jour.
      # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      def update
         @window.update
         if Input.trigger?(Input::C)
            $game_system.se_play($data_system.decision_se)
            @table[@row_id].value.replace(@window.value)
            $scene = Scene_Database.new(@@table_index, @row_id)
         elsif Input.trigger?(Input::B)
            $game_system.se_play($data_system.cancel_se)
            $scene = Scene_Database.new(@@table_index, @row_id)
         end
      end
      
   end

   # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   # * Alias de la méthode Scene_Table afin d'integrer Scene_DataVocab à Scene_Database.
   # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   alias Vocab_Scene_Table Scene_Table
   def Scene_Table(table)
      if table == Database::Vocab
         return Scene_DataVocab
      end
      return Vocab_Scene_Table(table)
   end


Remonté la dernière fois par Wawower le 30 Nov 2009, 15:15.


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728