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