Partagez
Aller en bas
Kyoraku
Kyoraku
Membre

Nombre de messages : 14
Age : 23
Distinction : aucune
Date d'inscription : 13/09/2015

Résolu Modification Script

le Mar 1 Nov 2016 - 23:52
Bonjour / Bonsoir.

Je n'y connais rien en script donc je viens trouvé de l'aide ici ^^
Voilà j'ai récupéré un script d'Alchimie sur le forum, qui est très bien, or il est utilisable par le menu de jeu, ce qui ne me plait pas trop
ma question est la suivant comment je peu modifier le scripte pour rendre l'Alchimie utilisable seulement grâce a un PNJ et/ou un objet ?
Voilà, bon désolé c'est peut-être mal formuler, mais merci a ceux et celles qui pourront m'aidé.


Dernière édition par Kyoraku le Mer 2 Nov 2016 - 18:21, édité 1 fois
no0ony
no0ony
Staffeux retraité

Nombre de messages : 2052
Age : 29
Localisation : Vosges (88)
Distinction : aucune
Date d'inscription : 15/04/2013

Résolu Re: Modification Script

le Mer 2 Nov 2016 - 0:22
Il faudrais déjà que tu poste ce fameux script pour qu'on puisse regarder de qu'elle script il s'agit.
Moi je pourrais pas t'aider, le ruby c'est pas ma tasse de thé mais j'avance les futur demande x)
Kyoraku
Kyoraku
Membre

Nombre de messages : 14
Age : 23
Distinction : aucune
Date d'inscription : 13/09/2015

Résolu Re: Modification Script

le Mer 2 Nov 2016 - 5:05
Oui c'est vrais, Gomen T-T !
Spoiler:
#==============================================================================
# ■ 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.
#
#==============================================================================

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


#==============================================================================
# ** 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::item,    :item)
   add_command(Vocab::weapon,  :weapon)
   add_command(Vocab::armor,    :armor)
   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_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(ALCHIMIE, :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
Zangther
Zangther
Membre

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

Résolu Re: Modification Script

le Mer 2 Nov 2016 - 9:42
Fais un appel de script avec cette commande :
Code:
SceneManager.call(Scene_Alchimie)
Et ça devrait le faire.
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Résolu Re: Modification Script

le Mer 2 Nov 2016 - 9:44
et pour enlever du menu , change

Code:

DANS_LE_MENU = true

en

Code:

DANS_LE_MENU = false

Kyoraku
Kyoraku
Membre

Nombre de messages : 14
Age : 23
Distinction : aucune
Date d'inscription : 13/09/2015

Résolu Re: Modification Script

le Mer 2 Nov 2016 - 16:46
Merci, les gens =3
Vous êtes cool !!
Contenu sponsorisé

Résolu Re: Modification Script

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