Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: "Dread Mac Farlane", (...) / Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

306 connectés actuellement

29424589 visiteurs
depuis l'ouverture

8816 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Alex d'Or

RPG Maker - La Communauté

RPG Maker Détente

Planète Glutko

RPG Maker VX

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [Ace] Monnaie complexe


TheKald - posté le 15/07/2013 à 17:53:37 (681 messages postés)

❤ 0

Pikactus

Domaine concerné: Script
Logiciel utilisé: Ace
Salut,

Je cherche un moyen de crée une monnaie de ce genre
1 Or = 17 Argents = 493 Cuivres
J'ai cherché des scripts permettant de faire cela.
et j'ai trouvé ça.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
=begin
#===============================================================================
# Spike's Engine - Monetary System
#
#   Version: 1.01
#   Author: Chris Barnett
#   Date: March 26th, 2012
#   Credit: Give credit where credit is due <img src='http://www.rpgmakervxace.net/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />
#===============================================================================
# Description:
#
#   This script displays currency values in terms of Copper, Silver, Gold, and
#   Platinum coins. It doesn't actually change the way gold works in any way,
#   only the way it is displayed.
#===============================================================================
# Instructions:
#
#   Place this script above Main and below default scripts in the Script Editor.
#   If you plan to integrate with Modern Algebra's Special Message Codes it
#   would probably be wise to place this this script above it.
#  
#   You'll need to insert images for the coins into your IconSet resource. At
#   the moment the script requires the coin's icon indices to be in sequential
#   order, starting with the most valuable. I may unwrap the for loop if there
#   seems to be a need to assign non sequential icon indices.
#
#   You will then need to set ICON to the icon index of the least valuable coin.
#  
#   To integrate with Modern Algebra's Special Message Codes, Just paste
#   the lines below into the icons section of convert_escape_characters
#
        result.gsub!(/\iSMC/i)                          { "\i\[#{::SPIKE::GOLD::ICON}\]" rescue "" }
        result.gsub!(/\iSMS/i)                          { "\i\[#{::SPIKE::GOLD::ICON-1}\]" rescue "" }
        result.gsub!(/\iSMG/i)                          { "\i\[#{::SPIKE::GOLD::ICON-2}\]" rescue "" }
        result.gsub!(/\iSMP/i)                          { "\i\[#{::SPIKE::GOLD::ICON-3}\]" rescue "" }
#
#   To call up the icons in a message box use the following escape sequences.
#  
#        \iSMC   for Copper
#        \iSMS   for Silver
#        \iSMG   for Gold
#        \iSMP   for Platinum
#  
#   NOTE!!! If you have any issues with this, please don't bother Modern Algebra
#   about it. He already spent his time writing Special Message Codes and
#   probably a fair amount of time answering questions about it. If you need
#   assistance, please contact me directly. I am plenty willing to help.
#===============================================================================
# Known Bugs:
#
#   A compatibility issue with Yanfly's Ace Save Engine has been reported
#   but not yet confirmed. If you experience troubles, please let me know.
#===============================================================================
=end
 
$imported = {} if $imported.nil?
$imported["SE-Money"] = true
 
module SPIKE
  module GOLD
        BATTLE_ALIGN = 1  # Change to non 0 to push icons to the right when receiving loot in battle
        ICON_POS = 4      # Increase to push icons right, decrease to pull left
        TEXT_POS = 0      # Increase to push text right, decrease to pull left
        OFFSET = -33      # Decrease to spread coins apart, increase to draw them closer
        ICON = 191              # Change this to the icon index of the least valuable coin
        HEIGHT = 0              # Increase to raise coins, decrease to lower
  end
end
 
class Window_Base < Window
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..3
          change = value % 100
          value = value / 100
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
        end
  end
end
 
class Game_Party < Game_Unit
  def max_gold
        return 99999999
  end
  def gain_gold(amount)
        @gold = [[@gold + amount, 0].max, max_gold].min
  end
  def gold
        return @gold
  end
end
 
class Window_ShopBuy < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..3
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += SPIKE::GOLD::OFFSET
          end
        end
  end
  def draw_item(index)
        item = @data[index]
        rect = item_rect(index)
        draw_item_name(item, rect.x, rect.y, enable?(item))
        draw_currency_value(price(item), Vocab::currency_unit, rect.x + 4, rect.y, contents.width - SPIKE::GOLD::ICON_POS - 8)
  end
end
 
class Window_ShopNumber < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..3
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += ::SPIKE::GOLD::OFFSET
          end
        end
  end
end
 
module BattleManager
  def self.gain_gold
        if $game_troop.gold_total > 0
          value = $game_troop.gold_total
          result = ''
          for i in 0..3
                change = value % 100
                value = value / 100
                if change != 0
                  if SPIKE::GOLD::BATTLE_ALIGN == 0
                        result = ('\i[' + (::SPIKE::GOLD::ICON - i).to_s + ']' + change.to_s + ' ') + result
                  else
                        result = (change.to_s + '\i[' + (::SPIKE::GOLD::ICON - i).to_s + '] ') + result
                  end
                end
          end
          $game_message.add('Found ' + result + '\.')
          $game_party.gain_gold($game_troop.gold_total)
        end
        wait_for_message
  end
end
 
# Uncomment for compatability with Yanfly's Ace Save Engine
#class Window_FileStatus < Window_Base
#  def draw_save_gold(dx, dy, dw)
#       return if @header[:party].nil?
#       draw_currency_value(@header[:party].gold.group.to_i, Vocab::currency_unit, + SPIKE::GOLD::ICON_POS, dy, contents.width - SPIKE::GOLD::ICON_POS - 8)
#  end
#end
 
class Game_Interpreter; include SPIKE::GOLD;
end



Existe-il un moyen de l'adapter pour ma demande?

Merci d'avance : )


Cortez - posté le 15/07/2013 à 18:48:10 (523 messages postés)

❤ 0

Je ne comprend pas ...
Il marche au moins dans ton projet ?

As-tu besoin d'avoir la traduction des instructions car tu ne
comprend pas l'anglais ?

Le script fait ce que tu veux mais il rajoute le platine comme monnaie
la plus élevée, tu veux que le ce soit l'or et virer le platine ?

Je peut faire les deux parce que je suis sympa, mais pense à l'avenir
à expliquer clairement ton problème.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
=begin
#===============================================================================
# Spike's Engine - Monetary System
#
#   Version: 1.01
#   Author: Chris Barnett
#   Date: March 26th, 2012
#   Credit: Give credit where credit is due <img src='http://www.rpgmakervxace.net/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />
#===============================================================================
# Description:
#
#   Ce script permet l'affichage de la monnaie du jeu sous la forme suivante :
#   Platine / Or / Argent / Bronze
#   Cela ne change que l'affichage à l'aide d'icones.
#===============================================================================
# Instructions:
#
#   Placez ce script au dessus de Main et au dessous de tous les autres.
#   Si vous voulez l'utiliser avec le script "Modern Algebra's Special Message Codes"
#   Il faut alors placer ce script au dessus de celui-ci.
#  
# Utilisation
#   Vous devez ajouter les icones de chaque devise dans votre iconset.
#   L'ordre de placement est important, le script utilise un ordre séquentiel 
#   Du plus cher (platine) au moins cher. (bronze)
#   Les icones doivent se suivre sur la même ligne dans l'iconset.
#
#   Dans le script vous devez choisir l'icone représentant la devise la plus faible.
#  
#   Pour l'utiliser avec le script "Modern Algebra's Special Message Codes", copiez
#   les lignes suivantes dans la section "icons" de "convert_escape_characters"
#
        result.gsub!(/\iSMC/i)                          { "\i\[#{::SPIKE::GOLD::ICON}\]" rescue "" }
        result.gsub!(/\iSMS/i)                          { "\i\[#{::SPIKE::GOLD::ICON-1}\]" rescue "" }
        result.gsub!(/\iSMG/i)                          { "\i\[#{::SPIKE::GOLD::ICON-2}\]" rescue "" }
        result.gsub!(/\iSMP/i)                          { "\i\[#{::SPIKE::GOLD::ICON-3}\]" rescue "" }
#
#   Et pour faire apparaitre les icones dans un message utilisez les lignes suivantes.
#  
#        \iSMC   Pour le Bronze
#        \iSMS   Pour l'Argent
#        \iSMG   Pour l'Or
#        \iSMP   Pour le Platine
#  
#   NOTE!!! Si vous avez des soucis avec cette partie du script
#   veuillez me contacter directement, je me ferais une joie de
#   vous aidez.
#   
#===============================================================================
# Bug connus :
#
#   Incompatibilité avec le script "Yanfly's Ace Save Engine"
#
#===============================================================================
=end
 
$imported = {} if $imported.nil?
$imported["SE-Money"] = true
 
module SPIKE
  module GOLD
        BATTLE_ALIGN = 1  # Alignement vers la droite dans la fenêtre de loot des combats.
        ICON_POS = 4      # Augmentez la valeur pour déplacer les icones vers la droite, ou diminuez pour déplacer à gauche.
        TEXT_POS = 0      # Augmentez la valeur pour déplacer le texte vers la droite, ou diminuez pour déplacer à gauche .
       OFFSET = -33      # Ecartement des icones, haute valeurs. rapprochent les icones, valeur plus petites les éloignent.
        ICON = 191              # L'ID de l'icone de la plus faible devise
        HEIGHT = 0              # Augmentez la valeur pour déplacer les icones vers le haut, ou diminuez pour déplacer vers le bas.
        DEVISE = 3 # Maximum de devise du jeu (3 pour Or, Argent, Bronze)
        DEVISE = DEVISE - 1 # Ne pas toucher !
  end
end
 
class Window_Base < Window
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..SPIKE::GOLD::DEVISE 
          change = value % 100 #Taux de conversion fixe de 1 pour 100.
          value = value / 100
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
        end
  end
end
 
class Game_Party < Game_Unit
  def max_gold
        return 99999999
  end
  def gain_gold(amount)
        @gold = [[@gold + amount, 0].max, max_gold].min
  end
  def gold
        return @gold
  end
end
 
class Window_ShopBuy < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..SPIKE::GOLD::DEVISE
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += SPIKE::GOLD::OFFSET
          end
        end
  end
  def draw_item(index)
        item = @data[index]
        rect = item_rect(index)
        draw_item_name(item, rect.x, rect.y, enable?(item))
        draw_currency_value(price(item), Vocab::currency_unit, rect.x + 4, rect.y, contents.width - SPIKE::GOLD::ICON_POS - 8)
  end
end
 
class Window_ShopNumber < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..SPIKE::GOLD::DEVISE
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += ::SPIKE::GOLD::OFFSET
          end
        end
  end
end
 
module BattleManager
  def self.gain_gold
        if $game_troop.gold_total > 0
          value = $game_troop.gold_total
          result = ''
          for i in 0..SPIKE::GOLD::DEVISE
                change = value % 100
                value = value / 100
                if change != 0
                  if SPIKE::GOLD::BATTLE_ALIGN == 0
                        result = ('\i[' + (::SPIKE::GOLD::ICON - i).to_s + ']' + change.to_s + ' ') + result
                  else
                        result = (change.to_s + '\i[' + (::SPIKE::GOLD::ICON - i).to_s + '] ') + result
                  end
                end
          end
          $game_message.add('Found ' + result + '\.')
          $game_party.gain_gold($game_troop.gold_total)
        end
        wait_for_message
  end
end
 
# Enlevez les '#' pour rendre compatible le script "Yanfly's Ace Save Engine"
#class Window_FileStatus < Window_Base
#  def draw_save_gold(dx, dy, dw)
#       return if @header[:party].nil?
#       draw_currency_value(@header[:party].gold.group.to_i, Vocab::currency_unit, + SPIKE::GOLD::ICON_POS, dy, contents.width - SPIKE::GOLD::ICON_POS - 8)
#  end
#end
 
class Game_Interpreter; include SPIKE::GOLD;
end



Le script devrait fonctionner normalement et tu n'as que 3 icones.
Or Argent Cuivre/Bronze.

Seulement le taux de change entre l'Or et l'Argent et forcément
fixe 1 Or = 100 Argent
Et il en va de même pour le cuivre :
1 Argent = 100 Cuivre.
Il me semble très difficile de faire comme dans ton exemple des
valeurs asymétriques :
1 Or = 17 Argents = 493 Cuivres
(les taux de changes sont trop compliqués pour un joueur.)

De plus tous les script qui existent ne sont que cosmétiques c'est
l'affichage qui est modifié et non le système de monnaie.
C'est presque pareil mais il faut que tu le saches.


Kisthune - posté le 15/07/2013 à 19:46:15 (1227 messages postés)

❤ 0

Oui c'est fait à l'arrache

En fait tu peux l'adapter toi même ton script.
Il suffit de repérer les lignes

Portion de code : Tout sélectionner

1
2
change = value % 100
value = value / 100



En changeant 100 par la valeur de ton taux de change.

Le tout étant appelé 4 fois à cause du for i in 0..3, suffit au choix de déclarer un array de longueur 3, l'utiliser à la place de la valeur 100 et changer en for i in 0..2, ou bien de copier coller 3 fois la suite d'instructions en changeant les valeurs 100.

Ça, c'est pour la partie affichage seulement !

Pour la partie rentrée/sortie d'argent, comme dit Cortez, le joueur ne verra jamais les valeurs utilisées par le logiciel, donc pas la peine de faire la conversion. Par contre, toi, lorsque tu équilibreras les coffres, les monstres ou les marchands (ou toute autre source de rentrée/sortie d'argent) il faut que tu gardes en tête ces conversions. Si tu veux par exemple qu'un coffre contienne pile poil 1 Argent, tu devras rentrer la valeur 493. (edit oui j'ai dit nawak pour la valeur)


Cortez > il est pourtant clair là son problème.

Reikon no Yume


TheKald - posté le 15/07/2013 à 20:17:03 (681 messages postés)

❤ 0

Pikactus

Merci de votre aide Cortez et Kisthune.
je vais essayer de l'adapter grâce a vos explications.

Citation:

Le tout étant appelé 4 fois à cause du for i in 0..3, suffit au choix de déclarer un array de longueur 3, l'utiliser à la place de la valeur 100 et changer en for i in 0..2, ou bien de copier coller 3 fois la suite d'instructions en changeant les valeurs 100.



Donc appelé une fois par type de pièce?(or, argent etc...)
Mais dans quel ordre (Platine, Or, Argent, Cuivre)ou(Cuivre, Argent, Or, Platine)?

Désolé le ruby et moi ça fait 2 :/...


Cortez - posté le 15/07/2013 à 21:30:29 (523 messages postés)

❤ 0

Logiquement le calcul et la conversion des devises se fait de la
plus petite à la plus grande (car un modulo donne le reste de la
division, donc la valeur la plus petite.)

Au pire tu fait un test et tu vérifie que 1 or = 17 argent = 493 cuivre

Oui, j'ai relu attentivement, et son problème est clair.


Edit : Essaye ça et dis moi si c'est correct (au niveau de la conversion et si ça plante pas :doute2)

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Window_Base < Window
taux = 493                   # taux initial en cuivre
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..SPIKE::GOLD::DEVISE 
          change = value % taux
          value = value / taux
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
           if taux == 493   # si le taux en cuivre est déjà fait
              taux /= 29     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux /= 17     # Donne le taux en Or (1)
           end                   # fin condition
        end
  end
end




Zeus81 - posté le 15/07/2013 à 21:53:08 (11071 messages postés)

❤ 0

or = total_cuivre / 29 / 17
argent = total_cuivre / 29 % 17
cuivre = total_cuivre % 29

Mais ouais tes taux de change sont chelou.


TheKald - posté le 15/07/2013 à 22:10:36 (681 messages postés)

❤ 0

Pikactus

Merci
att... j'ai du mal... c'est a ajouté au script? x)

Edit:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Window_Base < Window
taux = 493                   # taux initial en cuivre
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..SPIKE::GOLD::DEVISE#####(apparemment il y aurait un problème a cette ligne...)
          change = value % taux
          value = value / taux
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
           if taux == 493   # si le taux en cuivre est déjà fait
              taux /= 29     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux /= 17     # Donne le taux en Or (1)
           end                   # fin condition
        end
  end
end




Cortez - posté le 16/07/2013 à 09:58:18 (523 messages postés)

❤ 0

Ce morceau de script remplace les lignes 72 à 84.

Pour la ligne qui bug, je voulais tester le remplacement de

Portion de code : Tout sélectionner

1
for i in 0..3


en changeant la dernière valeur (3) par une variable paramétrable
dans le début du script.
Comme ça il aurait été plus simple de modifier le nombre de devise
du jeu.

Rappel :
for i in 0..3 -> 4 devises (platine à cuivre)

for i in 0..2 -> 3 devises (or à cuivre)

Pour éliminer le bug, remplace
SPIKE::GOLD:: DEVISE par 2
(aux lignes 76, 102, 124, 141)
J'ai également édité le script (la ligne OFFSET = -33 était en
commentaire.)


TheKald - posté le 16/07/2013 à 10:17:20 (681 messages postés)

❤ 0

Pikactus

Je sais que je commence a être chiant mais

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
=begin
#===============================================================================
# Spike's Engine - Monetary System
#
#   Version: 1.01
#   Author: Chris Barnett
#   Date: March 26th, 2012
#   Credit: Give credit where credit is due <img src='http://www.rpgmakervxace.net/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />
#===============================================================================
# Description:
#
#   Ce script permet l'affichage de la monnaie du jeu sous la forme suivante :
#   Platine / Or / Argent / Bronze
#   Cela ne change que l'affichage à l'aide d'icones.
#===============================================================================
# Instructions:
#
#   Placez ce script au dessus de Main et au dessous de tous les autres.
#   Si vous voulez l'utiliser avec le script "Modern Algebra's Special Message Codes"
#   Il faut alors placer ce script au dessus de celui-ci.
#  
# Utilisation
#   Vous devez ajouter les icones de chaque devise dans votre iconset.
#   L'ordre de placement est important, le script utilise un ordre séquentiel 
#   Du plus cher (platine) au moins cher. (bronze)
#   Les icones doivent se suivre sur la même ligne dans l'iconset.
#
#   Dans le script vous devez choisir l'icone représentant la devise la plus faible.
#  
#   Pour l'utiliser avec le script "Modern Algebra's Special Message Codes", copiez
#   les lignes suivantes dans la section "icons" de "convert_escape_characters"
#
        result.gsub!(/\iSMC/i)                          { "\i\[#{::SPIKE::GOLD::ICON}\]" rescue "" }
        result.gsub!(/\iSMS/i)                          { "\i\[#{::SPIKE::GOLD::ICON-1}\]" rescue "" }
        result.gsub!(/\iSMG/i)                          { "\i\[#{::SPIKE::GOLD::ICON-2}\]" rescue "" }
        result.gsub!(/\iSMP/i)                          { "\i\[#{::SPIKE::GOLD::ICON-3}\]" rescue "" }
#
#   Et pour faire apparaitre les icones dans un message utilisez les lignes suivantes.
#  
#        \iSMC   Pour le Bronze
#        \iSMS   Pour l'Argent
#        \iSMG   Pour l'Or
#        \iSMP   Pour le Platine
#  
#   NOTE!!! Si vous avez des soucis avec cette partie du script
#   veuillez me contacter directement, je me ferais une joie de
#   vous aidez.
#   
#===============================================================================
# Bug connus :
#
#   Incompatibilité avec le script "Yanfly's Ace Save Engine"
#
#===============================================================================
=end
 
$imported = {} if $imported.nil?
$imported["SE-Money"] = true
 
module SPIKE
  module GOLD
        BATTLE_ALIGN = 1  # Alignement vers la droite dans la fenêtre de loot des combats.
        ICON_POS = 4      # Augmentez la valeur pour déplacer les icones vers la droite, ou diminuez pour déplacer à gauche.
        TEXT_POS = 0      # Augmentez la valeur pour déplacer le texte vers la droite, ou diminuez pour déplacer à gauche .
       OFFSET = -33      # Ecartement des icones, haute valeurs. rapprochent les icones, valeur plus petites les éloignent.
        ICON = 191              # L'ID de l'icone de la plus faible devise
        HEIGHT = 0              # Augmentez la valeur pour déplacer les icones vers le haut, ou diminuez pour déplacer vers le bas.
        DEVISE = 3 # Maximum de devise du jeu (3 pour Or, Argent, Bronze)
        DEVISE = DEVISE - 1 # Ne pas toucher !
  end
end
 
class Window_Base < Window
taux = 493                   # taux initial en cuivre
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % taux
          value = value / taux
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
           if taux == 493   # si le taux en cuivre est déjà fait
              taux /= 29     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux /= 17     # Donne le taux en Or (1)
           end                   # fin condition
        end
  end
end
 
class Game_Party < Game_Unit
  def max_gold
        return 99999999
  end
  def gain_gold(amount)
        @gold = [[@gold + amount, 0].max, max_gold].min
  end
  def gold
        return @gold
  end
end
 
class Window_ShopBuy < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += SPIKE::GOLD::OFFSET
          end
        end
  end
  def draw_item(index)
        item = @data[index]
        rect = item_rect(index)
        draw_item_name(item, rect.x, rect.y, enable?(item))
        draw_currency_value(price(item), Vocab::currency_unit, rect.x + 4, rect.y, contents.width - SPIKE::GOLD::ICON_POS - 8)
  end
end
 
class Window_ShopNumber < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += ::SPIKE::GOLD::OFFSET
          end
        end
  end
end
 
module BattleManager
  def self.gain_gold
        if $game_troop.gold_total > 0
          value = $game_troop.gold_total
          result = ''
          for i in 0..2
                change = value % 100
                value = value / 100
                if change != 0
                  if SPIKE::GOLD::BATTLE_ALIGN == 0
                        result = ('\i[' + (::SPIKE::GOLD::ICON - i).to_s + ']' + change.to_s + ' ') + result
                  else
                        result = (change.to_s + '\i[' + (::SPIKE::GOLD::ICON - i).to_s + '] ') + result
                  end
                end
          end
          $game_message.add('Found ' + result + '\.')
          $game_party.gain_gold($game_troop.gold_total)
        end
        wait_for_message
  end
end
 
# Enlevez les '#' pour rendre compatible le script "Yanfly's Ace Save Engine"
#class Window_FileStatus < Window_Base
#  def draw_save_gold(dx, dy, dw)
#       return if @header[:party].nil?
#       draw_currency_value(@header[:party].gold.group.to_i, Vocab::currency_unit, + SPIKE::GOLD::ICON_POS, dy, contents.width - SPIKE::GOLD::ICON_POS - 8)
#  end
#end
 
class Game_Interpreter; include SPIKE::GOLD;
end





image
:s


Karel - posté le 16/07/2013 à 10:45:27 (0 messages postés)

❤ 0

Citation:

1 Or = 17 Argents = 493 Cuivres



Tu fais un projet Harry Potter? :tirlalangue2


TheKald - posté le 16/07/2013 à 11:01:53 (681 messages postés)

❤ 0

Pikactus

Karel: Bien vu.:F
Et oui chez les sorciers le système monétaire est casse-couilles.
D'ailleurs normalement c'est
1 Gallion = 17 Mornilles = 493 Noises
Mais c’était plus facile d'expliquer avec or, argent, cuivre.


Dyeel - posté le 16/07/2013 à 11:38:09 (200 messages postés)

❤ 0

Salut.

Pour ton dernier message d'erreur c'est un tout petit truc. Enlève la ligne 74 (taux =...) et réécris là sous le def qui est juste en dessous.


TheKald - posté le 16/07/2013 à 12:57:21 (681 messages postés)

❤ 0

Pikactus

Merci Dyeel ca marche.
mais
si
1 Or = 17 Argents = 493 Cuivres
alors
1 Argents = 29 Cuivres

Donc logiquement les cuivres montent jusqu’à 29 pour donner 1 argent
Or maintenant les cuivres montent jusqu’à 493 pour donner 1 argent
(Bon ça a la rigueur je peu le changer moi même...je crois :F )
Continuons...
Logiquement les argents montent jusqu’à 17 pour donner 1 or (soit 493 Cuivres )
Or maintenant les argents montent jusqu’à 17 pour donner 0 Or, 0 Argent, 0 Cuivre.
(La je me doute que le joueur possède bien de l'argent mais qu'il y a un problème au niveau de l'affichage)

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
=begin
#===============================================================================
# Spike's Engine - Monetary System
#
#   Version: 1.01
#   Author: Chris Barnett
#   Date: March 26th, 2012
#   Credit: Give credit where credit is due <img src='http://www.rpgmakervxace.net/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />
#===============================================================================
# Description:
#
#   Ce script permet l'affichage de la monnaie du jeu sous la forme suivante :
#   Platine / Or / Argent / Bronze
#   Cela ne change que l'affichage à l'aide d'icones.
#===============================================================================
# Instructions:
#
#   Placez ce script au dessus de Main et au dessous de tous les autres.
#   Si vous voulez l'utiliser avec le script "Modern Algebra's Special Message Codes"
#   Il faut alors placer ce script au dessus de celui-ci.
#  
# Utilisation
#   Vous devez ajouter les icones de chaque devise dans votre iconset.
#   L'ordre de placement est important, le script utilise un ordre séquentiel 
#   Du plus cher (platine) au moins cher. (bronze)
#   Les icones doivent se suivre sur la même ligne dans l'iconset.
#
#   Dans le script vous devez choisir l'icone représentant la devise la plus faible.
#  
#   Pour l'utiliser avec le script "Modern Algebra's Special Message Codes", copiez
#   les lignes suivantes dans la section "icons" de "convert_escape_characters"
#
        result.gsub!(/\iSMC/i)                          { "\i\[#{::SPIKE::GOLD::ICON}\]" rescue "" }
        result.gsub!(/\iSMS/i)                          { "\i\[#{::SPIKE::GOLD::ICON-1}\]" rescue "" }
        result.gsub!(/\iSMG/i)                          { "\i\[#{::SPIKE::GOLD::ICON-2}\]" rescue "" }
        result.gsub!(/\iSMP/i)                          { "\i\[#{::SPIKE::GOLD::ICON-3}\]" rescue "" }
#
#   Et pour faire apparaitre les icones dans un message utilisez les lignes suivantes.
#  
#        \iSMC   Pour le Bronze
#        \iSMS   Pour l'Argent
#        \iSMG   Pour l'Or
#        \iSMP   Pour le Platine
#  
#   NOTE!!! Si vous avez des soucis avec cette partie du script
#   veuillez me contacter directement, je me ferais une joie de
#   vous aidez.
#   
#===============================================================================
# Bug connus :
#
#   Incompatibilité avec le script "Yanfly's Ace Save Engine"
#
#===============================================================================
=end
 
$imported = {} if $imported.nil?
$imported["SE-Money"] = true
 
module SPIKE
  module GOLD
        BATTLE_ALIGN = 1  # Alignement vers la droite dans la fenêtre de loot des combats.
        ICON_POS = 4      # Augmentez la valeur pour déplacer les icones vers la droite, ou diminuez pour déplacer à gauche.
        TEXT_POS = 0      # Augmentez la valeur pour déplacer le texte vers la droite, ou diminuez pour déplacer à gauche .
       OFFSET = -33      # Ecartement des icones, haute valeurs. rapprochent les icones, valeur plus petites les éloignent.
        ICON = 191              # L'ID de l'icone de la plus faible devise
        HEIGHT = 0              # Augmentez la valeur pour déplacer les icones vers le haut, ou diminuez pour déplacer vers le bas.
        DEVISE = 3 # Maximum de devise du jeu (3 pour Or, Argent, Bronze)
        DEVISE = DEVISE - 1 # Ne pas toucher !
  end
end
 
class Window_Base < Window
def draw_currency_value(value, unit, x, y, width)
       taux = 493                   # taux initial en cuivre
  value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % taux
          value = value / taux
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
           if taux == 493   # si le taux en cuivre est déjà fait
              taux /= 29     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux /= 17     # Donne le taux en Or (1)
           end                   # fin condition
        end
  end
end
 
class Game_Party < Game_Unit
  def max_gold
        return 99999999
  end
  def gain_gold(amount)
        @gold = [[@gold + amount, 0].max, max_gold].min
  end
  def gold
        return @gold
  end
end
 
class Window_ShopBuy < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += SPIKE::GOLD::OFFSET
          end
        end
  end
  def draw_item(index)
        item = @data[index]
        rect = item_rect(index)
        draw_item_name(item, rect.x, rect.y, enable?(item))
        draw_currency_value(price(item), Vocab::currency_unit, rect.x + 4, rect.y, contents.width - SPIKE::GOLD::ICON_POS - 8)
  end
end
 
class Window_ShopNumber < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += ::SPIKE::GOLD::OFFSET
          end
        end
  end
end
 
module BattleManager
  def self.gain_gold
        if $game_troop.gold_total > 0
          value = $game_troop.gold_total
          result = ''
          for i in 0..2
                change = value % 100
                value = value / 100
                if change != 0
                  if SPIKE::GOLD::BATTLE_ALIGN == 0
                        result = ('\i[' + (::SPIKE::GOLD::ICON - i).to_s + ']' + change.to_s + ' ') + result
                  else
                        result = (change.to_s + '\i[' + (::SPIKE::GOLD::ICON - i).to_s + '] ') + result
                  end
                end
          end
          $game_message.add('Found ' + result + '\.')
          $game_party.gain_gold($game_troop.gold_total)
        end
        wait_for_message
  end
end
 
# Enlevez les '#' pour rendre compatible le script "Yanfly's Ace Save Engine"
#class Window_FileStatus < Window_Base
#  def draw_save_gold(dx, dy, dw)
#       return if @header[:party].nil?
#       draw_currency_value(@header[:party].gold.group.to_i, Vocab::currency_unit, + SPIKE::GOLD::ICON_POS, dy, contents.width - SPIKE::GOLD::ICON_POS - 8)
#  end
#end
 
class Game_Interpreter; include SPIKE::GOLD;
end




Cortez - posté le 16/07/2013 à 15:47:25 (523 messages postés)

❤ 0

Correction apportées, teste et dis moi si c'est correct.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
=begin
#===============================================================================
# Spike's Engine - Monetary System
#
#   Version: 1.01
#   Author: Chris Barnett
#   Date: March 26th, 2012
#   Credit: Give credit where credit is due <img src='http://www.rpgmakervxace.net/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />
#===============================================================================
# Description:
#
#   Ce script permet l'affichage de la monnaie du jeu sous la forme suivante :
#   Platine / Or / Argent / Bronze
#   Cela ne change que l'affichage à l'aide d'icones.
#===============================================================================
# Instructions:
#
#   Placez ce script au dessus de Main et au dessous de tous les autres.
#   Si vous voulez l'utiliser avec le script "Modern Algebra's Special Message Codes"
#   Il faut alors placer ce script au dessus de celui-ci.
#  
# Utilisation
#   Vous devez ajouter les icones de chaque devise dans votre iconset.
#   L'ordre de placement est important, le script utilise un ordre séquentiel 
#   Du plus cher (platine) au moins cher. (bronze)
#   Les icones doivent se suivre sur la même ligne dans l'iconset.
#
#   Dans le script vous devez choisir l'icone représentant la devise la plus faible.
#  
#   Pour l'utiliser avec le script "Modern Algebra's Special Message Codes", copiez
#   les lignes suivantes dans la section "icons" de "convert_escape_characters"
#
        result.gsub!(/\iSMC/i)                          { "\i\[#{::SPIKE::GOLD::ICON}\]" rescue "" }
        result.gsub!(/\iSMS/i)                          { "\i\[#{::SPIKE::GOLD::ICON-1}\]" rescue "" }
        result.gsub!(/\iSMG/i)                          { "\i\[#{::SPIKE::GOLD::ICON-2}\]" rescue "" }
        result.gsub!(/\iSMP/i)                          { "\i\[#{::SPIKE::GOLD::ICON-3}\]" rescue "" }
#
#   Et pour faire apparaitre les icones dans un message utilisez les lignes suivantes.
#  
#        \iSMC   Pour le Bronze
#        \iSMS   Pour l'Argent
#        \iSMG   Pour l'Or
#        \iSMP   Pour le Platine
#  
#   NOTE!!! Si vous avez des soucis avec cette partie du script
#   veuillez me contacter directement, je me ferais une joie de
#   vous aidez.
#   
#===============================================================================
# Bug connus :
#
#   Incompatibilité avec le script "Yanfly's Ace Save Engine"
#
#===============================================================================
=end
 
$imported = {} if $imported.nil?
$imported["SE-Money"] = true
 
module SPIKE
  module GOLD
        BATTLE_ALIGN = 1  # Alignement vers la droite dans la fenêtre de loot des combats.
        ICON_POS = 4      # Augmentez la valeur pour déplacer les icones vers la droite, ou diminuez pour déplacer à gauche.
        TEXT_POS = 0      # Augmentez la valeur pour déplacer le texte vers la droite, ou diminuez pour déplacer à gauche .
       OFFSET = -33      # Ecartement des icones, haute valeurs. rapprochent les icones, valeur plus petites les éloignent.
        ICON = 191              # L'ID de l'icone de la plus faible devise
        HEIGHT = 0              # Augmentez la valeur pour déplacer les icones vers le haut, ou diminuez pour déplacer vers le bas.
        DEVISE = 3 # Maximum de devise du jeu (3 pour Or, Argent, Bronze)
        DEVISE = DEVISE - 1 # Ne pas toucher !
  end
end
 
class Window_Base < Window
def draw_currency_value(value, unit, x, y, width)
       taux = 29                   # taux initial en cuivre
  value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..2
         if taux != 1       # Formule d'origine si le taux est différent de 1.
          change = value % taux
          value = value / taux
         else          # Modifie la formule pour un taux de 1 car modulo 1 = 0
          change = value
          value = value / taux
         end
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
           if taux == 29   # si le taux en cuivre est déjà fait
              taux = 17     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux = 1     # Donne le taux en Or (1)
           end                   # fin condition
        end
  end
end
 
class Game_Party < Game_Unit
  def max_gold
        return 99999999
  end
  def gain_gold(amount)
        @gold = [[@gold + amount, 0].max, max_gold].min
  end
  def gold
        return @gold
  end
end
 
class Window_ShopBuy < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += SPIKE::GOLD::OFFSET
          end
        end
  end
  def draw_item(index)
        item = @data[index]
        rect = item_rect(index)
        draw_item_name(item, rect.x, rect.y, enable?(item))
        draw_currency_value(price(item), Vocab::currency_unit, rect.x + 4, rect.y, contents.width - SPIKE::GOLD::ICON_POS - 8)
  end
end
 
class Window_ShopNumber < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
          change = value % 100
          value = value / 100
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += ::SPIKE::GOLD::OFFSET
          end
        end
  end
end
 
module BattleManager
  def self.gain_gold
        if $game_troop.gold_total > 0
          value = $game_troop.gold_total
          result = ''
          for i in 0..2
                change = value % 100
                value = value / 100
                if change != 0
                  if SPIKE::GOLD::BATTLE_ALIGN == 0
                        result = ('\i[' + (::SPIKE::GOLD::ICON - i).to_s + ']' + change.to_s + ' ') + result
                  else
                        result = (change.to_s + '\i[' + (::SPIKE::GOLD::ICON - i).to_s + '] ') + result
                  end
                end
          end
          $game_message.add('Found ' + result + '\.')
          $game_party.gain_gold($game_troop.gold_total)
        end
        wait_for_message
  end
end
 
# Enlevez les '#' pour rendre compatible le script "Yanfly's Ace Save Engine"
#class Window_FileStatus < Window_Base
#  def draw_save_gold(dx, dy, dw)
#       return if @header[:party].nil?
#       draw_currency_value(@header[:party].gold.group.to_i, Vocab::currency_unit, + SPIKE::GOLD::ICON_POS, dy, contents.width - SPIKE::GOLD::ICON_POS - 8)
#  end
#end
 
class Game_Interpreter; include SPIKE::GOLD;
end




TheKald - posté le 16/07/2013 à 16:05:11 (681 messages postés)

❤ 0

Pikactus

Oui, ça marche merci beaucoup.

Merci a vous tous!
Et surtout a toi Cortez pour avoir résolu mon problème.

:)


Cortez - posté le 16/07/2013 à 18:44:24 (523 messages postés)

❤ 0

Alors si ça marche, il faut modifier chaque zone de la même manière :

Le script définitif

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
=begin
#===============================================================================
# Spike's Engine - Monetary System
#
#   Version: 1.01
#   Author: Chris Barnett
#   Date: March 26th, 2012
#   Credit: Give credit where credit is due <img src='http://www.rpgmakervxace.net/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />
#===============================================================================
# Description:
#
#   Ce script permet l'affichage de la monnaie du jeu sous la forme suivante :
#   Platine / Or / Argent / Bronze
#   Cela ne change que l'affichage à l'aide d'icones.
#===============================================================================
# Instructions:
#
#   Placez ce script au dessus de Main et au dessous de tous les autres.
#   Si vous voulez l'utiliser avec le script "Modern Algebra's Special Message Codes"
#   Il faut alors placer ce script au dessus de celui-ci.
#  
# Utilisation
#   Vous devez ajouter les icones de chaque devise dans votre iconset.
#   L'ordre de placement est important, le script utilise un ordre séquentiel 
#   Du plus cher (platine) au moins cher. (bronze)
#   Les icones doivent se suivre sur la même ligne dans l'iconset.
#
#   Dans le script vous devez choisir l'icone représentant la devise la plus faible.
#  
#   Pour l'utiliser avec le script "Modern Algebra's Special Message Codes", copiez
#   les lignes suivantes dans la section "icons" de "convert_escape_characters"
#
        result.gsub!(/\iSMC/i)                          { "\i\[#{::SPIKE::GOLD::ICON}\]" rescue "" }
        result.gsub!(/\iSMS/i)                          { "\i\[#{::SPIKE::GOLD::ICON-1}\]" rescue "" }
        result.gsub!(/\iSMG/i)                          { "\i\[#{::SPIKE::GOLD::ICON-2}\]" rescue "" }
        result.gsub!(/\iSMP/i)                          { "\i\[#{::SPIKE::GOLD::ICON-3}\]" rescue "" }
#
#   Et pour faire apparaitre les icones dans un message utilisez les lignes suivantes.
#  
#        \iSMC   Pour le Bronze
#        \iSMS   Pour l'Argent
#        \iSMG   Pour l'Or
#        \iSMP   Pour le Platine
#  
#   NOTE!!! Si vous avez des soucis avec cette partie du script
#   veuillez me contacter directement, je me ferais une joie de
#   vous aidez.
#   
#===============================================================================
# Bug connus :
#
#   Incompatibilité avec le script "Yanfly's Ace Save Engine"
#
#===============================================================================
=end
 
$imported = {} if $imported.nil?
$imported["SE-Money"] = true
 
