RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


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  [ 1 message ] 
Auteur Message
 Sujet du message: Changement de nom de classe
MessagePublié: 01 Mar 2011, 13:37 
Garde
Garde
Avatar de l’utilisateur

Inscrit le: 26 Sep 2006, 00:00
Messages: 1973
Points d'aide: Illimité

Créations :

Voir ses créations

Informations
Ce script tout simple, basé sur ceux de changement de nom, permet au joueur de changer le nom d'une classe.
Comme c'est le nom de la classe qui change, cela s'applique à tous les personnages de cette classe (logique).

J'en suis l'auteur, pas besoin de crédit car j'ai juste modifié un script de base.
Script testé et fonctionnel sous RPG Maker XP.


Scripts
Il y a deux scripts à copier, au dessus de main avec le nom que vous voulez (autant reprendre les noms des classes, c'est à dire respectivement Scene_Class_Name et Window_Class_NameEdit).


Code: Tout sélectionner
#==============================================================================
# ** Scene_Class_Name
#  Par Bahamut 1.2 aka Morphine (01/03/2011)
#==============================================================================

class Scene_Class_Name
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def initialize(class_id)
    @class_id = class_id
  end
 
  def main
    # Make windows
    @edit_window = Window_Class_NameEdit.new(@class_id, 12)
    @input_window = Window_NameInput.new
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @edit_window.dispose
    @input_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @edit_window.update
    @input_window.update
    # If B button was pressed
    if Input.repeat?(Input::B)
      # If cursor position is at 0
      if @edit_window.index == 0
        return
      end
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Delete text
      @edit_window.back
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If cursor position is at [OK]
      if @input_window.character == nil
        # If name is empty
        if @edit_window.class_name == ""
          # Return to default name
          @edit_window.restore_default
          # If name is empty
          if @edit_window.class_name == ""
            # Play buzzer SE
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # Play decision SE
          $game_system.se_play($data_system.decision_se)
          return
        end
        # Change actor name
        $data_classes[@class_id].name = @edit_window.class_name
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to map screen
        $scene = Scene_Map.new
        return
      end
      # If cursor position is at maximum
      if @edit_window.index == 12
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If text character is empty
      if @input_window.character == ""
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Add text character
      @edit_window.add(@input_window.character)
      return
    end
  end
end


Code: Tout sélectionner
#==============================================================================
# ** Window_Class_NameEdit
#==============================================================================

class Window_Class_NameEdit < Window_Base
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :class_name               # name
  attr_reader   :index                    # cursor position
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor    : actor
  #     max_char : maximum number of characters
  #--------------------------------------------------------------------------
  def initialize(class_id, max_char)
    super(0, 0, 640, 128)
    self.contents = Bitmap.new(width - 32, height - 32)
    @class_name = $data_classes[class_id].name
    @max_char = max_char
    # Fit name within maximum number of characters
    name_array = @class_name.split(//)[0...@max_char]
    @class_name = ""
    for i in 0...name_array.size
      @class_name += name_array[i]
    end
    @default_name = @class_name
    @index = name_array.size
    refresh
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # * Return to Default Name
  #--------------------------------------------------------------------------
  def restore_default
    @class_name = @default_name
    @index = @class_name.split(//).size
    refresh
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # * Add Character
  #     character : text character to be added
  #--------------------------------------------------------------------------
  def add(character)
    if @index < @max_char and character != ""
      @class_name += character
      @index += 1
      refresh
      update_cursor_rect
    end
  end
  #--------------------------------------------------------------------------
  # * Delete Character
  #--------------------------------------------------------------------------
  def back
    if @index > 0
      # Delete 1 text character
      name_array = @class_name.split(//)
      @class_name = ""
      for i in 0...name_array.size-1
        @class_name += name_array[i]
      end
      @index -= 1
      refresh
      update_cursor_rect
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Draw name
    name_array = @class_name.split(//)
    for i in 0...@max_char
      c = name_array[i]
      if c == nil
        c = "_"
      end
      x = 320 - @max_char * 14 + i * 28
      self.contents.draw_text(x, 32, 28, 32, c, 1)
    end
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    x = 320 - @max_char * 14 + @index * 28
    self.cursor_rect.set(x, 32, 28, 32)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_cursor_rect
  end
end



Instructions d'utilisation
Utilisez simplement la commande d'événement pour insérer un script, avec le code suivant :
Code: Tout sélectionner
$scene = Scene_Class_Name.new(X)

En remplaçant X par l'id de la classe que vous voulez modifier (visible dans la base de données [F9])

Ou pour changer le nom de la classe dont l'id est contenu dans une variable Y :
Code: Tout sélectionner
$scene = Scene_Class_Name.new($game_variables[Y])


Enfin, pour changer le nom de la classe du perso dont la place dans l'équipe est Z :
Code: Tout sélectionner
$scene = Scene_Class_Name.new($game_party.actors[Z].class_id)

Attention, on compte à partir de zéro dans ce cas, donc $game_party.actors[1] correspond au deuxième personnage de l'équipe.



Tout ça ce sont des exemples, vous pouvez passer n'importe quelle variable ; attention tout de même les erreurs ne sont pas gérées donc si vous mettez une variable égale à zero par exemple, le jeu plantera.

_________________
Image
Image


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

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