Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

multiple currencies script question

Kaoii

Member

I want to apologize first if this is in the wrong section, I really wasnt sure whether this belonged in this section or script requests, because I dont know whether it will require another script or what =p

This is SandGolem's multiple currencies script that I am using in my game:

Code:
#=============================================================================
# ** SG Multiple Currencies
#=============================================================================
# sandgolem    
# Version 3
# 18.06.06
#=============================================================================

# This requires event scripting to switch, see below.
# The only script-related things to edit is this:

$sg_currencies = { 'names' => ['Temp','W','R','D'], 
                   'icons' => ['','nec5','coin','jwl1'], 
                   'type' => [7,0,0,0],
                   'variables' => [7,2,3,4] }
                   
# These need to be ordered exactly the same. You can increase the amount of
# currencies by adding more to the end of each. 

# Temp is used for special occasions. See the tutorials section here for some
# odd ways of using it:   http://www.gamebaker.com/rmxp/tutorials/

# Set the G to what you have your gold name as in the database.

# Icons, type & vars are picked based on the order that you have your names set 
# to. Make sure you name the variables in RMXP so you won't reuse them.

# 'type' uses SG Window Control to set the window format.
# See the comments in that script for what options are available.

#=============================================================================

# To change the player's currency, use this in a call script:
#         sg_change_currency('NameHere')

# This changes your current currency and modifies the amount of gold you have
# to whatever it is set at. The amount of gold you had before is set to the
# variable listed for it. This can be used anywhere, even in other scripts

# The variable used for your current gold is NOT altered until you change the
# currency. To do checks for that amount ingame, just use the regular gold.

# Or, you can save it by using this in a script: sg_save_currency
# This command is included in sg_change_currency and generally not useful

#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# under the default scripts and SDK (optional).
#
# Requires SG Settings Control & SG Window Control, found at above site
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================

#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
begin
  SDK.log("SG Multiple Currencies", "sandgolem", 3, "18.06.06")
  if SDK.state("SG Multiple Currencies") != true
    @sg_multiple_currencies_disabled = true
  end
  rescue
end

#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if !@sg_multiple_currencies_disabled
 
class SG_Start
  alias sandgolem_currencies_sgstart_start start_game  
  def start_game
    if !$sg_defaultcurrency
      $sg_defaultcurrency = $data_system.words.gold.clone
    else
      $data_system.words.gold = $sg_defaultcurrency.clone
    end
    sandgolem_currencies_sgstart_start
  end
end

class Scene_Load
  alias sandgolem_currencies_load_read read_save_data
  def read_save_data(file)
    sandgolem_currencies_load_read(file)
    if $game_sg['currency current']
      $data_system.words.gold = $game_sg['currency current'].clone
    end
  end
end

class Window_Gold < Window_Base
  
  alias sg_currencies_gold_initialize initialize
  def initialize
    @old_gold = -1
    sg_currencies_gold_initialize
  end

  def refresh
#------------------------------------------------------------------------------
# Begin SG Multiple Currencies Edit
#------------------------------------------------------------------------------
    if @old_gold != $game_party.gold
      self.contents.clear
      @old_gold = $game_party.gold
      self.contents.font.color = normal_color
      sg_select_currency
      sg_draw_window($sg_currencies['type'][@sg_mc_temp],160,$sg_currencies['icons'][@sg_mc_temp],$data_system.words.gold,$game_party.gold.to_s)
    end
#------------------------------------------------------------------------------
# End SG Multiple Currencies Edit
#------------------------------------------------------------------------------
  end

  def sg_select_currency
    for i in 0...$sg_currencies.size
      if $data_system.words.gold == $sg_currencies['names'][i]
        @sg_mc_temp = i
        return
      end
    end
    @sg_mc_temp = 1
    return
  end
end

def sg_save_currency
  for i in 0...$sg_currencies.size
    if $data_system.words.gold == $sg_currencies['names'][i]
      $game_variables[$sg_currencies['variables'][i]] = $game_party.gold
      return
    end
  end
  p 'You have an invalid currency name! Contact game creator: ' + $data_systems.words.gold.to_s
  @sg_mc_currency_stop = true
  return
end

def sg_change_currency(curnew)
  sg_save_currency
  if curnew == 'curold'
    if $game_sg['currency old']
      curnew = $game_sg['currency old']
    else
      p 'No old currency saved. Contact game creator.'
    end
  end
  if @sg_mc_currency_stop == true
    return
  end
  $game_sg['currency old'] = $data_system.words.gold.clone
  sg_mc_temp = 0
  for i in 0...$sg_currencies.size
    if curnew == $sg_currencies['names'][i]
      $game_party.lose_gold($game_party.gold)
      $game_party.gain_gold($game_variables[$sg_currencies['variables'][i]])
      $data_system.words.gold = curnew
      $game_sg['currency current'] = curnew
      return
    end
  end
  p 'Invalid currency name in command! Contact game creator: ' + cur_new.to_s
  return
end

#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end

I sent an e-mail to SandGolem, but I have yet to recieve a response.

Here's what I want to do. I have two currencies in my world - Wampum and Rupees (which are defined by 'W' and 'R' near the top). I want to make it to where lets say 2 Wampum = 1 Rupee and you can do currency conversions between the two by talking to an NPC. Is this possible without another script? If it is, how do I do it?
 
I sent an e-mail to SandGolem, but I have yet to recieve a response.
Sorry, I'll just reply here to save anyone else the trouble of figuring out how it works :)

I want to make it to where lets say 2 Wampum = 1 Rupee and you can do currency conversions between the two by talking to an NPC
All currencies are saved in variables, you could do that pretty easily with control variables & input number command.

If the player is currently using one of those currencies (if not, ignore this para): First use "sg_save_currency" in an event script before the trade talk. Then after the transaction is complete, use control variables to set a temp var to all their gold. Use change gold, and set it to remove all of your new variable. Then use change gold again and increase it by the current currency's variable.

I have an updated version of that script to automate the 2nd part but I'm not sure if I posted it yet. Test it before using, I may have forgotten how it works.

Note to self: Finish those tutorials when Emerald is done :)
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top