Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

Aller en bas
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Script Multi monnaie

Ven 1 Mai 2015 - 23:03
Salut je me suis rendu compte que beaucoup de monde utiliser mon script de multi-monnaie que j'avais creer pour victoria lors d'une demande
c'est pour cela que je vient le présenter au yeux de tous plutôt que de devoir le trouver dans les demande d'aide résolut ^^

Voici déjà le script :
https://raw.githubusercontent.com/vincent26/RM/master/Menu/Multi_Monnaie/Multi_Monnaie.rb

Le principe :
Ce script permet d'ajouter des monnaie au jeu pour ne plus être limiter a une monnaie unique. Il inclut un menu de conversion des différentes monnaie.
De plus les monnaie peuvent être représenter par une icone ou leur nom (au choix)

Quelque screen :

Spoiler:

Dernier bug corriger :
L'utilisation du \$ dans les messages est bien pris en compte
Le pris de vente des items et bien /2 comment avec la monnaie standard

Si vous rencontrez ce bug a l'ouverture d'un magasin :
Script Multi monnaie Multi_14
C'est que l'un des objet vendu n'est pas configuré dans son champ note

Ce script est présent dans le RMEBuilder pour ceux qu'y l'utilisent. (petit coup de pub pour ce formidable outils ;P)


Dernière édition par vincent26 le Ven 8 Mai 2015 - 21:05, édité 3 fois
Spytje
Spytje
Administrateur

Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Script Multi monnaie Empty Re: Script Multi monnaie

Ven 1 Mai 2015 - 23:30
Intéressant merci pour ton partage.

+5 points de participation
Gold Baron
Gold Baron
Membre

Nombre de messages : 89
Distinction : aucune
Date d'inscription : 14/04/2015

Script Multi monnaie Empty Re: Script Multi monnaie

Sam 2 Mai 2015 - 0:33
Salut il y'a une diffrence avec ce script ?

https://rpgmakervx.1fr1.net/t13799-changement-de-systeme-monetaire

Je l'utilise, donc je ne sais pas si le tien a plus d'options de compatibilités ou autre.
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Sam 2 Mai 2015 - 0:56
Ha est bien je n'avais jamais vue le script que tu m'a donner mais il semblerais qu'il soit bloquer a 3 monnaie
Les plus :
Pour mon script :
-Nombre de monnaie personnalisable
-Valeur des monnaie indépendante
-Prise en charge du \$
-Menu de conversion entre monnaie
-Compatibilité gérer pour 2 script donner en tête de script

Pour ton script :
-Un système de rachat
-Une configuration beaucoup plus simple ^^
Spytje
Spytje
Administrateur

Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Script Multi monnaie Empty Re: Script Multi monnaie

Sam 2 Mai 2015 - 1:04
Il te reste plus qu'à corriger/améliorer pour le rendre meilleur encore :p
Gold Baron
Gold Baron
Membre

Nombre de messages : 89
Distinction : aucune
Date d'inscription : 14/04/2015

Script Multi monnaie Empty Re: Script Multi monnaie

Sam 2 Mai 2015 - 1:23
Très bien je vais voir, car pour le petit projet que je test l'autre script risque d'être mieux car je fais un truc ultra simple et que ce script est ultra trop simple ^^.
Par contre pour Gloria mon gros projet, le script que je t'ai montré est incompatible avec certains menus, a voir si le tien ne l'est pas et comme on peut faire plus de choses il sera plus adapté Smile
Très beau script en tout cas
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Sam 30 Mai 2015 - 9:51
Coucou Vincent,

J'ai utilisé ton script dans un vrai test concret. Il marche bien mais il y a un gros point à améliorer, plus aussi une demande de ma part pour l'adapter à un autre script.

Le point à améliorer, c'est les magasins. Comme dit dans le script, il faut faire un appel de script pour décider quelle monnaie afficher parmi les sous que l'on possède. Cela n'empêche pas d'acheter avec les autres monnaies mais ça pose un problème. Si pour les achats il est facile de s'adapter en ne mettant que des objets dont le prix équivaut à la monnaie qu'on décide d'afficher, c'est déjà plus complexe au sujet de la vente. Comme on peut vendre tous les objets qu'on possède, il est fort probable que nous ayons à vendre un objet dont la monnaie diffère de celle qu'on décide d'afficher. Le fait de ne pas voir de changement en temps réel est problématique. On pourrait bloquer les ventes mais ça n'arrangerait pas le problème et enlèverait une liberté au joueur.

Voici ma solution (et demande en même temps)^^ :
Dans un magasin, il faudrait pouvoir, à l'aide d'une touche, switcher entre chaque monnaie. C'est-à-dire qu'on afficherait une seule monnaie et en appuyant sur une touche, on passerait à la monnaie suivante. Ainsi, qu'on ait 2 ou 10 monnaies différentes, cela ne créerait pas de problème d'affichage. Ensuite, il faudrait aussi intégrer la chose suivante : lorsqu'on sélectionne l'objet à acheter ou à vendre, on doit sélectionner la quantité de cet objet. Lorsqu'on arrive à cette étape, il faudrait que l'affichage de la monnaie passe automatiquement sur celle qui est indiquée dans la transaction de l'objet en question. Admettons que j'utilise du Cuivre, de l'Argent et de l'Or. Je switche entre chaque monnaie que je possède et je reste sur l'affichage des Cuivres. Je sélectionne un objet qui coûte de l'Argent. Au moment où je dois sélectionner la quantité, l'affichage passe des Cuivres aux Argent automatiquement. Le petit inconvénient avec ça, c'est que le développeur est forcé de ne mettre qu'un seul type de monnaie par objet. En gros, chaque objet devra valoir tant de cette monnaie et c'est tout, pas plusieurs monnaies différentes. Mais de toute façon, si vous indiquez qu'un objet équivaut à X Cuivre, Y Argent et Z Or, c'est galère pour afficher le nom de l'objet plus le coût. Donc, on peut partir sur cette technique et limiter à un seul type de monnaie le coût des objets. Est-ce que c'est réalisable cette modification ? Si tu arrives à faire ça, tu n'auras plus besoin de faire un appel de script avant d'appeler un magasin. Faudra simplement afficher une monnaie par défaut, et le joueur pourra switcher quand il en aura envie pour voir les autres monnaies.

Ma seconde demande est la suivante : pourrais-tu adapter ton script avec celui de Galv concernant le système de banque ? A la base, je voulais faire quelque chose de basique au niveau de la banque mais je suis parti rapidement à la recherche d'une interface et le script de Galv est exactement ce que je recherche. Sauf que bien sûr, il faut intégrer les différentes monnaies. Idem que pour les magasins, si on peut switcher avec un bouton chaque monnaie pour n'en afficher qu'une à la fois, ça serait idéal.

Le script de Galv est ici :
Code:
#------------------------------------------------------------------------------#
#  Galv's Item/Bank Storage
#------------------------------------------------------------------------------#
#  For: RPGMAKER VX ACE
#  Version 1.7
#------------------------------------------------------------------------------#
#  2012-10-24 - Version 1.7 - Added multiple storages controlled with variable.
#                           - Changed name to Item/Bank Storage
#                           - changed alias naming for compatibility
#  2012-10-19 - Version 1.6 - Bug fixes
#  2012-10-19 - Version 1.5 - Fixed a max gold and withdrawing issue.
#                           - Added deposit all and withdraw all gold buttons.
#                           - party gold and item limits can now be set or use
#                           - the limit from a limit breaking script. (in theory)
#  2012-10-18 - Version 1.4 - Other small fixes
#  2012-10-18 - Version 1.3 - Added banking SE
#  2012-10-18 - Version 1.2 - Added gold storage and more script calls
#  2012-10-17 - Version 1.1 - Added script calls to control stored items.
#  2012-10-16 - Version 1.0 - Released
#------------------------------------------------------------------------------#
#  An item storage script. Allows the player to store as many items as he/she
#  requires in bank-like storage that can be accessed from anywhere.
#    
#  This script differs to my "Multiple Storage containers" script in that you
#  can have "banks" that store items and gold and can be accessed from anywhere.
#  It was designed to be used for one bank, but now has option to have more if
#  required.
#
#  My "Multiple Storage Containers" script stores only items within certain
#  events that can only be accessed by activating the particular event. This was
#  designed for location specific containers like chests, barrels, etc.
#
#  Here are some script calls that might be useful:
#------------------------------------------------------------------------------#
#
#  open_storage                         # Opens the item storage scene
#
#  store_add(type, id, amount)          # creates an item in storage
#  store_rem(type, id, amount)          # destroys an item in storage
#  store_count(type, id)                # returns amount of an item in storage
#
#  bank_add(amount)                     # adds amount of gold to bank
#  bank_rem(amount)                     # removes amount of gold from bank
#  bank_count                           # returns amount of gold in bank
#
#------------------------------------------------------------------------------#
#  EXPLAINATION:
#  type      this can be "weapon", "armor" or "item"
#  id        the ID of the item/armor/weapon
#  amount    the number of the item/armor/weapon/gold you want to remove
#
#  EXAMPLE OF USE:
#  store_add("weapon", 5, 20)
#  store_rem("item", 18, 99)
#  store_count("armor", 1)
#  bank_add(100)
#------------------------------------------------------------------------------#
#  More setup options further down.
#------------------------------------------------------------------------------#
 
$imported = {} if $imported.nil?
$imported["Item_Storage"] = true
 
module Storage
 
#------------------------------------------------------------------------------#
#  SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#
 
  # BOX VARIABLE
  BOX_VAR = 0    # This is the variable ID to use to determine which box you are
                 # adding/removing items from. Set the variable to a box number
                 # right before any add/remove or opening storage script calls
                 # to tell them which box they will affect.
                 # Set to 0 if you only want 1 box storage in your game. You
                 # then don't have to change a variable before each script call.
 
 
  # COMMAND LIST VOCAB
  BANK = "Bank"
  STORE = "Store Item"
  REMOVE = "Remove Item"
  CANCEL = "Cancel"
 
  # OTHER VOCAB
  IN_STORAGE = "In Storage"
  IN_INVENTORY = "In Inventory"
  
  GOLD_INVENTORY = "Party:"
  GOLD_BANKED = "Banked:"
  BANK_HELP = "Hold DOWN to deposit. Hold UP to withdraw." + "\n" +
              "Press R to deposit all. Press L to withdraw all."
  
 
  # OTHER OPTIONS
  SE = ["Equip2", 90, 100]        # Sound effect when storing/removing an item
  SE_BANK = ["Shop", 50, 150]     # Repeating sound effect when banking gold
                                  # ["SE Name", volume, pitch]
  
  STORE_PRICELESS = true          # Items worth 0 can be stored? true or false
  STORE_KEY = true                # Key items can be stored? true or false
 
  
  # PARTY LIMITS
  # NOTE: These limits set to 0 will use the default limits. In theory this will
  # be compatible with a limit breaker script by leaving them at 0. Or you can
  # set the party limits below to whatever you like.
  
  MAX_GOLD = 0                    # Max gold your PARTY can carry.
                                  # This will overwrite the default limit.
                                  # 0 means do not use this.
 
  MAX_ITEMS = 0                   # Max items your PARTY can carry.
                                  # This will overwrite the default limit.
                                  # 0 means do not use this.
 
 
#------------------------------------------------------------------------------#
#  SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#
 
end
 
 
class Scene_ItemBank < Scene_MenuBase
  def start
    super
    check_storage_exists
    create_help_window
    create_command_window
    create_dummy_window
    create_bank_window
    create_number_window
    create_status_window
    create_category_window
    create_take_window
    create_give_window
    
  end
  
  def check_storage_exists
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].nil?
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]] = {}
    end
  end
  
  
  #--------------------------------------------------------------------------
  # Create Windows
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_BankCommand.new(Graphics.width)
    @command_window.viewport = @viewport
    @command_window.y = @help_window.height
    @command_window.set_handler(:bank,   method(:command_bank))
    @command_window.set_handler(:give,   method(:command_give))
    @command_window.set_handler(:take,    method(:command_take))
    @command_window.set_handler(:cancel, method(:return_scene))
  end
  def create_dummy_window
    wy = @command_window.y + @command_window.height
    wh = Graphics.height - wy
    @dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
    @dummy_window.viewport = @viewport
  end
  def create_bank_window
    @bank_window = Window_Bank.new
    @bank_window.viewport = @viewport
    @bank_window.x = 0
    @bank_window.y = @help_window.height + @command_window.height
    @bank_window.hide
    @bank_window.set_handler(:ok,     method(:on_bank_cancel))
    @bank_window.set_handler(:cancel, method(:on_bank_cancel))
 
  end
  
  def create_number_window
    wy = @dummy_window.y
    wh = @dummy_window.height
    @number_window = Window_BankNumber.new(0, wy, wh)
    @number_window.viewport = @viewport
    @number_window.hide
    @number_window.set_handler(:ok,     method(:on_number_ok))
    @number_window.set_handler(:cancel, method(:on_number_cancel))
  end
  def create_status_window
    wx = @number_window.width
    wy = @dummy_window.y
    ww = Graphics.width - wx
    wh = @dummy_window.height
    @status_window = Window_BankItems.new(wx, wy, ww, wh)
    @status_window.viewport = @viewport
    @status_window.hide
  end
  def create_category_window
    @category_window = Window_ItemCategory.new
    @category_window.viewport = @viewport
    @category_window.help_window = @help_window
    @category_window.y = @dummy_window.y
    @category_window.hide.deactivate
    @category_window.set_handler(:ok,     method(:on_category_ok))
    @category_window.set_handler(:cancel, method(:on_category_cancel))
  end
  def create_give_window
    wy = @category_window.y + @category_window.height
    wh = Graphics.height - wy
    @give_window = Window_BankGive.new(0, wy, Graphics.width, wh)
    @give_window.viewport = @viewport
    @give_window.help_window = @help_window
    @give_window.hide
    @give_window.set_handler(:ok,     method(:on_give_ok))
    @give_window.set_handler(:cancel, method(:on_give_cancel))
    @category_window.item_window = @give_window
  end
  def create_take_window
    wy = @command_window.y + @command_window.height
    wh = Graphics.height - wy
    @take_window = Window_BankTake.new(0, wy, Graphics.width, wh)
    @take_window.viewport = @viewport
    @take_window.help_window = @help_window
    @take_window.hide
    @take_window.set_handler(:ok,     method(:on_take_ok))
    @take_window.set_handler(:cancel, method(:on_take_cancel))
    @category_window.item_window = @take_window
  end
 
  #--------------------------------------------------------------------------
  # * Activate Windows
  #--------------------------------------------------------------------------
  def activate_give_window
    @category_window.show
    @give_window.refresh
    @give_window.show.activate
    @status_window.hide
  end
  def activate_take_window
    @take_window.select(0)
    @take_window.refresh
    @take_window.show.activate
    @status_window.hide
  end
  def activate_bank_window
    @bank_window.refresh
    @bank_window.show.activate
    @help_window.set_text(Storage::BANK_HELP)
  end
 
  
  #--------------------------------------------------------------------------
  # HANDLER METHODS
  #--------------------------------------------------------------------------
  def on_category_ok
    activate_give_window
    @give_window.select(0)
  end
  def on_category_cancel
    @command_window.activate
    @dummy_window.show
    @category_window.hide
    @give_window.hide
  end
  def command_give
    @dummy_window.hide
    @category_window.show.activate
    @give_window.show
    @give_window.unselect
    @give_window.refresh
  end
  def on_give_ok
    @item = @give_window.item
    if @item.nil?
      RPG::SE.stop
      Sound.play_buzzer
      @give_window.activate
      @give_window.refresh
      return
    else
      @status_window.item = @item
      @category_window.hide
      @give_window.hide
      @number_window.set(@item, max_give)
      @number_window.show.activate
      @status_window.show
    end
  end
  def on_give_cancel
    @give_window.unselect
    @category_window.activate
    @status_window.item = nil
    @help_window.clear
  end
  def command_take
    @dummy_window.hide
    activate_take_window
    @take_window.show
    @take_window.refresh
  end
  def command_bank
    #@dummy_window.hide
    activate_bank_window
    @bank_window.show
    @bank_window.refresh
  end
  def on_bank_cancel
    @command_window.activate
    @dummy_window.show
    @category_window.hide
    @bank_window.hide
    @help_window.clear
  end
  def on_take_ok
    @item = @take_window.item
    if @item.nil? || $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].empty? || $game_party.item_number(@item) == $game_party.max_item_number(@item)
      RPG::SE.stop
      Sound.play_buzzer
      @take_window.activate
      @take_window.refresh
      return
    elsif
      @item = @take_window.item
      @status_window.item = @item
      @take_window.hide
      @number_window.set(@item, max_take)
      @number_window.show.activate
      @status_window.show
    end
  end
  def on_take_cancel
    @take_window.unselect
    @command_window.activate
    @dummy_window.show
    @take_window.hide
    @status_window.item = nil
    @help_window.clear
  end
  def on_number_ok
    RPG::SE.new(Storage::SE[0], Storage::SE[1], Storage::SE[2]).play
    case @command_window.current_symbol
    when :take
      do_take(@number_window.number)
    when :give
      do_give(@number_window.number)
    end
    end_number_input
    @status_window.refresh
  end
  def on_number_cancel
    Sound.play_cancel
    end_number_input
  end
  def end_number_input
    @number_window.hide
    case @command_window.current_symbol
    when :take
      activate_take_window
    when :give
      activate_give_window
    end
  end  
  
  #--------------------------------------------------------------------------
  # * Giving and taking methods
  #--------------------------------------------------------------------------
  def max_take
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] > $game_party.max_item_number(@item) - $game_party.item_number(@item)
      $game_party.max_item_number(@item) - $game_party.item_number(@item)
    else
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item]
    end
  end
  def max_give
    $game_party.item_number(@item)
  end
  def do_give(number)
    $game_party.lose_item(@item, number)
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item].nil?
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] = number
    else
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] += number
    end
  end
  def do_take(number)
    return if @item.nil?
    $game_party.gain_item(@item, number)
    $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] -= number
    $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].delete(@item) if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] <= 0
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].empty?
      @take_window.activate
    end
  end
  
end # Scene_ItemBank < Scene_MenuBase
 
 
#------------------------------------------------------------------------------#
#  Window Stored Items
#------------------------------------------------------------------------------#
 
class Window_StoreList_Bank < Window_Selectable
  def initialize(x, y, width, height)
    super
    @category = :none
    @data = []
  end
  def category=(category)
    return if @category == category
    @category = category
    refresh
    self.oy = 0
  end
  def col_max
    return 2
  end
  def item_max
    @data ? @data.size : 1
  end
  def item
    @data && index >= 0 ? @data[index] : nil
  end
  def current_item_enabled?
    enable?(@data[index])
  end
  def include?(item)
    case @category
    when :item
      item.is_a?(RPG::Item) && !item.key_item?
    when :weapon
      item.is_a?(RPG::Weapon)
    when :armor
      item.is_a?(RPG::Armor)
    when :key_item
      item.is_a?(RPG::Item) && item.key_item?
    else
      false
    end
  end
  def enable?(item)
    $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].has_key?(item)
  end
  def make_item_list
    @data = $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].keys {|item| include?(item) }
    @data.push(nil) if include?(nil)
  end
  def select_last
    select(@data.index($game_party.last_item.object) || 0)
  end
  def draw_item(index)
    item = @data[index]
    if item
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enable?(item))
      draw_item_number(rect, item)
    end
  end
  def draw_item_number(rect, item)
    draw_text(rect, sprintf(":%2d", $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][item]), 2)
  end
  def update_help
    @help_window.set_item(item)
  end
  def refresh
    make_item_list
    create_contents
    draw_all_items
  end
end # Window_StoreList_Bank < Window_Selectable
 
 
#------------------------------------------------------------------------------#
#  Window Stored Item amount
#------------------------------------------------------------------------------#
 
class Window_BankNumber < Window_Selectable
  attr_reader :number
  def initialize(x, y, height)
    super(x, y, window_width, height)
    @item = nil
    @max = 1
    @number = 1
  end
  def window_width
    return 304
  end
  def set(item, max)
    @item = item
    @max = max
    @number = 1
    refresh
  end
  def refresh
    contents.clear
    draw_item_name(@item, 0, item_y)
    draw_number
  end
  def draw_number
    change_color(normal_color)
    draw_text(cursor_x - 28, item_y, 22, line_height, "×")
    draw_text(cursor_x, item_y, cursor_width - 4, line_height, @number, 2)
  end
  def item_y
    contents_height / 2 - line_height * 3 / 2
  end
  def cursor_width
    figures * 10 + 12
  end
  def cursor_x
    contents_width - cursor_width - 4
  end
  def figures
    return 2
  end
  def update
    super
    if active
      last_number = @number
      update_number
      if @number != last_number
        Sound.play_cursor
        refresh
      end
    end
  end
  def update_number
    change_number(1)   if Input.repeat?(:RIGHT)
    change_number(-1)  if Input.repeat?(:LEFT)
    change_number(10)  if Input.repeat?(:UP)
    change_number(-10) if Input.repeat?(:DOWN)
  end
  def change_number(amount)
    @number = [[@number + amount, @max].min, 1].max
  end
  def update_cursor
    cursor_rect.set(cursor_x, item_y, cursor_width, line_height)
  end
  
end # Window_BankNumber < Window_Selectable
 
 
#------------------------------------------------------------------------------#
#  Window Store Item Status
#------------------------------------------------------------------------------#
 
class Window_BankItems < Window_Base
  def initialize(x, y, width, height)
    super(x, y, width, height)
    @item = nil
    @page_index = 0
    refresh
  end
  def refresh
    contents.clear
    draw_possession(4, 0)
    draw_stored(4, line_height)
    draw_equip_info(4, line_height * 2) if @item.is_a?(RPG::EquipItem)
  end
  def item=(item)
    @item = item
    refresh
  end
  def draw_possession(x, y)
    rect = Rect.new(x, y, contents.width - 4 - x, line_height)
    change_color(system_color)
    draw_text(rect, Storage::IN_INVENTORY)
    change_color(normal_color)
    draw_text(rect, $game_party.item_number(@item), 2)
  end
  def draw_stored(x, y)
    rect = Rect.new(x, y, contents.width - 4 - x, line_height)
    change_color(system_color)
    draw_text(rect, Storage::IN_STORAGE)
    change_color(normal_color)
    stored_amount = $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item]
    stored_amount = 0 if stored_amount.nil?
    draw_text(rect, stored_amount, 2)
  end
  def draw_equip_info(x, y)
    status_members.each_with_index do |actor, i|
      draw_actor_equip_info(x, y + line_height * (i * 2.4), actor)
    end
  end
  def status_members
    $game_party.members[@page_index * page_size, page_size]
  end
  def page_size
    return 4
  end
  def page_max
    ($game_party.members.size + page_size - 1) / page_size
  end
  def draw_actor_equip_info(x, y, actor)
    enabled = actor.equippable?(@item)
    change_color(normal_color, enabled)
    draw_text(x, y, 112, line_height, actor.name)
    item1 = current_equipped_item(actor, @item.etype_id)
    draw_actor_param_change(x, y, actor, item1) if enabled
    draw_item_name(item1, x, y + line_height, enabled)
  end
  def draw_actor_param_change(x, y, actor, item1)
    rect = Rect.new(x, y, contents.width - 4 - x, line_height)
    change = @item.params[param_id] - (item1 ? item1.params[param_id] : 0)
    change_color(param_change_color(change))
    draw_text(rect, sprintf("%+d", change), 2)
  end
  def param_id
    @item.is_a?(RPG::Weapon) ? 2 : 3
  end
  def current_equipped_item(actor, etype_id)
    list = []
    actor.equip_slots.each_with_index do |slot_etype_id, i|
      list.push(actor.equips[i]) if slot_etype_id == etype_id
    end
    list.min_by {|item| item ? item.params[param_id] : 0 }
  end
  def update
    super
    update_page
  end
  def update_page
    if visible && Input.trigger?(:A) && page_max > 1
      @page_index = (@page_index + 1) % page_max
      refresh
    end
  end
  
end # Window_BankItems < Window_Base
 
 
#------------------------------------------------------------------------------#
#  Window Give Item
#------------------------------------------------------------------------------#
 
class Window_BankGive < Window_ItemList
  def initialize(x, y, width, height)
    super(x, y, width, height)
  end
  def current_item_enabled?
    enable?(@data[index])
  end
  def enable?(item)
    if item.is_a?(RPG::Item)
      return false if item.key_item? && !Storage::STORE_KEY
    end
    if Storage::STORE_PRICELESS
      true
    else
      item && item.price > 0
    end
  end
end
 
 
#------------------------------------------------------------------------------#
#  Window Take Item
#------------------------------------------------------------------------------#
 
class Window_BankTake < Window_StoreList_Bank
  def initialize(x, y, width, height)
    super(x, y, width, height)
  end
  def current_item_enabled?
    enable?(@data[index])
  end
  def enable?(item)
    $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][item] != 0 && $game_party.item_number(item) < $game_party.max_item_number(@item)
  end
end
 
 
#------------------------------------------------------------------------------#
#  Window Command
#------------------------------------------------------------------------------#
 
class Window_BankCommand < Window_HorzCommand
  def initialize(window_width)
    @window_width = window_width
    super(0, 0)
  end
  def window_width
    @window_width
  end
  def col_max
    return 4
  end
  def make_command_list
    add_command(Storage::BANK, :bank)
    add_command(Storage::STORE,    :give)
    add_command(Storage::REMOVE,   :take)
    add_command(Storage::CANCEL, :cancel)
  end
end
 
 
#------------------------------------------------------------------------------#
#  Window Bank
#------------------------------------------------------------------------------#
 
class Window_Bank < Window_Selectable
  def initialize
    super(0, 0, window_width, fitting_height(2))
    refresh
    @deposit_rate = 1
    @withdraw_rate = 1
  end
  def window_width
    return Graphics.width / 2
  end
  alias galv_bank_update update
  def update
    galv_bank_update
    gold_transfer if self.active
  end
  def gold_transfer
    if Input.repeat?(:DOWN) && $game_party.gold > 0 || Input.repeat?(:UP) && $game_party.gold_stored > 0 && $game_party.gold < $game_party.max_gold
        RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play
    end
    if Input.press?(:DOWN)
      before = $game_party.gold
      $game_party.lose_gold(@deposit_rate)
      after = $game_party.gold
      $game_party.gold_stored += before - after
      @deposit_rate += 1
      refresh
    end
    if Input.trigger?(:R) && !Input.press?(:DOWN) && !Input.press?(:UP)
      return if $game_party.gold == 0
      before = $game_party.gold
      $game_party.lose_gold($game_party.gold)
      after = $game_party.gold
      $game_party.gold_stored += before - after
      refresh
      RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play
    end
    if !Input.press?(:DOWN)
      @deposit_rate = 1
    end
    if Input.press?(:UP)
      return if $game_party.gold == $game_party.max_gold
      @withdraw_rate = $game_party.gold_stored if @withdraw_rate >= $game_party.gold_stored
      if @withdraw_rate + $game_party.gold > $game_party.max_gold
        @withdraw_rate = $game_party.max_gold - $game_party.gold
      end
      before = $game_party.gold_stored
      $game_party.gold_stored -= @withdraw_rate
      after = $game_party.gold_stored
      $game_party.gain_gold(before - after)
      if $game_party.gold_stored == 0
        return refresh
      end
      @withdraw_rate += 1
      refresh
    end
    
    if Input.trigger?(:L) && !Input.press?(:DOWN) && !Input.press?(:UP)
      take_all_gold = $game_party.gold_stored
      return if $game_party.gold == $game_party.max_gold || $game_party.gold_stored == 0
      if take_all_gold + $game_party.gold > $game_party.max_gold
        take_all_gold = $game_party.max_gold - $game_party.gold
      end
      before = $game_party.gold_stored
      $game_party.gold_stored -= take_all_gold
      after = $game_party.gold_stored
      $game_party.gain_gold(before - after)
      refresh
      RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play
    end
    if !Input.press?(:UP)
      @withdraw_rate = 1
    end
  end
  def refresh
    contents.clear
    draw_gold_location(Storage::GOLD_INVENTORY, 0, 0, 250)
    draw_currency_value(value, currency_unit, 4, 0, contents.width -
    draw_gold_location(Storage::GOLD_BANKED, 0, line_height * 1, 250)
    draw_currency_value(value_stored, currency_unit, 4, line_height * 1, contents.width -
  end
  def draw_gold_location(vocab, x, y, width)
    change_color(system_color)
    draw_text(x, y, width, line_height, vocab)
  end
  def value
    $game_party.gold
  end
  def value_stored
    $game_party.gold_stored
  end
  def currency_unit
    Vocab::currency_unit
  end
  def open
    refresh
    super
  end
end
 
 
#------------------------------------------------------------------------------#
#  Game Party Additions
#------------------------------------------------------------------------------#
 
 
class Game_Party < Game_Unit
  attr_accessor :multi_storage
  attr_accessor :gold_stored
  
  alias galv_bank_init_all_items init_all_items
  def init_all_items
    galv_bank_init_all_items
    @storage = {}
    @stored_items = {}
    @stored_weapons = {}
    @stored_armors = {}
    @gold_stored = 0
  end
  
  def multi_storage
    @storage
  end
  def storage
    @stored_items
    @stored_weapons
    @stored_armors
  end
  def gold_stored
    @gold_stored
  end
 
  alias galv_bank_max_gold max_gold
  def max_gold
    return Storage::MAX_GOLD if Storage::MAX_GOLD > 0
    galv_bank_max_gold
  end
  
  alias galv_bank_max_item_number max_item_number
  def max_item_number(item)
    return Storage::MAX_ITEMS if Storage::MAX_ITEMS > 0
    return 99 if item.nil?
    galv_bank_max_item_number(item)
  end
  
end # Game_Party < Game_Unit
 
 
class Game_Interpreter
  def store_add(type, id, amount)
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].nil?
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]] = {}
    end
    case type
    when "weapon"
      @item = $data_weapons[id]
    when "item"
      @item = $data_items[id]
    when "armor"
      @item = $data_armors[id]
    end
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item].nil?
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] = amount
    else
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] += amount
    end
  end
  def store_rem(type, id, amount)
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].nil?
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]] = {}
    end
    case type
    when "weapon"
      @item = $data_weapons[id]
    when "item"
      @item = $data_items[id]
    when "armor"
      @item = $data_armors[id]
    end
    return if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item].nil?
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] <= amount
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].delete(@item)
    else
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item] -= amount
    end
  end
  def store_count(type, id)
    if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]].nil?
      $game_party.multi_storage[$game_variables[Storage::BOX_VAR]] = {}
    end
    case type
    when "weapon"
      @item = $data_weapons[id]
    when "item"
      @item = $data_items[id]
    when "armor"
      @item = $data_armors[id]
    end
    return 0 if $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item].nil?
    $game_party.multi_storage[$game_variables[Storage::BOX_VAR]][@item]
  end
  def bank_add(amount)
    $game_party.gold_stored += amount
  end
  def bank_rem(amount)
    $game_party.gold_stored -= amount
    $game_party.gold_stored = 0 if $game_party.gold_stored < 0
  end
  def bank_count
    $game_party.gold_stored
  end
  def open_storage
    SceneManager.call(Scene_ItemBank)
  end
end
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Dim 31 Mai 2015 - 19:35
Je vais essayer de faire ça Wink
ce que je peut faire c'est mettre le choix entre le systeme actuel et le nouveau
Je peut aussi ajouter la possibilité d'assigner plusieurs prix au objet ce que je veut dire c'est par exemple une potion peut être acheter 200 pièce de cuivre ou 20 pièce d'argent ou 2 pièce d'or par exemple
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Dim 31 Mai 2015 - 20:15
Je peut aussi ajouter la possibilité d'assigner plusieurs prix au objet ce que je veut dire c'est par exemple une potion peut être acheter 200 pièce de cuivre ou 20 pièce d'argent ou 2 pièce d'or par exemple

Je ne suis pas convaincu par cette idée. Quel sera l'intérêt alors d'avoir plusieurs monnaies si en final on peut tout se payer avec une seule ? A quoi ça servira d'utiliser la Conversion Scene ? Perso, je pense qu'il vaudrait mieux laisser un seul prix à une seule monnaie. Après, tu peux proposer en option cette possibilité si ça intéresse d'autres personnes.
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Lun 1 Juin 2015 - 13:37
voila j'ai mis une mise a jour Wink
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Lun 1 Juin 2015 - 18:56
Je viens de tester. En final, c'est peut-être pas si bête la feature comme tu as fait, avec le switch des prix disponibles uniquement avec la(les) bonne(s) monnaie(s). Il y a juste, comme tu le disais, un petit problème d'affichage avec le script de Yanfly. C'est la fenêtre En possession qui gêne un peu. C'est possible de corriger ça ? Je t'ai fait une petite démo : http://www.mediafire.com/download/wsnapai3bonryfy/Money.exe
Tu verras, j'ai mis le type de magasin 2, et les appels de script sont restés en commentaire (si tu veux repasser en type 1 et comparer la fenêtre En possession telle qu'elle était avant).

Pour le script de Galv, ça marche plutôt bien. J'ai testé les commandes et les switches de monnaies, tout fonctionne bien. Juste un petit bug minuscule de rien du tout : dans la fenêtre de banque, quand la valeur passe à 4 digits et plus, il y a un petit décalage du premier 0. Rien de bien méchant mais si tu peux corriger ça pour faire plus normal. Wink
Pareil, une petite démo ici : http://www.mediafire.com/download/tik3yddhhegnl1x/Item-Bank+Storage+v.1.exe

Je n'ai pas encore testé sur mon gros projet test, je préfère que tout soit nickel d'abord sur les petits projets.^^
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Mar 2 Juin 2015 - 1:19
oki pour tes 2 problème :
pour le premier :
supprime les lignes 754 a 757
Code:

if Monnaie::YANFLY_MENU
  @gold_window.height = 24+24*array.length
  @gold_window.y = 0
end

pour le deuxiéme supprimes la ligne 1442
Code:

w *= 1.2 if i.to_s.length == 1

C'est corriger dans le script du topic sinon Wink
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Mar 2 Juin 2015 - 18:51
Impeccable, c'est corrigé.

J'ai zappé un truc : pour les crafts, ça serait possible d'avoir le même système que pour les magasins avec le switch des monnaies ?

Au sujet des crafts d'ailleurs, il y a une erreur qui est restée sur ton script :

Code:
############################
# Modif pour le menu craft #
############################
if Monnaie::CRAFT_MENU
  $crafting_monnaie = :all
  class Scene_CraftingAll < Scene_Base

A remplacer par :

Code:
############################
# Modif pour le menu craft #
############################
if Monnaie::CRAFT_MENU
  $crafting_monnaie = :all
  class Scene_CraftingAll
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Lun 8 Juin 2015 - 0:38
Salut désoler pour la réponse tardive ^^

Du coup quand tu parle du même système tu veut dire voir uniquement les recette avec les monnaie sélectionner ou juste le système de switch dans la fenêtre ?
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Lun 8 Juin 2015 - 6:26
Oui, que les recettes ne soient sélectionnables qu'avec les bonnes monnaies préalablement configurées. Qu'on puisse switcher les monnaies et faire les recettes que si on a tout réuni, dont être sur la bonne monnaie demandée.
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Lun 8 Juin 2015 - 11:48
Tient voila dit moi si ça va Wink :

Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Lun 8 Juin 2015 - 20:54
J'ai testé mais quand j'appuie sur CTRL, les monnaies ne switchent pas. Il ne se passe rien.

As-tu modifié la partie Configuration dans ton script, hormis les commentaires d'explications ? Parce que je reprends mes éléments de ma configuration pour éviter de tout retaper.

Aussi, à la ligne 1170, ça créé une erreur lors du lancement du jeu. Comme je te disais, il faut remplacer class Scene_CraftingAll < Scene_Base par class Scene_CraftingAll.
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Lun 8 Juin 2015 - 23:46
Ha oui excuse pour le bug ^^ (moi je ne l'ai pas ...)

Par contre c'est pas normal que ça marche pas silent
tu as bien placer le script de monnaie sous celui d'alchi ?
tu utilise bien la scene Scene_CraftingAll
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Mar 9 Juin 2015 - 7:07
Oui, il est sous celui des crafts.
J'ai essayé les deux Scene, les deux ne marchent pas. Après, Scene_CraftingAll, c'est pour lancer tous les onglets en même temps. J'utilise Scene_Crafting pour lancer certaines catégories.
Même en faisant un copier coller du script en prenant ta config de base, ça marche pas.

Je t'ai fais une démo : http://www.mediafire.com/download/tsirlg7bx792osx/Craft+Monnaies.exe
Optimus
Optimus
Membre

Nombre de messages : 13
Age : 21
Localisation : Sur la planète Terre.
Distinction : aucune
Date d'inscription : 01/06/2015

Script Multi monnaie Empty Re: Script Multi monnaie

Mar 9 Juin 2015 - 21:24
J'ai juste une petite question a quoi pourrait me servir se script ?
Spytje
Spytje
Administrateur

Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Script Multi monnaie Empty Re: Script Multi monnaie

Mar 9 Juin 2015 - 21:33
Vincent26 a écrit:Le principe :
Ce script permet d'ajouter des monnaie au jeu pour ne plus être limiter a une monnaie unique. Il inclut un menu de conversion des différentes monnaie.
De plus les monnaie peuvent être représenter par une icone ou leur nom (au choix)
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Mer 10 Juin 2015 - 23:39
Nérilys :
Il faut que tu place mon script sous la modif de zouzaka car il réecris l'update de la scene crafting Wink

Optimus
comme te la préciser spy tout est dit Wink
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Jeu 11 Juin 2015 - 21:15
Effectivement, ça marche mieux.

Au niveau de la banque, l'icône des monnaies est légèrement cachée sur la droite. C'est possible de la décaler sur la gauche ?

Script Multi monnaie Captur15
vincent26
vincent26
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Mar 23 Juin 2015 - 14:16
Script mis a jour Wink
Nérylis
Nérylis
Membre

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

Script Multi monnaie Empty Re: Script Multi monnaie

Mar 23 Juin 2015 - 19:10
Merci, j'ai testé, ça marche bien.

Cela dit, attention. Je suppose que tu as juste modifié la partie Banque du script tout à la fin. En reprenant l'intégralité de ta mise à jour sur le premier post, j'ai remarqué des différences, notamment au niveau de la partie Crafts où des lignes normalement en commentaires ne le sont plus. En final, j'ai repris ta version du 08 juin et pris en compte la modif pour la partie Banque du 23 Juin.

Pas de problème pour le moment. Je testerai bientôt l'intégralité de la démo mais là, ça me paraît plutôt bon.
Contenu sponsorisé

Script Multi monnaie Empty Re: Script Multi monnaie

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