Main Menu
  • Welcome to The RPG Maker Resource Kit.

[RMXP] New Shop Interface

Started by Leon_Westbrooke, January 24, 2008, 09:47:32 PM

0 Members and 1 Guest are viewing this topic.

Leon_Westbrooke

New Shop Interface by Leon_Westbrooke
Version: 1.1
Type: Shopping System

Introduction
This script is for all of those who want a new way of looking at the shopping menu.

Features


  • Replaces the old shop system.
Screenshots
[spoiler=screenshots]
[/spoiler]

Script
Place the script below all defaults, but above main:
[spoiler=Leon's Shopping System Script]#===============================================================================
#  Leon's Shopping System
#-------------------------------------------------------------------------------
#  3/10/2007
#  v. 1.0
#-------------------------------------------------------------------------------
#  Instructions:
# Place above main, and below the other default scripts.
#   (Yes, that is all of the instructions)
#
#  Features:
# Replaces the default shop system.
#
#===============================================================================


#===============================================================================
#  Window_Shop_Info
#===============================================================================
class Window_Shop_Info < Window_Base
  def initialize
super(160, 0, 480, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
  end
 
  def refresh(selection = 0)
self.contents.clear
if selection == 0
  self.contents.draw_text(0, 0, 448, 32, "Buy, sell, or leave?", 1)
else
  self.contents.draw_text(0, 0, 448, 32, "Press 'Z' for character compatabilitiy.", 1)
end
  end
end
#===============================================================================
#  END Window_Shop_Info
#===============================================================================


#===============================================================================
#  Window_Shop_Option
#===============================================================================
class Window_Shop_Option < Window_Selectable
  def initialize
super(0, 0, 160, 128)
@option = ["Buy", "Sell", "Leave"]
@item_max = @option.size
self.contents = Bitmap.new(width - 32, height - 32)
self.index = 0
self.active = true
refresh
  end
 
  def refresh
self.contents.clear
for i in 0...@option.size
  y = i * 32
  self.contents.draw_text(0, y, 128, 32, @option[i], 1)
end
  end
end
#===============================================================================
#  END Window_Shop_Option
#===============================================================================


#===============================================================================
#  Window_Shop_Gold
#===============================================================================
class Window_Shop_Gold < Window_Base
  def initialize
super(0, 128, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
  end
 
  def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 60, 32, $data_system.words.gold + ":")
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, 128, 32, $game_party.gold.to_s, 2)
  end
end
#===============================================================================
#  END Window_Shop_Gold
#===============================================================================


#===============================================================================
#  Window_Shop_Own
#===============================================================================
class Window_Shop_Own < Window_Base
  def initialize
super(0, 192, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
item = nil
refresh(item)
  end
 
  def refresh(item)
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 48, 32, "Own:")
if item == nil
  return
end
self.contents.font.color = normal_color
case item
when RPG::Item
  number = $game_party.item_number(item.id)
when RPG::Weapon
  number = $game_party.weapon_number(item.id)
when RPG::Armor
  number = $game_party.armor_number(item.id)
end
self.contents.draw_text(0, 0, 128, 32, number.to_s, 2)
  end
end
#===============================================================================
#  END Window_Shop_Own
#===============================================================================


#===============================================================================
#  Window_Shop_List
#===============================================================================
class Window_Shop_List < Window_Selectable
  def initialize(shop_goods)
super(160, 64, 480, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.active = false
self.index = 0
self.visible = false
@shop_goods = shop_goods
@sell = false
  end
 
  def item
if @data != nil
  return @data[index]
end
  end
 
  def refresh
@sell = false
@option_index = nil
if self.contents != nil
  self.contents.dispose
  self.contents = nil
end
@data = []
for goods_item in @shop_goods
  case goods_item[0]
  when 0
item = $data_items[goods_item[1]]
  when 1
item = $data_weapons[goods_item[1]]
  when 2
item = $data_armors[goods_item[1]]
  end
  if item != nil
@data.push(item)
  end
end
@item_max = @data.size
if @item_max > 0
  self.contents = Bitmap.new(width - 32, row_max * 32)
  for i in 0...@item_max
draw_item(i)
  end
end
  end
 
  def refresh_sell(option_index)
@sell = true
@option_index = option_index
if self.contents != nil
  self.contents.dispose
  self.contents = nil
end
@data = []
for i in 1...$data_items.size
  if $game_party.item_number(i) > 0
@data.push($data_items[i])
  end
end
for i in 1...$data_weapons.size
  if $game_party.weapon_number(i) > 0
@data.push($data_weapons[i])
  end
end
for i in 1...$data_armors.size
  if $game_party.armor_number(i) > 0
@data.push($data_armors[i])
  end
end
@item_max = @data.size
if @item_max > 0
  self.contents = Bitmap.new(width - 32, row_max * 32)
  for i in 0...@item_max
draw_item(i)
  end
end
  end
 
  def draw_item(index)
item = @data[index]
case item
when RPG::Item
  number = $game_party.item_number(item.id)
when RPG::Weapon
  number = $game_party.weapon_number(item.id)
when RPG::Armor
  number = $game_party.armor_number(item.id)
end
if @option_index == nil
  if item.price <= $game_party.gold and number < 99
self.contents.font.color = normal_color
  else
self.contents.font.color = disabled_color
  end
else
  self.contents.font.color = normal_color
end
x = 4
y = index * 32
if item.price == 0
  self.contents.font.color = disabled_color
else
  self.contents.font.color = normal_color
end
if @sell == false
  if item.price <= $game_party.gold and number < 99
self.contents.font.color = normal_color
  else
self.contents.font.color = disabled_color
  end
end
rect = Rect.new(x, y, self.width - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
if @option_index == nil
  self.contents.draw_text(x + 350, y, 88, 32, item.price.to_s, 2)
else
  item_price = (item.price / 2).round
  self.contents.draw_text(x + 350, y, 88, 32, item_price.to_s, 2)
end
  end
end
#===============================================================================
#  END Window_Shop_List
#===============================================================================


#===============================================================================
#  Window_Shop_Description_Item
#===============================================================================
class Window_Shop_Description_Item < Window_Base
  def initialize
super(90, 256, 460, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
item = nil
refresh(item)
  end
 
  def refresh(item)
self.contents.clear
if item == nil
  return
end
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(28, 0, 120, 32, item.name)
self.contents.draw_text(0, 32, 428, 32, item.description)
self.contents.font.color = system_color
self.contents.draw_text(0, 64, 120, 32, "Range:")
self.contents.draw_text(0, 96, 140, 32, "% HP Recovered:")
self.contents.draw_text(0, 128, 140, 32, "% SP Recovered:")
self.contents.draw_text(230, 96, 120, 32, "HP Recovered:")
self.contents.draw_text(230, 128, 120, 32, "SP Recovered:")
self.contents.font.color = normal_color
self.contents.draw_text(150, 96, 90, 32, item.recover_hp_rate.to_s)
self.contents.draw_text(150, 128, 90, 32, item.recover_sp_rate.to_s)
self.contents.draw_text(360, 96, 90, 32, item.recover_hp.to_s)
self.contents.draw_text(360, 128, 90, 32, item.recover_sp.to_s)
case item.scope
when 0
  self.contents.draw_text(70, 64, 120, 32, "None")
when 1
  self.contents.draw_text(70, 64, 120, 32, "One Enemy")
when 2
  self.contents.draw_text(70, 64, 120, 32, "All Enemies")
when 3
  self.contents.draw_text(70, 64, 120, 32, "One Ally")
when 4
  self.contents.draw_text(70, 64, 120, 32, "All Allies")
when 5
  self.contents.draw_text(70, 64, 120, 32, "One Dead Ally")
when 6
  self.contents.draw_text(70, 64, 120, 32, "All Dead Allies")
when 7
  self.contents.draw_text(70, 64, 120, 32, "User")
end
  end
end
#===============================================================================
#  END Window_Shop_Description_Item
#===============================================================================


#===============================================================================
#  Window_Shop_Description_Equipment
#===============================================================================
class Window_Shop_Description_Equipment < Window_Base
  def initialize
super(0, 256, 640, 224)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
item = nil
refresh(item)
  end
 
  def refresh(item)
self.contents.clear
if item == nil
  return
end
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(28, 0, 120, 32, item.name)
self.contents.draw_text(0, 32, 460, 32, item.description)
self.contents.font.color = system_color
if item.is_a?(RPG::Weapon)
  self.contents.draw_text(0, 64, 75, 32, "Attack:")
  self.contents.draw_text(0, 96, 120, 32, "Phys. Def:")
  self.contents.draw_text(0, 128, 120, 32, "Mag. Def:")
  self.contents.draw_text(165, 64, 120, 32, "Str:")
  self.contents.draw_text(165, 96, 120, 32, "Dex:")
  self.contents.draw_text(165, 128, 120, 32, "Agi:")
  self.contents.draw_text(165, 160, 120, 32, "Int:")
  self.contents.draw_text(290, 64, 120, 32, "Elements:")
  self.contents.draw_text(470, 64, 120, 32, "Inflicts:")
else
  self.contents.draw_text(0, 64, 120, 32, "Phys. Def:")
  self.contents.draw_text(0, 96, 120, 32, "Mag. Def:")
  self.contents.draw_text(0, 128, 120, 32, "Evade:")
  self.contents.draw_text(0, 160, 120, 32, "Auto:")
  self.contents.draw_text(165, 64, 120, 32, "Str:")
  self.contents.draw_text(165, 96, 120, 32, "Dex:")
  self.contents.draw_text(165, 128, 120, 32, "Agi:")
  self.contents.draw_text(165, 160, 120, 32, "Int:")
  self.contents.draw_text(370, 64, 120, 32, "Guards Against:")
end
self.contents.font.color = normal_color
if item.is_a?(RPG::Weapon)
  self.contents.draw_text(60, 64, 75, 32, item.atk.to_s)
  self.contents.draw_text(90, 96, 75, 32, item.pdef.to_s)
  self.contents.draw_text(90, 128, 75, 32, item.mdef.to_s)
  self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2)
  self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2)
  self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2)
  self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2)
  self.contents.font.size = 14
  for i in 0...item.element_set.size
x = 265 + i % 2 * 75
y = 80 + i / 2 * 14
self.contents.draw_text(x, y, 120, 32, $data_system.elements[item.element_set[i]])
  end
  for i in 0...item.plus_state_set.size
x = 445 + i % 2 * 75
y = 80 + i / 2 * 14
self.contents.draw_text(x, y, 120, 32, $data_states[item.plus_state_set[i]].name)
  end
else
  self.contents.draw_text(90, 64, 75, 32, item.pdef.to_s)
  self.contents.draw_text(90, 96, 75, 32, item.mdef.to_s)
  self.contents.draw_text(60, 128, 75, 32, item.eva.to_s)
  if $data_states[item.auto_state_id] != nil
self.contents.draw_text(55, 160, 75, 32, $data_states[item.auto_state_id].name)
  end
  self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2)
  self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2)
  self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2)
  self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2)
  self.contents.font.size = 14
  @defense = []
  for i in 0...item.guard_element_set.size
@defense.push($data_system.elements[item.guard_element_set[i]])
  end
  for i in 0...item.guard_state_set.size
@defense.push($data_states[item.guard_state_set[i]].name)
  end
  for i in 0...@defense.size
x = 265 + i % 4 * 80
y = 80 + i / 4 * 14
self.contents.draw_text(x + 15, y, 85, 32, @defense[i])
  end
end
self.contents.font.size = 22
  end
end
#===============================================================================
#  END Window_Shop_Description_Equipment
#===============================================================================


#===============================================================================
#  Window_Shop_Actors
#===============================================================================
class Window_Shop_Actors < Window_Base
  def initialize
super(84, 32, 472, 416)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.active = false
self.z += 100
item = nil
refresh(item)
  end
 
  def refresh(item)
self.contents.clear
if item == nil
  return
end
for i in 0...$game_party.actors.size
  x = i%2 * 236
  y = i/2 * 192
  draw_actor_graphic($game_party.actors[i], x + 16, y + 48)
  draw_actor_name($game_party.actors[i], x + 48, y + 8)
  pdef1 = item.pdef
  mdef1 = item.mdef
  str1 = item.str_plus
  dex1 = item.dex_plus
  agi1 = item.agi_plus
  int1 = item.int_plus
  atk2 = 0
  eva2 = 0
  pdef2 = 0
  mdef2 = 0
  str2 = 0
  dex2 = 0
  agi2 = 0
  int2 = 0
  if item.is_a?(RPG::Weapon)
if $data_weapons[$game_party.actors[i].weapon_id] != nil
  atk1 = item.atk
  atk2 = $data_weapons[$game_party.actors[i].weapon_id].atk
  pdef2 = $data_weapons[$game_party.actors[i].weapon_id].pdef
  mdef2 = $data_weapons[$game_party.actors[i].weapon_id].mdef
  str2 = $data_weapons[$game_party.actors[i].weapon_id].str_plus
  dex2 = $data_weapons[$game_party.actors[i].weapon_id].dex_plus
  agi2 = $data_weapons[$game_party.actors[i].weapon_id].agi_plus
  int2 = $data_weapons[$game_party.actors[i].weapon_id].int_plus
end
  else
eva1 = item.eva
case item.kind
when 0
if $data_armors[$game_party.actors[i].armor1_id] != nil
  eva2 = $data_armors[$game_party.actors[i].armor1_id].eva
  pdef2 = $data_armors[$game_party.actors[i].armor1_id].pdef
  mdef2 = $data_armors[$game_party.actors[i].armor1_id].mdef
  str2 = $data_armors[$game_party.actors[i].armor1_id].str_plus
  dex2 = $data_armors[$game_party.actors[i].armor1_id].dex_plus
  agi2 = $data_armors[$game_party.actors[i].armor1_id].agi_plus
  int2 = $data_armors[$game_party.actors[i].armor1_id].int_plus
end
when 1
if $data_armors[$game_party.actors[i].armor2_id] != nil
  eva2 = $data_armors[$game_party.actors[i].armor2_id].eva
  pdef2 = $data_armors[$game_party.actors[i].armor2_id].pdef
  mdef2 = $data_armors[$game_party.actors[i].armor2_id].mdef
  str2 = $data_armors[$game_party.actors[i].armor2_id].str_plus
  dex2 = $data_armors[$game_party.actors[i].armor2_id].dex_plus
  agi2 = $data_armors[$game_party.actors[i].armor2_id].agi_plus
  int2 = $data_armors[$game_party.actors[i].armor2_id].int_plus
end
when 2
if $data_armors[$game_party.actors[i].armor3_id] != nil
  eva2 = $data_armors[$game_party.actors[i].armor3_id].eva
  pdef2 = $data_armors[$game_party.actors[i].armor3_id].pdef
  mdef2 = $data_armors[$game_party.actors[i].armor3_id].mdef
  str2 = $data_armors[$game_party.actors[i].armor3_id].str_plus
  dex2 = $data_armors[$game_party.actors[i].armor3_id].dex_plus
  agi2 = $data_armors[$game_party.actors[i].armor3_id].agi_plus
  int2 = $data_armors[$game_party.actors[i].armor3_id].int_plus
end
when 3
if $data_armors[$game_party.actors[i].armor4_id] != nil
  eva2 = $data_armors[$game_party.actors[i].armor4_id].eva
  pdef2 = $data_armors[$game_party.actors[i].armor4_id].pdef
  mdef2 = $data_armors[$game_party.actors[i].armor4_id].mdef
  str2 = $data_armors[$game_party.actors[i].armor4_id].str_plus
  dex2 = $data_armors[$game_party.actors[i].armor4_id].dex_plus
  agi2 = $data_armors[$game_party.actors[i].armor4_id].agi_plus
  int2 = $data_armors[$game_party.actors[i].armor4_id].int_plus
end
end
  end
  color1 = Color.new(25, 210, 25, 255)
  color2 = Color.new(210, 25, 25, 255)
  if $game_party.actors[i].equippable?(item)
self.contents.font.color = normal_color
# PDEF
if (pdef1 - pdef2) > 0
  self.contents.font.color = color1
elsif (pdef1 - pdef2) < 0
  self.contents.font.color = color2
else
  self.contents.font.color = normal_color
end
self.contents.draw_text(x + 25, y + 80, 70, 32, (pdef1 - pdef2).to_s, 2)
# MDEF
if (mdef1 - mdef2) > 0
  self.contents.font.color = color1
elsif (mdef1 - mdef2) < 0
  self.contents.font.color = color2
else
  self.contents.font.color = normal_color
end
self.contents.draw_text(x + 25, y + 112, 70, 32, (mdef1 - mdef2).to_s, 2)
# STR
if (str1 - str2) > 0
  self.contents.font.color = color1
elsif (str1 - str2) < 0
  self.contents.font.color = color2
else
  self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 48, 70, 32, (str1 - str2).to_s, 2)
# DEX
if (dex1 - dex2) > 0
  self.contents.font.color = color1
elsif (dex1 - dex2) < 0
  self.contents.font.color = color2
else
  self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 80, 70, 32, (dex1 - dex2).to_s, 2)
# AGI
if (agi1 - agi2) > 0
  self.contents.font.color = color1
elsif (agi1 - agi2) < 0
  self.contents.font.color = color2
else
  self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 112, 70, 32, (agi1 - agi2).to_s, 2)
# INT
if (int1 - int2) > 0
  self.contents.font.color = color1
elsif (int1 - int2) < 0
  self.contents.font.color = color2
else
  self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 144, 70, 32, (int1 - int2).to_s, 2)
if item.is_a?(RPG::Weapon)
  self.contents.font.color = system_color
  self.contents.draw_text(x, y + 48, 80, 32, "Atk:")
  self.contents.draw_text(x, y + 80, 80, 32, "Pdef:")
  self.contents.draw_text(x, y + 112, 80, 32, "Mdef:")
  self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:")
  self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:")
  self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:")
  self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:")
  self.contents.font.color = normal_color
  #  ATTACK
  if (atk1 - atk2) > 0
self.contents.font.color = color1
  elsif (atk1 - atk2) < 0
self.contents.font.color = color2
  else
self.contents.font.color = normal_color
  end
  self.contents.draw_text(x + 25, y + 48, 70, 32, (atk1 - atk2).to_s, 2)
  #  ELSE if armor...
else
  self.contents.font.color = system_color
  self.contents.draw_text(x, y + 48, 80, 32, "Eva:")
  self.contents.draw_text(x, y + 80, 80, 32, "Pdef:")
  self.contents.draw_text(x, y + 112, 80, 32, "Mdef:")
  self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:")
  self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:")
  self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:")
  self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:")
  self.contents.font.color = normal_color
  if (eva1 - eva2) > 0
self.contents.font.color = color1
  elsif (eva1 - eva2) < 0
self.contents.font.color = color2
  else
self.contents.font.color = normal_color
  end
  self.contents.draw_text(x + 25, y + 48, 70, 32, (eva1 - eva2).to_s, 2)
end
  else
self.contents.font.color = disabled_color
self.contents.draw_text(x + 10, y + 80, 120, 32, "Cannot Equip")
self.contents.font.color = normal_color
  end
end
  end
end
#===============================================================================
#  END Window_Shop_Actors
#===============================================================================


#===============================================================================
#  Window_Shop_Amount
#===============================================================================
class Window_Shop_Amount < Window_Selectable
 
  attr_accessor :amount
 
  def initialize
super(80, 208, 480, 96)
@item_max = 1
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z += 100
@amount = 1
item = $data_items[1]
option_index = 0
refresh(item, option_index)
  end
 
  def refresh(item, option_index)
self.contents.clear
if item == nil
  return
end
if option_index == nil
  return
end
if option_index == 0
  self.contents.font.color = system_color
  self.contents.draw_text(0, 0, 200, 32, "How many?")
  self.contents.font.color = normal_color
  if $game_party.gold < (@amount * item.price)
self.contents.font.color = disabled_color
  end
  bitmap = RPG::Cache.icon(item.icon_name)
  opacity = self.contents.font.color == normal_color ? 255 : 128
  self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity)
  self.contents.draw_text(28, 32, 120, 32, item.name)
  self.contents.draw_text(335, 32, 10, 32, "x")
  self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2)
  self.cursor_rect.set(284, 32, 32, 32)
  self.contents.draw_text(370, 32, 70, 32, (@amount * item.price).to_s, 2)
else
  self.contents.font.color = system_color
  self.contents.draw_text(0, 0, 200, 32, "How many?")
  self.contents.font.color = normal_color
  bitmap = RPG::Cache.icon(item.icon_name)
  opacity = self.contents.font.color == normal_color ? 255 : 128
  self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity)
  self.contents.draw_text(28, 32, 120, 32, item.name)
  self.contents.draw_text(335, 32, 10, 32, "x")
  self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2)
  self.cursor_rect.set(284, 32, 32, 32)
  self.contents.draw_text(370, 32, 70, 32, (@amount * (item.price / 2)).to_s, 2)
end
  end
end
#===============================================================================
#  END Window_Shop_Amount
#===============================================================================


#===============================================================================
#  Scene_Shop
#===============================================================================
class Scene_Shop
  def main
@counter = 0
@info_window = Window_Shop_Info.new
@option_window = Window_Shop_Option.new
@gold_window = Window_Shop_Gold.new
@own_window = Window_Shop_Own.new
@list_window = Window_Shop_List.new($game_temp.shop_goods)
@desc_item_window = Window_Shop_Description_Item.new
@desc_equip_window = Window_Shop_Description_Equipment.new
@actor_window = Window_Shop_Actors.new
@amount_window = Window_Shop_Amount.new

Graphics.transition
loop do
  Graphics.update
  Input.update
  update
  if $scene != self
break
  end
end
Graphics.freeze

@info_window.dispose
@option_window.dispose
@gold_window.dispose
@own_window.dispose
@list_window.dispose
@desc_item_window.dispose
@desc_equip_window.dispose
@actor_window.dispose
@amount_window.dispose
  end
 
  def update
@info_window.update
@option_window.update
@gold_window.update
@own_window.update
@list_window.update
@desc_item_window.update
@desc_equip_window.update
@actor_window.update
@amount_window.update

if @option_window.active
  update_option
  return
end

if @list_window.active
  update_list
  return
end

if @actor_window.visible
  update_actors
  return
end

if @amount_window.active and @option_window.index == 0
  update_amount
  return
end

if @amount_window.active and @option_window.index == 1
  update_sell
  return
end
  end
 
  def update_option
@info_window.refresh(0)
if Input.trigger?(Input::B)
  $game_system.se_play($data_system.cancel_se)
  $scene = Scene_Map.new
  return
end
if Input.trigger?(Input::C)
  case @option_window.index
  when 0
$game_system.se_play($data_system.decision_se)
@list_window.refresh
@option_window.active = false
@list_window.visible = true
@list_window.active = true
@list_window.index = 0
  when 1
$game_system.se_play($data_system.decision_se)
@list_window.refresh_sell(@option_window.index)
@option_window.active = false
@list_window.visible = true
@list_window.active = true
@list_window.index = 0
  when 2
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
  end
end
  end
 
  def update_list
@info_window.refresh(1)
@item = @list_window.item
if @counter != 1
  if @item.is_a?(RPG::Item)
@desc_item_window.refresh(@item)
@counter = 1
  else
@desc_equip_window.refresh(@item)
@counter = 1
  end
end
@own_window.refresh(@list_window.item)
if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) or Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
  @counter = 0
end
if @item.is_a?(RPG::Item)
  if @counter != 1
@desc_item_window.refresh(@item)
@counter = 1
  end
  @desc_item_window.visible = true
  @desc_equip_window.visible = false
else
  if @counter != 1
@desc_equip_window.refresh(@item)
@counter = 1
  end
  @desc_item_window.visible = false
  @desc_equip_window.visible = true
end
if Input.trigger?(Input::B)
  @counter = 0
  $game_system.se_play($data_system.cancel_se)
  @desc_item_window.visible = false
  @desc_equip_window.visible = false
  @desc_item_window.refresh(nil)
  @desc_equip_window.refresh(nil)
  @option_window.active = true
  @list_window.visible = false
  @list_window.active = false
  @own_window.refresh(nil)
  return
end
if Input.trigger?(Input::A)
  unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.decision_se)
@actor_window.refresh(@item)
@actor_window.visible = true
@list_window.active = false
return
  else
$game_system.se_play($data_system.buzzer_se)
  end
end
if Input.trigger?(Input::C)
  if @item == nil or @item.id == 0 or @item.price == 0
$game_system.se_play($data_system.buzzer_se)
return
  end
  if @option_window.index == 0
case @item
when RPG::Item
  if $game_party.item_number(@item.id) >= 99
$game_system.se_play($data_system.buzzer_se)
return
  end
when RPG::Weapon
if $game_party.weapon_number(@item.id) >= 99
$game_system.se_play($data_system.buzzer_se)
return
  end
when RPG::Armor
  if $game_party.armor_number(@item.id) >= 99
$game_system.se_play($data_system.buzzer_se)
return
  end
end
  end
  $game_system.se_play($data_system.decision_se)
  @amount_window.visible = true
  @amount_window.active = true
  @list_window.active = false
  return
end
  end
 
  def update_actors
if Input.trigger?(Input::B)
  $game_system.se_play($data_system.cancel_se)
  @actor_window.visible = false
  @list_window.active = true
end
  end
 
  def update_amount
@amount_window.refresh(@item, @option_window.index)
if Input.trigger?(Input::B)
  $game_system.se_play($data_system.cancel_se)
  @amount_window.amount = 1
  @amount_window.visible = false
  @amount_window.active = false
  @list_window.active = true
  return
end
if Input.trigger?(Input::C)
  if $game_party.gold >= (@amount_window.amount * @item.price)
$game_system.se_play($data_system.decision_se)
$game_party.lose_gold(@amount_window.amount * @item.price)
case @item
when RPG::Item
  $game_party.gain_item(@item.id, @amount_window.amount)
when RPG::Weapon
  $game_party.gain_weapon(@item.id, @amount_window.amount)
when RPG::Armor
  $game_party.gain_armor(@item.id, @amount_window.amount)
end
@gold_window.refresh
@amount_window.amount = 1
@amount_window.visible = false
@amount_window.active = false
@list_window.active = true
@list_window.refresh
return
  else
$game_system.se_play($data_system.buzzer_se)
  end
end
if Input.trigger?(Input::LEFT)
  $game_system.se_play($data_system.cursor_se)
  @amount_window.amount -= 1
  if @amount_window.amount == 0
@amount_window.amount = 1
  end
  return
end
if Input.trigger?(Input::RIGHT)
  $game_system.se_play($data_system.cursor_se)
  @amount_window.amount += 1
  case @item
  when RPG::Item
if ($game_party.item_number(@item.id) + @amount_window.amount) > 99
  @amount_window.amount = (99 - $game_party.item_number(@item.id))
end
  when RPG::Weapon
if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99
  @amount_window.amount = (99 - $game_party.weapon_number(@item.id))
end
  when RPG::Armor
if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99
  @amount_window.amount = (99 - $game_party.armor_number(@item.id))
end
  end
  return
end
if Input.trigger?(Input::UP)
  $game_system.se_play($data_system.cursor_se)
  @amount_window.amount += 10
  case @item
  when RPG::Item
if ($game_party.item_number(@item.id) + @amount_window.amount) > 99
  @amount_window.amount = (99 - $game_party.item_number(@item.id))
end
  when RPG::Weapon
if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99
  @amount_window.amount = (99 - $game_party.weapon_number(@item.id))
end
  when RPG::Armor
if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99
  @amount_window.amount = (99 - $game_party.armor_number(@item.id))
end
  end
  return
end
if Input.trigger?(Input::DOWN)
  $game_system.se_play($data_system.cursor_se)
  @amount_window.amount -= 10
  if @amount_window.amount < 1
@amount_window.amount = 1
  end
  return
end
  end
 
  def update_sell
@amount_window.refresh(@item, @option_window.index)
if Input.trigger?(Input::B)
  $game_system.se_play($data_system.cancel_se)
  @amount_window.amount = 1
  @amount_window.visible = false
  @amount_window.active = false
  @list_window.active = true
  return
end
if Input.trigger?(Input::C)
  if @item.price == 0
$game_system.se_play($data_system.buzzer_se)
return
  end
  $game_system.se_play($data_system.decision_se)
  case @item
  when RPG::Item
$game_party.gain_gold(@amount_window.amount * (@item.price / 2))
$game_party.lose_item(@item.id, @amount_window.amount)
  when RPG::Weapon
$game_party.gain_gold(@amount_window.amount * (@item.price / 2))
$game_party.lose_weapon(@item.id, @amount_window.amount)
  when RPG::Armor
$game_party.gain_gold(@amount_window.amount * (@item.price / 2))
$game_party.lose_armor(@item.id, @amount_window.amount)
  end
  @gold_window.refresh
  @amount_window.amount = 1
  @amount_window.visible = false
  @amount_window.active = false
  @list_window.active = true
  @list_window.refresh_sell(@option_window.index)
  @desc_equip_window.refresh(nil)
  @desc_item_window.refresh(nil)
end
if Input.trigger?(Input::LEFT)
  $game_system.se_play($data_system.cursor_se)
  @amount_window.amount -= 1
  if @amount_window.amount < 1
@amount_window.amount = 1
  end
end
if Input.trigger?(Input::RIGHT)
  $game_system.se_play($data_system.cursor_se)
  case @item
  when RPG::Item
@amount_window.amount += 1
if @amount_window.amount > $game_party.item_number(@item.id)
  @amount_window.amount = $game_party.item_number(@item.id)
end
  when RPG::Weapon
@amount_window.amount += 1
if @amount_window.amount > $game_party.weapon_number(@item.id)
  @amount_window.amount = $game_party.weapon_number(@item.id)
end
  when RPG::Armor
@amount_window.amount += 1
if @amount_window.amount > $game_party.armor_number(@item.id)
  @amount_window.amount = $game_party.armor_number(@item.id)
end
  end
end
if Input.trigger?(Input::UP)
  $game_system.se_play($data_system.cursor_se)
  case @item
  when RPG::Item
@amount_window.amount += 10
if @amount_window.amount > $game_party.item_number(@item.id)
  @amount_window.amount = $game_party.item_number(@item.id)
end
  when RPG::Weapon
@amount_window.amount += 10
if @amount_window.amount > $game_party.weapon_number(@item.id)
  @amount_window.amount = $game_party.weapon_number(@item.id)
end
  when RPG::Armor
@amount_window.amount += 10
if @amount_window.amount > $game_party.armor_number(@item.id)
  @amount_window.amount = $game_party.armor_number(@item.id)
end
  end
end
if Input.trigger?(Input::DOWN)
  $game_system.se_play($data_system.cursor_se)
  @amount_window.amount -= 10
  if @amount_window.amount < 1
@amount_window.amount = 1
  end
end
  end
 
end
[/spoiler]



Instructions
Please look in-script.

Compatibility
There are no known compatability issues.

Credits and Thanks
The only person to really credit is me.

Kokowam

Haha, looks nice :) Why'd I laugh? Idk.

modern algebra


Erk64

It won't work for me. I get a syntax error on line 439.
[spoiler=My Game Recommendations] 1) Demon Gate --- A great game with a terrific character-relationship system, an engaging story, and plenty of secrets and options for players who wish to be good/evil.
http://www.raizap.com/demongate/

2) Midnight --- A survival-horror game created with RPG Maker XP. Combat plays out in the smoothest running real-time battle system I have seen yet.
http://rmrk.net/index.php/topic,23239.0.html

3) The Healer --- A charming game with beautiful mapping and a fun battle system. One of the few games to use a healer as a main character, and so far it's pulled off well.
http://rmrk.net/index.php/topic,23524.0.html[/spoiler]

modern algebra

Hmm, yeah, looks like the code is corrupted. I'll put it in a code box and you should be fine.

EDIT::
Done, now just copy and paste it again.

Erk64

Okay, that's better. It works now. Thanks!
[spoiler=My Game Recommendations] 1) Demon Gate --- A great game with a terrific character-relationship system, an engaging story, and plenty of secrets and options for players who wish to be good/evil.
http://www.raizap.com/demongate/

2) Midnight --- A survival-horror game created with RPG Maker XP. Combat plays out in the smoothest running real-time battle system I have seen yet.
http://rmrk.net/index.php/topic,23239.0.html

3) The Healer --- A charming game with beautiful mapping and a fun battle system. One of the few games to use a healer as a main character, and so far it's pulled off well.
http://rmrk.net/index.php/topic,23524.0.html[/spoiler]

Leon_Westbrooke

Small bug fixed:

Fixed Bug:
  -If you had the exact amount as an item in the shop, it would be greyed out, but you could buy it.

Sx2

dude this is sweet it much better than defualt

you rock!!
Super Smash Bros. Brawl - Kirby Player
Brawl Code - 1375-6864-5199
PM to Brawl me

Kumaru

ok i downloaded the script but...there's no font in the windows. help please?
games currently woriking on.

The way of the warrior demo: Available please pm me for a copy.

The game of love demo: had to be restarted due to aquiering legal version of RPGxp

jackmesser

I have the same problem as Kumaru. theres no text in the box's but otherwise it works, any fix's? thanks

Jack/
~Zushau~
~Zushau~

Stuck in that vortex again, with a laptop this time!

modern algebra

Works fine for me. I'm guessing you are using PK. In which case Blizzard has a global font fix somewhere. Try his site: http://forum.chaos-project.com/

jackmesser

Quote from: modern algebra on October 12, 2008, 03:13:36 PM
Works fine for me. I'm guessing you are using PK. In which case Blizzard has a global font fix somewhere. Try his site: http://forum.chaos-project.com/

Yeah ive jsut recently "got" rpgmaker XP and well it works, i have a feeling that it doesnt work on PK unless u download the font, http://forum.chaos-project.com/
~Zushau~

Stuck in that vortex again, with a laptop this time!

modern algebra

There's no special font defined in the script though. I suspect the problem has to do with $defaultfontface - a global variable set in PK but not in regular.

tSwitch

the ultimate font override in tons of addons should solve the problem
some scripts have issues with text showing, such as CMS and etc...


FCF3a A+ C- D H- M P+ R T W- Z- Sf RLCT a cmn+++ d++ e++ f h+++ iw+++ j+ p sf+
Follow my project: MBlok | Find me on: Bandcamp | Twitter | Patreon

pookinator

Great script, looks much better than original in rmxp.  :)

Snailer