module SPIKE
  module GOLD
        BATTLE_ALIGN = 1  # Alignement vers la droite dans la fenêtre de loot des combats.
        ICON_POS = 4      # Augmentez la valeur pour déplacer les icones vers la droite, ou diminuez pour déplacer à gauche.
        TEXT_POS = 0      # Augmentez la valeur pour déplacer le texte vers la droite, ou diminuez pour déplacer à gauche .
       OFFSET = -33      # Ecartement des icones, haute valeurs. rapprochent les icones, valeur plus petites les éloignent.
        ICON = 191              # L'ID de l'icone de la plus faible devise
        HEIGHT = 0              # Augmentez la valeur pour déplacer les icones vers le haut, ou diminuez pour déplacer vers le bas.
        DEVISE = 3 # Maximum de devise du jeu (3 pour Or, Argent, Bronze)
        DEVISE = DEVISE - 1 # Ne pas toucher !
  end
end
 
class Window_Base < Window
def draw_currency_value(value, unit, x, y, width)
       taux = 29                   # taux initial en cuivre
  value *= -1 if value < 0
        pos = ::SPIKE::GOLD::ICON_POS
        for i in 0..2
         if taux != 1       # Formule d'origine si le taux est différent de 1.
          change = value % taux
          value = value / taux
         else          # Modifie la formule pour un taux de 1 car modulo 1 = 0
          change = value
          value = value / taux
         end
          draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
          draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
          pos += ::SPIKE::GOLD::OFFSET
           if taux == 29   # si le taux en cuivre est déjà fait
              taux = 17     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux = 1     # Donne le taux en Or (1)
           end                   # fin condition
        end
  end
end
 
class Game_Party < Game_Unit
  def max_gold
        return 99999999
  end
  def gain_gold(amount)
        @gold = [[@gold + amount, 0].max, max_gold].min
  end
  def gold
        return @gold
  end
end
 
class Window_ShopBuy < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
       taux = 29                   # taux initial en cuivre
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
         if taux != 1       # Formule d'origine si le taux est différent de 1.
          change = value % taux
          value = value / taux
         else          # Modifie la formule pour un taux de 1 car modulo 1 = 0
          change = value
          value = value / taux
         end
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += SPIKE::GOLD::OFFSET
           if taux == 29   # si le taux en cuivre est déjà fait
              taux = 17     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux = 1     # Donne le taux en Or (1)
           end                   # fin condition
          end
        end
  end
  def draw_item(index)
        item = @data[index]
        rect = item_rect(index)
        draw_item_name(item, rect.x, rect.y, enable?(item))
        draw_currency_value(price(item), Vocab::currency_unit, rect.x + 4, rect.y, contents.width - SPIKE::GOLD::ICON_POS - 8)
  end
end
 
class Window_ShopNumber < Window_Selectable
  def draw_currency_value(value, unit, x, y, width)
       taux = 29                   # taux initial en cuivre
        value *= -1 if value < 0
        pos = SPIKE::GOLD::ICON_POS
        for i in 0..2
         if taux != 1       # Formule d'origine si le taux est différent de 1.
          change = value % taux
          value = value / taux
         else          # Modifie la formule pour un taux de 1 car modulo 1 = 0
          change = value
          value = value / taux
         end
          if change != 0
                draw_icon(SPIKE::GOLD::ICON - i,width + pos + SPIKE::GOLD::OFFSET, y - SPIKE::GOLD::HEIGHT)
                draw_text(x + SPIKE::GOLD::TEXT_POS, y, width + pos, line_height, change, 2)
                pos += ::SPIKE::GOLD::OFFSET
           if taux == 29   # si le taux en cuivre est déjà fait
              taux = 17     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux = 1     # Donne le taux en Or (1)
           end                   # fin condition
          end
        end
  end
end
 
module BattleManager
  def self.gain_gold
       taux = 29                   # taux initial en cuivre
        if $game_troop.gold_total > 0
          value = $game_troop.gold_total
          result = ''
          for i in 0..2
         if taux != 1       # Formule d'origine si le taux est différent de 1.
          change = value % taux
          value = value / taux
         else          # Modifie la formule pour un taux de 1 car modulo 1 = 0
          change = value
          value = value / taux
         end
                if change != 0
                  if SPIKE::GOLD::BATTLE_ALIGN == 0
                        result = ('\i[' + (::SPIKE::GOLD::ICON - i).to_s + ']' + change.to_s + ' ') + result
                  else
                        result = (change.to_s + '\i[' + (::SPIKE::GOLD::ICON - i).to_s + '] ') + result
                  end
           if taux == 29   # si le taux en cuivre est déjà fait
              taux = 17     # Donne le taux en argent (17)
           else                  # Le taux en argent est déjà fait
              taux = 1     # Donne le taux en Or (1)
           end                   # fin condition
                end
          end
          $game_message.add('Found ' + result + '\.')
          $game_party.gain_gold($game_troop.gold_total)
        end
        wait_for_message
  end
end
 
# Enlevez les '#' pour rendre compatible le script "Yanfly's Ace Save Engine"
#class Window_FileStatus < Window_Base
#  def draw_save_gold(dx, dy, dw)
#       return if @header[:party].nil?
#       draw_currency_value(@header[:party].gold.group.to_i, Vocab::currency_unit, + SPIKE::GOLD::ICON_POS, dy, contents.width - SPIKE::GOLD::ICON_POS - 8)
#  end
#end
 
class Game_Interpreter; include SPIKE::GOLD;
end




TheKald - posté le 16/07/2013 à 19:40:49 (681 messages postés)

❤ 0

Pikactus

Bon bah merci encore une fois :)

Index du forum > Entraide > [RESOLU] [Ace] Monnaie complexe

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers