O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

New Window

Iniciado por Corvo, 24/11/2018 às 14:12

24/11/2018 às 14:12 Última edição: 26/11/2018 às 10:10 por Corvo
New Window


Condições de Uso:
Livre para membros registrados em centrorpg.com.


Descrição:
O script permite que o desenvolvedor crie janelas simples na Scene_Map. As janelas são programadas para exibir apenas textos, mas o script pode ser modificado para incluir imagens e afins. Para utilizá-lo, use o seguinte comando dentro de um 'Chamar Script':

refresh_new_window(x, y, width, height, text)

x = Coordenada X da janela.
y = Coordenada Y.
width, height = Respectivamente, largura e altura da mesma.
text = Texto a ser mostrado. A janela não irá adaptar-se ao tamanho automaticamente, fique atento.
tx, ty = Coordenadas x e y do texto dentro da janela.


Exemplo de uso:
refresh_new_window(32, 32, 120, 120, "Teste", 64, 64)



Código:
#==============================================================================
# ** Window_New
#------------------------------------------------------------------------------
#  This window shows any text you want.
#  Credits: Skyloftian, Kyo Panda
#==============================================================================
class Window_New < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 0, 0)
    self.openness = 0
    self.back_opacity  = 255
  end  
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------  
  def refresh(x, y, width, height, text, tx, ty)    
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    contents.dispose
    create_contents
    draw_text(tx, ty, contents.width, contents.height, text)
    open
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------  
  def update
    super
    close if open? && (Input.trigger?(:X) || Input.trigger?(:C))
  end
  #--------------------------------------------------------------------------
  # * Close
  #--------------------------------------------------------------------------  
  def close_window
    close
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================
class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # * Accessors
  #--------------------------------------------------------------------------  
  attr_reader :new_window
  #--------------------------------------------------------------------------
  # * Create New Window
  #--------------------------------------------------------------------------  
    def create_new_window
      @new_window = Window_New.new
    end
  #--------------------------------------------------------------------------
  # * Create All Windows
  #--------------------------------------------------------------------------
  def create_all_windows
    create_message_window
    create_scroll_text_window
    create_location_window
    create_new_window
  end
end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter  
  #--------------------------------------------------------------------------
  # * Refresh New Window
  #-------------------------------------------------------------------------- 
  def refresh_new_window(*args)
    if SceneManager.scene_is?(Scene_Map)
      SceneManager.scene.new_window.refresh(*args)
    end
  end
  #--------------------------------------------------------------------------
  # * Close New Window
  #-------------------------------------------------------------------------- 
  def close_window
    if SceneManager.scene_is?(Scene_Map)
      SceneManager.scene.new_window.close_window
    end
  end  
end



Notas:
Créditos: Skyloftian, Kyo Panda

Acredito que isso é uma das coisas que eventers mais querem haha' Muito bom, poe o/

Boa Poe! o/

Pra ajustar a posição do texto na janela é só incluir mais dois argumentos no refresh:
class Window_New < Window_Base

  def refresh(x, y, tx, ty, width, height, text)    
    ...
    draw_text(tx, ty, contents.width, contents.height, text)
    ...
  end

end # Window_New

Desse jeito o call ficaria assim:
refresh_new_window(x, y, tx, ty, width, height, text)

x = Coordenada X da janela.
y = Coordenada Y da janela.
tx = Coordenada X do texto na janela.
ty = Coordenada Y do texto na janela.
width, height = Respectivamente, largura e altura da mesma.
text = Texto a ser mostrado.


Sotelie: Até que ajuda mesmo haha, nem tinha pensado. A ideia já estava fixa no pedido.
Skyloftian: Opa, corrigido. o/