[XP] AMK Currencies - Changement de monnaie

Voir le sujet précédent Voir le sujet suivant Aller en bas

[XP] AMK Currencies - Changement de monnaie

Message par Siegfried le Mar 26 Juil - 17:22

AMK Currencies
J'avais fait deux versions d'un script de changement de monnaies il y a longtemps, remplis de bugs.
J'ai tout recommencé du début, en fusionnant les fonctionnalités des deux anciennes versions (taux de change et monnaies indépendantes).

Pour résumer, imaginons que dans votre jeu, les héros traversent des pays ennemis, où il est probable que la monnaie ne soit pas la même.
Ce script permet d'avoir des monnaies indépendantes les unes des autres (deux stocks différents) ou d'adapter automatiquement l'argent que vous portez sur vous et de le convertir à un taux de change que vous pouvez configurer.

Plus de détails en bas. Wink

Le script a été testé et normalement, tout marche.

Instructions
-Configuration des monnaies
Code:
CURRENCIES = [
                ["Rubis", 0.5],
                ["Yaourts", 2],
                ["Or"],
              ]
Dans ce tableau, vous pouvez rajouter des monnaies de deux façons différentes :
Code:
["Monnaie"],
La monnaie rajoutée sans taux est indépendante des autres. Vous avez deux capitaux séparés.
Code:
["Monnaie", Taux],
La monnaie est dépendante de celle par défaut (onglet Système de la base de données).
Le taux est en fait le facteur de la muiltiplication. Ici, il faut deux unités de la monnaie de base pour avoir un Rubis et une unité de la monnaie de base donne 2 Yaourts.
(Par conséquent, on peut affirmer avec certitude qu'un yaourt coûte un quart de rubis...)

-Changer de monnaie
Insérez le code suivant dans un événement :
Code:
change_currency(Nom de la monnaie)

Script AMK Currencies
Code:
#==============================================================================
# ■ AMK Currencies 1.0
#------------------------------------------------------------------------------
#    Permet d'avoir plusieurs monnaies
#------------------------------------------------------------------------------
# Fait par Siegfried pour Legacy of Judge : Veil of Oblivion
#------------------------------------------------------------------------------
# Ce script provient de Saleth Empire
#------------------------------------------------------------------------------
# Fonctionnalités
#    -Plusieurs monnaies
#    -Taux de change
#------------------------------------------------------------------------------
# Instructions
#    Configurez vos monnaies dans le tableau plus bas, puis, par appel
#    de script, insérez le code :
#      change_currency("Nom de la monnaie")
#==============================================================================

#==============================================================================
# □ Currencies_Config
#==============================================================================
module Currencies_Config
  #--------------------------------------------------------------------------
  # ● Liste des monnaies
  #    Nom, taux (sans taux, la monnaie est une monnaie indépendante)
  #    La monnaie de référence est celle qui est enregistrée dans l'onglet
  #    Système de la base de données.
  #    Une monnaie indépendante est une monnaie qui ne participe pas au
  #    système de change.
  #--------------------------------------------------------------------------
  CURRENCIES = [
                ["Rubis", 0.5],
                ["Yaourts", 2],
                ["Or"],
                ["Cristaux"],
              ]
end

#==============================================================================
# ● Méthode de changement de monnaie
#==============================================================================
def change_currency(name)
  if $data_system.words.gold == $game_party.reference_currency
    $game_party.reference_gold = $game_party.gold
  end
 
  if name == $game_party.reference_currency
    table = Currencies_Config::CURRENCIES
    for i in 0...table.size
      if table[i][0] == $data_system.words.gold
        if table[i][1] != nil
          # Monnaie avec cours
          $game_party.reference_gold = ($game_party.gold / table[i][1]).to_i
        else
          # Monnaie sans cours
          for j in 0...$game_party.currencies.size
            if $game_party.currencies[j][0] == $data_system.words.gold
              $game_party.currencies[j][1] = $game_party.gold
            end
          end
        end
      end
    end
    $game_party.gold = $game_party.reference_gold
  else
    table = Currencies_Config::CURRENCIES
    for i in 0...table.size
      if table[i][0] == name
        if table[i][1] != nil
          # Monnaie avec cours
          $game_party.gold = ($game_party.reference_gold * table[i][1]).to_i
        else
          # Monnaie sans cours
          for j in 0...$game_party.currencies.size
            if $game_party.currencies[j][0] == name
              $game_party.gold = $game_party.currencies[j][1]
            end
          end
        end
      end
    end
  end
  $data_system.words.gold = name
  $game_party.currency = name
end

#==============================================================================
# □ Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # ○ Initialize
  #--------------------------------------------------------------------------
  alias currencies_initialize initialize
  def initialize
    $data_system.words.gold = $game_party.currency
    currencies_initialize
  end
end

#==============================================================================
# □ Game_Party
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # ● Attr
  #--------------------------------------------------------------------------
  attr_accessor :gold
  attr_accessor :currencies
  attr_accessor :reference_gold
  attr_accessor :reference_currency
  attr_accessor :currency
  #--------------------------------------------------------------------------
  # ○ Initialize
  #--------------------------------------------------------------------------
  alias currencies_initialize initialize
  def initialize
    currencies_initialize
    @currencies = []
    table = Currencies_Config::CURRENCIES
    for i in 0...table.size
      name = table[i][0]
      @currencies.push([name, 0]) if table[i][1] == nil
    end
    @reference_gold = @gold
    @reference_currency = $data_system.words.gold
    @currency = $data_system.words.gold
  end
  #--------------------------------------------------------------------------
  # ○ Gain_gold
  #--------------------------------------------------------------------------
  alias currencies_gain_gold gain_gold
  def gain_gold(n)
    currencies_gain_gold(n)
    table = Currencies_Config::CURRENCIES
    for i in 0...table.size
      if table[i][0] == $data_system.words.gold
        if table[i][1] != nil
          @reference_gold = ($game_party.gold / table[i][1]).to_i
        end
      end
    end
  end
end
avatar
Siegfried
Noobzor Lv.5
Noobzor Lv.5

Messages : 32
Age : 30

Fiche
Palmarès: Aucun
Spécialité: N/A
Avertissements: Aucun

Voir le profil de l'utilisateur http://amk.servhome.org

Revenir en haut Aller en bas

Re: [XP] AMK Currencies - Changement de monnaie

Message par garsim le Mar 26 Juil - 20:33

Eh ben, déjà que l'idée de changer de monnaie n'est à ma connaissance pas monnaie courante (ok je => []), en faire un script devrait faciliter les choses.
Le seul jeu que je connais dans lequel il y avait un changement de monnaie, c'était Time to Triumph... comme c'était basé sur des voyages temporels, les monnaies utilisées à travers le temps n'étaient pas les mêmes.

_________________
Plop(py).
avatar
garsim
Régent Lv.Zero
Régent Lv.Zero

Messages : 893
Age : 26

Fiche
Palmarès: 3
Spécialité: Rédaction, programmation (un peu)
Avertissements: Aucun

Voir le profil de l'utilisateur http://landigo.over-blog.com

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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