Partagez
Aller en bas
tonyryu
Membre

Nombre de messages : 895
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Sam 22 Sep 2012 - 23:47
Oui, je fais ça ce dimanche, par contre, l'objet apparaitra autant de fois dans la liste qu'il y a de recette définit.
Aras73
Aras73
Membre

Nombre de messages : 26
Distinction : aucune
Date d'inscription : 06/04/2012

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 23 Sep 2012 - 10:02
Ok !
Merci ! ^^
parfaitement ce que je cherchais ! ^^
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 23 Sep 2012 - 15:22
Version 1.07 : Ajout de la gestion de plusieurs recettes pour un même objet, et ajout d'une constante pour placer l'alchimie dans le menu ou non (Voir topic d'orgigine)
gatoune
gatoune
Membre

Nombre de messages : 4
Age : 30
Localisation : lyon
Distinction : aucune
Date d'inscription : 10/08/2009

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Lun 11 Mar 2013 - 22:22
Très impressionnant, excellent travail.

Il me fallait ce que tu proposes dans mon jeu, merci bien Very Happy
Xsoul
Xsoul
Membre

Nombre de messages : 237
Distinction : aucune
Date d'inscription : 05/03/2013

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Mar 18 Juin 2013 - 0:03
Bonjour! 

Merci beaucoup pour ce script absolument génial, la seule chose que je n'arrive pas à faire est de changer le nom des listes, par exemple : items en Alchimie ou Herboristerie 
j'ai cru comprendre qu'il fallait peut être changer directement le rtp, je n'ai pas de connaissance en script, l'idéal pour moi serait de faire un changement avec une branche conditionnelle selon un switch (2 langues)

Merci beaucoup si tu peux répondre Wink
Marioblaz
Marioblaz
Membre

Nombre de messages : 66
Age : 22
Localisation : Le château d'Hyrule sous l'océan de la planète de la triforce
Distinction : aucune
Date d'inscription : 03/07/2012

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Ven 21 Juin 2013 - 14:43
Bonjours! Et t'il possible de faire une séparation entre les alchimie de potion et celles d'arme? Non mais parce que je veux pas que ce soit 1 pnj qui fasse TOUTE les alchimie et aussi faire en sorte que le pnj ne propose pas tout (chaque pnj sa spécialité ou autre alchimie en avançant dans le jeu...) enfin bon je me répète là... Si c'est possible (et que vous me comprenez), prévenez moi!
Bonne journée!
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Sam 6 Juil 2013 - 2:30
Ton script est vraiment intéressant mais serait-il possible de faire apparaitre certaine recette seulement a certaine condition par exemple un interrupteur ou une variable ou mieux encore une liste
je veut dire que tu puisse présenter ça un peu comme ça :  \AL[2I17,1I18,"condition"] avec l'apparition de la recette si la "condition" est vraie ^^
est-ce que ce serait possible ? Smile
du coup cela résolverait le problème de séparation des item avec un inter pour chaque
MrGREG
MrGREG
Membre

Nombre de messages : 71
Age : 37
Localisation : loir et cher (41)
Distinction : aucune
Date d'inscription : 20/08/2013

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Lun 2 Sep 2013 - 12:50
Bonjour,
J'ai la même demande que les 2 dernier messages postés.
il serait intéressant de pouvoir soit : séparer les spécialités (objet, armes, armures etc...), soit avoir la possibilité de choisir ce que le PNJ va nous proposer.
personnellement je préfère la seconde solution car elle est plus paramétrable (pour les makers) que la première.

Je sais ça fait un peut nécro poste vu que le dernier message date de début juillet, mais le script est tellement intéressant, que je pense que ça lui fera pas de mal de remonter un peu. (et puis ça fait as 2ans non plus Rolling Eyes )
Xsoul
Xsoul
Membre

Nombre de messages : 237
Distinction : aucune
Date d'inscription : 05/03/2013

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Lun 2 Sep 2013 - 12:57
J'utilise ce script, il est très bien mais dès le début on a 300 recettes qui apparaissent pour le joueur :/ ou alors aucune :/
Balbereith
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 26
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires Gestion alchimie simplifiée - Page 2 522164 ) [Coco' Smile]
Date d'inscription : 13/05/2009

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Sam 11 Oct 2014 - 1:06
Bonjour, je sais que je déterre un vieux truc mais cela pourrait aider certains, j'ai réussi à séparer les objets, des équipements, les scripteurs pourront trouver ça ridicule comme solution mais je fais avec ce que j'ai mes bichons.
Pour cela il faut copier les script deux fois et faire "quelques" suppressions de ligne au bon endroit, changer les noms où il faut et voilà :

Code:
#==============================================================================
# ■ Systeme de gestion d'alchimie simplifiée
#------------------------------------------------------------------------------
#  Ce script a pour but d'ajouter un système d'alchimie très simple d'utilisation
#
#  Version  Date          Auteur        Commentaires
#  1.00      06/09/2012    Tonyryu      Première release
#  1.01      07/09/2012    Tonyryu      Modification pour prendre en charge le parametrage sur la note et non la description
#  1.02      07/09/2012    Tonyryu      Changement de position de la fenêtre d'aide
#  1.03      08/09/2012    Tonyryu      Intégration au menu
#  1.04      08/09/2012    Tonyryu      Suppression du bug si pas d'objet craftable
#  1.05      08/09/2012    Tonyryu      Correction du bug non desactivation des objets n'ayant plus assez de composants
#  1.06      19/09/2012    Tonyryu      Ajout de l'option pour afficher ou non tout la liste même si aucun ingrédients n'est possédé
#  1.07      23/09/2012    Tonyryu      Ajout de la possibilité de spécifier plusieurs recettes pour un même objet / Ajout d'une constante pour choisir de l'ajouter dans le menu
#  1.08      12/03/2013    Tonyryu      Correction du bug de non-dégrisage d'une recette disponible suite à un craft d'un de ces ingrédients / sauvegarde postionnement curseur
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle.
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#SceneManager.call(Scene_Alchimie2)
#==============================================================================

# Constante
ALCHIMIE = "Alchimie"
TOUT_AFFICHER = true
DANS_LE_MENU = false


#==============================================================================
# ** RPG::BaseItem
#------------------------------------------------------------------------------
#  class RPG::BaseItem
#==============================================================================
class RPG::BaseItem
  def note(pAlchimie = false)
    r_note = @note.clone
    r_alchi = ""
   
    r_note.gsub!(/\\/) { "\e" }
    r_note.gsub!(/\e\e/) { "\\" }
    r_note.gsub!(/\eAL\[(.*)\]/i) do
      r_alchi = $1
      ""
    end
    return (pAlchimie ? r_alchi : r_note)
  end
end


#==============================================================================
# ** Window_ItemCategory_Al
#------------------------------------------------------------------------------
#  This window is for selecting a category of normal items and equipment
# on the item screen or shop screen.
#==============================================================================
class Window_ItemCategory_Al2 < Window_Command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(pY)
    super(0, pY)
  end
 
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    return 200
  end
 
  #--------------------------------------------------------------------------
  # * Get Digit Count
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end

  #--------------------------------------------------------------------------
  # * Create Command List
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(Vocab::item,    :item)
    add_command(Vocab::key_item, :key_item)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    @item_window.category = current_symbol if @item_window
  end
  #--------------------------------------------------------------------------
  # * Set Item Window
  #--------------------------------------------------------------------------
  def item_window=(item_window)
    @item_window = item_window
    update
  end
end


#==============================================================================
# ** Window_ItemList_Al
#------------------------------------------------------------------------------
#  This window displays a list of recipe items on the Alchimie screen.
#==============================================================================
class Window_ItemList_Al < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    @category = :none
    @data = []
    @save_index = 0
  end
 
  #--------------------------------------------------------------------------
  # * Set Category
  #--------------------------------------------------------------------------
  def category=(category)
    return if @category == category
    @category = category
    make_item_list
    refresh
    self.oy = 0
  end
  #--------------------------------------------------------------------------
  # * Get Digit Count
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # * Get Number of Items
  #--------------------------------------------------------------------------
  def item_max
    @data ? @data.size : 0
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    @data && index >= 0 ? @data[index] : nil
  end
  #--------------------------------------------------------------------------
  # * Get Activation State of Selection Item
  #--------------------------------------------------------------------------
  def current_item_enabled?
    (@data[index] ? @data[index][1] : false)
  end

  #--------------------------------------------------------------------------
  # * Create Item List
  #--------------------------------------------------------------------------
  def make_item_list
    @data.clear
    # parcourir la liste des item de la catégories
    case @category
    when :item
      tabItem = $data_items
    when :weapon
      tabItem = $data_weapons
    when :armor
      tabItem = $data_armors
    when :key_item
      tabItem = $data_items
    else
      tabItem = []
    end
   
    tabItem.each do |item|
      if item
        validItem = true
        if @category == :item
          validItem = !item.key_item?
        elsif @category == :key_item
          validItem = item.key_item?
        end
       
        if validItem and item.note(true) != ""
         

         
          recipe = item.note(true)
         
          listRecipe = recipe.split(';')
          listRecipe.each do |aListRecipe|
         
          tabRecipe = aListRecipe.split(',')
         
            b_r_item = false
            b_valid = true
            tabRecipeFinish = []
         
            tabRecipe.each do |element|
              number = 0
              type = ""
              id = 0
              r_item = nil
              element.gsub(/(.*)I(.*)/) do
                number = $1.to_i
                id = $2.to_i
                r_item = $data_items[id]
              end
              element.gsub(/(.*)W(.*)/) do
                number = $1.to_i
                id = $2.to_i
                r_item = $data_weapons[id]
              end
              element.gsub(/(.*)A(.*)/) do
                number = $1.to_i
                id = $2.to_i
                r_item = $data_armors[id]
              end
             
              tabRecipeFinish.push([r_item, number])
             
              r_number = $game_party.item_number(r_item)
              b_r_item = true if (r_number > 0 or TOUT_AFFICHER)
              b_valid = false if r_number < number
            end
           
            if b_r_item
              @data.push([item.clone, b_valid, tabRecipeFinish.clone])
            end
          end
        end
      end
    end
 
  end
  #--------------------------------------------------------------------------
  # * Restore Previous Selection Position
  #--------------------------------------------------------------------------
  def select_last
    select((@data.size == 0 ? nil : (@data.size > @save_index) ? @save_index : @data.size - 1))
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)

    recipe = @data[index]
    if recipe
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(recipe[0], rect.x, rect.y, recipe[1])
    end

  end

 
  #--------------------------------------------------------------------------
  # * Set Alchi Window
  #--------------------------------------------------------------------------
  def alchi_window=(alchi_window)
    @alchi_window = alchi_window
    update
  end

  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    create_contents
    draw_all_items
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    @alchi_window.set_item(@data[index]) if index >= 0
  end
 
  #--------------------------------------------------------------------------
  # * Update Help Text
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_item(@data[index][0]) if @data[index]
  end
 
  #--------------------------------------------------------------------------
  # * Desactivate
  #--------------------------------------------------------------------------
  def update_data
    @data.each do |recipe|
      valid = true
      recipe[2].each do |ingredient|
        p_number = $game_party.item_number(ingredient[0])
        valid = false if p_number < ingredient[1]
      end
      recipe[1] = valid
    end
    @save_index = index
    refresh
  end
end


#==============================================================================
# ** Window_Alchimie
#------------------------------------------------------------------------------
#  This window shows items detail and recipe
#==============================================================================
class Window_Alchimie < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(pY)
    super(200, pY, Graphics.width - 200, Graphics.height - pY)
    @item = nil
  end
  #--------------------------------------------------------------------------
  # * Set Item
  #--------------------------------------------------------------------------
  def set_item(pItem)
    if pItem != @item
      @item = pItem
      refresh
    end
  end

  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    clean(false)
    item = @item[0]
   
    change_color(normal_color)
    y = 10
    x = 0
    draw_param(x, y, 2, item)
    draw_param(x, y + line_height, 3, item)
    draw_param(x, y + (line_height * 2), 4, item)
    x = (contents.width / 2)
    draw_param(x, y, 5, item)
    draw_param(x, y + line_height, 6, item)
    draw_param(x, y + (line_height * 2), 7, item)
   
    y = y + (line_height * 3) + 16
   
    contents.fill_rect(0, y, contents.width, 1, Color.new(255,255,255,255))
   
    y += 16
    x = 30
    @item[2].each do | ingredient |
      i_item = ingredient[0]
      i_number = ingredient[1]
      draw_ingredient(x, y, i_item, i_number)
      y += line_height
    end

  end
 
  #--------------------------------------------------------------------------
  # * clean
  #--------------------------------------------------------------------------
  def clean(pForce = true)
    contents.clear
    @item = nil if pForce
  end
 
  #--------------------------------------------------------------------------
  # * Draw Param Equip
  #--------------------------------------------------------------------------
  def draw_param(x, y, param_id, item)
    change_color(system_color)
    draw_text(x, y, 90, line_height, Vocab::param(param_id))
    change_color(normal_color)
   
    if item.is_a?(RPG::Weapon) or item.is_a?(RPG::Armor)
      draw_text(x+ 100, y, 32, line_height, item.params[param_id])
    end
  end
 
  #--------------------------------------------------------------------------
  # * Draw Ingredient
  #--------------------------------------------------------------------------
  def draw_ingredient(x, y, item, number)
    p_number = $game_party.item_number(item)
    draw_icon(item.icon_index, x, y, (p_number >= number))
    change_color(normal_color, (p_number >= number))
    draw_text(x + 24, y, 190, line_height, item.name )
    draw_text(x + 220, y, 100, line_height, "#{p_number}/#{number}" )
  end
 
  #--------------------------------------------------------------------------
  # * Draw Number of Items
  #--------------------------------------------------------------------------
  def draw_item_number(rect, item)
    draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  end
end



#==============================================================================
# ** Scene_Alchimie
#------------------------------------------------------------------------------
#  This Scene performs alchimie
#==============================================================================
class Scene_Alchimie2 < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Start Processing
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_category_window
    create_item_window
    create_alchimie_window
  end
 
  #--------------------------------------------------------------------------
  # * Create Category Window
  #--------------------------------------------------------------------------
  def create_category_window
    wy = @help_window.height
    @category_window = Window_ItemCategory_Al2.new(wy)
    @category_window.viewport = @viewport
    @category_window.set_handler(:ok,    method(:on_category_ok))
    @category_window.set_handler(:cancel, method(:return_scene))
  end

  #--------------------------------------------------------------------------
  # * Create Item Window
  #--------------------------------------------------------------------------
  def create_item_window
    wy = @category_window.height + @help_window.height
    wh = Graphics.height - wy
    @item_window = Window_ItemList_Al.new(0, wy, 200, wh)
    @item_window.viewport = @viewport
    @item_window.set_handler(:ok,    method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @category_window.item_window = @item_window
    @item_window.help_window = @help_window
  end

  #--------------------------------------------------------------------------
  # * Create Alchimie Window
  #--------------------------------------------------------------------------
  def create_alchimie_window
    wy = @help_window.height
    @alchimie_window = Window_Alchimie.new(wy)
    @alchimie_window.viewport = @viewport
    @item_window.alchi_window = @alchimie_window
  end
 
  #--------------------------------------------------------------------------
  # * Category [OK]
  #--------------------------------------------------------------------------
  def on_category_ok
    if @item_window.item_max > 0
      @item_window.activate
      @item_window.select_last
    else
      @category_window.activate
    end
  end
 
  #--------------------------------------------------------------------------
  # * Item [OK]
  #--------------------------------------------------------------------------
  def on_item_ok
    recipe = @item_window.item
    $game_party.gain_item(recipe[0], 1)
    valid = true
    recipe[2].each do |ingredient|
      $game_party.gain_item(ingredient[0], -ingredient[1])
    end
    @item_window.update_data
    @alchimie_window.refresh
    on_category_ok
  end
  #--------------------------------------------------------------------------
  # * Item [Cancel]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.unselect
    @category_window.activate
    @alchimie_window.clean
    @help_window.clear
  end
   
end


Code:
# ■ Systeme de gestion d'alchimie simplifiée
#------------------------------------------------------------------------------
#  Ce script a pour but d'ajouter un système d'alchimie très simple d'utilisation
#
#  Version  Date          Auteur        Commentaires
#  1.00      06/09/2012    Tonyryu      Première release
#  1.01      07/09/2012    Tonyryu      Modification pour prendre en charge le parametrage sur la note et non la description
#  1.02      07/09/2012    Tonyryu      Changement de position de la fenêtre d'aide
#  1.03      08/09/2012    Tonyryu      Intégration au menu
#  1.04      08/09/2012    Tonyryu      Suppression du bug si pas d'objet craftable
#  1.05      08/09/2012    Tonyryu      Correction du bug non desactivation des objets n'ayant plus assez de composants
#  1.06      19/09/2012    Tonyryu      Ajout de l'option pour afficher ou non tout la liste même si aucun ingrédients n'est possédé
#  1.07      23/09/2012    Tonyryu      Ajout de la possibilité de spécifier plusieurs recettes pour un même objet / Ajout d'une constante pour choisir de l'ajouter dans le menu
#  1.08      12/03/2013    Tonyryu      Correction du bug de non-dégrisage d'une recette disponible suite à un craft d'un de ces ingrédients / sauvegarde postionnement curseur
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle.
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#SceneManager.call(Scene_Alchimie)
#==============================================================================

# Constante
ALCHIMIE2 = "Forge"
TOUT_AFFICHER = true
DANS_LE_MENU = false


#==============================================================================
# ** RPG::BaseItem
#------------------------------------------------------------------------------
#  class RPG::BaseItem
#==============================================================================
class RPG::BaseItem
  def note(pAlchimie = false)
    r_note = @note.clone
    r_alchi = ""
   
    r_note.gsub!(/\\/) { "\e" }
    r_note.gsub!(/\e\e/) { "\\" }
    r_note.gsub!(/\eAL\[(.*)\]/i) do
      r_alchi = $1
      ""
    end
    return (pAlchimie ? r_alchi : r_note)
  end
end


#==============================================================================
# ** Window_ItemCategory_Al
#------------------------------------------------------------------------------
#  This window is for selecting a category of normal items and equipment
# on the item screen or shop screen.
#==============================================================================
class Window_ItemCategory_Al < Window_Command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(pY)
    super(0, pY)
  end
 
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    return 200
  end
 
  #--------------------------------------------------------------------------
  # * Get Digit Count
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end

  #--------------------------------------------------------------------------
  # * Create Command List
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(Vocab::weapon,  :weapon)
    add_command(Vocab::armor,    :armor)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    @item_window.category = current_symbol if @item_window
  end
  #--------------------------------------------------------------------------
  # * Set Item Window
  #--------------------------------------------------------------------------
  def item_window=(item_window)
    @item_window = item_window
    update
  end
end


#==============================================================================
# ** Window_ItemList_Al
#------------------------------------------------------------------------------
#  This window displays a list of recipe items on the Alchimie screen.
#==============================================================================
class Window_ItemList_Al < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    @category = :none
    @data = []
    @save_index = 0
  end
 
  #--------------------------------------------------------------------------
  # * Set Category
  #--------------------------------------------------------------------------
  def category=(category)
    return if @category == category
    @category = category
    make_item_list
    refresh
    self.oy = 0
  end
  #--------------------------------------------------------------------------
  # * Get Digit Count
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # * Get Number of Items
  #--------------------------------------------------------------------------
  def item_max
    @data ? @data.size : 0
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    @data && index >= 0 ? @data[index] : nil
  end
  #--------------------------------------------------------------------------
  # * Get Activation State of Selection Item
  #--------------------------------------------------------------------------
  def current_item_enabled?
    (@data[index] ? @data[index][1] : false)
  end

  #--------------------------------------------------------------------------
  # * Create Item List
  #--------------------------------------------------------------------------
  def make_item_list
    @data.clear
    # parcourir la liste des item de la catégories
    case @category
    when :item
      tabItem = $data_items
    when :weapon
      tabItem = $data_weapons
    when :armor
      tabItem = $data_armors
    when :key_item
      tabItem = $data_items
    else
      tabItem = []
    end
   
    tabItem.each do |item|
      if item
        validItem = true
        if @category == :item
          validItem = !item.key_item?
        elsif @category == :key_item
          validItem = item.key_item?
        end
       
        if validItem and item.note(true) != ""
         

         
          recipe = item.note(true)
         
          listRecipe = recipe.split(';')
          listRecipe.each do |aListRecipe|
         
          tabRecipe = aListRecipe.split(',')
         
            b_r_item = false
            b_valid = true
            tabRecipeFinish = []
         
            tabRecipe.each do |element|
              number = 0
              type = ""
              id = 0
              r_item = nil
              element.gsub(/(.*)I(.*)/) do
                number = $1.to_i
                id = $2.to_i
                r_item = $data_items[id]
              end
              element.gsub(/(.*)W(.*)/) do
                number = $1.to_i
                id = $2.to_i
                r_item = $data_weapons[id]
              end
              element.gsub(/(.*)A(.*)/) do
                number = $1.to_i
                id = $2.to_i
                r_item = $data_armors[id]
              end
             
              tabRecipeFinish.push([r_item, number])
             
              r_number = $game_party.item_number(r_item)
              b_r_item = true if (r_number > 0 or TOUT_AFFICHER)
              b_valid = false if r_number < number
            end
           
            if b_r_item
              @data.push([item.clone, b_valid, tabRecipeFinish.clone])
            end
          end
        end
      end
    end
 
  end
  #--------------------------------------------------------------------------
  # * Restore Previous Selection Position
  #--------------------------------------------------------------------------
  def select_last
    select((@data.size == 0 ? nil : (@data.size > @save_index) ? @save_index : @data.size - 1))
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)

    recipe = @data[index]
    if recipe
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(recipe[0], rect.x, rect.y, recipe[1])
    end

  end

 
  #--------------------------------------------------------------------------
  # * Set Alchi Window
  #--------------------------------------------------------------------------
  def alchi_window=(alchi_window)
    @alchi_window = alchi_window
    update
  end

  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    create_contents
    draw_all_items
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    @alchi_window.set_item(@data[index]) if index >= 0
  end
 
  #--------------------------------------------------------------------------
  # * Update Help Text
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_item(@data[index][0]) if @data[index]
  end
 
  #--------------------------------------------------------------------------
  # * Desactivate
  #--------------------------------------------------------------------------
  def update_data
    @data.each do |recipe|
      valid = true
      recipe[2].each do |ingredient|
        p_number = $game_party.item_number(ingredient[0])
        valid = false if p_number < ingredient[1]
      end
      recipe[1] = valid
    end
    @save_index = index
    refresh
  end
end


#==============================================================================
# ** Window_Alchimie
#------------------------------------------------------------------------------
#  This window shows items detail and recipe
#==============================================================================
class Window_Alchimie < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(pY)
    super(200, pY, Graphics.width - 200, Graphics.height - pY)
    @item = nil
  end
  #--------------------------------------------------------------------------
  # * Set Item
  #--------------------------------------------------------------------------
  def set_item(pItem)
    if pItem != @item
      @item = pItem
      refresh
    end
  end

  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    clean(false)
    item = @item[0]
   
    change_color(normal_color)
    y = 10
    x = 0
    draw_param(x, y, 2, item)
    draw_param(x, y + line_height, 3, item)
    draw_param(x, y + (line_height * 2), 4, item)
    x = (contents.width / 2)
    draw_param(x, y, 5, item)
    draw_param(x, y + line_height, 6, item)
    draw_param(x, y + (line_height * 2), 7, item)
   
    y = y + (line_height * 3) + 16
   
    contents.fill_rect(0, y, contents.width, 1, Color.new(255,255,255,255))
   
    y += 16
    x = 30
    @item[2].each do | ingredient |
      i_item = ingredient[0]
      i_number = ingredient[1]
      draw_ingredient(x, y, i_item, i_number)
      y += line_height
    end

  end
 
  #--------------------------------------------------------------------------
  # * clean
  #--------------------------------------------------------------------------
  def clean(pForce = true)
    contents.clear
    @item = nil if pForce
  end
 
  #--------------------------------------------------------------------------
  # * Draw Param Equip
  #--------------------------------------------------------------------------
  def draw_param(x, y, param_id, item)
    change_color(system_color)
    draw_text(x, y, 90, line_height, Vocab::param(param_id))
    change_color(normal_color)
   
    if item.is_a?(RPG::Weapon) or item.is_a?(RPG::Armor)
      draw_text(x+ 100, y, 32, line_height, item.params[param_id])
    end
  end
 
  #--------------------------------------------------------------------------
  # * Draw Ingredient
  #--------------------------------------------------------------------------
  def draw_ingredient(x, y, item, number)
    p_number = $game_party.item_number(item)
    draw_icon(item.icon_index, x, y, (p_number >= number))
    change_color(normal_color, (p_number >= number))
    draw_text(x + 24, y, 190, line_height, item.name )
    draw_text(x + 220, y, 100, line_height, "#{p_number}/#{number}" )
  end
 
  #--------------------------------------------------------------------------
  # * Draw Number of Items
  #--------------------------------------------------------------------------
  def draw_item_number(rect, item)
    draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  end
end



#==============================================================================
# ** Scene_Alchimie
#------------------------------------------------------------------------------
#  This Scene performs alchimie
#==============================================================================
class Scene_Alchimie < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Start Processing
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_category_window
    create_item_window
    create_alchimie_window
  end
 
  #--------------------------------------------------------------------------
  # * Create Category Window
  #--------------------------------------------------------------------------
  def create_category_window
    wy = @help_window.height
    @category_window = Window_ItemCategory_Al.new(wy)
    @category_window.viewport = @viewport
    @category_window.set_handler(:ok,    method(:on_category_ok))
    @category_window.set_handler(:cancel, method(:return_scene))
  end

  #--------------------------------------------------------------------------
  # * Create Item Window
  #--------------------------------------------------------------------------
  def create_item_window
    wy = @category_window.height + @help_window.height
    wh = Graphics.height - wy
    @item_window = Window_ItemList_Al.new(0, wy, 200, wh)
    @item_window.viewport = @viewport
    @item_window.set_handler(:ok,    method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @category_window.item_window = @item_window
    @item_window.help_window = @help_window
  end

  #--------------------------------------------------------------------------
  # * Create Alchimie Window
  #--------------------------------------------------------------------------
  def create_alchimie_window
    wy = @help_window.height
    @alchimie_window = Window_Alchimie.new(wy)
    @alchimie_window.viewport = @viewport
    @item_window.alchi_window = @alchimie_window
  end
 
  #--------------------------------------------------------------------------
  # * Category [OK]
  #--------------------------------------------------------------------------
  def on_category_ok
    if @item_window.item_max > 0
      @item_window.activate
      @item_window.select_last
    else
      @category_window.activate
    end
  end
 
  #--------------------------------------------------------------------------
  # * Item [OK]
  #--------------------------------------------------------------------------
  def on_item_ok
    recipe = @item_window.item
    $game_party.gain_item(recipe[0], 1)
    valid = true
    recipe[2].each do |ingredient|
      $game_party.gain_item(ingredient[0], -ingredient[1])
    end
    @item_window.update_data
    @alchimie_window.refresh
    on_category_ok
  end
  #--------------------------------------------------------------------------
  # * Item [Cancel]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.unselect
    @category_window.activate
    @alchimie_window.clean
    @help_window.clear
  end
   
end

#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
#  This command window appears on the menu screen.
#==============================================================================
class Window_MenuCommand < Window_Command
 
  #--------------------------------------------------------------------------
  # * add_main_commands
  #--------------------------------------------------------------------------
  alias al_add_main_commands add_main_commands
  def add_main_commands
    al_add_main_commands
    add_command(ALCHIMIE2, :alchimie, main_commands_enabled) if DANS_LE_MENU
  end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_MenuBase

  #--------------------------------------------------------------------------
  # * create_command_window
  #--------------------------------------------------------------------------
  alias al_create_command_window create_command_window
  def create_command_window
    al_create_command_window
    @command_window.set_handler(:alchimie, method(:command_alchimie)) if DANS_LE_MENU
  end
 
  #--------------------------------------------------------------------------
  # * command_alchimie
  #--------------------------------------------------------------------------
  def command_alchimie
    SceneManager.call(Scene_Alchimie)
  end
end

L'alchimie s'appelle par :
Code:
SceneManager.call(Scene_Alchimie2)

La Forge par :
Code:
SceneManager.call(Scene_Alchimie)

Et ça ne marche plus pour l'affichage dans le menu c'est que pour de l'appel externe.
Zangther
Zangther
Membre

Nombre de messages : 913
Distinction : aucune
Date d'inscription : 06/02/2013

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Sam 11 Oct 2014 - 17:00
"Scene_Alchimie2" ?
Désolé mais c'est le genre de chose que je ne peux point cautionner.
Balbereith
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 26
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires Gestion alchimie simplifiée - Page 2 522164 ) [Coco' Smile]
Date d'inscription : 13/05/2009

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 12 Oct 2014 - 10:44
@Zangther a écrit:"Scene_Alchimie2" ?
Désolé mais c'est le genre de chose que je ne peux point cautionner.

De suite xD Je partage ma cuisine interne, ce qui n'est pas forcément destiné à être bon ^^ Mais ça à au moins l'avantage d'être rapide au copier coller ^^
Zangther
Zangther
Membre

Nombre de messages : 913
Distinction : aucune
Date d'inscription : 06/02/2013

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 12 Oct 2014 - 11:32
Non mais je veux dire t'as un truc qui est une forge et l'autre qui est alchimie et tu les appelles Alchimie et Alchimie2...
Ca coute pas grand chose de mettre des noms explicites.
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Mer 3 Déc 2014 - 21:02
Coucou, est-ce qu'on peut faire en sorte de créer un menu chez un PNJ appelé Forge ou Alchimie, en complément de Acheter, Vendre et Quitter ?

Est-il possible de faire en sorte que le craft nous demande une somme d'argent en plus des matériaux ?

P.S : Et au passage, si vous retravaillez sur ce script, est-il possible de faire une mise au propre dans les versions (Alchimie/Forge) car j'ai pu voir des termes Alchimie et Alchimie2 se balader dans les deux scripts.
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Lun 29 Déc 2014 - 23:22
Petit up
Souley50
Souley50
Membre

Nombre de messages : 5
Age : 18
Localisation : Je sais pas
Distinction : aucune
Date d'inscription : 01/01/2015

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 11 Jan 2015 - 17:59
Merci pour ce script qui peut être très utile ^^
darktiger401
darktiger401
Membre

Nombre de messages : 4
Age : 18
Localisation : Pouillon
Distinction : aucune
Date d'inscription : 31/01/2015

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 1 Fév 2015 - 11:30
Merci se script est juste génial
Par contre j'ai le droit de l'utiliser dans mes jeux ou pas?
Il faut demander ou je peut l'utiliser?
Heaven
Heaven
Staffeux retraité

Nombre de messages : 2451
Age : 18
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 1 Fév 2015 - 11:35
Tu as le droit de l'utiliser à condition de mettre l'auteur dans tes crédits^^



Heav'n
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 1 Fév 2015 - 19:38
@Nérylis a écrit:Coucou, est-ce qu'on peut faire en sorte de créer un menu chez un PNJ appelé Forge ou Alchimie, en complément de Acheter, Vendre et Quitter ?

Est-il possible de faire en sorte que le craft nous demande une somme d'argent en plus des matériaux ?

P.S : Et au passage, si vous retravaillez sur ce script, est-il possible de faire une mise au propre dans les versions (Alchimie/Forge) car j'ai pu voir des termes Alchimie et Alchimie2 se balader dans les deux scripts.

Questions toujours en cours. Wink
leparadoxvirtuel85
leparadoxvirtuel85
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 04/02/2015

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Dim 8 Fév 2015 - 3:05
Bonsoir ou Bonjour ^^

Je c'est qu'il et tard mais bon je travail toujours mieux de nuit lol
Voila ma question j'ai installer le script mais un curieux message m’apparaît

" Script 'ALCHIMIE' line388: NoMethodError occured
undefined methode icon_index' for nil:NilClass "

Je ne comprend pas réellement ce qu'il faut que je face dois-je changé le p_number ?

au passage trés bon script en tout cas Wink
Pitchikwow
Pitchikwow
Membre

Nombre de messages : 17
Distinction : aucune
Date d'inscription : 16/02/2015

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Mar 17 Fév 2015 - 17:32
Merci beaucoup du partage ! Continue comme ça ! Ça défonce !

Par contre j'ai le même soucis que mon collègue du dessus j'ai une erreur ligne 388 voila exactement l'erreur :

line388: NoMethodError occured.
undefined method 'icon_index' for nil:NilClass

J’espère que j'aurais la solution vite !
Nan je déconne prend ton temps j'aurais ma réponse en temps voulu ou non ^^ !

Encore merci du partage !
Shinokishi
Shinokishi
Membre

Nombre de messages : 523
Age : 19
Localisation : Quelque part en France (mais je sais pas où)
Distinction : Message-minute (Spy)
Date d'inscription : 23/08/2015

Gestion alchimie simplifiée - Page 2 Empty Re: Gestion alchimie simplifiée

le Lun 24 Aoû 2015 - 16:52
Très bon script et en plus simple d'utilisation Gestion alchimie simplifiée - Page 2 844836
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum