🤔 Para Refletir : "Saber a hora de parar é quase tão importante quanto saber a hora de começar" - Ricky O Bardo

[Ace] Loja de Venda

Membro Membro
Postagens
206
Bravecoins
148
Loja de Venda
Permite que você possa ter uma "loja" de apenas Venda de itens ou seja o herói apenas pode vender seus itens e não comprar como na convencional. Para chamar o script basta usar o comando: "Chamar Script" na ultima aba de comandos de eventos e colocar o seguinte código:

SceneManager.call(Scene_ShopSell)


Ruby:
#===============================================================================
# * [VXACE] Loja de Venda
#-------------------------------------------------------------------------------
# * Por Takkun
# * Versão: 1.0 BR
# * Lançada em: 15/06/2014
#===============================================================================
# Para chamar o script basta usar o comando: "Chamar Script" na ultima aba de
# comandos de eventos e colocar o seguinte código:
#
# SceneManager.call(Scene_ShopSell)
#===============================================================================
($imported ||= {})[:shop_sell] = true
#===============================================================================
# ■  Window_SellShop
#===============================================================================
class Window_SellShop < Window_HorzCommand
  def initialize(window_width, purchase_only)
    @window_width = window_width
    super(0, 0)
  end
  def window_width
    @window_width
  end
  def col_max
    return 2
  end
  def make_command_list
    add_command(Vocab::ShopSell,   :sell)
    add_command(Vocab::ShopCancel, :cancel)
  end
end
#===============================================================================
# ■  Scene_ShopSell
#===============================================================================
class Scene_ShopSell < Scene_MenuBase
  def start
    super
    create_help_window
    create_gold_window
    create_command_window
    create_dummy_window
    create_number_window
    create_status_window
    create_category_window
    create_sell_window
  end
  def create_gold_window
    @gold_window = Window_Gold.new
    @gold_window.viewport = @viewport
    @gold_window.x = Graphics.width - @gold_window.width
    @gold_window.y = @help_window.height
  end
  def create_command_window
    @command_window = Window_SellShop.new(@gold_window.x, @purchase_only)
    @command_window.viewport = @viewport
    @command_window.y = @help_window.height
    @command_window.set_handler(:sell,   method(:command_sell))
    @command_window.set_handler(:cancel, method(:return_scene))
  end
  def create_dummy_window
    wy = @command_window.y + @command_window.height
    wh = Graphics.height - wy
    @dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
    @dummy_window.viewport = @viewport
  end
  def create_number_window
    wy = @dummy_window.y
    wh = @dummy_window.height
    @number_window = Window_ShopNumber.new(0, wy, wh)
    @number_window.viewport = @viewport
    @number_window.hide
    @number_window.set_handler(:ok,     method(:on_number_ok))
    @number_window.set_handler(:cancel, method(:on_number_cancel))
  end
  def create_status_window
    wx = @number_window.width
    wy = @dummy_window.y
    ww = Graphics.width - wx
    wh = @dummy_window.height
    @status_window = Window_ShopStatus.new(wx, wy, ww, wh)
    @status_window.viewport = @viewport
    @status_window.hide
  end
  def create_category_window
    @category_window = Window_ItemCategory.new
    @category_window.viewport = @viewport
    @category_window.help_window = @help_window
    @category_window.y = @dummy_window.y
    @category_window.hide.deactivate
    @category_window.set_handler(:ok,     method(:on_category_ok))
    @category_window.set_handler(:cancel, method(:on_category_cancel))
  end
  def create_sell_window
    wy = @category_window.y + @category_window.height
    wh = Graphics.height - wy
    @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
  def activate_sell_window
    @category_window.show
    @sell_window.refresh
    @sell_window.show.activate
    @status_window.hide
  end
  def command_sell
    @dummy_window.hide
    @category_window.show.activate
    @sell_window.show
    @sell_window.unselect
    @sell_window.refresh
  end
  def on_category_ok
    activate_sell_window
    @sell_window.select(0)
  end
  def on_category_cancel
    @command_window.activate
    @dummy_window.show
    @category_window.hide
    @sell_window.hide
  end
  def on_sell_ok
    @item = @sell_window.item
    @status_window.item = @item
    @category_window.hide
    @sell_window.hide
    @number_window.set(@item, max_sell, selling_price, currency_unit)
    @number_window.show.activate
    @status_window.show
  end
  def on_sell_cancel
    @sell_window.unselect
    @category_window.activate
    @status_window.item = nil
    @help_window.clear
  end
  def on_number_ok
    Sound.play_shop
    case @command_window.current_symbol
    when :sell
      do_sell(@number_window.number)
    end
    end_number_input
    @gold_window.refresh
    @status_window.refresh
  end
  def on_number_cancel
    Sound.play_cancel
    end_number_input
  end
  def do_sell(number)
    $game_party.gain_gold(number * selling_price)
    $game_party.lose_item(@item, number)
  end
  def end_number_input
    @number_window.hide
    case @command_window.current_symbol
    when :sell
      activate_sell_window
    end
  end
  def max_sell
    $game_party.item_number(@item)
  end
  def money
    @gold_window.value
  end
  def currency_unit
    @gold_window.currency_unit
  end
  def selling_price
    @item.price / 2
  end
end
 
Voltar
Topo