Bem-vindo, visitante!
 Login:  Senha:
Para refletir: "Feliz porque corrigiu um bug? Então a vida de programador te dará muitas alegrias." - Guill-Maker

Autor Tópico: SGL Scene Shop  (Lido 1048 vezes)

0 Membros e 1 Visitante estão vendo este tópico.

FaeL

  • Visitante
SGL Scene Shop
« em: 02 de Novembro de 2008, 13:15:16 »
Pontuação: 2
Nome: SGL Scene Shop
Autor: Silver Link / Gold Link
Versão: 1.2

Olá. Tenho aqui um script simples, porém útil. Acho as lojas do RMVX muito simples e sem graça, por isso criei esse script. Ele adiciona um background no fundo e muda a posição das janelas.

Código: [Selecionar]
=begin
SGL Scene_Shop
Autor: Silver Link / Gold Link
Data: 27/08/2008
Versão: 1.0
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Cria uma loja muito mais bonita, com background e janelas em outras posições.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
=end

$Shop_Background = "Mountains" #Defina aqui o Parallax de fundo.

class Scene_Shop < Scene_Base
  #--------------------------------------------------------------------------
  # Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_command_window
    create_shop_background
    @help_window = Window_Help.new
    @help_window.opacity = 80
    @help_window.y = 361
    @gold_window = Window_Gold.new(384, 56)
    @gold_window.opacity = 80
    @gold_window.y = 305
    @dummy_window = Window_Base.new(0, 112, 544, 304)
    @dummy_window.opacity = 80
    @dummy_window.y = 0
    @buy_window = Window_ShopBuy.new(0, 112)
    @buy_window.active = false
    @buy_window.visible = false
    @buy_window.help_window = @help_window
    @buy_window.opacity = 80
    @buy_window.y = 0
    @sell_window = Window_ShopSell.new(0, 112, 544, 304)
    @sell_window.active = false
    @sell_window.visible = false
    @sell_window.help_window = @help_window
    @sell_window.opacity = 80
    @sell_window.y = 0
    @number_window = Window_ShopNumber.new(0, 112)
    @number_window.active = false
    @number_window.visible = false
    @number_window.opacity = 80
    @number_window.y = 0
    @status_window = Window_ShopStatus.new(304, 112)
    @status_window.visible = false
    @status_window.opacity = 0
  end
  def create_shop_background
    @shop_sprite = Sprite.new
    @shop_sprite.bitmap = Cache.parallax($Shop_Background)
  end
  #--------------------------------------------------------------------------
  # Fim do processo
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    dispose_command_window
    @help_window.dispose
    @gold_window.dispose
    @dummy_window.dispose
    @buy_window.dispose
    @sell_window.dispose
    @number_window.dispose
    @status_window.dispose
    @shop_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # Atualização
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @help_window.update
    @command_window.update
    @gold_window.update
    @dummy_window.update
    @buy_window.update
    @sell_window.update
    @number_window.update
    @status_window.update
    @shop_sprite.update
    if @command_window.active
      update_command_selection
    elsif @buy_window.active
      update_buy_selection
    elsif @sell_window.active
      update_sell_selection
    elsif @number_window.active
      update_number_input
    end
  end
  #--------------------------------------------------------------------------
  # Criação da janela de comandos
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = Vocab::ShopBuy
    s2 = Vocab::ShopSell
    s3 = Vocab::ShopCancel
    @command_window = Window_Command.new(384, [s1, s2, s3], 3)
    @command_window.y = 305
    @command_window.opacity = 80
    if $game_temp.shop_purchase_only
      @command_window.draw_item(1, false)
    end
  end
  #--------------------------------------------------------------------------
  # Dispose da janela de comandos
  #--------------------------------------------------------------------------
  def dispose_command_window
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # Atualização da seleção de comando
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0  # Comprar
        Sound.play_decision
        @command_window.active = false
        @dummy_window.visible = false
        @buy_window.active = true
        @buy_window.visible = true
        @buy_window.refresh
        @status_window.visible = true
      when 1  # Vender
        if $game_temp.shop_purchase_only
          Sound.play_buzzer
        else
          Sound.play_decision
          @command_window.active = false
          @dummy_window.visible = false
          @sell_window.active = true
          @sell_window.visible = true
          @sell_window.refresh
        end
      when 2  # Sair
        Sound.play_decision
        $scene = Scene_Map.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # Atualização da seleção: Comprar
  #--------------------------------------------------------------------------
  def update_buy_selection
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      number = $game_party.item_number(@item)
      if @item == nil or @item.price > $game_party.gold or number == 99
        Sound.play_buzzer
      else
        Sound.play_decision
        max = @item.price == 0 ? 99 : $game_party.gold / @item.price
        max = [max, 99 - number].min
        @buy_window.active = false
        @buy_window.visible = false
        @number_window.set(@item, max, @item.price)
        @number_window.active = true
        @number_window.visible = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # Atualizaão da seleção: Vender
  #--------------------------------------------------------------------------
  def update_sell_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @dummy_window.visible = true
      @sell_window.active = false
      @sell_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
    elsif Input.trigger?(Input::C)
      @item = @sell_window.item
      @status_window.item = @item
      if @item == nil or @item.price == 0
        Sound.play_buzzer
      else
        Sound.play_decision
        max = $game_party.item_number(@item)
        @sell_window.active = false
        @sell_window.visible = false
        @number_window.set(@item, max, @item.price / 2)
        @number_window.active = true
        @number_window.visible = true
        @status_window.visible = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # Atualização do número inserido
  #--------------------------------------------------------------------------
  def update_number_input
    if Input.trigger?(Input::B)
      cancel_number_input
    elsif Input.trigger?(Input::C)
      decide_number_input
    end
  end
  #--------------------------------------------------------------------------
  # Cancelamento do número inserido
  #--------------------------------------------------------------------------
  def cancel_number_input
    Sound.play_cancel
    @number_window.active = false
    @number_window.visible = false
    case @command_window.index
    when 0  # Comprando
      @buy_window.active = true
      @buy_window.visible = true
    when 1  # Vendendo
      @sell_window.active = true
      @sell_window.visible = true
      @status_window.visible = false
    end
  end
  #--------------------------------------------------------------------------
  # Decisão do número inserido
  #--------------------------------------------------------------------------
  def decide_number_input
    Sound.play_shop
    @number_window.active = false
    @number_window.visible = false
    case @command_window.index
    when 0  # Comprando
      $game_party.lose_gold(@number_window.number * @item.price)
      $game_party.gain_item(@item, @number_window.number)
      @gold_window.refresh
      @buy_window.refresh
      @status_window.refresh
      @buy_window.active = true
      @buy_window.visible = true
    when 1  # Vendendo
      $game_party.gain_gold(@number_window.number * (@item.price / 2))
      $game_party.lose_item(@item, @number_window.number)
      @gold_window.refresh
      @sell_window.refresh
      @status_window.refresh
      @sell_window.active = true
      @sell_window.visible = true
      @status_window.visible = false
    end
  end
end

Screen:


Fui!
« Última modificação: 22 de Abril de 2009, 21:13:22 por Sesshoumaru »

BrunnoMS

  • Membro
  • *
  • Mensagens: 93
  • Reputação: 4
  • Offline
  • um profissional em sistemas por eventos!
Re: SGL Scene Shop
« Resposta #1 em: 25 de Dezembro de 2009, 02:42:17 »
Pontuação: 0
ficou legal MAS, a imagem de fundo ta mto ''comum'' sako
Game over pra você...

 

Tópicos Relacionados

  Assunto / Iniciado por Respostas Última mensagem
0 Respostas
154 Visualizações
Última mensagem 22 de Setembro de 2010, 18:29:40
por leandrobom
2 Respostas
927 Visualizações
Última mensagem 06 de Janeiro de 2011, 23:24:08
por Uchiha Itachi extreme
8 Respostas
1112 Visualizações
Última mensagem 09 de Novembro de 2011, 16:53:10
por Kyrlok
7 Respostas
1004 Visualizações
Última mensagem 24 de Dezembro de 2012, 19:03:47
por †°Emily°†