Page 1 sur 2 • 1, 2
- Aras73Membre
- Nombre de messages : 26
Date d'inscription : 06/04/2012
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 !
J'espère que vous avez compris !
- Hit-AirMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 28/08/2012
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
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
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 :
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.
- 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.
- LightNoxMembre
- Nombre de messages : 1759
Age : 34
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008
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 ?
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 ?
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.
- LightNoxMembre
- Nombre de messages : 1759
Age : 34
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008
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... ?
merci tonyryu ^^
par est ce que c'est possible de rajouter un texte dans la barre du haut avant de choisir objet, armes ect... ?
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
- Aras73Membre
- Nombre de messages : 26
Distinction : aucune
Date d'inscription : 06/04/2012
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 ?
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 ?
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
- Aras73Membre
- Nombre de messages : 26
Distinction : aucune
Date d'inscription : 06/04/2012
Re: Gestion alchimie simplifiée
Sam 22 Sep 2012 - 18:32
Dommage !
Tu pourras essayer de changer ça s'il te plait ?
Tu pourras essayer de changer ça s'il te plait ?
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.
- Aras73Membre
- Nombre de messages : 26
Distinction : aucune
Date d'inscription : 06/04/2012
Re: Gestion alchimie simplifiée
Dim 23 Sep 2012 - 10:02
Ok !
Merci ! ^^
parfaitement ce que je cherchais ! ^^
Merci ! ^^
parfaitement ce que je cherchais ! ^^
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)
- gatouneMembre
- Nombre de messages : 4
Age : 35
Localisation : lyon
Distinction : aucune
Date d'inscription : 10/08/2009
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
Il me fallait ce que tu proposes dans mon jeu, merci bien
- XsoulMembre
- Nombre de messages : 237
Distinction : aucune
Date d'inscription : 05/03/2013
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
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
- MarioblazMembre
- 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
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!
Bonne journée!
- vincent26Membre
- Nombre de messages : 766
Age : 29
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
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 ?
du coup cela résolverait le problème de séparation des item avec un inter pour chaque
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 ?
du coup cela résolverait le problème de séparation des item avec un inter pour chaque
- MrGREGMembre
- Nombre de messages : 71
Age : 42
Localisation : loir et cher (41)
Distinction : aucune
Date d'inscription : 20/08/2013
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 )
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 )
- XsoulMembre
- Nombre de messages : 237
Distinction : aucune
Date d'inscription : 05/03/2013
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 :/
- BalbereithStaffeux 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 ) [Coco' ]
Date d'inscription : 13/05/2009
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à :
L'alchimie s'appelle par :
La Forge par :
Et ça ne marche plus pour l'affichage dans le menu c'est que pour de l'appel externe.
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.
- ZangtherMembre
- Nombre de messages : 913
Distinction : aucune
Date d'inscription : 06/02/2013
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.
Désolé mais c'est le genre de chose que je ne peux point cautionner.
- BalbereithStaffeux 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 ) [Coco' ]
Date d'inscription : 13/05/2009
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 ^^
- ZangtherMembre
- Nombre de messages : 913
Distinction : aucune
Date d'inscription : 06/02/2013
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.
Ca coute pas grand chose de mettre des noms explicites.
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
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.
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érylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Gestion alchimie simplifiée
Lun 29 Déc 2014 - 23:22
Petit up
- Souley50Membre
- Nombre de messages : 5
Age : 23
Localisation : Je sais pas
Distinction : aucune
Date d'inscription : 01/01/2015
Re: Gestion alchimie simplifiée
Dim 11 Jan 2015 - 17:59
Merci pour ce script qui peut être très utile ^^
Page 1 sur 2 • 1, 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum