AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -25%
PC Portable Gamer 16,1” HP Victus 16 – 16 ...
Voir le deal
749.99 €

Partagez
 

 Amélioration Weapon_Level_System_script

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Torayl
Habitant Lv.6
Habitant Lv.6
avatar


Masculin Age : 26
Inscrit le : 29/03/2011
Messages : 122

Amélioration Weapon_Level_System_script Empty
MessageSujet: Amélioration Weapon_Level_System_script   Amélioration Weapon_Level_System_script Icon_minitimeDim 3 Avr 2011 - 10:09

Bonjour, j'aimerais que quelqu'un modifie ce script de façon à ce que lorsque la personne améliore son arme, cette dernière puisse changer d'apparence. Le script est le suivant :
Code:
 #=========================================================
# Weapon Level System script                         
#        by Akin                                     
#  Traduction française (partielle) : Blockade                                                   
#=========================================================
# Quand l'arme gagne un niveau ces stats augmente 
# Pour ouvrir la fenêtre d'amélioration :                     
# "$scene = Scene_Weapons_Upgrade.new"         
#                                                     
# Cherchez A34sZ1A pour trouver les formules utilisées 
# pour calculer les nombre de points donnés lors d'une amélioration 
# et pour le prix de l'amélioration             
#                                                     
# Le script utilise Window_Confirm class scripté par
# Prexus                                                                                                 
#=========================================================

# C'est la classe window confirm scripté par Pexus
class Window_Confirm < Window_Selectable
  def initialize(index = -1)
    super(192, 168, 160, 80)
    create_contents
    @item_max = 2
    @column_max = 2
    self.index = index
    self.active = false
    self.openness = 0
    refresh
  end
  #--------------------------------------------------------------------------
  def refresh
    for i in 0..@item_max
      rect = item_rect(i)
      self.contents.clear_rect(rect)
    end
    self.contents.draw_text(0, 0, self.contents.width, WLH, "Confirmation?", 1)
    rect = item_rect(0)
    self.contents.draw_text(rect, "Oui", 1)
    rect = item_rect(1)
    self.contents.draw_text(rect, "Non", 1)
  end
  #--------------------------------------------------------------------------
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = (contents.width + @spacing) / @column_max - @spacing
    rect.height = WLH
    rect.x = index % @column_max * (rect.width + @spacing)
    rect.y = (index / @column_max * WLH) + WLH
    return rect
  end
end

# Ce module donne un niveau supplémentaire pour chaque arme
module RPG
  class Weapon < BaseItem
  attr_accessor :level
  alias akin_weapon_level_system_ini initialize
    def initialize
      akin_weapon_level_system_ini
      @level = 1
    end
  end
end

# Ce module calcule le niveau supplémentaire de chaque arme
module Akin_Weapons
  def self.level_up(weapon_input)
    if weapon_input.level == nil or weapon_input.level == 0
      weapon_input.level = 1
    end
    weapon_input.level += 1
 
    #--------Fonctions niveau supplémentaire-------------A34sZ1A -----------------------
    # Les stats augmentent de 20 % de leur valeur précédente + 1
    # A chaque niveau supplémentaire cette formule est appliquée
    # Soyez sure que vous renvoyez un entier grâce à "Integer()"
    # Si vous modifiez la fonction, une autre à besoin d'être changée
    # cherchez  BZ8q1
    weapon_input.atk = Integer(weapon_input.atk * 1.2 + 1)
    weapon_input.def = Integer(weapon_input.def * 1.2 + 1)
    weapon_input.spi = Integer(weapon_input.spi * 1.2 + 1)
    weapon_input.agi = Integer(weapon_input.agi * 1.2 + 1)
    #-------Fin des fonctions niveau supplémentaire-----------------------------------------
  end
end

#------------------------------------------------------------------------------
#  Ajoute des méthodes  à window_base pour afficher l'icône de l'arme équipée
#==============================================================================

class Window_Base < Window
  def draw_actor_weapon(actor, x, y)
    self.contents.font.color = power_up_color
    self.contents.draw_text(x, y, 96, WLH, "Equipé :")
    self.contents.font.color = normal_color
    n = actor.weapon_id
    equiped_weapon = $data_weapons[n]
    if equiped_weapon == nil
      self.contents.draw_text(x + 8, y + WLH, 192, WLH, "Aucun")
    else
      self.contents.draw_text(x + 8, y + WLH, 192, WLH, equiped_weapon.name)
      if equiped_weapon.level == nil or equiped_weapon.level == 0
        $data_weapons[n].level = 1
        equiped_weapon = $data_weapons[n]
      end
      self.contents.font.color = system_color
      self.contents.draw_text(x + 8, y + WLH * 2, 112, WLH, "Arme Niv. :")
      self.contents.font.color = normal_color
      self.contents.draw_text(x + 120, y + WLH * 2, 64, WLH, equiped_weapon.level)
    end
  end
end

#==============================================================================
# ** Window_Char_WeaponStatus
#------------------------------------------------------------------------------
#  Cette fenêtre affiche chaque arme des joueurs, le niveau des armes sur l'écran
#==============================================================================

class Window_Char_WeaponStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Initialisation de l'objet
  #    x : Coordonnée X de la fenêtre
  #    y : Coordonnée Y de la fenêtre
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 384, 416)
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.members.size
    for actor in $game_party.members
      draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
      x = 104
      y = actor.index * 96 + WLH / 2
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x, y + WLH * 2)
      draw_actor_level(actor, x, y + WLH * 1)
      draw_actor_weapon(actor, x + 96, y)
    end
  end
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------
  def update_cursor
    if @index < 0              # No cursor
      self.cursor_rect.empty
    elsif @index < @item_max    # Normal
      self.cursor_rect.set(0, @index * 96, contents.width, 96)
    elsif @index >= 100        # Self
      self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
    else                        # All
      self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
    end
  end
end

#==============================================================================
# ** Window_Akin_Price
#------------------------------------------------------------------------------
#  Cette fenêtre affiche le prix de l'amélioration
#=============================================================================

class Window_Akin_Price < Window_Base
  #--------------------------------------------------------------------------
  # * Initialisation de l'objet
  #    x : Coordonnée X de la fenêtre
  #    y : Coordonnée Y de la fenêtre
  #--------------------------------------------------------------------------
  def initialize(x, y, price = 0)
    super(x, y, 160, 72)
    @price = price
    refresh(@price)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(price)
    self.contents.clear
    self.contents.draw_text(0, -4, 80, 24, "Prix")
    draw_currency_value(price, 4, 12, 120)
  end
end


#==============================================================================
# ** Window_WeapUpgradeStatus
#------------------------------------------------------------------------------
#  Cette fenêtre vous indique ce que l'amélioration fera a votre arme
#==============================================================================

class Window_WeapUpgradeStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Initialisation de l'objet
  #    x : Coordonnée X de la fenêtre
  #    y : Coordonnée Y de la fenêtre
  #    actor : Héros
  #--------------------------------------------------------------------------
  def initialize(x, y, weapon)
    super(x, y, 160, WLH * 4 + 32)
    @weapon = weapon
    refresh(@weapon)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(weapon)
    @weapon = weapon
    unless @weapon == nil
      self.contents.clear
      draw_parameter(0, 0, 0)
      draw_parameter(0, WLH * 1, 1)
      draw_parameter(0, WLH * 2, 2)
      draw_parameter(0, WLH * 3, 3)
    end
  end
  #--------------------------------------------------------------------------
  # * Paramètres après l'équipement
  #    new_atk : Attaque après l'équipement
  #    new_def : Défense après l'équipement
  #    new_spi : Esprit/Intelligence  après l'équipement
  #    new_agi : Agilité après l'équipement
  #--------------------------------------------------------------------------
  def set_new_stats(new_atk, new_def, new_spi, new_agi)
    if @new_atk != new_atk or @new_def != new_def or
      @new_spi != new_spi or @new_agi != new_agi
      @new_atk = new_atk
      @new_def = new_def
      @new_spi = new_spi
      @new_agi = new_agi
      refresh(@weapon)
    end
  end
  #--------------------------------------------------------------------------
  # * Get Post Equip Parameter Drawing Color
  #    old_value : parameter before equipment change
  #    new_value : parameter after equipment change
  #--------------------------------------------------------------------------
  def new_parameter_color(old_value, new_value)
    if new_value > old_value      # Get stronger
      return power_up_color
    elsif new_value == old_value  # No change
      return normal_color
    else                          # Get weaker
      return power_down_color
    end
  end
  #--------------------------------------------------------------------------
  # * Afficher les paramètres
  #    x    :  draw spot x-coordinate
  #    y    : draw spot y-coordinate
  #    type : type du paramètre (0 - 3)
  #--------------------------------------------------------------------------
  def draw_parameter(x, y, type)
    case type
    when 0
      name = "For."  # inscrivez Ici ce qui correspond à la Force (5 Caractères Max.)
      value = @weapon.atk
      new_value = @new_atk
    when 1
      name = "Def." # inscrivez Ici  ce qui correspond à la Défense (5 Caractères Max.)
      value = @weapon.def
      new_value = @new_def
    when 2
      name = "Int." # inscrivez Ici  ce qui correspond à la Intelligence (5 Caractères Max.)
      value = @weapon.spi
      new_value = @new_spi
    when 3
      name = "Agi." # inscrivez Ici  ce qui correspond à la Agilité (5 Caractères Max.)
      value = @weapon.agi
      new_value = @new_agi
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x + 4, y, 80, WLH, name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 50, y, 30, WLH, value, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(x + 79, y, 20, WLH, ">", 1)
    if new_value != nil
      self.contents.font.color = new_parameter_color(value, new_value)
      self.contents.draw_text(x + 98, y, 30, WLH, new_value, 2)
    end
  end
end

#==============================================================================
# ** Scene_Weapons_Upgrade
#------------------------------------------------------------------------------
#  Cette classe indique le processus d'amélioration de l'arme
#==============================================================================

class Scene_Weapons_Upgrade < Scene_Base
  #--------------------------------------------------------------------------
  # * Initialisation de l'objet
  #    weapon_up_index : Position initiale du curseur de commande
  #--------------------------------------------------------------------------
  def initialize(weapon_up_index = 0, player_index = 0)
    @weapon_up_index = weapon_up_index
    @actor_index = player_index
    @actor = $game_party.members[player_index]
    n = @actor.weapon_id
    @weapon = $data_weapons[n]
  end
  #--------------------------------------------------------------------------
  # * Démarrage du processus
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_select_window
    @gold_window = Window_Gold.new(384, 360)
    @character_window = Window_Char_WeaponStatus.new(0, 0)
    @header_window = Window_Base.new(384, 0, 160, 80)
    #--------Shop Heading --------------------A34sZ1A -----------------------
    @header_window.contents.draw_text(0, 0, 128, 24, "Choisissez l'arme", 1)
    @header_window.contents.draw_text(0, 24, 128, 24, "à améliorer", 1)
    #--------Shop Heading End ----------------A34sZ1A -----------------------
    @upgrade_window = Window_WeapUpgradeStatus.new(384, 160, @weapon)
    @upgrade_window.visible = false
    @price_window = Window_Akin_Price.new(384, 288, 0)
    @price_window.visible = false
    @confirm_window = Window_Confirm.new
    @confirm_window.visible = false
  end
  #--------------------------------------------------------------------------
  # * Fin du processus
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @select_window.dispose
    @gold_window.dispose
    @character_window.dispose
    @header_window.dispose
    @upgrade_window.dispose
    @price_window.dispose
    @confirm_window.dispose
    $game_party.last_actor_index = 0
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @select_window.update
    @gold_window.update
    @character_window.update
    @confirm_window.update
    if @select_window.active
      @upgrade_window.visible = false
      @price_window.visible = false
      update_select_selection
    elsif @character_window.active
      @upgrade_window.visible = true
      @price_window.visible = true
      update_actor_selection
      update_weapon_upgrade
    elsif @confirm_window.active
      update_confirm_window_selection
    end
  end
  #--------------------------------------------------------------------------
  # * Création d'une fenêtre de confirmation
  #--------------------------------------------------------------------------
  def create_select_window
  #--------Textes du menus -------------A34sZ1A ------------------------
    s1 = "Améliorer"
    s2 = "Quitter"
  #------- Fin----------------------------------------------------------------------
    @select_window = Window_Command.new(160, [s1, s2])
    @select_window.x = 384
    @select_window.y = 80
    @select_window.index = @weapon_up_index
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_select_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      case @select_window.index
      when 0      # Upgrade
        start_actor_selection
      when 1      # Back
        return_scene
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Start Actor Selection
  #--------------------------------------------------------------------------
  def start_actor_selection
    @select_window.active = false
    @character_window.active = true
    @character_window.index = 0
  end
  #--------------------------------------------------------------------------
  # * End Actor Selection
  #--------------------------------------------------------------------------
  def end_actor_selection
    @select_window.active = true
    @character_window.active = false
    @character_window.index = -1
  end
  #--------------------------------------------------------------------------
  # * Update Actor Selection
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      @upgrade_window.visible = false
      @price_window.visible = false
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      $game_party.last_actor_index = @character_window.index
      upgrade_weapon($game_party.last_actor_index)
    end
  end
  #--------------------------------------------------------------------------
  # * Update Confirm Window
  #--------------------------------------------------------------------------
  def update_confirm_window_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @confirm_window.active = false
      @confirm_window.visible = false
      @confirm_window.index = 0
      @character_window.active = true
      @confirm_window.close
    elsif Input.trigger?(Input::C)
      if @confirm_window.index == 0 # Yes
        @confirm_window.active = false
        @confirm_window.visible = false
        @confirm_window.index = 0
        @character_window.active = true
        Sound.play_use_skill
        player_index = @character_window.index
        @actor = $game_party.members[player_index]
        n = @actor.weapon_id
        equiped_weapon = $data_weapons[n]
        $game_party.lose_gold(@price)
        Akin_Weapons.level_up(equiped_weapon)
        @character_window.refresh
        @gold_window.refresh
      elsif @confirm_window.index == 1 # No
        Sound.play_cancel
        @confirm_window.active = false
        @confirm_window.visible = false
        @confirm_window.index = 0
        @character_window.active = true
        @confirm_window.close
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Upgrade Window
  #--------------------------------------------------------------------------
  def update_weapon_upgrade
    player_index = @character_window.index
    @actor = $game_party.members[player_index]
    n = @actor.weapon_id
    @weapon = $data_weapons[n]
    unless @weapon == nil
      #--------Formule des prix -------------A34sZ1A -----------------------
      # Les prix augmentent de 20 % de leur valeur précédente + 1
      # La valeur est affiché dans la fenêtre
      # Soyez sur que la valeur soit un entier en utilisant ".to_i"
      # Si vous modifiez la fonction, une autre à besoin d'être changée
      # cherchez  SER23
      temp = Math.exp(@weapon.level / 1.7)
      @price = 3000 * @weapon.level + temp
      @price = @price.to_i
      #-------Fin de la formule des prix ---------------------------------------------
      @upgrade_window.refresh(@weapon)
      @price_window.refresh(@price)
      @upgrade_window.visible = true
      @price_window.visible = true
      if @weapon.level < 20
        #--------Fonctions niveau supplémentaire------BZ8q1-------A34sZ1A -----------------------
        # Les niveaux augmentent de 20 % de leur valeur précédente + 1
        #  Faites que cette formule soit la même que celle mise pour  le niveau supplémentaire
        # La valeur est affiché dans la fenêtre
        # Soyez sur que la valeur soit un entier en utilisant "Integer()"
        after_atk = Integer(@weapon.atk * 1.2 + 1)
        after_def = Integer(@weapon.def * 1.2 + 1)
        after_spi = Integer(@weapon.spi * 1.2 + 1)
        after_agi = Integer(@weapon.agi * 1.2 + 1)
        #-------Fin des fonctions niveau supplémentaire-----------------------------------------
        @upgrade_window.set_new_stats(after_atk, after_def, after_spi, after_agi)
      else
        @upgrade_window.set_new_stats(@weapon.atk, @weapon.def, @weapon.spi, @weapon.agi)
        @price_window.refresh("/ ")
      end
    else
      @upgrade_window.visible = false
      @price_window.visible = false
    end
  end
  #--------------------------------------------------------------------------
  # * Upgrade Weapon Selected
  #--------------------------------------------------------------------------
  def upgrade_weapon(player_index)
    @actor = $game_party.members[player_index]
    n = @actor.weapon_id
    equiped_weapon = $data_weapons[n]
    if equiped_weapon == nil
      Sound.play_buzzer
    else
      #--------Formule des prix ----SER23---------A34sZ1A -------------------
      # Les niveaux augmentent de 20 % de leur valeur précédente + 1
      # Faites que cette formule soit la même que celle mise pour  la formule des prix
      #  La valeur est affiché dans la fenêtre
      # Soyez sur que la valeur soit un entier en utilisant ".to_i"
      temp = Math.exp(@weapon.level / 1.7)
      @price = 100 * @weapon.level + temp
      @price = @price.to_i
      #-------Fin de la Formule des prix ---------------------------------------------
   
      #--------Niveau maximum de l'arme-------------A34sZ1A -----------------------
      # Changer le nombre après"if equiped_weapon.level >="
      # en le niveau maximum que l'arme peut atteindre
      if equiped_weapon.level >= 20
      #--------Fin niveau maximum de l'arme---- ---A34sZ1A -----------------------
        Sound.play_buzzer
      elsif @price > $game_party.gold
        Sound.play_buzzer
      else
        Sound.play_decision
        @confirm_window.visible = true
        @character_window.active = false
        @confirm_window.open
        @confirm_window.index = 0
        @confirm_window.active = true
      end
        @character_window.refresh
    end
  end
 
  #--------------------------------------------------------------------------
  # * Retour à la map
  #--------------------------------------------------------------------------
  def return_scene
    #--------Fin du retour-------------A34sZ1A -----------------------
    # Éditez cette ligne de code si vous voulez  utiliser ce système par
    # le menu principal
    #$scene = Scene_Menu.new(0) # Changez ce nombre pour placer le curseur dans le menu
    $scene = Scene_Map.new
  end
end


# Cela édite la classe Scene_File pour ajouter une option de sauvegarde et de chargement des niveaux des armes.
class Scene_File < Scene_Base
  #-------------------------------Alias List
  alias akin_weaps_write_save_data write_save_data
  alias akin_weaps_read_save_data read_save_data
 
  def write_save_data(file)
  akin_weaps_write_save_data(file)
  Marshal.dump($data_weapons,        file)
  end
 
  def read_save_data(file)
  akin_weaps_read_save_data(file)
  $data_weapons        = Marshal.load(file)
  end
end
Revenir en haut Aller en bas
http://finalfantasyallworld.rpg-dynasty.com
Loup-blanc
Poulet trizo Lv.3
Poulet trizo Lv.3
Loup-blanc


Masculin Age : 28
Inscrit le : 04/02/2011
Messages : 47

Amélioration Weapon_Level_System_script Empty
MessageSujet: Re: Amélioration Weapon_Level_System_script   Amélioration Weapon_Level_System_script Icon_minitimeMar 5 Avr 2011 - 16:31

Salut !

Peux tu préciser ? A chaque amélioration l'arme change d'apparence, ou a partir d'un niveau

(lvl 5 par exemple) ? Et puis c'est assez vaste il faudrai faire pour toute les armes ( à moins

que tu veux que pour une arme) ?

Bye !
Revenir en haut Aller en bas
Torayl
Habitant Lv.6
Habitant Lv.6
avatar


Masculin Age : 26
Inscrit le : 29/03/2011
Messages : 122

Amélioration Weapon_Level_System_script Empty
MessageSujet: Re: Amélioration Weapon_Level_System_script   Amélioration Weapon_Level_System_script Icon_minitimeMar 5 Avr 2011 - 17:19

En fait par exemple j'ai une rondache. Je l'up (lvl 2) grâce au script ci-dessus et POUF ! Une rondache avec un gros pique au milieu... Mais pour les images je les ai. Je voudrais "simplement" que l'arme change d'apparence au lvl 2 et qu'elle ne change plus du tout après (ni de lvl, ni d'apparence) et pour ça il faut changer quelques infos du script mais je sais le faire.

Merci d'avance.
Revenir en haut Aller en bas
http://finalfantasyallworld.rpg-dynasty.com
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 32
Inscrit le : 29/07/2009
Messages : 7841

Amélioration Weapon_Level_System_script Empty
MessageSujet: Re: Amélioration Weapon_Level_System_script   Amélioration Weapon_Level_System_script Icon_minitimeMer 6 Avr 2011 - 13:57

Script de forge : Rondage lvl 1 + Matériel au choix = Rondache lvl 2
Revenir en haut Aller en bas
Torayl
Habitant Lv.6
Habitant Lv.6
avatar


Masculin Age : 26
Inscrit le : 29/03/2011
Messages : 122

Amélioration Weapon_Level_System_script Empty
MessageSujet: Re: Amélioration Weapon_Level_System_script   Amélioration Weapon_Level_System_script Icon_minitimeMer 6 Avr 2011 - 15:03

... J'ai pas compris...
Revenir en haut Aller en bas
http://finalfantasyallworld.rpg-dynasty.com
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 32
Inscrit le : 29/07/2009
Messages : 7841

Amélioration Weapon_Level_System_script Empty
MessageSujet: Re: Amélioration Weapon_Level_System_script   Amélioration Weapon_Level_System_script Icon_minitimeMer 6 Avr 2011 - 15:51

En gros tu utilise un script de forge.
Revenir en haut Aller en bas
Contenu sponsorisé




Amélioration Weapon_Level_System_script Empty
MessageSujet: Re: Amélioration Weapon_Level_System_script   Amélioration Weapon_Level_System_script Icon_minitime

Revenir en haut Aller en bas
 

Amélioration Weapon_Level_System_script

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Demande d'amélioration script de Biward
» Demande d'amélioration S.V.P
» Amelioration de sort
» [ Resolu ] Petite demande d'amélioration
» amélioration de script d’apprentissage de sorts via une arme.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Requêtes :: Archives-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit