-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

Aller en bas
Aras73
Membre

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

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

Mar 11 Sep 2012 - 17:01
Super ce script mais j'aimerais bien savoir comment faire pourqu'on ne puisse plus avoir le truc Alchimie dans le menu et plutôt faire un appel de script .
J'espère que vous avez compris !
Hit-Air
Hit-Air
Membre

Nombre de messages : 7
Distinction : aucune
Date d'inscription : 28/08/2012

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

Mar 11 Sep 2012 - 18:22
Ce script est super, merci pour ce partage.

Par contre je voudrait savoir si il est possible de faire comme Aras73 le dit si-dessus
et par la même occasion de faire appel que à l'alchimie = Objet par l'appel d'un autre scripte,
que l'armure par l'appel d'un scripte in-si de suite...
j'espérer que vous m'avait comprit aussi.

Merci
tonyryu
tonyryu
Membre

Nombre de messages : 902
Age : 44
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

Mar 11 Sep 2012 - 19:30
pour ne plus avoir l'alchimie automatiquement lié au menu, il suffit de supprimer les 2 dernières définitions de class du script :
Code:
#==============================================================================
# ** 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(ALCHIMIE, :alchimie, main_commands_enabled)
  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))
  end
 
  #--------------------------------------------------------------------------
  # * command_alchimie
  #--------------------------------------------------------------------------
  def command_alchimie
    SceneManager.call(Scene_Alchimie)
  end
end

Par contre, la destructuration par type d'objet, faut que je regarde si je peux faire un init de la scene avant de construire les fenêtres.
LightNox
LightNox
Membre

Nombre de messages : 1759
Age : 34
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008

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

Mer 12 Sep 2012 - 10:42
Tonyryu,

serait il possible de faire en sorte que le menu alchimie soit disponible depuis un pnj avec un appel de script plutôt que dans le menu directement ?
tonyryu
tonyryu
Membre

Nombre de messages : 902
Age : 44
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

Mer 12 Sep 2012 - 11:19
LightNox a écrit:Tonyryu,

serait il possible de faire en sorte que le menu alchimie soit disponible depuis un pnj avec un appel de script plutôt que dans le menu directement ?

Je viens d'ajouter la méthode dans le premier post de ce topic.
LightNox
LightNox
Membre

Nombre de messages : 1759
Age : 34
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008

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

Mer 12 Sep 2012 - 12:23
-_- j'avais pas vue désolé x)

merci tonyryu ^^

par est ce que c'est possible de rajouter un texte dans la barre du haut avant de choisir objet, armes ect... ?
tonyryu
tonyryu
Membre

Nombre de messages : 902
Age : 44
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

Mer 19 Sep 2012 - 22:45
Version 1.06 : Ajout de l'option d'affichage de la liste complète ou non, instruction dans le post d'origine
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

Ven 21 Sep 2012 - 18:17
Juste une question:
Pour mettre plusieurs recettes pour le même ingrédients on a juste besoin de mettre une autre recette dans la note de l'item ?
tonyryu
tonyryu
Membre

Nombre de messages : 902
Age : 44
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

Sam 22 Sep 2012 - 11:01
Aras73 a écrit:Juste une question:
Pour mettre plusieurs recettes pour le même ingrédients on a juste besoin de mettre une autre recette dans la note de l'item ?

Actuellement, une seule recette est gérée par item
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

Sam 22 Sep 2012 - 18:32
Dommage ! Crying or Very sad
Tu pourras essayer de changer ça s'il te plait ?
tonyryu
tonyryu
Membre

Nombre de messages : 902
Age : 44
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

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

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

Nombre de messages : 902
Age : 44
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

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 : 35
Localisation : lyon
Distinction : aucune
Date d'inscription : 10/08/2009

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

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

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 : 27
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

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 : 29
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

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 : 42
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

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

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 : 32
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

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

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 : 32
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

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

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 : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

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

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 : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

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

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

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

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

Dim 11 Jan 2015 - 17:59
Merci pour ce script qui peut être très utile ^^
Contenu sponsorisé

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

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum