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

Lune Custom Window

Iniciado por Raizen, 04/01/2014 às 04:39

04/01/2014 às 04:39 Última edição: 04/01/2014 às 04:44 por Raizen
Lune Custom Window

Compativel com: RMVXAce
Compatibilidade :boa
Facilidade de uso: difícil
Lag gerado: baixo
[box class=titlebg]
Condições de Uso
[/box]
  Pode ser modificado, e divulgado em outros lugares, mas peço que não retire os créditos.

[box class=titlebg]
Para que serve o script
[/box]

O script permite que você mesmo sem conhecimento algum em scripts, possa criar janelas para o seu jogo, basicamente você pode criar uma tela e colocar textos, variáveis, entre outros, dando um suporte muito grande e uma customização extremamente elevada para o script, leia atentamente as instruções, toda a liberdade que é dada no script requer um cuidado extra para montar a sua própria janela como desejar.

O número de janelas, variáveis e todos objetos dentro da sua tela é ilimitado, como também é ilimitado o número de janelas que pretende criar.

Funções pre-configuradas no script,

  • Adicionar variáveis
  • Adicionar faces
  • Adicionar characters
  • Adicionar imagens
  • Adicionar textos
  • Adicionar sub-janelas
  • Mudar nome da fonte, e configurações da fonte.

    [box class=titlebg]
    Script.
    [/box]

    module Lune_Custom_Config
    Janela = []
    
    
    #=======================================================
    #         Lune Custom Window
    # Autor: Raizen
    # Comunidade: www.centrorpg.com
    # O script permite que uma janela seja criada seguindo 
    # as especificações do usuário, assim mesmo sem conhecimento
    # algum em scripts, é possível criar uma tela para auxiliar 
    # nos sistemas por eventos.
    #=======================================================
    
    # Como o script permite infinitas Janelas a serem criadas, uma variável será
    # quem irá decidir qual janela aparecerá e ela é essa.
    # $lune_custom_scene
    # para escolher a janela 3 por exemplo basta,
    # Chamar Script: $lune_custom_scene = 3
    
    # Para ativar a Janela personalizada
    # Chamar Script: SceneManager.call(Lune_Custom_Scene)
    
    
    # é possível criar inúmeras janelas seguindo o template, 
    # leia atentamente.
    
    # IMPORTANTE:
    
    # Para qualquer campo em branco, deixe da seguinte maneira "",
    # Exemplo, não tenho imagens para colocar então...
    # 'Pictures' => "",
    
    # Imagens na pasta Graphics/Custom_Win, será necessário criar esse diretório.
    #===========================================================================
    #---------------------------------------------------------------------------
    #  Janela 0, Essa janela cria absolutamente nada :) (descrição da sua janela)
    #---------------------------------------------------------------------------
    #===========================================================================
    
    
    Janela[0] = { #Coloque o ID da janela a sua escolha, Janela[id]
    
    # tempo de Fadein, exemplo 'Fadein' => 10,
    'Fadein' => 10, 
    
    # Nome da fonte, "" para pegar a fonte padrão, Ex 'FontName' => "Comic Sans MS",
    'FontName' => "", 
    
    # Som a ser tocado ao sair da tela , Ex: 'Sound' => "Cancel2",
    'Sound' => "Cancel2",
    
    # Janelas criadas, seguindo o seguinte template,
    # 'Windows' => [[posição x, posição y, largura, altura]],
    # é possível colocar um número ilimitado de janelas, basta colocar virgula
    # e abrir outro colchete, exemplo com 3 janelas,
    # 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], [1, 2, 3, 4]],
    # Depois da virgula pode pular linhas, ex:
    # 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], 
    #[1, 2, 3, 4]],
    'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100]],
    
    # Textos inseridos na janela, seguindo o template,
    # 'Texts' => [["Texto", pos x, pos y, tamanho fonte (0 para padrão, 20), cor da fonte]],
    # A cor da fonte é um número que é baseado na windowskin, veja as cores na windowskin.
    # Assim como as janelas o procedimento é o mesmo para múltiplos textos.
    'Texts' => [["Janela de Relacionamento", 0, 0, 0, 20],["Personagem1", 0, 200, 0, 0]],
    
    # Variáveis inseridos na janela, seguindo o template,
    # 'Variables' => [[numero da variavel, pos x, pos y, tamanho fonte(0 = padrão), cor fonte]],
    # Ilimitadas variáveis, seguindo a mesma ideia dos demais.
    'Variables' => [[1, 50, 70, 0, 1],[2, 50, 270, 20, 21]],
    
    # Imagens inseridas na janela, seguindo o template,
    # 'Pictures' => [["NomedaImagem", pos x, pos y, imagem superior ou inferior? true = superior, false = inferior]],
    'Pictures' => [["ArrowDown", 200, 200, true],
    ["ArrowUp", 300, 200, true],
    ["ArrowLeft", 400, 200, true],
    ["ArrowRight", 300, 300, true]],
    
    # Faces inseridas na janela, seguindo o template,
    # 'Faces' => [['actor' ou 'party'(escolher se o id eh do ator ou da party), id do personagem, pos x, pos y]],
    'Faces' => [['actor', 2, 200, 200], ['party', 0, 300, 300]],
    # Faces inseridas na janela, seguindo o template,
    # 'Faces' => [['actor' ou 'party', id do personagem, pos x, pos y]],
    'Characters' => [['actor', 2, 300, 400], ['party', 3, 200, 300]],
    
    }
    
    #===========================================================================
    #---------------------------------------------------------------------------
    #===========================================================================
    
    
    
    #===========================================================================
    #---------------------------------------------------------------------------
    #  Janela 1, Essa janela tem o sistema de namoro
    #  Template reduzido
    #---------------------------------------------------------------------------
    #===========================================================================
    
    
    Janela[1] = { 
    'Fadein' => 10, 
    'FontName' => "", 
    'Sound' => "Cancel2",
    #[x, y, largura, altura]
    'Windows' => [[0, 0, 272, 208],
    [272, 0, 272, 208],
    [0, 208, 272, 208],
    [272, 208, 272, 208]],
    #["Texto", x, y, tamanho fonte, cor fonte]
    'Texts' => [["Janela de Relacionamento", 120, 0, 0, 30],
    ["Natty", 0, 30, 0, 0],
    ["May", 272, 30, 0, 0],
    ["KaHh", 0, 238, 0, 0],
    ["Pretty", 272, 238, 0, 0],
    ["Relacionamento", 100, 50, 0, 0],
    ["Relacionamento", 372, 50, 0, 0],
    ["Relacionamento", 100, 258, 0, 0],
    ["Relacionamento", 372, 258, 0, 0],
    ["/ 100", 140, 80, 0, 0],
    ["/ 100", 412, 80, 0, 0],
    ["/ 100", 140, 288, 0, 0],
    ["/ 100", 412, 288, 0, 0],
    ],
    #[num variavel, x, y, tamanho fonte, cor fonte]
    'Variables' => [
    [1, 100, 80, 0, 20],
    [2, 372, 80, 0, 20],
    [3, 100, 288, 0, 20],
    [4, 372, 288, 0, 20],],
    #["NomeImagem", x, y, Imagemsuperior?]
    'Pictures' => "",
    # ['actor' ou 'party', id, x, y]
    'Faces' => [['actor', 2, 0, 50], 
    ['actor', 6, 0, 258], 
    ['actor', 8, 272, 50], 
    ['actor', 9, 272, 258],],
    # ['actor' ou 'party', id, x, y]
    'Characters' => "",
    
    }
    
    
    #===========================================================================
    #---------------------------------------------------------------------------
    #===========================================================================
    
    
    end
    #==============================================================================
    #              TEMPLATE, NÃO MODIFIQUE, UTILIZE CASO SUA
    #              JANELA PAROU DE FUNCIONAR.
    
    =begin
    
    #===========================================================================
    #---------------------------------------------------------------------------
    #  Janela 0, Essa janela cria absolutamente nada :) (descrição da sua janela)
    #---------------------------------------------------------------------------
    #===========================================================================
    
    Janela[0] = { #Coloque o ID da janela a sua escolha, Janela[id]
    
    # tempo de Fadein, exemplo 'Fadein' => 10,
    'Fadein' => 10, 
    
    # Nome da fonte, "" para pegar a fonte padrão, Ex 'FontName' => "Comic Sans MS",
    'FontName' => "", 
    
    # Som a ser tocado ao sair da tela , Ex: 'Sound' => "Cancel2",
    'Sound' => "Cancel2",
    
    # Janelas criadas, seguindo o seguinte template,
    # 'Windows' => [[posição x, posição y, largura, altura]],
    # é possível colocar um número ilimitado de janelas, basta colocar virgula
    # e abrir outro colchete, exemplo com 3 janelas,
    # 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], [1, 2, 3, 4]],
    # Depois da virgula pode pular linhas, ex:
    # 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], 
    #[1, 2, 3, 4]],
    'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100]],
    
    # Textos inseridos na janela, seguindo o template,
    # 'Texts' => [["Texto", pos x, pos y, tamanho fonte (0 para padrão, 20), cor da fonte]],
    # A cor da fonte é um número que é baseado na windowskin, veja as cores na windowskin.
    # Assim como as janelas o procedimento é o mesmo para múltiplos textos.
    'Texts' => [["Janela de Relacionamento", 0, 0, 0, 20],["Personagem1", 0, 200, 0, 0]],
    
    # Variáveis inseridos na janela, seguindo o template,
    # 'Variables' => [[numero da variavel, pos x, pos y, tamanho fonte(0 = padrão), cor fonte]],
    # Ilimitadas variáveis, seguindo a mesma ideia dos demais.
    'Variables' => [[1, 50, 70, 0, 1],[2, 50, 270, 20, 21]],
    
    # Imagens inseridas na janela, seguindo o template,
    # 'Pictures' => [["NomedaImagem", pos x, pos y, imagem superior ou inferior? true = superior, false = inferior]],
    'Pictures' => [["ArrowDown", 200, 200, true],
    ["ArrowUp", 300, 200, true],
    ["ArrowLeft", 400, 200, true],
    ["ArrowRight", 300, 300, true]],
    
    # Faces inseridas na janela, seguindo o template,
    # 'Faces' => [['actor' ou 'party'(escolher se o id eh do ator ou da party), id do personagem, pos x, pos y]],
    'Faces' => [['actor', 2, 200, 200], ['party', 0, 300, 300]],
    # Faces inseridas na janela, seguindo o template,
    # 'Faces' => [['actor' ou 'party', id do personagem, pos x, pos y]],
    'Characters' => [['actor', 2, 300, 400], ['party', 3, 200, 300]],
    
    }
    #===========================================================================
    #---------------------------------------------------------------------------
    #===========================================================================
    
    
    =end
    
    
    
    #==============================================================================
    #==============================================================================
    
    #                  AQUI COMEÇA O SCRIPT
    
    #==============================================================================
    #==============================================================================
    $lune_custom_scene = 0
    
    
    #==============================================================================
    # ** Lune_Custom_Scene
    #------------------------------------------------------------------------------
    #  Esta classe executa os processos de imagem pela sua janela personalizada
    #==============================================================================
    
    class Lune_Custom_Scene < Scene_MenuBase
      #--------------------------------------------------------------------------
      # * Inicialização do processo
      #--------------------------------------------------------------------------
      def initialize
        create_windows
        @fadeout = false
        @speed = Lune_Custom_Config::Janela[$lune_custom_scene]['Fadein']
        super
      end
      #--------------------------------------------------------------------------
      # * Atualização do processo
      #--------------------------------------------------------------------------
      def update
        super
        @main_window.contents_opacity >= 255 ? continue_update : fadein    
      end
      #--------------------------------------------------------------------------
      # * Efeito de transição de tela
      #--------------------------------------------------------------------------
      def fadein
        @main_window.contents_opacity += @speed
        @pics.each {|pic| pic.opacity += @speed} if @pics
        @windows.each {|pic| pic.opacity += @speed} if @windows
      end
      #--------------------------------------------------------------------------
      # * Criação das Janelas
      #--------------------------------------------------------------------------
      def create_windows
        win = Lune_Custom_Config::Janela[$lune_custom_scene]['Windows']
        @main_window = Lune_Custom_Window.new
        @main_window.opacity = 0
        @main_window.contents_opacity = 0
        @main_window.z = 50
        return if win.empty?
        @windows = Array.new
        for n in 0...win.size
          @windows[n] = Window_Base.new(win[n][0], win[n][1], win[n][2], win[n][3])
          @windows[n].z = 30
          @windows[n].opacity = 0
        end
      end
      #--------------------------------------------------------------------------
      # * Atualização pós
      #--------------------------------------------------------------------------
      def continue_update
        if Input.trigger?(:B)
            RPG::SE.new(Lune_Custom_Config::Janela[$lune_custom_scene]['Sound']).play
            return_scene
        end
      end
      #--------------------------------------------------------------------------
      # * Finalização do processo
      #--------------------------------------------------------------------------
      def terminate
        @pics.each {|pic| pic.bitmap.dispose; pic.dispose} if @pics
        @windows.each {|pic| pic.dispose} if @windows
        super
      end
    end
    
    #==============================================================================
    # ** Lune_Custom_Window
    #------------------------------------------------------------------------------
    #  Esta janela desenha de acordo com o que é configurado pelo usuário.
    #==============================================================================
    
    class Lune_Custom_Window < Window_Base
    include Lune_Custom_Config
      #--------------------------------------------------------------------------
      # * Inicialização do processo
      #--------------------------------------------------------------------------
      def initialize
        super(0, 0, Graphics.width, Graphics.height)
        @var = $lune_custom_scene
        refresh
      end
      #--------------------------------------------------------------------------
      # * Atualização de imagens
      #--------------------------------------------------------------------------
      def refresh
        contents.clear
        create_variables
        create_texts
        create_pictures
        create_faces
        create_characters
      end
      #--------------------------------------------------------------------------
      # * Criação das variáveis
      #--------------------------------------------------------------------------
      def create_variables
      win = Janela[@var]['Variables']
        return if win.empty?
        for n in 0...win.size
          contents.font.size = win[n][3] unless win[n][3] == 0
          contents.font.color = text_color(win[n][4])
          contents.font.name = Janela[@var]['FontName'] unless Janela[@var]['FontName'].empty?
          draw_text_ex(win[n][1], win[n][2], $game_variables[win[n][0]].to_s)
          reset_font_settings
        end
      end
      #--------------------------------------------------------------------------
      # * Criação dos Textos
      #--------------------------------------------------------------------------
      def create_texts
      win = Janela[@var]['Texts']
        return if win.empty?
        for n in 0...win.size
          contents.font.size = win[n][3] unless win[n][3] == 0
          contents.font.color = text_color(win[n][4])
          contents.font.name = Janela[@var]['FontName'] unless Janela[@var]['FontName'].empty?
          draw_text_ex(win[n][1], win[n][2], win[n][0])
          reset_font_settings
        end
      end
      #--------------------------------------------------------------------------
      # * Renderização das Imagens
      #--------------------------------------------------------------------------
      def create_pictures
      win = Janela[@var]['Pictures']
        return if win.empty?
        @pics = Array.new
        for n in 0...win.size
          @pics[n] = Sprite.new
          @pics[n].bitmap = Cache.custom_win(win[n][0])
          win[n][3] == true ? @pics[n].z = 60 : @pics[n].z = 40
          @pics[n].x = win[n][1]
          @pics[n].y = win[n][2]
          @pics[n].opacity = 0
        end
      end
      #--------------------------------------------------------------------------
      # * Renderização das Faces
      #--------------------------------------------------------------------------
      def create_faces
      win = Janela[@var]['Faces']
        return if win.empty?
        for n in 0...win.size
          win[n][0] == 'actor' ? act = $game_actors[win[n][1]] : act = $game_party.members[win[n][1]]
          draw_actor_face(act, win[n][2], win[n][3])
        end
      end
      #--------------------------------------------------------------------------
      # * Renderização dos Personagens
      #--------------------------------------------------------------------------
      def create_characters
      win = Janela[@var]['Characters']
        return if win.empty?
        for n in 0...win.size
          win[n][0] == 'actor' ? act = $game_actors[win[n][1]] : act = $game_party.members[win[n][1]]
          draw_character(act.character_name, act.character_index, win[n][2], win[n][3])
        end
      end
      #--------------------------------------------------------------------------
      # * Desenho do texto com caracteres de controle
      #     x    : coordenada X
      #     y    : coordenada Y
      #     text : string de texto
      #--------------------------------------------------------------------------
      def draw_text_ex(x, y, text)
        text = convert_escape_characters(text)
        pos = {x: x, y: y, new_x: x, height: calc_line_height(text)}
        process_character(text.slice!(0, 1), text, pos) until text.empty?
      end
    end
    
    
    #==============================================================================
    # ** Cache
    #------------------------------------------------------------------------------
    #  Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
    # Para acelerar o carregamento e preservar memória, este módulo matém o
    # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
    # pré-existentes quando mesmo Bitmap é requerido novamente.
    #==============================================================================
    
    
    module Cache
      #--------------------------------------------------------------------------
      # * Carregamento dos gráficos de animação
      #     filename : nome do arquivo
      #     hue      : informações da alteração de tonalidade
      #--------------------------------------------------------------------------
      def self.custom_win(filename)
        load_bitmap("Graphics/Custom_Win/", filename)
      end
    end
    


    [box class=titlebg]
    Imagens
    [/box]
    Exemplo de como chamei a tela a seguir.
    Spoiler
    [close]

    Tela de namoro, foi feito para mostrar a maleabilidade do script.
    Coloquei as meninas da comunidade, espero que não se importem  s2 :3
    Spoiler
    [close]

    [box class=titlebg]
    Download
    [/box]

    Não necessário

    [box class=titlebg]
    Créditos e Avisos
    [/box]

    Raizen

04/01/2014 às 10:15 #1 Última edição: 04/01/2014 às 10:19 por LuRocha
eu te amo Raizen
Um maravilhoso script, pelo menos pra mim que ainda não manjo nada de Script ficou 100% maleável e fácil de entender e editar.

eu tenho uma dúvida, e se eu não quiser que apareça janela alguma?? só texto e variáveis??

EDIT:
deixei zero nas janelas e funcionou legal, eu com certeza usarei este script em meus projetos, mas sem janelas de windowskin, muito obrigado
Clique e conheça o meu canal - Canal RPG Maker Zone

Nice, que bom que tirou essa ideia do papel, Raizen. Vou usar também com certeza, até porque abre uma infinidade de possibilidades na hora de usar um menu ou sistema por eventos. Ah, o nível de usabilidade do script não está tão alto a ponto de merecer o difícil ali nas dificuldade haha




Nossa! Não é possível!

Parabéns Raizen! Mais um script excelente! Agora os scripters podem descansar um pouco! Realmente pode permitir que os que não sabem RGSS possam fazer suas próprias cenas, assim evitando aquela montanha de pedidos simples mas que consomem tempo...

Mais uma vez, parabéns, vou testar e dou um edit aqui.
~ Masked

Vamos lá ver o que consigo fazer com este script!

Parabéns!

Citação de: LuRocha online 04/01/2014 às 10:15
eu te amo Raizen
Um maravilhoso script, pelo menos pra mim que ainda não manjo nada de Script ficou 100% maleável e fácil de entender e editar.

eu tenho uma dúvida, e se eu não quiser que apareça janela alguma?? só texto e variáveis??

EDIT:
deixei zero nas janelas e funcionou legal, eu com certeza usarei este script em meus projetos, mas sem janelas de windowskin, muito obrigado
tb te amo s2, xD, enfim qualquer dúvida só mandar x).


Citação de: GuilhermeDL online 04/01/2014 às 10:28
Nice, que bom que tirou essa ideia do papel, Raizen. Vou usar também com certeza, até porque abre uma infinidade de possibilidades na hora de usar um menu ou sistema por eventos. Ah, o nível de usabilidade do script não está tão alto a ponto de merecer o difícil ali nas dificuldade haha
Ah eu não sei hsuAHS, é difícil saber quando está fácil ou difícil já que eu mexo com scripts, bom vlws manolo eu modifico lá a dificuldade k.

Citação de: Masked online 04/01/2014 às 12:22
Nossa! Não é possível!

Parabéns Raizen! Mais um script excelente! Agora os scripters podem descansar um pouco! Realmente pode permitir que os que não sabem RGSS possam fazer suas próprias cenas, assim evitando aquela montanha de pedidos simples mas que consomem tempo...

Mais uma vez, parabéns, vou testar e dou um edit aqui.

Veremos shuAHSu, dá pra fazer algumas coisas legais, ainda é meio limitado o script xD, mas as coisas simples podem ser feitas aqui sem problema.

Citação de: Lima online 04/01/2014 às 12:33
Vamos lá ver o que consigo fazer com este script!

Parabéns!
Qualquer dúvida e talz, só mandar.

Raizen, estou personalizando o script, eu gostaria de poder atualiza-lo junto com o resto do jogo, para que funcione tipo uma HUD que exibe dados de variáveis tipo HP, MP mas não atualiza, entra em uma scene e para todo o jogo e qualquer ação que estiver acontecendo. por exemplo, coloquei um evento paralelo para adicionar 1 a variável mas ela nao muda durante a exibição
Clique e conheça o meu canal - Canal RPG Maker Zone

05/01/2014 às 13:24 #7 Última edição: 05/01/2014 às 13:48 por Raizen
Ah isso é.. algo que tenho que ver para atualizar, vou modificar o script já já e te aviso, ai eu coloco essa função, ai no caso basta manter toda a parte acima do aqui começa o script intacto pra não perder suas config.


Edit: LuRocha, fiz um que atualiza a janela, então processos paralelos devem funcionar normalmente,
module Lune_Custom_Config
Janela = []


#=======================================================
#         Lune Custom Window
# Autor: Raizen
# Comunidade: www.centrorpg.com
# O script permite que uma janela seja criada seguindo 
# as especificações do usuário, assim mesmo sem conhecimento
# algum em scripts, é possível criar uma tela para auxiliar 
# nos sistemas por eventos.
#=======================================================

# Como o script permite infinitas Janelas a serem criadas, uma variável será
# quem irá decidir qual janela aparecerá e ela é essa.
# $lune_custom_scene
# para escolher a janela 3 por exemplo basta,
# Chamar Script: $lune_custom_scene = 3

# Para ativar a Janela personalizada
# Chamar Script: SceneManager.call(Lune_Custom_Scene)


# é possível criar inúmeras janelas seguindo o template, 
# leia atentamente.

# IMPORTANTE:

# Para qualquer campo em branco, deixe da seguinte maneira "",
# Exemplo, não tenho imagens para colocar então...
# 'Pictures' => "",

#===========================================================================
#---------------------------------------------------------------------------
#  Janela 0, Essa janela cria absolutamente nada :) (descrição da sua janela)
#---------------------------------------------------------------------------
#===========================================================================


Janela[0] = { #Coloque o ID da janela a sua escolha, Janela[id]

# tempo de Fadein, exemplo 'Fadein' => 10,
'Fadein' => 10, 

# Nome da fonte, "" para pegar a fonte padrão, Ex 'FontName' => "Comic Sans MS",
'FontName' => "", 

# Som a ser tocado ao sair da tela , Ex: 'Sound' => "Cancel2",
'Sound' => "Cancel2",

# Janelas criadas, seguindo o seguinte template,
# 'Windows' => [[posição x, posição y, largura, altura]],
# é possível colocar um número ilimitado de janelas, basta colocar virgula
# e abrir outro colchete, exemplo com 3 janelas,
# 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], [1, 2, 3, 4]],
# Depois da virgula pode pular linhas, ex:
# 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], 
#[1, 2, 3, 4]],
'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100]],

# Textos inseridos na janela, seguindo o template,
# 'Texts' => [["Texto", pos x, pos y, tamanho fonte (0 para padrão, 20), cor da fonte]],
# A cor da fonte é um número que é baseado na windowskin, veja as cores na windowskin.
# Assim como as janelas o procedimento é o mesmo para múltiplos textos.
'Texts' => [["Janela de Relacionamento", 0, 0, 0, 20],["Personagem1", 0, 200, 0, 0]],

# Variáveis inseridos na janela, seguindo o template,
# 'Variables' => [[numero da variavel, pos x, pos y, tamanho fonte(0 = padrão), cor fonte]],
# Ilimitadas variáveis, seguindo a mesma ideia dos demais.
'Variables' => [[1, 50, 70, 0, 1],[2, 50, 270, 20, 21]],

# Imagens inseridas na janela, seguindo o template,
# 'Pictures' => [["NomedaImagem", pos x, pos y, imagem superior ou inferior? true = superior, false = inferior]],
'Pictures' => [["ArrowDown", 200, 200, true],
["ArrowUp", 300, 200, true],
["ArrowLeft", 400, 200, true],
["ArrowRight", 300, 300, true]],

# Faces inseridas na janela, seguindo o template,
# 'Faces' => [['actor' ou 'party'(escolher se o id eh do ator ou da party), id do personagem, pos x, pos y]],
'Faces' => [['actor', 2, 200, 200], ['party', 0, 300, 300]],
# Faces inseridas na janela, seguindo o template,
# 'Faces' => [['actor' ou 'party', id do personagem, pos x, pos y]],
'Characters' => [['actor', 2, 300, 400], ['party', 3, 200, 300]],

}

#===========================================================================
#---------------------------------------------------------------------------
#===========================================================================



#===========================================================================
#---------------------------------------------------------------------------
#  Janela 1, Essa janela tem o sistema de namoro
#  Template reduzido
#---------------------------------------------------------------------------
#===========================================================================


Janela[1] = { 
'Fadein' => 10, 
'FontName' => "", 
'Sound' => "Cancel2",
#[x, y, largura, altura]
'Windows' => [[0, 0, 272, 208],
[272, 0, 272, 208],
[0, 208, 272, 208],
[272, 208, 272, 208]],
#["Texto", x, y, tamanho fonte, cor fonte]
'Texts' => [["Janela de Relacionamento", 120, 0, 0, 30],
["Natty", 0, 30, 0, 0],
["May", 272, 30, 0, 0],
["KaHh", 0, 238, 0, 0],
["Pretty", 272, 238, 0, 0],
["Relacionamento", 100, 50, 0, 0],
["Relacionamento", 372, 50, 0, 0],
["Relacionamento", 100, 258, 0, 0],
["Relacionamento", 372, 258, 0, 0],
["/ 100", 140, 80, 0, 0],
["/ 100", 412, 80, 0, 0],
["/ 100", 140, 288, 0, 0],
["/ 100", 412, 288, 0, 0],
],
#[num variavel, x, y, tamanho fonte, cor fonte]
'Variables' => [
[1, 100, 80, 0, 20],
[2, 372, 80, 0, 20],
[3, 100, 288, 0, 20],
[4, 372, 288, 0, 20],],
#["NomeImagem", x, y, Imagemsuperior?]
'Pictures' => "",
# ['actor' ou 'party', id, x, y]
'Faces' => [['actor', 2, 0, 50], 
['actor', 6, 0, 258], 
['actor', 8, 272, 50], 
['actor', 9, 272, 258],],
# ['actor' ou 'party', id, x, y]
'Characters' => "",

}


#===========================================================================
#---------------------------------------------------------------------------
#===========================================================================


end
#==============================================================================
#              TEMPLATE, NÃO MODIFIQUE, UTILIZE CASO SUA
#              JANELA PAROU DE FUNCIONAR.

=begin

#===========================================================================
#---------------------------------------------------------------------------
#  Janela 0, Essa janela cria absolutamente nada :) (descrição da sua janela)
#---------------------------------------------------------------------------
#===========================================================================

Janela[0] = { #Coloque o ID da janela a sua escolha, Janela[id]

# tempo de Fadein, exemplo 'Fadein' => 10,
'Fadein' => 10, 

# Nome da fonte, "" para pegar a fonte padrão, Ex 'FontName' => "Comic Sans MS",
'FontName' => "", 

# Som a ser tocado ao sair da tela , Ex: 'Sound' => "Cancel2",
'Sound' => "Cancel2",

# Janelas criadas, seguindo o seguinte template,
# 'Windows' => [[posição x, posição y, largura, altura]],
# é possível colocar um número ilimitado de janelas, basta colocar virgula
# e abrir outro colchete, exemplo com 3 janelas,
# 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], [1, 2, 3, 4]],
# Depois da virgula pode pular linhas, ex:
# 'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100], 
#[1, 2, 3, 4]],
'Windows' => [[0, 0, 100, 100],[100, 100, 100, 100]],

# Textos inseridos na janela, seguindo o template,
# 'Texts' => [["Texto", pos x, pos y, tamanho fonte (0 para padrão, 20), cor da fonte]],
# A cor da fonte é um número que é baseado na windowskin, veja as cores na windowskin.
# Assim como as janelas o procedimento é o mesmo para múltiplos textos.
'Texts' => [["Janela de Relacionamento", 0, 0, 0, 20],["Personagem1", 0, 200, 0, 0]],

# Variáveis inseridos na janela, seguindo o template,
# 'Variables' => [[numero da variavel, pos x, pos y, tamanho fonte(0 = padrão), cor fonte]],
# Ilimitadas variáveis, seguindo a mesma ideia dos demais.
'Variables' => [[1, 50, 70, 0, 1],[2, 50, 270, 20, 21]],

# Imagens inseridas na janela, seguindo o template,
# 'Pictures' => [["NomedaImagem", pos x, pos y, imagem superior ou inferior? true = superior, false = inferior]],
'Pictures' => [["ArrowDown", 200, 200, true],
["ArrowUp", 300, 200, true],
["ArrowLeft", 400, 200, true],
["ArrowRight", 300, 300, true]],

# Faces inseridas na janela, seguindo o template,
# 'Faces' => [['actor' ou 'party'(escolher se o id eh do ator ou da party), id do personagem, pos x, pos y]],
'Faces' => [['actor', 2, 200, 200], ['party', 0, 300, 300]],
# Faces inseridas na janela, seguindo o template,
# 'Faces' => [['actor' ou 'party', id do personagem, pos x, pos y]],
'Characters' => [['actor', 2, 300, 400], ['party', 3, 200, 300]],

}
#===========================================================================
#---------------------------------------------------------------------------
#===========================================================================


=end



#==============================================================================
#==============================================================================

#                  AQUI COMEÇA O SCRIPT

#==============================================================================
#==============================================================================
$lune_custom_scene = 0


#==============================================================================
# ** Lune_Custom_Scene
#------------------------------------------------------------------------------
#  Esta classe executa os processos de imagem pela sua janela personalizada
#==============================================================================

class Lune_Custom_Scene < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def initialize
    $game_player.straighten
    $game_map.refresh
    create_windows
    @fadeout = false
    @speed = Lune_Custom_Config::Janela[$lune_custom_scene]['Fadein']
    super
  end
  #--------------------------------------------------------------------------
  # * Atualização do processo
  #--------------------------------------------------------------------------
  def update
    super
    $game_map.update(true)
    $game_timer.update
    @main_window.refresh if Graphics.frame_count % 3 == 1
    @main_window.contents_opacity >= 255 ? continue_update : fadein    
  end
  #--------------------------------------------------------------------------
  # * Efeito de transição de tela
  #--------------------------------------------------------------------------
  def fadein
    @main_window.contents_opacity += @speed
    @pics.each {|pic| pic.opacity += @speed} if @pics
    @windows.each {|pic| pic.opacity += @speed} if @windows
  end
  #--------------------------------------------------------------------------
  # * Criação das Janelas
  #--------------------------------------------------------------------------
  def create_windows
    win = Lune_Custom_Config::Janela[$lune_custom_scene]['Windows']
    @main_window = Lune_Custom_Window.new
    @main_window.opacity = 0
    @main_window.contents_opacity = 0
    @main_window.z = 50
    return if win.empty?
    @windows = Array.new
    for n in 0...win.size
      @windows[n] = Window_Base.new(win[n][0], win[n][1], win[n][2], win[n][3])
      @windows[n].z = 30
      @windows[n].opacity = 0
    end
  end
  #--------------------------------------------------------------------------
  # * Atualização pós
  #--------------------------------------------------------------------------
  def continue_update
    if Input.trigger?(:B)
        RPG::SE.new(Lune_Custom_Config::Janela[$lune_custom_scene]['Sound']).play
        return_scene
    end
  end
  #--------------------------------------------------------------------------
  # * Finalização do processo
  #--------------------------------------------------------------------------
  def terminate
    @pics.each {|pic| pic.bitmap.dispose; pic.dispose} if @pics
    @windows.each {|pic| pic.dispose} if @windows
    super
  end
end

#==============================================================================
# ** Lune_Custom_Window
#------------------------------------------------------------------------------
#  Esta janela desenha de acordo com o que é configurado pelo usuário.
#==============================================================================

