- BencocoMembre
- Nombre de messages : 31
Age : 34
Localisation : Alsace
Distinction : aucune
Date d'inscription : 04/03/2012
Changement de système monétaire
Lun 25 Fév 2013 - 17:39
Comme dit dans le titre, ce script permet d'avoir l'argent que l'on possède exprimé en fonction de trois matériaux.
Ce script est intégralement de Moi mais vous pouvez l'utiliser tant que je suis dans les crédits ! merci de votre compréhension
(l'auteur de ce script se décharge de toute responsabilités en cas d'interférences entre ce script et tout autre script préalablement installé :-D )
et un petit screen pour être compris :
et la vous me direz, c'est bien gentil ton truc mais dans les dialogues comment je fais ??
eh bien oui j'ai pensé à tout ! car rappelez vous quand vous écrivez une somme d'argent dans un texte vous rajoutez \G pour l'unité eh bien il suffit d'écrire \OAC[valeur] pour que l'argent soit écrit de la même manière dans les texte, de plus cette fonction ajoute automatiquement la quantité d'argent saisie au porte monaie sans avoir besoin de rajouter une ligne d'évent.
ex:
devient :
et pour que tout soit bien dans le meilleur des mondes j'ai un petit peu du modifier le menu "magasin"
et voilà pour bénéficier de ce magnifique script, il suffit de le coller à l'endroit habituel (en dessous de materials) :
Ah !!! Misérable j'ai failli oublier le bonus ! ^^ lorsque vous vendez un objet au magasin, ce dernier le garde en stock et peut vous le revendre à tout moment ! ( bien entendu plus cher que vous ne l'avez vendu, mais ça ce sont les règles de la finance je n'y peu pas grand chose !!)
Bonne fin de Week-en à tous
Ce script est intégralement de Moi mais vous pouvez l'utiliser tant que je suis dans les crédits ! merci de votre compréhension
(l'auteur de ce script se décharge de toute responsabilités en cas d'interférences entre ce script et tout autre script préalablement installé :-D )
et un petit screen pour être compris :
et la vous me direz, c'est bien gentil ton truc mais dans les dialogues comment je fais ??
eh bien oui j'ai pensé à tout ! car rappelez vous quand vous écrivez une somme d'argent dans un texte vous rajoutez \G pour l'unité eh bien il suffit d'écrire \OAC[valeur] pour que l'argent soit écrit de la même manière dans les texte, de plus cette fonction ajoute automatiquement la quantité d'argent saisie au porte monaie sans avoir besoin de rajouter une ligne d'évent.
ex:
devient :
et pour que tout soit bien dans le meilleur des mondes j'ai un petit peu du modifier le menu "magasin"
et voilà pour bénéficier de ce magnifique script, il suffit de le coller à l'endroit habituel (en dessous de materials) :
- Code:
#==============================================================================
# Gestion Or, Argent Cuivre
# Scripts de base modifiés par Bencoco
# Enjoy !
#==============================================================================
#==============================================================================
# ** Scene_Shop
#------------------------------------------------------------------------------
# Cette classe gère les magasins
#==============================================================================
class Scene_Shop < Scene_MenuBase
#--------------------------------------------------------------------------
# * Prepare
#--------------------------------------------------------------------------
def prepare(goods, purchase_only,event_id)
@goods = goods
@purchase_only = purchase_only
@event_id = event_id
end
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
create_help_window_shop
create_gold_window
create_command_window
create_dummy_window
create_number_window
create_status_window
create_buy_window
create_category_window
create_sell_window
end
#--------------------------------------------------------------------------
# * Create Gold Window
#--------------------------------------------------------------------------
def create_gold_window
@gold_window = Window_Gold.new
@gold_window.viewport = @viewport
@gold_window.x = Graphics.width - @gold_window.width
@gold_window.y = 0
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_ShopCommand.new(@gold_window.x, @purchase_only)
@command_window.viewport = @viewport
@command_window.y = (@gold_window.height - @command_window.height)/2
@command_window.set_handler(:buy, method(:command_buy))
@command_window.set_handler(:sell, method(:command_sell))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# * Create Dummy Window
#--------------------------------------------------------------------------
def create_dummy_window
wy = @gold_window.y + @gold_window.height
wh = Graphics.height - wy - @help_window.height
@dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
@dummy_window.viewport = @viewport
end
#--------------------------------------------------------------------------
# * Create Sell Window
#--------------------------------------------------------------------------
def create_sell_window
wy = @category_window.y + @category_window.height
wh = Graphics.height - wy - @help_window.height
@sell_window = Window_ShopSell.new(0, wy, Graphics.width, wh)
@sell_window.viewport = @viewport
@sell_window.help_window = @help_window
@sell_window.hide
@sell_window.set_handler(:ok, method(:on_sell_ok))
@sell_window.set_handler(:cancel, method(:on_sell_cancel))
@category_window.item_window = @sell_window
end
#--------------------------------------------------------------------------
# * Effectuer l'achat
#--------------------------------------------------------------------------
def do_buy(number)
# retire l'argent
$game_party.lose_gold(number * buying_price)
# ajoute l'objet
$game_party.gain_item(@item, number)
# détermine le type d'objet
type = type_item(@item)
#pour n compris entre 0 et le nombre d'objets dans le magasin
for n in 0..@goods.count-1
#si l'élément 1 de l'objet n correspond à l'id de l'objet
# et si l'élément 0 de l'objet n correspond à la variable type
if @goods[n][1] == @item.id and @goods[n][0] == type
#si l'élément 4 de l'objet n correspond à "number" le nombre d'objet que l'on a acheté
if @goods[n][4] == number
#retirer l'objet de la liste d'objets de l'event
$game_map.events[@event_id].list.delete_at n
# retirer de la liste du magasin ouvert
@goods.delete_at n
end
end
end
end
#--------------------------------------------------------------------------
# * Effectuer la vente
#--------------------------------------------------------------------------
def do_sell(number)
# ajouter l'argent
$game_party.gain_gold(number * selling_price)
# retirer l'objet
$game_party.lose_item(@item, number)
# initialisation du test
test = 0
# détermine le type d'objet
type = type_item(@item)
# détermine le nombre d'objets en vente dans l'event
fin = $game_map.events[@event_id].list.count-1
# pour i compris entre 0 et le nombre d'objets
for i in 0..fin
# si un objet de même type existe
if $game_map.events[@event_id].list[i].parameters[0] == type
# si cet objet a le même id
if $game_map.events[@event_id].list[i].parameters[1] == @item.id
# si sa quantité éxiste
if $game_map.events[@event_id].list[i].parameters[4] != nil
# si sa quantité n'a pas pour valeur false
if $game_map.events[@event_id].list[i].parameters[4] != false
# ajouter la quantité vendue à la quantité déjà en stock
$game_map.events[@event_id].list[i].parameters[4] += number
# ajouter dans le magasin actif
@goods[i][4] += number
end
end
# si un objet existe mais sans quantité ajouter 1 à la variable test
test += 1
end
end
end
# si aucun objet identique n''existe dans le magasin
if test == 0
# modifier le code du dernier objet de la liste de l'évent
#ici 605 correspond à un objet supplémentaire en magasin
$game_map.events[@event_id].list[fin].code = 605
# modifier le indent du dernier objet de la liste de l'évent
$game_map.events[@event_id].list[fin].indent = 0
# modifier les parametres du dernier objet de la liste de l'évent
$game_map.events[@event_id].list[fin].parameters = [type,@item.id,0,0,number]
# ajouter une dernière commande vide popur clorer la liste
$game_map.events[@event_id].list.push(RPG::EventCommand.new)
#ajouter l'objet dans le magasin actuel
@goods.push([type,@item.id,0,0,number])
end
end
#--------------------------------------------------------------------------
# * Get Maximum Quantity Buyable
#--------------------------------------------------------------------------
def max_buy
# détermine le type d'objet
type = type_item(@item)
#initialise le max à 0
max = 0
#pour chaque objet de la liste appliquer identité
@goods.each do |identite|
# si l'id et le type de l'objet correspondent à quelquechose dans la base
if identite[1] == @item.id and identite[0] == type
# si la quantité existe
if identite[4] !=nil
# si la quantité n'a pas pour valeur false
if identite[4] != false
# max prend pour valeur la quantité
max = identite[4]
end
end
end
end
# si max a pour valeur 0
if max == 0
# max prend la valeur par défaut
max = $game_party.max_item_number(@item) - $game_party.item_number(@item)
end
#détermine la quantité pouvant être achetée en fonction de l'argent possédé
buying_price == 0 ? max : [max, money / buying_price].min
end
#--------------------------------------------------------------------------
# * Détermine le type d'objet
#--------------------------------------------------------------------------
def type_item(objet)
# si l'objet est un "objet"
if objet.is_a?(RPG::Item)
return 0
end
# si l'objet est une arme
if objet.is_a?(RPG::Weapon)
return 1
end
# si l'objet est une armure
if objet.is_a?(RPG::Armor)
return 2
end
end
end
#=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# Ceci est une super-classe pour toutes les fenêtres du jeu.
#==============================================================================
class Window_Base < Window
def process_escape_character(code, text, pos)
case code.upcase
# ajoute la possibilité en écrivant "\OAC[valeur] d'écrire l'argent
# sous la forme or argent cuivre(OAC)
when 'OAC'
process_draw_gold(obtain_escape_param(text),pos)
when 'C'
change_color(text_color(obtain_escape_param(text)))
when 'I'
process_draw_icon(obtain_escape_param(text), pos)
when '{'
make_font_bigger
when '}'
make_font_smaller
end
end
#--------------------------------------------------------------------------
# * Écrit l'argent sous forme OAC
#--------------------------------------------------------------------------
def process_draw_gold(value,pos)
# ajoute la somme dans le crochet à la bourse
$game_party.gain_gold(value)
# détermine la quantité d'or
gold = value/10000
# détermine la quantité d'argent
silver = (value-(10000*gold.to_i))/100
# détermine la quantité de cuivre
copper = value - 10000*gold.to_i - 100*silver.to_i
# La partie suivante gère les différents cas de figure
# et place les icones et le texte en fonction :
# si l'on a que du cuivre
if copper != 0 and silver == 0 and gold == 0
draw_coin(pos,20,copper,2)
pos[:x] += 35
end
# si l'on a que de l'argent
if copper == 0 and silver != 0 and gold == 0
draw_coin(pos,20,silver,1)
pos[:x] += 35
end
# si l'on a que de l'or
if copper == 0 and silver == 0 and gold != 0
draw_coin(pos,20,gold,0)
pos[:x] += 35
end
#si l'on a du cuivre et de l'argent
if copper != 0 and silver != 0 and gold == 0
draw_coin(pos,65,copper,2)
draw_coin(pos,20,silver,1)
pos[:x] += 80
end
#si l'on a du cuivre et de l'or
if copper != 0 and silver == 0 and gold != 0
draw_coin(pos,65,copper,2)
draw_coin(pos,20,gold,0)
pos[:x] += 80
end
#si l'on a de l'or et de l'argent
if copper == 0 and silver != 0 and gold != 0
draw_coin(pos,65,silver,1)
draw_coin(pos,20,gold,0)
pos[:x] += 80
end
# si l'on possède les trois
if copper != 0 and silver != 0 and gold != 0
draw_coin(pos,20,gold,0)
draw_coin(pos,65,silver,1)
draw_coin(pos,110,copper,2)
pos[:x] += 125
end
end
#--------------------------------------------------------------------------
# * dessine les icones et le texte
#--------------------------------------------------------------------------
def draw_coin(pos,x1,type,i)
# dessine le texte
draw_text(pos[:x] + x1 - text_size(type).width, pos[:y], width, line_height, type)
# dessine les icones
draw_icon(125 + i, pos[:x] + x1, pos[:y])
end
#--------------------------------------------------------------------------
# * écrit l'argent sous forme OAC à la place de l'unité
#--------------------------------------------------------------------------
def draw_currency_value(value, unit, x, y, width)
# détermine la quantité d'or
gold = value/10000
# détermine la quantité d'argent
silver = (value-(10000*gold.to_i))/100
# détermine la quantité de cuivre
copper = value - 10000*gold.to_i - 100*silver.to_i
# écrit en blanc
change_color(normal_color)
# écrit la quantité d'or
draw_text(x-16, y, width, line_height, gold, 2)
# écrit la quantité d'argent
draw_text(x-16, y + line_height, width, line_height, silver, 2)
# écrit la quantité de cuivre
draw_text(x-16, y + line_height + line_height, width, line_height, copper, 2)
# dessine l'icone pour l'or
draw_icon(125, x + width -16, y, enabled = true)
# dessine l'icone pour l'argent
draw_icon(126, x + width -16, y + line_height, enabled = true)
# dessine l'icone pour le cuivre
draw_icon(127, x + width -16, y + line_height + line_height, enabled = true)
end
end
#=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
#==============================================================================
# ** Window_Gold
#------------------------------------------------------------------------------
# Cette fenêtre affiche l'or
#==============================================================================
class Window_Gold < Window_Base
#--------------------------------------------------------------------------
# ● initialise l'objet
#--------------------------------------------------------------------------
def initialize
super(0, 0, window_width, fitting_height(3))
refresh
end
end
#=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# Ce module d'interprétation permet d'exécuter les actions des évents
# Cette classe est utilisée dans les classes suivantes :
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# * Shop Processing
#--------------------------------------------------------------------------
def command_302
return if $game_party.in_battle
goods = [@params]
while next_event_code == 605
@index += 1
goods.push(@list[@index].parameters)
end
SceneManager.call(Scene_Shop)
# ajout de la transmission de l'id de l'évent
SceneManager.scene.prepare(goods, @params[4],@event_id)
Fiber.yield
end
end
#=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
#==============================================================================
# ** Scene_MenuBase
#------------------------------------------------------------------------------
# Cete classe effectue les actions de base du menu
#==============================================================================
class Scene_MenuBase < Scene_Base
#--------------------------------------------------------------------------
# * Crée une fenêtre d'aide pour le magasin
#--------------------------------------------------------------------------
def create_help_window_shop
@help_window = Window_Help.new
@help_window.y = Graphics.height - @help_window.height
@help_window.viewport = @viewport
end
end
#=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
#==============================================================================
# ** Window_ShopBuy
#------------------------------------------------------------------------------
# Cette fenêtre affiche la liste des objets "achetable"
#==============================================================================
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# * Dessine les objets
#--------------------------------------------------------------------------
def draw_item(index)
# définition de la variable item
item = @data[index]
# définition de rect
rect = item_rect(index)
# écrit le nom de l'objet
draw_item_name(item, rect.x, rect.y, enable?(item))
rect.width -= 4
# détermine la quantité d'or
gold = @price[item]/10000
# détermine la quantité d'argent
silver = (@price[item]-(10000*gold.to_i))/100
# détermine la quantité de cuivre
copper = @price[item] - 10000*gold.to_i - 100*silver.to_i
# La partie suivante gère les différents cas de figure
# et place les icones et le texte en fonction :
# uniquement du cuivre
if copper != 0 and silver == 0 and gold == 0
draw_coin(rect,20,copper,2,enable?(item))
end
# uniquement de l'argent
if copper == 0 and silver != 0 and gold == 0
draw_coin(rect,20,silver,1,enable?(item))
end
# uniquement de l'or
if copper == 0 and silver == 0 and gold != 0
draw_coin(rect,20,gold,0,enable?(item))
end
# du cuivre et de l'argent
if copper != 0 and silver != 0 and gold == 0
draw_coin(rect,20,copper,2,enable?(item))
draw_coin(rect,65,silver,1,enable?(item))
end
# du cuivre et de l'or
if copper != 0 and silver == 0 and gold != 0
draw_coin(rect,20,copper,2,enable?(item))
draw_coin(rect,65,gold,0,enable?(item))
end
# de l'or et de l'argent
if copper == 0 and silver != 0 and gold != 0
draw_coin(rect,20,silver,1,enable?(item))
draw_coin(rect,65,gold,0,enable?(item))
end
# les trois
if copper != 0 and silver != 0 and gold != 0
draw_coin(rect,20,copper,2,enable?(item))
draw_coin(rect,65,silver,1,enable?(item))
draw_coin(rect,110,gold,0,enable?(item))
end
end
#--------------------------------------------------------------------------
# * dessine les icones et le texte
#--------------------------------------------------------------------------
def draw_coin(rect,x1,type,i,enabled)
# dessine le texte
draw_text(rect.x-x1+3, rect.y, rect.width, rect.height, type, 2)
# dessine l'icone
draw_icon(125+i, rect.width-x1, rect.y, enabled)
end
end
Ah !!! Misérable j'ai failli oublier le bonus ! ^^ lorsque vous vendez un objet au magasin, ce dernier le garde en stock et peut vous le revendre à tout moment ! ( bien entendu plus cher que vous ne l'avez vendu, mais ça ce sont les règles de la finance je n'y peu pas grand chose !!)
Bonne fin de Week-en à tous
- Elisa'Staffeux retraité
- Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' ]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]
Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009
Re: Changement de système monétaire
Lun 25 Fév 2013 - 18:15
Sympa ce script, +5 points de participation
Re: Changement de système monétaire
Lun 14 Oct 2013 - 11:54
Bonjour,
J'espère ne pas faire de nécropost en posant des questions à propos de ce script.
Est-il possible donc de switcher entre les différentes monnaies du jeu, de manière à en disposer de plusieurs, mettons 1 monnaie par peuple.
Si oui, est-ce que la valeur du cuivre, par exemple peut-être infériorisée par rapport à celle de l'or, on disposerait alors d'or valant 10 cuivres l'unité.
Toujours dans cette optique, peut-on effectuer un "cours de change", afin de transformer son or en argent ou inversement ?
Merci d'avance
J'espère ne pas faire de nécropost en posant des questions à propos de ce script.
Est-il possible donc de switcher entre les différentes monnaies du jeu, de manière à en disposer de plusieurs, mettons 1 monnaie par peuple.
Si oui, est-ce que la valeur du cuivre, par exemple peut-être infériorisée par rapport à celle de l'or, on disposerait alors d'or valant 10 cuivres l'unité.
Toujours dans cette optique, peut-on effectuer un "cours de change", afin de transformer son or en argent ou inversement ?
Merci d'avance
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum