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

Problemas de Sincronia

Iniciado por JVSodre, 13/10/2017 às 23:40

13/10/2017 às 23:40 Última edição: 14/10/2017 às 00:18 por JVSodre
Oie, Poisé Achei um Script na Internet de Menu, Até ai Tudo Bem, Modifiquei e Arrumei do Jeito Que eu Queria. Porém Quando eu Criei Uma Window e Scene tudo deu Certo, Na Scene Abre uma Janela e Uma Imagem de BackGround, Coloquei um Comando Que Quando Apertasse "ESC" (Usei um FullKeyBoard Script para Ativar a Tecla, Pois não sabia Como Voltava Para o Menu) Voltasse ao Menu. Porém Quando eu Entro nessa Scene pelo Menu Da um Bug que 1 seg antes Aparce o BackGround Antes da Janela e Quando Sai (Vai Para o Menu) o Contrário. Queria Saber se tem um jeito de Arrumar isso e deixar eles Abrirem e Fecharem Juntos

#-------------------------------------------------------------------------------------------
Window_Fundo:

class Window_Fundo < Window_Base
  
#---------------------------------------------------------------------------
# Cria a Janela
#---------------------------------------------------------------------------
  
  def initialize()
    super(0,0,544,417)
  end

end


#----------------------------------------------------------------------------------------------
Scene_Folio_Magi

#-------------------------------------------------------------------------
# Cria a Classe
#-------------------------------------------------------------------------
class Scene_Folio_Magi < Scene_Base
  
#--------------------------------------------------------------------------
# Chama todos Processos
#--------------------------------------------------------------------------
  
  def start
    super
    create_folio_magi_window
  end
  
#--------------------------------------------------------------------------
# Chama a Janela
#--------------------------------------------------------------------------

  def create_folio_magi_window
  @window = Window_Fundo.new
  @my_sprite = Sprite.new
  @my_sprite.bitmap = Bitmap.new("Graphics/Pictures/Papel")
  @my_sprite.z = 3
end

#--------------------------------------------------------------------------
# Volta ao Menu
#--------------------------------------------------------------------------

def update
if Input.trigger?(Key::Esc)
 SceneManager.return
end
end
#-------------------------------------------------------------------------
#Fecha a Classe
#-------------------------------------------------------------------------
end


#---------------------------------------------------------------------------------------------------
Script Menu:

folio = "Folio Magi" 
class Window_MenuCommand < Window_Command 
#-------------------------------------------------------------------------- 
# * Inicializar a posição de seleção do comando (Método de classe) 
#-------------------------------------------------------------------------- 
def self.init_command_position 
@@last_command_symbol = nil 
end 
#-------------------------------------------------------------------------- 
# * Inicialização de Objetos
#-------------------------------------------------------------------------- 
def initialize 
super(0, 0) 
select_last 
end 
#-------------------------------------------------------------------------- 
# * Obter largura da janela
#-------------------------------------------------------------------------- 
def window_width 
return 160
end 
#-------------------------------------------------------------------------- 
# * Obter número de linhas para mostrar (NUMERO DE OPÇÔES NO MENU)
#-------------------------------------------------------------------------- 
def visible_line_number 
return 8
end 
#-------------------------------------------------------------------------- 
# * Criar Lista de Comando
#-------------------------------------------------------------------------- 
def make_command_list 
add_main_commands 
add_formation_command 
add_original_commands 
add_save_command 
add_game_end_command 
end 
#-------------------------------------------------------------------------- 
# * Adicionar comandos principais à lista
#-------------------------------------------------------------------------- 
def add_main_commands 
add_command(Vocab::item, :item, main_commands_enabled) 
add_command("Folio Magi", :folio, main_commands_enabled)
add_command("Feitiços", :feitiços, main_commands_enabled)
end 
#-------------------------------------------------------------------------- 
# * Adicionar Formação à Lista de Comando 
#-------------------------------------------------------------------------- 
def add_formation_command 
end 
#-------------------------------------------------------------------------- 
# * Para adicionar comandos originais 
#-------------------------------------------------------------------------- 
def add_original_commands 

end 
#-------------------------------------------------------------------------- 
# * Adicionar Salvar na Lista de Comando
#-------------------------------------------------------------------------- 
def add_save_command 
add_command(Vocab::save, :save, save_enabled)
end 
#-------------------------------------------------------------------------- 
# * Adicionar Exit Game à Lista de Comando
#-------------------------------------------------------------------------- 
def add_game_end_command 
add_command(Vocab::game_end , :game_end, main_commands_enabled)
end  
#-------------------------------------------------------------------------- 
# * Obter o estado de ativação dos comandos principais
#-------------------------------------------------------------------------- 
def main_commands_enabled 
$game_party.exists 
end 
#-------------------------------------------------------------------------- 
# * Obtenha o estado de ativação da Formatação
#-------------------------------------------------------------------------- 
def formation_enabled 
$game_party.members.size >= 2 && !$game_system.formation_disabled 
end 
#-------------------------------------------------------------------------- 
# * Obtenha o estado de ativação do Save
#-------------------------------------------------------------------------- 
def save_enabled 
!$game_system.save_disabled
end 
#-------------------------------------------------------------------------- 
# * O botão Processar quando OK é pressionado
#-------------------------------------------------------------------------- 
def process_ok 
@@last_command_symbol = current_symbol 
super 
end 
#-------------------------------------------------------------------------- 
# * Restaurar posição de seleção anterior 
#-------------------------------------------------------------------------- 
def select_last 
select_symbol(@@last_command_symbol) 
end 
end 

#============================================================================== 
# ■ Scene_Menu 
#------------------------------------------------------------------------------ 
#  É uma classe que processa a tela do menu.
#============================================================================== 

class Scene_Menu < Scene_MenuBase 
#-------------------------------------------------------------------------- 
# ● Iniciar o processamento
#-------------------------------------------------------------------------- 
def start 
super 
create_command_window 
create_gold_window 
create_status_window 
end 
#-------------------------------------------------------------------------- 
# ● Janela Criar comando 
#-------------------------------------------------------------------------- 
def create_command_window 
@command_window = Window_MenuCommand.new 
@command_window.set_handler(:item, method(:command_item)) 
@command_window.set_handler(:skill, method(:command_personal)) 
@command_window.set_handler(:equip, method(:command_personal)) 
@command_window.set_handler(:status, method(:command_personal)) 
@command_window.set_handler(:formation, method(:command_formation))  
@command_window.set_handler(:cancel, method(:return_scene)) 
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:title_call))
@command_window.set_handler(:folio, method(:call_folio))
@command_window.set_handler(:feitiços, method(:call_feitiços))
end 
#--------------------------------------------------------------------------
# Chama a Scene Feitiços
#--------------------------------------------------------------------------
def call_feitiços
SceneManager.call(Scene_Skill)  
  end

#--------------------------------------------------------------------------
# Chama a Scena Folio
#--------------------------------------------------------------------------
def call_folio
SceneManager.call(Scene_Folio_Magi)
end
#--------------------------------------------------------------------------
# Vai Para o Menu Principal
#--------------------------------------------------------------------------
def title_call
SceneManager.call(Scene_Title)  
end
#-------------------------------------------------------------------------- 
# ● Criar janela de ouro
#-------------------------------------------------------------------------- 
def create_gold_window 
@gold_window = Window_Gold.new 
@gold_window.x = 0
@gold_window.y = Graphics.height - @gold_window.height 
end 
#-------------------------------------------------------------------------- 
# ● Criar janela de status (Removido) (@status_window = Window_MenuStatus.new(@command_window.width, 0) )
#-------------------------------------------------------------------------- 
def create_status_window 
end 
#-------------------------------------------------------------------------- 
# ● Comando [Item] 
#-------------------------------------------------------------------------- 
def command_item 
SceneManager.call(Scene_Item) 
end 
#-------------------------------------------------------------------------- 
# ● Comando [Habilidade] [Equipamento] [Status] 
#-------------------------------------------------------------------------- 
def command_personal 
@status_window.select_last 
@status_window.activate 
@status_window.set_handler(:ok, method(:on_personal_ok)) 
@status_window.set_handler(:cancel, method(:on_personal_cancel)) 
end 
#-------------------------------------------------------------------------- 
# ● Comando [Ordenar]
#-------------------------------------------------------------------------- 
def command_formation 
@status_window.select_last 
@status_window.activate 
@status_window.set_handler(:ok, method(:on_formation_ok)) 
@status_window.set_handler(:cancel, method(:on_formation_cancel)) 
end 
#-------------------------------------------------------------------------- 
# ● Comando [Salvar]
#-------------------------------------------------------------------------- 
def command_save 
SceneManager.call(Scene_Save) 
end 
#-------------------------------------------------------------------------- 
# ● Comando [Fim do jogo]
#-------------------------------------------------------------------------- 
def command_game_end 
SceneManager.call(Scene_End) 
end 
#-------------------------------------------------------------------------- 
# ● Comando pessoal [decisão] 
#-------------------------------------------------------------------------- 
def on_personal_ok 
case @command_window.current_symbol 
when :skill 
SceneManager.call(Scene_Skill) 
when :equip 
SceneManager.call(Scene_Equip) 
when :status 
SceneManager.call(Scene_Status) 
end 
end 
#-------------------------------------------------------------------------- 
# ● Comando pessoal [Sair]
#-------------------------------------------------------------------------- 
def on_personal_cancel 
@status_window.unselect 
@command_window.activate 
end 
#-------------------------------------------------------------------------- 
# ● Classificar [decidir]
#-------------------------------------------------------------------------- 
def on_formation_ok 
if @status_window.pending_index >= 0 
$game_party.swap_order(@status_window.index, 
@status_window.pending_index) 
@status_window.pending_index = -1 
@status_window.redraw_item(@status_window.index) 
else 
@status_window.pending_index = @status_window.index 
end 
@status_window.activate 
end 
#-------------------------------------------------------------------------- 
# ● Classificar [Cancelar]
#-------------------------------------------------------------------------- 
def on_formation_cancel 
if @status_window.pending_index >= 0 
@status_window.pending_index = -1 
@status_window.activate 
else 
@status_window.unselect 
@command_window.activate 
end 
end 
end

#----------------------------------------------------------------------------------------------
Script FullKeyBoard
#==================================================================
# Full Keyboard Module
# Autor: Raizen
# Comunidade: centrorpg.com
# Compatibilidade: RMVX, RMVXA, RMXP
#==================================================================
# Instruções:
# Para inserir uma tecla basta olhar a tabela abaixo
# e utilizar o comando de tecla dos scripts normalmente que são.

# Esse é como um gatilho, ao apertar ele indica que foi apertado 
# uma vez, e só volta a retornar verdadeiro caso seja solto a tecla
# e pressionado novamente
# Input.trigger?(tecla)

# Esse é o identico ao dos eventos, ele indica se a tecla está pressionada. 
# Input.press?(tecla)

# Esse é o utilizado nas lojas e menus, ele indica verdadeiro no momento
# que se pressiona, e indica falso até um certo tempo, depois volta a indicar
# verdadeiro.
# Input.repeat?(tecla)

# Para utilizar é bem simples, basta olhar a tabela abaixo e colocar
# um Key:: na frente, por exemplo
# Input.trigger?(Key::F)   => indica se foi pressionado a tecla F
# Input.press?(Key::Ctrl)  => indica se o Ctrl está pressionado
# Input.repeat?(Key::K6)   => indica se o numerador 6 foi pressionado
# e fará a verificação de quanto tempo ele está pressionado.

# Coloque esse código nas Condições dos eventos, 4ª aba das condições, Script:
# Input.trigger?(Key::valor da tecla abaixo) ou 
# Input.press?(Key::valor da tecla abaixo) ou
# Input.repeat?(Key::valor da tecla abaixo)

#==================================================================
module Key
K0 = 0x30 #Tecla 0 
K1 = 0x31 #Tecla 1 
K2 = 0x32 #Tecla 2 
K3 = 0x33 #Tecla 3 
K4 = 0x34 #Tecla 4 
K5 = 0x35 #Tecla 5 
K6 = 0x36 #Tecla 6 
K7 = 0x37 #Tecla 7 
K8 = 0x38 #Tecla 8 
K9 = 0x39 #Tecla 9
Ced = 0xBA # Tecla Ç
A = 0x41 #Tecla A 
B = 0x42 #Tecla B 
C = 0x43 #Tecla C 
D = 0x44 #Tecla D 
E = 0x45 #Tecla E 
F = 0x46 #Tecla F 
G = 0x47 #Tecla G 
H = 0x48 #Tecla H 
I = 0x49 #Tecla I 
J = 0x4A #Tecla J 
K = 0x4B #Tecla K 
L = 0x4C #Tecla L 
M = 0x4D #Tecla M 
N = 0x4E #Tecla N 
O = 0x4F #Tecla O 
P = 0x50 #Tecla P 
Q = 0x51 #Tecla Q 
R = 0x52 #Tecla R 
S = 0x53 #Teclar S 
T = 0x54 #Tecla T 
U = 0x55 #Tecla U 
V = 0x56 #Tecla V 
W = 0x57 #Tecla W 
X = 0x58 #Tecla X 
Y = 0x59 #Tecla Y 
Z = 0x5A #Tecla Z 
Mouse1 = 0x01 #Botão esquerdo do mouse 
Mouse2 = 0x02 #Botão direito do mouse 
Cancel = 0x03 #Cancelar/interromper processamento 
Mousewheel = 0x04 #Botão do meio do mouse (em um mouse de três botões)  
Mouse3 = 0x05 #Windows 2000/XP: Botão X1 do mouse 
Mouse4 = 0x06 #Windows 2000/XP: Botão X2 do mouse 
Back = 0x08 #Tecla BACKSPACE 
Tab = 0x09 #Tecla TAB 
Clear = 0x0C #Tecla CLEAR 
Enter = 0x0D #Tecla ENTER 
Shift = 0x10 #Tecla SHIFT 
Ctrl = 0x11 #Tecla CTRL 
Alt = 0x12 #Tecla ALT 
Pause = 0x13 #Tecla PAUSE 
Caps = 0x14 #Tecla CAPS LOCK 
Esc = 0x1B #Tecla ESC 
Space = 0x20 #Tecla SPACEBAR (Espaço) 
Pageup = 0x21 #Tecla PAGE UP 
Pagedown = 0x22 #Tecla PAGE DOWN 
End = 0x23 #Tecla END 
Home = 0x24 #Tecla HOME 
Left = 0x25 #Tecla LEFT ARROW (Seta para a esquerda) 
Up = 0x26 #Tecla UP ARROW (Seta para cima) 
Right = 0x27 #Tecla RIGHT ARROW (Seta para a direita) 
Down = 0x28 #Tecla DOWN ARROW (Seta para baixo) 
Select = 0x29 #Tecla SELECT 
Print = 0x2A #Tecla PRINT 
Execute = 0x2B #Tecla EXECUTE 
Print = 0x2C #Tecla PRINT SCREEN 
Ins = 0x2D #Tecla INS 
Del = 0x2E #Tecla DEL 
Help = 0x2F #Tecla HELP 
Lw = 0x5B #Tecla Windows do lado esquerdo 
Lr = 0x5C #Tecla Windows do lado direito 
Apps = 0x5D #Menu de contexto 
Sleep = 0x5F #Tecla Sleep 
Num0 = 0x60 #Tecla 0 (T. numérico) 
Num1 = 0x61 #Tecla 1 (T. numérico) 
Num2 = 0x62 #Tecla 2 (T. numérico) 
Num3 = 0x63 #Tecla 3 (T. numérico) 
Num4 = 0x64 #Tecla 4 (T. numérico) 
Num5 = 0x65 #Tecla 5 (T. numérico) 
Num6 = 0x66 #Tecla 6 (T. numérico) 
Num7 = 0x67 #Tecla 7 (T. numérico) 
Num8 = 0x68 #Tecla 8 (T. numérico) 
Num9 = 0x69 #Tecla 9 (T. numérico) 
NumX = 0x6A #Tecla Multiplicar 
NumA = 0x6B #Tecla Adicionar 
NumS = 0x6C #Tecla Separador 
NumM = 0x6D #Tecla Subtrair 
Dec = 0x6E #Tecla Decimal 
Div = 0x6F #Tecla Dividir 
F1 = 0x70 #Tecla F1 
F2 = 0x71 #Tecla F2 
F3 = 0x72 #Tecla F3 
F4 = 0x73 #Tecla F4 
F5 = 0x74 #Tecla F5 
F6 = 0x75 #Tecla F6 
F7 = 0x76 #Tecla F7 
F8 = 0x77 #Tecla F8 
F9 = 0x78 #Tecla F9 
F10 = 0x79 #Tecla F10 
F11 = 0x7A #Tecla F11 
F12 = 0x7B #Tecla F12 
NUMLOCK = 0x90 #Tecla NUM LOCK 
SCROLL = 0x91 #Tecla SCROLL LOCK 
end


module Input
  @trigger_keys = []
  @index = []
  GetKeyState = Win32API.new("user32","GetAsyncKeyState",'i','i')
  module_function
  def press(key)
    GetKeyState.call(key) != 0
  end
  def trigger(key)
    unless GetKeyState.call(key) == 0
     @trigger_keys.include?(key) ? (return false) : @trigger_keys.push(key)
     return true
    else
      @trigger_keys.delete(key) if @trigger_keys.include?(key)
      return false
    end
  end
  def repeat(key)
    unless GetKeyState.call(key) == 0
      @trigger_keys.push(key) unless @trigger_keys.include?(key) 
      index = @trigger_keys.index(key)
      @index[index] = 0 unless @index[index]
      @index[index] += 1
      return true if @index[index] == 1
      @index[index] >= 30 && @index[index] % 4 == 1 ? (return true) : (return false)
    else
      index = @trigger_keys.index(key) if @trigger_keys.include?(key)
      @index[index] = nil if index
    end
  end
end
class << Input
  alias raizen_trigger? trigger?
  alias raizen_repeat? repeat?
  alias raizen_press? press?
  def trigger?(key)
    raizen_trigger?(key) == false ? (trigger(key) if key.is_a?(Integer)) : true
  end
  def repeat?(key)
    raizen_repeat?(key) == false ? (repeat(key) if key.is_a?(Integer)) : true
  end
  def press?(key)
    raizen_press?(key) == false ? (press(key) if key.is_a?(Integer)) : true
  end
end
~Desenvolvendo Um Jogo de RPG Dentro de Hogwarts, Uma Escola de Magia e Bruxaria, Qualquer Ideia ou Ajuda Será Bem Vinda~

Citação de: JVSodre online 13/10/2017 às 23:40
[...] Porém Quando eu Criei Uma Window e Scene tudo deu Certo [...]
Era para dar errado?  :derp:


Bom, pelo que me lembro e parece ser teu problema, duas Scenes não podem coexistir. Para uma nova entrar, a atual deve sair. Então não há como "eles abrirem e fecharem juntos", se é às Scenes que se refere. Prova disso são as telas de Items, Skills e Status do menu, que precisam herdar a Scene_MenuBase para poder trocar informações com o menu principal. Tu pode olhar como elas são chamadas e fazer de modo semelhante.

Citação de: King Gerar online 14/10/2017 às 07:16
Citação de: JVSodre online 13/10/2017 às 23:40
[...] Porém Quando eu Criei Uma Window e Scene tudo deu Certo [...]
Era para dar errado?  :derp:


Bom, pelo que me lembro e parece ser teu problema, duas Scenes não podem coexistir. Para uma nova entrar, a atual deve sair. Então não há como "eles abrirem e fecharem juntos", se é às Scenes que se refere. Prova disso são as telas de Items, Skills e Status do menu, que precisam herdar a Scene_MenuBase para poder trocar informações com o menu principal. Tu pode olhar como elas são chamadas e fazer de modo semelhante.

Então a Scene que eu Criei deve Herdar da Scene_MenuBase e não da Scene_Base?
~Desenvolvendo Um Jogo de RPG Dentro de Hogwarts, Uma Escola de Magia e Bruxaria, Qualquer Ideia ou Ajuda Será Bem Vinda~