class Lune_Custom_Window < Window_Base
include Lune_Custom_Config
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, Graphics.width, Graphics.height)
    @var = $lune_custom_scene
    create_pictures
    refresh
  end
  #--------------------------------------------------------------------------
  # * Atualização de imagens
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    create_variables
    create_texts
    create_faces
    create_characters
  end
  #--------------------------------------------------------------------------
  # * Criação das variáveis
  #--------------------------------------------------------------------------
  def create_variables
  win = Janela[@var]['Variables']
    return if win.empty?
    for n in 0...win.size
      contents.font.size = win[n][3] unless win[n][3] == 0
      contents.font.color = text_color(win[n][4])
      contents.font.name = Janela[@var]['FontName'] unless Janela[@var]['FontName'].empty?
      draw_text_ex(win[n][1], win[n][2], $game_variables[win[n][0]].to_s)
      reset_font_settings
    end
  end
  #--------------------------------------------------------------------------
  # * Criação dos Textos
  #--------------------------------------------------------------------------
  def create_texts
  win = Janela[@var]['Texts']
    return if win.empty?
    for n in 0...win.size
      contents.font.size = win[n][3] unless win[n][3] == 0
      contents.font.color = text_color(win[n][4])
      contents.font.name = Janela[@var]['FontName'] unless Janela[@var]['FontName'].empty?
      draw_text_ex(win[n][1], win[n][2], win[n][0])
      reset_font_settings
    end
  end
  #--------------------------------------------------------------------------
  # * Renderização das Imagens
  #--------------------------------------------------------------------------
  def create_pictures
  win = Janela[@var]['Pictures']
    return if win.empty?
    @pics = Array.new
    for n in 0...win.size
      @pics[n] = Sprite.new
      @pics[n].bitmap = Cache.custom_win(win[n][0])
      win[n][3] == true ? @pics[n].z = 60 : @pics[n].z = 40
      @pics[n].x = win[n][1]
      @pics[n].y = win[n][2]
      @pics[n].opacity = 0
    end
  end
  #--------------------------------------------------------------------------
  # * Renderização das Faces
  #--------------------------------------------------------------------------
  def create_faces
  win = Janela[@var]['Faces']
    return if win.empty?
    for n in 0...win.size
      win[n][0] == 'actor' ? act = $game_actors[win[n][1]] : act = $game_party.members[win[n][1]]
      draw_actor_face(act, win[n][2], win[n][3])
    end
  end
  #--------------------------------------------------------------------------
  # * Renderização dos Personagens
  #--------------------------------------------------------------------------
  def create_characters
  win = Janela[@var]['Characters']
    return if win.empty?
    for n in 0...win.size
      win[n][0] == 'actor' ? act = $game_actors[win[n][1]] : act = $game_party.members[win[n][1]]
      draw_character(act.character_name, act.character_index, win[n][2], win[n][3])
    end
  end
  #--------------------------------------------------------------------------
  # * Desenho do texto com caracteres de controle
  #     x    : coordenada X
  #     y    : coordenada Y
  #     text : string de texto
  #--------------------------------------------------------------------------
  def draw_text_ex(x, y, text)
    text = convert_escape_characters(text)
    pos = {x: x, y: y, new_x: x, height: calc_line_height(text)}
    process_character(text.slice!(0, 1), text, pos) until text.empty?
  end
end


#==============================================================================
# ** Cache
#------------------------------------------------------------------------------
#  Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
# Para acelerar o carregamento e preservar memória, este módulo matém o
# objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
# pré-existentes quando mesmo Bitmap é requerido novamente.
#==============================================================================


module Cache
  #--------------------------------------------------------------------------
  # * Carregamento dos gráficos de animação
  #     filename : nome do arquivo
  #     hue      : informações da alteração de tonalidade
  #--------------------------------------------------------------------------
  def self.custom_win(filename)
    load_bitmap("Graphics/Custom_Win/", filename)
  end
end

Citação de: Raizen online 05/01/2014 às 13:24
Ah isso é.. algo que tenho que ver para atualizar, vou modificar o script já já e te aviso, ai eu coloco essa função, ai no caso basta manter toda a parte acima do aqui começa o script intacto pra não perder suas config.


Edit: LuRocha, fiz um que atualiza a janela, então processos paralelos devem funcionar normalmente,

Muito obrigado por se incomodar, testei e está atualizando, acho que pra maioria é melhor da primeira forma como foi apresentado para servir para criar um menu personalizado, mas no meu caso eu gostaria de usar uma série de variáveis sem as janelas sobre uma HUD por imagens durante um sistema de batalha por eventos, então ao invés de uma cena separada, fosse apenas exibição dos valores e strings e os eventos funcionando normalmente sem interrupções.
Clique e conheça o meu canal - Canal RPG Maker Zone

 Raizen e seus scripts que sempre visam uma boa customização!  :wow: Testei ele aqui rapidinho e gostei bastante do resultado, parabéns pelo ótimo script! Consigo até ver as diversas possibilidades ao usar ele, haha!
Clique nas imagens p/ visualizar as aulas