Partagez
Aller en bas
Mister Geek
Mister Geek
Staffeux retraité

Nombre de messages : 719
Age : 25
Localisation : Vosges
Distinction : aucune
Date d'inscription : 20/12/2007

Fonctions pour battlers en combat Empty Fonctions pour battlers en combat

le Ven 7 Mar 2008 - 19:38
Auteur : DerVVulfman

Traducteur : TheLSSJ

Utilité : Ajoute des fonctionnalités pour les battlers en combat telles que la transparence avant l'attaque, la position d'affichage des battlers, etc...

Instructions : Dans l'en-tête du script (ne pas oublier de configurer ce qui suit l'en-tête).
A placer évidemment au-dessus de main.

Script :

Partie 1 :

Code:
#==============================================================================
# ** Actor Battler Graphics
#------------------------------------------------------------------------------
#    Par DerVVulfman
#    Traduit de l'anglais au français par TheLSSJ
#    version 1.0
#    03-01-2008
#    RGSS2
#------------------------------------------------------------------------------
#
#  INTRODUCTION :
#
#
#  Ce script vous permet d'ajouter 'Actor Battler' qui n'a pas été inclus
#  dans le système de RPG Maker VX. 
#  Ce script imite beaucoup de caractéristiques perdues et en inclut
#  une nouvelle : Actor Battler Centering.
#
#------------------------------------------------------------------------------
#
#  UTILISATION :
#
#  --Positionnement--
#  Une des fonctions appréciables de ce système est la possibilité
#  d'ajuster la position gauche/droite et haut/bas de vos battlers.
#
#  La position verticale (haut/bas) peut être réglée en modifiant
#  la valeur de la variable SCREEN_Y. La position horizontale
#  est un peu différente.
#
#  La variable CENTER_X est vraie ou fausse selon le positionnement
#  horizontale que vous voulez donner à vos battlers : true (vrai) si
#  vous souhaitez que vos battlers s'espacent à la manière de défaut
#  de RPGMaker VX ou false (faux) si vous voulez que le système
#  calcule leur position et les place au centre de l'écran.
#
#  La variable DEFAULT_X gère le nombre de héros que l'on montre
#  dans le combat. Quand la variable est par défaut, la valeur maximum
#  utilisée peut être changée avec un appel de script.
#
#  Pour finir,  la variable TRANSPARENT est une autre variable à valeur
#  vraie/fausse que vous pouvez utiliser pour rendre les combattants
#  légèrement transparents jusqu'à ce qu'ils soient sur le point d'exécuter
#  une attaque. Une autre caractéristique de RPG Maker VX.
#
#  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
#
#  --La liste des héros--
#  Ce système exige de réviser le système de configuration pour énumérer
#  tous les héros que vous utilisez. Il est supposé que ces combattants seront
#  dans le dossier 'Graphics\Battlers' avec le reste des combattants ennemis.
#
#  Chaque héros possède deux valeurs : le nom de fichier et la teinte.
#  Cela vous permet non seulement de modifier les battlers pour vos héros,
#  mais règle aussi la teinte de ceux-ci. Si vous n'incluez pas la valeur de
#  la teinte, elle se règle automatiquement à '0'.
#
#------------------------------------------------------------------------------
#
#  APPELS DE SCRIPTS :
#
#  Il n'y a que deux appels de script à retenir :
#
#  --Changement de battlers--
#  Étant donné que ce système vous permet d'utiliser des battlers,
#  vous pouvez trouver le besoin de modifier ces derniers pendant le jeu.
#  Malheureusement, cela ne peut pas être fait avec un évènement.
#  Voici donc l'appel de scripts nécessaire :
#
#          $game_actors[ID].set_battler("filename", hue)
#
#  Pour utiliser cet appel, vous pouvez remplacer le nom de fichier
#  ("filename") ainsi que la teinte (hue) du battler pendant le jeu.
#
#  Un exemple :  $game_actors[1].set_battler("Ylva")
#
#  ...remplace le battler actuel du héros n°1 par "Ylva.png".
#  Puisque la valeur 'hue' n'a pas été indiquée, elle sera automatiquement
#  réglée à 0.
#
#  NOTE :  Dans $game_actors[2].set_battler(), on remarque qu'aucun
#  nom de fichier n'est indiqué. Cela a pour effet d'effacer celui utilisé
#  au moment où la commande est lancée.
#
#  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
#
#  --Changer la valeur des variables de position--
#  Ce script vous permet de faire centrer les combattants dans les combats
#  et de les espacer entre eux. Dans la plupart des circonstances, vous avez
#  quatre héros dans votre jeu. Mais et si vous voulez augmenter le nombre
#  de héros à 5 ou 6 ?
#
#  Maintenant, ce système n'augmente pas le nombre de héros dans votre jeu,
#  mais il est déjà conçu pour régler l'écartement de vos héros dans les combats.
#  Avec un appel de script simple :
#
#          $game_system.actorbattler_max = 7
#
#  Vous pouvez choisir l'écartement de vos battlers en combat pour que ça laisse
#  autant de place que si vous aviez 7 battlers.
#
#------------------------------------------------------------------------------
#
#  EDITS ET MODIFICATIONS :
#
#  Ce système nomme les méthodes suivantes :
#  * initialize                    (RPG::Actor)
#  * initialize                    (Game_Temp)
#  * initialize                    (Game_System)
#  * initialize                    (Game_Actor)
#  * update                        (Sprite_Battler)
#  * start                          (Scene_Battle)
#  * start_party_command_selection  (Scene_Battle)
#  * process_victory                (Scene_Battle)
#  * execute_action                (Scene_Battle)
#
#  Ce système redéfinit les méthodes suivantes :
#  * use_sprite?                    (Game_Actor)
#  * create_actors                  (Spriteset_Battle)
#  * update_actors                  (Spriteset_Battle)
#
#
#------------------------------------------------------------------------------
#
#  TERMES ET CONDITIONS :
#
#  Libre d'usage, même dans les jeux commerciaux. A noter tout de
#  même que j'apprécierais une place dans vos crédits.
#
#==============================================================================

#===============================================================
#                         
#                www.rpgmakervx-fr.com                                         
#     
#===============================================================

#==============================================================================
# ** Actor_Battler Module
#------------------------------------------------------------------------------
#  Module contenant les données configurables pour les battlers des héros.
#==============================================================================

module Actor_Battler
  # Liste des héros
  ACTOR = Array.new  # Ne pas toucher -_^

  #========================================================================
  #  **  C  O  N  F  I  G  U  R  A  T  I  O  N      D  U      S  Y  S  T  E  M  E  **  #
  #========================================================================
 
  # --Positionnement--
  # Système de positionnement des batttlers.
  #
    CENTER_X    = true    # Si la valeur est true (vraie), centrer les battlers plutôt que de les aligner comme par défaut.
    DEFAULT_X  = 5      # Equipe max. par défaut.
    SCREEN_Y    = 400    # Position verticale des battlers.
    TRANSPARENT = true    # Si la valeur est true (vraie), rendre les battlers légèrement transparents avant l'attaque.
 
 
  # --Liste des héros--
  # Ajouter vos battlers ici.
  #
  # Héros, Nom de fichier, Teinte (optionnel)
    ACTOR[1] = ["Ralph"]
    ACTOR[2] = ["Ulrica"]
    ACTOR[3] = ["Bennett",  0]
    ACTOR[4] = ["Ylva",    0]
    ACTOR[5] = ["Lawrence", 0]
    ACTOR[6] = ["Oscar",    0]
    ACTOR[7] = ["Vera",    0]
    ACTOR[8] = ["Elmer",    0]

 
  #========================================================================
  #  **  F  I  N    D  E      L  A    C  O  N  F  I  G  U  R  A  T  I  O  N  **  #
  #========================================================================
end
Mister Geek
Mister Geek
Staffeux retraité

Nombre de messages : 719
Age : 25
Localisation : Vosges
Distinction : aucune
Date d'inscription : 20/12/2007

Fonctions pour battlers en combat Empty Re: Fonctions pour battlers en combat

le Ven 7 Mar 2008 - 19:39
Partie 2 (à coller à la suite de la partie 1) :

Code:

#==============================================================================
# ** RPG Module
#------------------------------------------------------------------------------
#  Module contenant les structures de données de RPG Maker VX.
#==============================================================================
module RPG
  #============================================================================
  # ** Héros
  #----------------------------------------------------------------------------
  #  Données des héros
  #============================================================================
  class Actor
    #------------------------------------------------------------------------
    # * Listage des alias
    #------------------------------------------------------------------------
    alias actorbattler_init initialize
    #------------------------------------------------------------------------
    # * Initialisation des objets
    #------------------------------------------------------------------------
    def initialize
      # Exécuter l'appel original
      actorbattler_init
      @battler_name = ""
      @battler_hue = 0
    end
  end
end



#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
#  Cette classe manipule des données temporaires qui sauvent des données.
#  L'instance de cette classe est référée par $game_temp.
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # * Variables d'instance
  #--------------------------------------------------------------------------
  attr_accessor :battle_main_phase        # battle flag: main phase
  #--------------------------------------------------------------------------
  # * Listage des alias
  #--------------------------------------------------------------------------
  alias actorbattler_initialize initialize
  #--------------------------------------------------------------------------
  # * Initialisation des objets
  #--------------------------------------------------------------------------
  def initialize
    # Exécuter l'appel original
    actorbattler_initialize
    # Mettre la phase principal de combat  à "faux"
    @battle_main_phase = false
  end
end



#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  Cette classe manipule des données concernant le système.
#  Elle dirige aussi les véhicules et BGM, etc.
#  L'instance de cette classe est référée par $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Variables d'instance
  #--------------------------------------------------------------------------
  attr_accessor :actorbattler_max        # Max. size for centered battlers
  #--------------------------------------------------------------------------
  # * Listage des alias
  #--------------------------------------------------------------------------
  alias actorbattler_initialize initialize
  #--------------------------------------------------------------------------
  # * Initialisation des objets
  #--------------------------------------------------------------------------
  def initialize
    # Exécuter l'appel original
    actorbattler_initialize
    # Mettre le centrage des battlers à 4 (défaut)
    @actorbattler_max = Actor_Battler::DEFAULT_X
  end
end



#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Cette classe manipule les héros.
#  Elle est utilisée dans la classe Game_Actors ($game_actors) et est
#  référée par la classe Game_Party ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Variables d'instance
  #--------------------------------------------------------------------------
  attr_accessor :screen_x                # battle screen X coordinate
  attr_accessor :screen_y                # battle screen Y coordinate
  #--------------------------------------------------------------------------
  # * Listage des alias
  #--------------------------------------------------------------------------
  alias actorbattler_init initialize
  #--------------------------------------------------------------------------
  # * Initialisation des objets
  #    actor_id : ID du héros
  #--------------------------------------------------------------------------
  def initialize(actor_id)
    # Exécuter l'appel original
    actorbattler_init(actor_id)
    # Appliquer les battlers
    @battler_name = Actor_Battler::ACTOR[actor_id][0]
    # Appliquer la teinte des battlers si existante, sinon la mettre à 0 (défaut).
    if Actor_Battler::ACTOR[actor_id][1] != nil
      @battler_hue  = Actor_Battler::ACTOR[actor_id][1]
    else
      @battler_hue  = 0
    end
  end
  #--------------------------------------------------------------------------
  # * Changer de battler
  #    battler_name  : nom de fichier du nouveau battler
  #    battler_hue  : teinte du nouveau battler (défaut = 0)
  #--------------------------------------------------------------------------
  def set_battler(battler_name = "", battler_hue = 0)
    @battler_name = battler_name
    @battler_hue = battler_hue
  end
  #--------------------------------------------------------------------------
  # * Utilisation des sprites ?
  #--------------------------------------------------------------------------
  def use_sprite?
    return true
  end
  #--------------------------------------------------------------------------
  # * Coordonnée X de l'équipe
  #--------------------------------------------------------------------------
  def screen_x
    if self.index != nil
      if Actor_Battler::CENTER_X
        # Retourner après avoir calculé la coordonnée X du centre de l'équipé
              return self.index * (544 / $game_system.actorbattler_max) +
              ($game_system.actorbattler_max - $game_party.members.size) *
              (272 / $game_system.actorbattler_max) +
              (272 / $game_system.actorbattler_max)
      else
        # Retourner après avoir calculé la coordonnée X du positionnement de l'équipe par défaut
        return self.index * 136 + 68
      end
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # * Coordonnée Y de l'équipe
  #--------------------------------------------------------------------------
  def screen_y
    return Actor_Battler::SCREEN_Y
  end
  #--------------------------------------------------------------------------
  # * Coordonnée Z de l'équipe
  #--------------------------------------------------------------------------
  def screen_z
    # Retourner après avoir calculé la coordonnée Z de l'ordre des membres dans l'équipe
    if self.index != nil
      return $game_party.members.size - self.index
    else
      return 0
    end
  end
end



#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
#  Ce sprite est utilisé pour afficher les battlers.
#  Il observe un cas de la classe Game_Battler et change automatiquement les
#  conditions du sprite.
#==============================================================================

class Sprite_Battler < Sprite_Base
  #--------------------------------------------------------------------------
  # * Listage des alias
  #--------------------------------------------------------------------------
  alias actorbattler_update update
  #--------------------------------------------------------------------------
  # * Rafraichissement des frames
  #--------------------------------------------------------------------------
  def update
    # Exécuter l'appel original
    actorbattler_update
    # Si le battler du héros est légèrement transparent avant l'attaque
    if Actor_Battler::TRANSPARENT == true
      # Si le battler est celui d'un des héros visibles
      if @battler.is_a?(Game_Actor) and @battler_visible
        # Rabaisser son opacité un peu dans la phase principale
        if $game_temp.battle_main_phase
          self.opacity += 3 if self.opacity < 255
        else
          self.opacity -= 3 if self.opacity > 207
        end
      end 
    end
  end
end



#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
#  Cette classe réunit les sprites de l'écran de bataille.
#  Elle est utilisée dans la classe Scene_Battle.
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * Création du sprite du héros
  #    Enlève l'image des héros 'vide' utilisée par le système par défaut et la remplace.
  #    Il observe aussi la taille réelle de l'équipe et n'utilise pas la taille prédéterminée
  #    des 4 héros.
  #--------------------------------------------------------------------------
  def create_actors
    @actor_sprites = []
    for actor in $game_party.members.reverse
      @actor_sprites.push(Sprite_Battler.new(@viewport2, actor))
    end
  end
  #--------------------------------------------------------------------------
  # * Rafraichissement du sprite du héros
  #--------------------------------------------------------------------------
  def update_actors
    # Mettre à jour les sprites des héros si la taille de l'équipe augmente
    if $game_party.members.size > @actor_sprites.size
      dispose_actors
      create_actors
    end
    for sprite in @actor_sprites
      sprite.update
    end
  end
end



#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  Cette classe exécute le traitement de l'écran de bataille.
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Listage des alias
  #--------------------------------------------------------------------------
  alias actorbattler_s start
  alias actorbattler_spcs start_party_command_selection
  alias actorbattler_pv process_victory
  alias actorbattler_ea execute_action
  #--------------------------------------------------------------------------
  # * Démarrer le processus
  #--------------------------------------------------------------------------
  def start
    actorbattler_s
    $game_temp.battle_main_phase = false
  end
  #--------------------------------------------------------------------------
  # * Démarrer la sélection de l'ordre de l'équipe
  #--------------------------------------------------------------------------
  def start_party_command_selection
    actorbattler_spcs 
    if $game_temp.in_battle
      $game_temp.battle_main_phase = false
    end
  end
  #--------------------------------------------------------------------------
  # * Processus de victoire
  #--------------------------------------------------------------------------
  def process_victory
    $game_temp.battle_main_phase = false
    actorbattler_pv
  end
  #--------------------------------------------------------------------------
  # * Démarrer le traitement du début de la bataille
  #--------------------------------------------------------------------------
  def execute_action
    actorbattler_ea
    $game_temp.battle_main_phase = true
  end
end
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum