Mostrar quantidade de venda na loja do NPC

tópico anterior - próximo tópico

Merim

Introdução
Essa pequena modificação mostra o total em dinheiro que você vai conseguir ao vender
O item ...recursos... armas e afins na loja do NPC
é algo bastante útil pois para quem gosta de farmar no jogo e quer ver a quantidade que vai ganhar em cada item (montante)
Antes de tudo faça um backup do seu projeto
Printscreen

 Não selecionado a quantidade 

Selecionado a quantidade e mostra o valor total
Claro você pode fazer ajustes conforme precisar para seu jogo.
Modificações 


[VS] Window_Shop troque todo por esse :
#==============================================================================
# ** Window_Shop
#------------------------------------------------------------------------------
#  Esta classe lida com a janela da loja.
#------------------------------------------------------------------------------
#  Autor: Valentine       Mod: Merim
#==============================================================================
class Window_Shop < Window_ItemSelectable
 
  attr_reader :price

  def initialize
    super(280, 165, 212, 212)
    self.visible = false
    self.closable = true
    self.title = Vocab::Shop
  end

  def show(shop_goods, purchase_only)
    @shop_goods = shop_goods
    @purchase_only = purchase_only
    super()
  end

  def hide_window
    # Não envia o send_close_window se pressionar Esc quando a loja não estiver aberta
    return unless visible
    $network.send_close_window
  end

  def enable?(item)
    item && @price[item] <= $game_party.gold && !$game_party.item_max?(item)
  end

  def make_item_list
    @data = []
    @price = {}
    @shop_goods.each do |goods|
      item = $game_party.item_object(goods
 + 1, goods[1])
      if item
        @data << item
        @price[item] = goods[2] == 0 ? item.price : goods[3]
      end
    end
  end
  def update
    super
    $windows[:amount].show(Enums::Amount::BUY_ITEM, item, index) if Mouse.dbl_clk?(:L) && index >= 0
  end
  def update_drag
    return unless Mouse.press?(:L)
    return if $cursor.object
    return if $dragging_window
    return unless index >= 0
    $cursor.change_item(item, Enums::Mouse::SHOP)
  end
  def update_drop
    return if Mouse.press?(:L)
    return unless $cursor.object
    return unless $cursor.type == Enums::Mouse::ITEM
    return unless in_area?
    sell_item
  end
  def sell_item
    if @purchase_only
      $error_msg = Vocab::NotSellItem
      Sound.play_buzzer
      return
    end
    $windows[:amount].show(Enums::Amount::SELL_ITEM, $windows[:item].item)
  end
end
[VS]Window_Amount troque todo por esse :
#==============================================================================
# ** Window_Amount
#------------------------------------------------------------------------------
#  Esta classe lida com a janela de quantidade.
#------------------------------------------------------------------------------
#  Autor: Valentine   Mod: Merim
#==============================================================================
class Window_Amount < Window_Base
 
  def initialize
    super(400, 230, 150, 140)  # Ajusta a altura da janela para 140
    self.visible = false
    self.closable = true
    self.title = Vocab::Amount
    @amount_box = Number_Box.new(self, 10, 40, 130, 5) { enable_ok_button }  # Ajusta a posição da barra de quantidade
    @ok_button = Button.new(self, 60, 110, Vocab::Ok) { ok }  # Reposiciona o botão OK para mais abaixo
    @total_value = 0
  end
 
  def deposit_gold
    amount = @amount_box.value
    puts "Tentando depositar #{amount} ouro."
    return if $game_party.gold < amount
    puts "Ouro suficiente no inventário."
    $network.send_bank_gold(amount)
  end

  def show(type, item = nil, index = 0)
    @type = type
    @item = item
    @index = index
    @amount_box.clear
    @amount_box.active = true
    @ok_button.enable = false
    @quantity = 1
    update_total_value
    if index == 0 && item_number_one?
      @amount_box.value = 1
      ok
      return
    end
    super()
    refresh
  end
 
  def update_total_value
    @total_value = @item.price * @amount_box.value if @item
  end

  def refresh
    super
    contents.clear
    if @item
      draw_text(0, 0, contents.width, line_height, @item.name)  # Coloca o nome do recurso no topo
      draw_text(0, 50, contents.width, line_height, "#{@item.name} x #{@amount_box.value}")  # Ajusta a posição da quantidade logo abaixo da barra de quantidade
    else
      draw_text(0, 0, contents.width, line_height, "Gold")  # Exibe "Gold" no topo se @item for nil
      draw_text(0, 50, contents.width, line_height, "Gold x #{@amount_box.value}")  # Exibe "Gold" e a quantidade logo abaixo da barra de quantidade
    end
    draw_text(0, 80, contents.width, line_height, "Total: #{@total_value} G")  # Ajusta a posição do total para logo abaixo da quantidade
  end
 
  def item_number_one?
    return ($game_trade.my_item_number(@item) == 1) if @type == Enums::Amount::REMOVE_TRADE_ITEM
    return ($game_bank.item_number(@item) == 1) if @type == Enums::Amount::WITHDRAW_ITEM
    return ($game_party.item_number(@item) == 1)
  end
 
  def ok
    case @type
    when Enums::Amount::BUY_ITEM
      buy_item
    when Enums::Amount::SELL_ITEM
      sell_item
    when Enums::Amount::DROP_ITEM
      drop_item
    when Enums::Amount::ADD_TRADE_ITEM
      add_trade_item
    when Enums::Amount::ADD_TRADE_GOLD
      add_trade_gold
    when Enums::Amount::REMOVE_TRADE_ITEM
      remove_trade_item
    when Enums::Amount::REMOVE_TRADE_GOLD
      remove_trade_gold
    when Enums::Amount::DEPOSIT_ITEM
      deposit_item
    when Enums::Amount::DEPOSIT_GOLD
      deposit_gold
    when Enums::Amount::WITHDRAW_ITEM
      withdraw_item
    when Enums::Amount::WITHDRAW_GOLD
      withdraw_gold
    end
    hide
  end
 
  def buy_item
    amount = [@amount_box.value, Configs::MAX_ITEMS - $game_party.item_number(@item)].min
    return if $game_party.full_items?(@item)
    if $game_party.gold < @item.price * amount
      $error_msg = Vocab::NotEnoughMoney
      return
    end
    $network.send_buy_item(@index, amount)
  end
 
  def sell_item
    amount = @amount_box.value
    return if $game_party.item_number(@item) < amount
    $network.send_sell_item(@item.id, $game_party.kind_item(@item), amount)
  end
 
  def drop_item
    amount = @amount_box.value
    return if $game_party.item_number(@item) < amount
    if $game_map.drops.size >= Configs::MAX_MAP_DROPS
      $error_msg = Vocab::FullDrops
      return
    elsif @item.soulbound?
      $error_msg = Vocab::SoulboundItem
      return
    end
    $network.send_add_drop(@item.id, $game_party.kind_item(@item), amount)
  end
 
  def add_trade_item
    amount = @amount_box.value
    return if $game_party.item_number(@item) < $game_trade.my_item_number(@item) + amount
    return if $game_trade.full_items?(@item)
    if @item.soulbound?
      $error_msg = Vocab::SoulboundItem
      return
    end
    $network.send_trade_item(@item.id, $game_party.kind_item(@item), amount)
  end
 
  def add_trade_gold
    amount = @amount_box.value
    return if $game_party.gold < $game_trade.my_gold + amount
    $network.send_trade_gold(amount)
  end
 
  def remove_trade_item
    amount = @amount_box.value
    return if $game_trade.my_item_number(@item) < amount
    return if $game_party.full_items?(@item)
    $network.send_trade_item(@item.id, $game_party.kind_item(@item), -amount)
  end
 
  def remove_trade_gold
    amount = @amount_box.value
    return if $game_trade.my_gold < amount
    $network.send_trade_gold(-amount)
  end
 
  def deposit_item
    amount = [@amount_box.value, Configs::MAX_ITEMS - $game_bank.item_number(@item)].min
    return if $game_party.item_number(@item) < amount
    return if $game_bank.full_items?(@item)
    if @item.soulbound?
      $error_msg = Vocab::SoulboundItem
      return
    end
    $network.send_bank_item(@item.id, $game_party.kind_item(@item), amount)
  end
 
  def deposit_gold
    amount = @amount_box.value
    return if $game_party.gold < amount
    $network.send_bank_gold(amount)
  end
 
  def withdraw_item
    amount = [@amount_box.value, Configs::MAX_ITEMS - $game_party.item_number(@item)].min
    return if $game_bank.item_number(@item) < amount
    return if $game_party.full_items?(@item)
    $network.send_bank_item(@item.id, $game_party.kind_item(@item), -amount)
  end
 
  def withdraw_gold
    amount = @amount_box.value
    return if $game_bank.gold < amount
    $network.send_bank_gold(-amount)
  end
 
  def enable_ok_button
    @ok_button.enable = (@amount_box.value != 0)
    update_total_value
    refresh
  end
 
  def update
    super
    ok if Input.trigger?(:C) && @amount_box.value != 0
  end
 
end
Qualquer bug ou algo do tipo favor reportar nesse post , até o presente momento não tive nenhum 
Grande abraço ! e bom desenvolvimento a todos.

Resque

@Merim

Script muito bacana!!

Eu sempre gosto de farmar em jogos, mais do que apenas jogar e seguir a história principal. É um tempo que uso para relaxar sabe? Ainda mais se tiver uma musica bem bacana.

Espero ver mais Scripts seu aqui e muito obrigado!