Dynamic Currencies é um script que foi concebido por SephirothSpawn para simular várias moedas e taxas de câmbios opcionais, em um jogo do RPG Maker XP. Com ele, você pode selecionar os valores monetários iniciais, bem como modificar seus valores durante o jogo.
A apresentação deste script parece mais um texto de Economia heheheh!
Você tem a opção de usar moedas “Dynamic”, onde o seu grupo vai carregar mais de uma moeda, ou uma a forma não-dinâmica, onde o registro de apenas uma moeda será realizada em um tempo. Nesta forma, quando a moeda é trocada, sua antiga moeda será automaticamente convertida para a nova moeda, baseada na taxa de câmbio atual.
Também tem a opção deixar o script afetando apenas os drops de gold dos monstros, bem como preços das lojas, onde o preço normal é multiplicado pelo valor da moeda. Isto pode ser útil para prevenir que o jogador ir para a batalha em uma zona de alto valor, a fim de abusar nos drops e ao comprar e vender itens.
Lower Value significa que a moeda vale menos. Um valor de 0,5 significaria que a cada 2 de alguma moeda específica vale 1 da moeda básica.
Indo de N da moeda A com valor X para a moeda B com valor Y:
currency_b = (value_x / 1.0) / (value_y / 1.0) * N
Você precisa do SDK para usar este script. Coloque o código do Dynamic Currencies abaixo dele e acima do “Main”.
Para personalize suas moedas, consulte as instruções de personalização nos comentários do script. Consulte a lista de sintaxe para mais instruções.
#============================================================================== # ** Dynamic Currencies #------------------------------------------------------------------------------ # SephirothSpawn # Version 1 # 2006-09-10 #------------------------------------------------------------------------------ # * Description : # # This script was designed to simulate multiple currencies and optional # exchange rates. You may select starting currency values as well as modify # their values during game play. You have the option to use "Dynamic" # currencies, where your party will carry more than one currency, or a # non-dynamic form, where the record of only one currency will be held at a # time. In this form, when currency is exchanged, your old currency will # automatically be converted to the new currency with their current exchange # rates. # # You also have the option of affect monster gold drops, as well as # shop prices, where the normal price is multipled by the currency value. # This prevents people to battle in a high valued zone in order to abuse # monster drops, as well as buying and selling to gain gold. # # ** How the "Value" Works. ** # # Lower Value means that the currency is worth less. A value of 0.5 would # mean that every 2 of that specific currency is 1 of the basic currency. # # ** Formula For Conversions: # # Going From N Currency A with Value X to Currency B with Value Y # # currency_b = (value_x / 1.0) / (value_y / 1.0) * N #------------------------------------------------------------------------------ # * Instructions : # # Place The Script Below the SDK and Above Main. # To Customize your currencies, refer to the customization instructions. # Refer to syntax listing for further instructions. #------------------------------------------------------------------------------ # * Customization : # # Setting Currency Starting Values (0 as currency name for default gold) # - Exchange_Rates = {'currency_name' => value, ...} # # Setting Dynamic Currency Flag (See Description) # - Dynamic = ture (DYNAMIC) or false (NON-DYNAMIC) # # Affect Monster Drops # - Affect_Monster_Drops = true (ON) or false (OFF) # # Affect Shop Values # - Affect_Shop_Values = true (ON) or false (OFF) #------------------------------------------------------------------------------ # * Syntax : # # Reading or Modifing Currency Values # - $game_currencies.exchange_rates['currency_name'] # # Switching Current Currency # - $game_currencies.switch_currency('currency_name') # # Reading Currency Exchange Rate (NOT VALUE) # - $game_currencies.exchange_rate('currency_name') # # Retrieving Current Currency Name # - $game_currencies.currency_name # # Retrieving Number of Certain Currency Saved (Dynamic Use Only) # - $game_party.currency_number('currency_name') # # Exchanging From Currency A to B (Dynamic Use Only) # - $game_party.exchange_currency('currency_a', 'currency_b', amount) # # * At any time, 0 as a 'currency_name' will reflect the default RMXP gold. #============================================================================== #------------------------------------------------------------------------------ # * SDK Log Script #------------------------------------------------------------------------------ SDK.log('Dynamic Currencies', 'SephirothSpawn', 1, '2006-09-10') #------------------------------------------------------------------------------ # * Begin SDK Enable Test #------------------------------------------------------------------------------ if SDK.state('Dynamic Currencies') #============================================================================== # ** Dynamic_Currencies #============================================================================== module Dynamic_Currencies #-------------------------------------------------------------------------- # * Exchange Rates # # ~ Exchange_Rates = { currency_name => value , ...} # # ** Formula For Conversions: # # Going From N Currency A with Value X to Currency B with Value Y # # (value_x / 1.0) / (value_y / 1.0) * N # # ** Lower the value use more money, Higher value use less money. # ** These are only starting values, as you can change them mid-game #-------------------------------------------------------------------------- Exchange_Rates = { 0 => 1.0, 'Dyn Cur A' => 1.4, 'Dyn Cur B' => 0.75, 'Dyn Cur C' => 0.50 } #-------------------------------------------------------------------------- # * Dynamic # # ~ When True # When you switch from currency a to b, a is saved and all b currency # is pulled from the memory. This allows the actors to hold more than # one type of currency at a time. # # ~ When False # When you switch from currency a to b all a will be turned to b, # leaving no record for the a amount. #-------------------------------------------------------------------------- Dynamic = false #-------------------------------------------------------------------------- # * Affect Monster Drops # # ~ When True # Monsters gold drops will be multipled by the current currency value # # ~ When False # Monsters gold dropws will remain unaffected #-------------------------------------------------------------------------- Affect_Monster_Drops = true #-------------------------------------------------------------------------- # * Affect Shop Values # # ~ When True # Shop prices will bemultipled by the current currency value # # ~ When False # Shop prices will remain unaffected #-------------------------------------------------------------------------- Affect_Shop_Values = true end #============================================================================== # ** Game_Currencies #============================================================================== class Game_Currencies #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :current_currency attr_accessor :exchange_rates #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize # Sets Starting Exchange Rates @exchange_rates = Dynamic_Currencies::Exchange_Rates.dup # Sets Current Currency Flag @current_currency = 0 end #-------------------------------------------------------------------------- # * Switch Currency #-------------------------------------------------------------------------- def switch_currency(currency_name) # Stop if same currency return if @current_currency == currency_name # Switch Currency In Party $game_party.switch_currency(currency_name) # Switch Current Currency Flag @current_currency = currency_name # Switch Currency Name $data_system.words.gold = currency_name end #-------------------------------------------------------------------------- # * Exchange Rate #-------------------------------------------------------------------------- def exchange_rate(currency_name = @current_currency) # Sets Default Currency Value if not specified unless @exchange_rates.has_key?(currency_name) @exchange_rates[currency_name] = 1.0 end # Return Currency Value return @exchange_rates[currency_name] / 1.0 end #-------------------------------------------------------------------------- # * Currency Name #-------------------------------------------------------------------------- def currency_name if @current_currency == 0 return load_data("Data/System.rxdata").words.gold end return @current_currency end end #============================================================================== # ** Game_Party #============================================================================== class Game_Party #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_dyncur_gmprty_init initialize #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize # Original Initialization seph_dyncur_gmprty_init # Saves Currency Counter (Used For Dynamic Currencies) @dynamic_currencies = {} end #-------------------------------------------------------------------------- # * Currency Number #-------------------------------------------------------------------------- def currency_number(currency = 0) # If Current Currency return @gold if currency == @current_currency # Sets Currency to 0 if none saved unless @dynamic_currencies.has_key?(currency) @dynamic_currencies[currency] = 0 end # Returns Currency Value return @dynamic_currencies[currency] end #-------------------------------------------------------------------------- # * Switch Currency #-------------------------------------------------------------------------- def switch_currency(new_currency = 0) # If Dynamic Currencies if Dynamic_Currencies::Dynamic # Saves Current Currency if @dynamic_currencies.has_key?($game_currencies.current_currency) @dynamic_currencies[$game_currencies.current_currency] += @gold else @dynamic_currencies[$game_currencies.current_currency] = @gold end # Switches to New Currency @gold = currency_number(new_currency) # If Non-Dynamic Currencies else # Collect Current Currency Exchage Rate c_rate = $game_currencies.exchange_rate n_rate = $game_currencies.exchange_rate(new_currency) # Switch Gold @gold = Integer(@gold * c_rate / n_rate) end end #-------------------------------------------------------------------------- # * Exchange Currency #-------------------------------------------------------------------------- def exchange_currency(currency_a, currency_b, amount = nil) # Returning If Same Currency Or Non-Dynamic Currencies return if currency_a == currency_b || !Dynamic_Currencies::Dynamic # If Amount is Nil (ALL) if amount.nil? # Get All Currency A Value amount = currency_number(currency_a) end # Return if amount of currency a is 0 return if amount == 0 # Cap Amount if greater than amount saved amount = [amount, currency_number(currency_a)].min # Collects Exchange Rates a_rate = $game_currencies.exchange_rate(currency_a) b_rate = $game_currencies.exchange_rate(currency_b) # Start Currency B Counter if none exist unless @dynamic_currencies.has_key?(currency_b) @dynamic_currencies[currency_b] = 0 end # Subtracts Currency A Amount @dynamic_currencies[currency_a] -= amount # Increased Currency B Amount @dynamic_currencies[currency_b] += (amount * a_rate / b_rate) # If Either Currency is Active Currency, effect current gold count if currency_a == @current_currency @gold -= amount elsif currency_b == @current_currency @gold += (amount * a_rate / b_rate) end end end #============================================================================== # ** Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # * Get Gold #-------------------------------------------------------------------------- alias seph_dyncur_gmeny_gold gold def gold # Collect Original Gold Value n = seph_dyncur_gmeny_gold # If Dynamic Enemy Gold Drops if Dynamic_Currencies::Affect_Monster_Drops # Calulate Currency Drop n = Integer(n * $game_currencies.exchange_rate) end # Return Gold Drop return n end end #============================================================================== # ** RPG::Item #============================================================================== class RPG::Item #-------------------------------------------------------------------------- # * Price #-------------------------------------------------------------------------- if @seph_dyncur_price.nil? alias seph_dyncur_rpgi_price price @seph_dyncur_price = true end def price # Collect Original Price n = seph_dyncur_rpgi_price return n if $game_currencies.nil? # If Dynamic Shop Prices if Dynamic_Currencies::Affect_Shop_Values # Calulate Shop Price n = Integer(n * $game_currencies.exchange_rate) end # Return Shop Price return n end end #============================================================================== # ** RPG::Weapon #============================================================================== class RPG::Weapon #-------------------------------------------------------------------------- # * Price #-------------------------------------------------------------------------- alias seph_dyncur_rpgw_price price def price # Collect Original Price n = seph_dyncur_rpgw_price return n if $game_currencies.nil? # If Dynamic Shop Prices if Dynamic_Currencies::Affect_Shop_Values # Calulate Shop Price n = Integer(n * $game_currencies.exchange_rate) end # Return Shop Price return n end end #============================================================================== # ** RPG::Armor #============================================================================== class RPG::Armor #-------------------------------------------------------------------------- # * Price #-------------------------------------------------------------------------- alias seph_dyncur_rpga_price price def price # Collect Original Price n = seph_dyncur_rpga_price return n if $game_currencies.nil? # If Dynamic Shop Prices if Dynamic_Currencies::Affect_Shop_Values # Calulate Shop Price n = Integer(n * $game_currencies.exchange_rate) end # Return Shop Price return n end end #============================================================================== # ** Scene_Title #============================================================================== class Scene_Title #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_dyncur_scnttl_cng command_new_game #-------------------------------------------------------------------------- # * Command : New Game #-------------------------------------------------------------------------- def command_new_game # Original Command New Game seph_dyncur_scnttl_cng # Creates Game Currencies Game Data $game_currencies = Game_Currencies.new end end #============================================================================== # ** Scene_Save #============================================================================== class Scene_Save #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_gmlngs_scnsave_wd write_data #-------------------------------------------------------------------------- # * Command : New Game #-------------------------------------------------------------------------- def write_data(file) # Original Write Data seph_gmlngs_scnsave_wd(file) # Saves Game Currencies Data Marshal.dump($game_currencies, file) end end #============================================================================== # ** Scene_Load #============================================================================== class Scene_Load #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_dyncur_scnload_rd read_data #-------------------------------------------------------------------------- # * Command : New Game #-------------------------------------------------------------------------- def read_data(file) # Original Write Data seph_dyncur_scnload_rd(file) # Loads Game Currencies Data $game_currencies = Marshal.load(file) # Switches Gold Name $data_system.words.gold = $game_currencies.currency_name end end #-------------------------------------------------------------------------- # * End SDK Enable Test #-------------------------------------------------------------------------- end
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!