Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


    Lição 8.3 - Scenes - As janelas Especiais e a reconfiguração da Scene

    avatar
    Nothing
    Iniciante
    Iniciante


    Mensagens : 43
    Créditos : 8

    Lição 8.3 - Scenes - As janelas Especiais e a reconfiguração da Scene Empty Lição 8.3 - Scenes - As janelas Especiais e a reconfiguração da Scene

    Mensagem por Nothing Qua Jan 05, 2011 8:29 am

    Olá amigos !! Desculpem a demora, mas tenho trabalhado muito e não tenho
    tido tempo pra nada. resolvi dar um jeito de terminar logo com este
    menu para que possamos aprender mais, acho que este assunto está muito
    massante sem uma necessidade real. Devido à quantidade de PMs que eu
    tenho recebido sobre coisas que, se as pessoas parassem para ler com
    atenção as aulas, saberiam resolver, e devido a certos Makers que acham
    que estão me fazendo um favor atrapalhando o desenrolar das aulas,
    terminarei o menu, e depois disso passaremos para uma nova fase. Vamos
    ao menu então:

    Lição passada eu pedi que fizessem a janela de Atributos do herói e
    a janela de Equipamento. Vários de vocês, como o morzan, tiveram
    facilidade, e a maioria não conseguiu nada. então, aqui está o código
    das janelas:

    Código:

    class Window_Equipamento < Window_Base
    def initialize(actor)
    super(0, 0, 240, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @actor = actor
    refresh
    end
    def refresh
    self.contents.clear
    draw_item_name($data_weapons[@actor.weapon_id], 0, 0)
    draw_item_name($data_armors[@actor.armor1_id], 0, 32)
    draw_item_name($data_armors[@actor.armor2_id], 0, 64)
    draw_item_name($data_armors[@actor.armor3_id], 0, 96)
    draw_item_name($data_armors[@actor.armor4_id], 0, 128)
    end
    end
    #==============================================================================
    class Window_Status2 < Window_Base
    def initialize(actor)
    super(0, 0, 240, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @actor = actor
    refresh
    end
    def refresh
    self.contents.clear
    draw_actor_parameter(@actor, 0, 0, 0)
    draw_actor_parameter(@actor, 0, 21, 1)
    draw_actor_parameter(@actor, 0, 42, 2)
    draw_actor_parameter(@actor, 0, 63, 3)
    draw_actor_parameter(@actor, 0, 84, 4)
    draw_actor_parameter(@actor, 0, 105, 5)
    draw_actor_parameter(@actor, 0, 126, 6)
    end
    end


    Peço a todos que fizeram as janelas que renomeiem para os nomes das do exemplo, para evitarmos erros.

    Todos conseguiram configurar a posição das janelas? Não? Bem, aqui
    vai então o código completo do procedimento main da Scene, para que
    vocês tenham uma idéia:

    Código:

    def main
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Salvar"
    s5 = "Fim de Jogo"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5])
    @command_window.index = @menu_index
    @command_window.x = 640 - 160
    @command_window.y = 192
    if $game_party.actors.size == 0
    @command_window.disable_item(0)
    @command_window.disable_item(1)
    @command_window.disable_item(2)
    @command_window.disable_item(3)
    end
    if $game_system.save_disabled
    @command_window.disable_item(4)
    end
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 640 - @playtime_window.width
    @steps_window = Window_Steps.new
    @steps_window.x = 640 - @steps_window.width
    @steps_window.y = 64
    @gold_window = Window_Gold.new
    @gold_window.x = 640 - @gold_window.width
    @gold_window.y = 128

    #@mapname_window = Window_Mapname.new
    #@mapname_window.y = 480 - 96
    @status_window = Window_Hero_Status.new($game_party.actors[0])
    @status_window.y = 0
    @equip_window = Window_Equipamento.new($game_party.actors[0])
    @equip_window.y = 192
    @stats_window = Window_Status2.new($game_party.actors[0])
    @stats_window.x = 240
    @stats_window.y = 192
    #@dummy_window = Window_Dummy.new($game_party.actors[0])
    #@dummy_window.x = 320
    Graphics.transition
    loop do
    Graphics.update
    Input.update
    update
    if $scene != self
    break
    end
    end
    Graphics.freeze

    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose

    @status_window.dispose
    #@mapname_window.dispose
    @equip_window.dispose
    @stats_window.dispose
    #@dummy_window.dispose
    end


    Observe que já há a declaração das janelas com o nome do mapa e
    com a janela de ataque do SBAS. elas estão comentadas, para evitar
    erros. Seu menu deve estar assim agora:

    Lição 8.3 - Scenes - As janelas Especiais e a reconfiguração da Scene Image047

    Criar uma janela que mostre o nome do mapa

    O RMXP tem muita coisa literalmente escondida. Seria de uma simplicidade
    enorme haver uma função/procedimento que mostrasse o nome do mapa
    atual. Mas por padrão não há. Para isso, declaramos numa var global, a $map_infos, os nomes dos mapas, lendo-os no arquivo MapInfos.rxdata.
    Não fui eu quem inventou este código. e em alguns Menus, como o do FF7
    que vem no Help do XP, há esta função, mas ela é dispersa. Aqui,
    construiremos uma concisa. No topo do seu menu, ou em outra sessão que
    seja acima da sessão do menu, vamos declarar a função name na classe
    Game_Map, assim:

    Código:

    class Game_Map
    def name
    $map_infos[@map_id]
    end
    end


    Isto ainda não mostra o nome do mapa, precisamos criar a função
    que lê para a var os nomes dos mapas. Para isso, logo baixo da função
    acima, declare assim:

    Código:

    class Scene_Title
    $map_infos = load_data("Data/MapInfos.rxdata")
    for key in $map_infos.keys
    $map_infos[key] = $map_infos[key].name
    end
    end


    O que fizemos?

    Criamos uma estrutura for para ler os nomes dos mapas e
    gravá-los na var $map_infos. E na Classe Game_map criamos o
    procedimento. Agora, sempre que você quiser, na janela ou não, basta
    chamar $game_map[id].name.
    Para facilitar, vou por aqui o código da janela:

    Código:

    class Window_Mapname < Window_Base
    def initialize
    super(0, 0, 640, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = 24
    refresh
    end
    def refresh
    self.contents.clear
    self.contents.draw_text(4, 16, 608, 32, $game_map.name.to_s, 1)
    end
    end


    Agora sim, você pode remover o # das linhas:

    Código:

    @mapname_window = Window_Mapname.new
    @mapname_window.y = 480 - 96
    ...
    @mapname_window.dispose


    Agora, o menu está quase pronto:

    Lição 8.3 - Scenes - As janelas Especiais e a reconfiguração da Scene Image050

    A ultima janela, que iria mostrar as Habilidades equipadas no
    SBAS, eu não vou fazer. Decidi isso porque recebi uma msg muito estranha
    de um Maker que se dizia "inconformado" por eu estar usando um sistema
    de batalha para dar aulas que não fosse um de minha autoria. O Criador
    do Sistema, com certeza disponibilizou o código por saber que ele seria
    bem usado, não me importo, e espero que você também não.

    Corrigindo o funcionamento do Menu

    Depois de muito mexermos com os códigos, tenho certeza que seu
    menu está uma bagunça. As opções não funcionam, ou dão erro. Vamos
    começar pelo principal:

    Agora, você não possui mais um menu de Status, que recebia o foco
    para selecionar um heroi. no procedimento update há a seguinte
    definição:

    Código:

    if @command_window.active
    update_command
    return
    end
    # Se a janela de Status estiver ativa: call update_status
    if @status_window.active
    update_status
    return
    end


    Aqui, quando o menu de comandos está ativo, a scene se direciona para o procedimento update_command, quando é a janela de Status, para a update_status.
    Como nosso menu não terá mais a janela de Status, não precisaremos
    verificar se ele está ativo, e não precisaremos verificar se a de Status
    está ativa. remova todo este código e deixe somente a chamada update_command. Seu procedimento update deve estar assim:

    Código:

    def update
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    @mapname_window.update
    @equip_window.update
    @stats_window.update
    update_command
    end


    Muito bem. Sabendo que o procedimento update_status não será mais usado, você pode removê-lo, para diminuir código inútil. Ele está na linha 185 do menu original.

    Feito isso vamos corrigir o update_command. houve um maker
    ae que achou que eu estava "perdido" e não sabia o que estava fazendo,
    até se disponibilizou para arrumar o "problema" se eu não soubesse como o
    fazer... Como tem pessoas ingenuas nesse mundo... ;D

    Observe o procedimento update_command:

    Código:

    def update_command
    # Se o botão B for pressionado
    if Input.trigger?(Input::B)
    # Reproduzir SE de cancelamento
    $game_system.se_play($data_system.cancel_se)
    # Alternar para a tela do mapa
    $scene = Scene_Map.new
    return
    end
    # Se o botão C for pressionado
    if Input.trigger?(Input::C)
    # Se o comando for outro senão Salvar, Fim de Jogo e o número de Heróis no
    # Grupo for 0
    if $game_party.actors.size == 0 and @command_window.index < 4
    # Reproduzir SE de erro
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    # Ramificação por posição do cursor na janela de comandos
    case @command_window.index
    when 0 # Itens
    # Reproduzir SE de OK
    $game_system.se_play($data_system.decision_se)
    # Alternar para a tela de Itens
    $scene = Scene_Item.new
    when 1 # Habilidades
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Ativar o status da janela
    @command_window.active = false
    @status_window.active = true
    @status_window.index = 0
    when 2 # Equipamentos
    # Reproduzir SE de OK
    $game_system.se_play($data_system.decision_se)
    # Ativar o status da janela
    @command_window.active = false
    @status_window.active = true
    @status_window.index = 0
    when 3 # Status
    # Reproduzir SE de OK
    $game_system.se_play($data_system.decision_se)
    # Ativar o status da janela
    @command_window.active = false
    @status_window.active = true
    @status_window.index = 0
    when 4 # Salvar
    # Se Salvar for proibido
    if $game_system.save_disabled
    # Reproduzir SE de erro
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    # Reproduzir SE de OK
    $game_system.se_play($data_system.decision_se)
    # Alternar para a tela de save
    $scene = Scene_Save.new
    when 5 # Fim de Jogo
    # Reproduzir SE de OK
    $game_system.se_play($data_system.decision_se)
    # Alternar para a tela de Fim de Jogo
    $scene = Scene_End.new
    end
    return
    end
    end


    Procure pela linha case @command_window.index. É aqui que a mágica acontece. Sempre que a janela de comandos está ativa e você pressiona a tecla Enter/Espaço
    o Scene vem aqui neste case, procura saber qual comando estava
    selecionado através do index da janela, e executa o comando. A primeira
    coisa que devemos fazer é trocar o conteúdo do when 3 # Status pelo do when 4 # Salvar, e o do when 5 # Fim de Jogo, pelo do when 4 # Salvar. Podemos apagar o when 5 # Fim de Jogo, pois nossa janela de comandos não possui mais 6 itens, apenas 5. Outra coisa importante. Observe que when 1 e when 2 direcionam para a janela de Status:

    Lição 8.3 - Scenes - As janelas Especiais e a reconfiguração da Scene Image051

    Como não estamos mais usando a janela de Status, vamos chamar
    diretamente as Scenes de Skill e Equip aqui. Mas como? Se você ainda não
    deletou o procedimento update_status, verá nele que ele passa como parâmetro para essas Scenes o ID do herói na indexação da $game_party, em forma do index da janela, observe:

    Código:

    $scene = Scene_Equip.new(@status_window.index)
    $scene = Scene_Status.new(@status_window.index)


    Ao invés de passarmos o index da janela, como sabemos que nosso
    herói é o ID do herói na indexação da $game_party é 0 (zero), basta
    colocarmos assim:

    Código:

    $scene = Scene_Equip.new(0)
    $scene = Scene_Status.new(0)


    e colocar as linhas nas respectivas when. O código completo do procedimento:

    Código:

    def update_command
    if Input.trigger?(Input::B)
    $game_system.se_play($data_system.cancel_se)
    $scene = Scene_Map.new
    return
    end
    if Input.trigger?(Input::C)
    if $game_party.actors.size == 0 and @command_window.index < 4
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    case @command_window.index
    when 0
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Item.new
    when 1 # Habilidades
    #-------------------------------------------------------#
    if $game_party.actors[0].restriction >= 2
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Skill.new(0)
    #-------------------------------------------------------#
    when 2 # Equipamentos
    #-------------------------------------------------------#
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Equip.new(0)
    #-------------------------------------------------------#
    when 3 # Salvar
    if $game_system.save_disabled
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Save.new
    when 4 # Fim de Jogo
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_End.new
    end
    return
    end
    end


    Se foi tudo feito de maneira correta, seu menu está funcionando, e com todas as funções direcionadas ao primeiro herói.
    A área que ficou vazia? bem, coloque o que quiser, uma janela de fome, ou algo parecido, ela ia ficar assim:

    Código:

    class Window_Dummy < Window_Base
    def initialize(actor)
    super(0, 0, 160, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @actor = actor
    refresh
    end
    def refresh
    self.contents.clear
    bitmap = RPG::Cache.windowskin($game_system.windowskin_name)
    src_rect = Rect.new(128,64,32,32)
    self.contents.blt(0, 0, bitmap, src_rect)
    self.contents.blt(0, 42, bitmap, src_rect)
    self.contents.blt(0, 84, bitmap, src_rect)
    self.contents.blt(0, 126, bitmap, src_rect)
    self.contents.draw_text(0,8,32,32,"H",0)
    self.contents.draw_text(0,50,32,32,"J",0)
    self.contents.draw_text(0,92,32,32,"K",0)
    self.contents.draw_text(0,132,32,32,"L",0)
    end
    end


    Mas mude-a de acordo com o seu gosto.

    Eu sei, foi terrível. Para uma aula que seria esclarecedora, acho
    que surgiram muito mais dúvidas. eu pretendo voltar no assunto janelas,
    exemplificar melhor, mostrar tudo que pode e não pode ser feito com
    elas. Se você tem seguido as aulas com empenho, já sabe bastante coisa
    suficiente para aprofundarmos mais nos códigos.

    Tentarei não me demorar tanto para postar uma aula e, mais uma vez
    eu peço desculpas. Estou pensando em algo bem interessante para a
    próxima aula, para que essa impressão ruim saia.

    Até lá, e obrigado.

    Ah sim, o código completo da Scene, do jeito que eu fiz aqui:

    Código:

    class Game_Map
    def name
    $map_infos[@map_id]
    end
    end
    class Scene_Title
    $map_infos = load_data("Data/MapInfos.rxdata")
    for key in $map_infos.keys
    $map_infos[key] = $map_infos[key].name
    end
    end
    #################################################################
    class Window_Base
    def draw_actor_name2(actor, x, y,align=0)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 64, 32, actor.name ,align)
    end
    def draw_actor_parameter(actor, x, y, type)
    case type
    when 0
    parameter_name = $data_system.words.atk
    parameter_value = actor.atk
    when 1
    parameter_name = $data_system.words.pdef
    parameter_value = actor.pdef
    when 2
    parameter_name = $data_system.words.mdef
    parameter_value = actor.mdef
    when 3
    parameter_name = $data_system.words.str
    parameter_value = actor.str
    when 4
    parameter_name = $data_system.words.dex
    parameter_value = actor.dex
    when 5
    parameter_name = $data_system.words.agi
    parameter_value = actor.agi
    when 6
    parameter_name = $data_system.words.int
    parameter_value = actor.int
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, parameter_name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 164, y, 36, 32, parameter_value.to_s, 2)
    end
    alias cbs_draw_actor_hp draw_actor_hp
    def draw_actor_hp(actor, x, y, width = 146, height = 15)
    bg = Color.new( 0, 0, 0, 160)
    c1 = Color.new(255, 0, 0, 0)
    c2 = Color.new(255, 255, 0, 160)
    self.contents.fill_rect(x, y, width, height, bg)
    width2 = width * actor.hp / actor.maxhp
    gradient(x + 1, y + 1, width2 - 2, height - 2, c1, c2)
    cbs_draw_actor_hp(actor, x, y, width)
    end
    alias cbs_draw_actor_sp draw_actor_sp
    def draw_actor_sp(actor, x, y, width = 146, height = 15)
    bg = Color.new( 0, 0, 0, 160)
    c1 = Color.new( 0, 0, 255, 0)
    c2 = Color.new( 0, 255, 255, 160)
    self.contents.fill_rect(x, y, width, height, bg)
    if actor.maxsp != 0
    width2 = width * actor.sp / actor.maxsp
    else
    width2 = width * actor.sp / 1
    end
    gradient(x + 1, y + 1, width2 - 2, height - 2, c1, c2)
    cbs_draw_actor_sp(actor, x, y, width)
    end
    def gradient(x, y, width, height, c1, c2)
    for i in 1..width
    x2 = x + i - 1
    r = c1.red * (width - i) / width + c2.red * i / width
    g = c1.green * (width - i) / width + c2.green * i / width
    b = c1.blue * (width - i) / width + c2.blue * i / width
    a = c1.alpha * (width - i) / width + c2.alpha * i / width
    self.contents.fill_rect(x2, y, 1, height, Color.new(r, g, b, a))
    end
    end
    end
    #################################################################
    class Window_Steps < Window_Base
    def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
    end
    def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 120, 32, "Passos")
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120, 32, $game_party.steps.to_s, 2)
    end
    end
    #==============================================================================
    class Window_PlayTime < Window_Base
    def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
    end
    def refresh
    self.contents.clear
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 4, 120, 24, text, 1)
    end
    def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
    refresh
    end
    end
    end
    #==============================================================================
    class Window_Gold < Window_Base
    def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
    end
    def refresh
    self.contents.clear
    cx = contents.text_size($data_system.words.gold).width
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
    end
    end
    #==============================================================================
    class Window_Equipamento < Window_Base
    def initialize(actor)
    super(0, 0, 240, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @actor = actor
    refresh
    end
    def refresh
    self.contents.clear
    draw_item_name($data_weapons[@actor.weapon_id], 0, 0)
    draw_item_name($data_armors[@actor.armor1_id], 0, 32)
    draw_item_name($data_armors[@actor.armor2_id], 0, 64)
    draw_item_name($data_armors[@actor.armor3_id], 0, 96)
    draw_item_name($data_armors[@actor.armor4_id], 0, 128)
    end
    end
    #==============================================================================
    class Window_Status2 < Window_Base
    def initialize(actor)
    super(0, 0, 240, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @actor = actor
    refresh
    end
    def refresh
    self.contents.clear
    draw_actor_parameter(@actor, 0, 0, 0)
    draw_actor_parameter(@actor, 0, 21, 1)
    draw_actor_parameter(@actor, 0, 42, 2)
    draw_actor_parameter(@actor, 0, 63, 3)
    draw_actor_parameter(@actor, 0, 84, 4)
    draw_actor_parameter(@actor, 0, 105, 5)
    draw_actor_parameter(@actor, 0, 126, 6)
    end
    end
    #==============================================================================
    class Window_Hero_Status < Window_Base
    def initialize(actor)
    super(0, 0, 320, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @actor = actor
    @frame = 0
    @pose = 0
    refresh
    end
    def refresh
    self.contents.clear
    draw_actor_sprite
    draw_actor_name2(@actor, 8, 0, 1)
    draw_actor_class(@actor, 96, 0)
    draw_actor_level(@actor, 96, 24)
    draw_actor_state(@actor, 96, 48)
    self.contents.font.color = system_color
    self.contents.draw_text(96, 72, 80, 32, "EXP:")
    self.contents.font.color = normal_color
    self.contents.draw_text(96, 72, 160, 32, @actor.exp_s + "/" + @actor.next_exp_s , 2)
    draw_actor_hp(@actor, 96, 100, 172)
    draw_actor_sp(@actor, 96, 124, 172)
    end
    def draw_actor_sprite
    self.contents.fill_rect(0, 32, 80, 120, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.character(@actor.character_name, @actor.character_hue)
    self.contents.stretch_blt(Rect.new(0, 32, 80, 120), bitmap,
    Rect.new(bitmap.width / 4 * @frame, bitmap.height / 4 * @pose , bitmap.width / 4 , bitmap.height / 4))
    end
    def update
    super
    if Graphics.frame_count % 10 == 0
    if @frame == 3
    #@pose == 3 ? @pose = 0 : @pose += 1
    end
    @frame == 3 ? @frame = 0 : @frame += 1
    draw_actor_sprite
    end
    end
    end
    #==============================================================================
    class Window_Dummy < Window_Base
    def initialize(actor)
    super(0, 0, 160, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @actor = actor
    refresh
    end
    def refresh
    self.contents.clear
    bitmap = RPG::Cache.windowskin($game_system.windowskin_name)
    src_rect = Rect.new(128,64,32,32)
    self.contents.blt(0, 0, bitmap, src_rect)
    self.contents.blt(0, 42, bitmap, src_rect)
    self.contents.blt(0, 84, bitmap, src_rect)
    self.contents.blt(0, 126, bitmap, src_rect)
    self.contents.draw_text(0,8,32,32,"H",0)
    self.contents.draw_text(0,50,32,32,"J",0)
    self.contents.draw_text(0,92,32,32,"K",0)
    self.contents.draw_text(0,132,32,32,"L",0)
    end
    end
    #==============================================================================
    class Window_Mapname < Window_Base
    def initialize
    super(0, 0, 640, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = 24
    refresh
    end
    def refresh
    self.contents.clear
    self.contents.draw_text(4, 16, 608, 32, $game_map.name.to_s, 1)
    end
    end
    #==============================================================================
    # Scene_Menu
    #==============================================================================

    class Scene_Menu
    def initialize(menu_index = 0)
    @menu_index = menu_index
    end
    def main
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Salvar"
    s5 = "Fim de Jogo"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5])
    @command_window.index = @menu_index
    @command_window.x = 640 - 160
    @command_window.y = 192
    if $game_party.actors.size == 0
    @command_window.disable_item(0)
    @command_window.disable_item(1)
    @command_window.disable_item(2)
    @command_window.disable_item(3)
    end
    if $game_system.save_disabled
    @command_window.disable_item(4)
    end
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 640 - @playtime_window.width
    @steps_window = Window_Steps.new
    @steps_window.x = 640 - @steps_window.width
    @steps_window.y = 64
    @gold_window = Window_Gold.new
    @gold_window.x = 640 - @gold_window.width
    @gold_window.y = 128

    @mapname_window = Window_Mapname.new
    @mapname_window.y = 480 - 96
    #@mapname_window.visible = false
    @status_window = Window_Hero_Status.new($game_party.actors[0])
    @status_window.y = 0
    @equip_window = Window_Equipamento.new($game_party.actors[0])
    @equip_window.y = 192
    @stats_window = Window_Status2.new($game_party.actors[0])
    @stats_window.x = 240
    @stats_window.y = 192
    @dummy_window = Window_Dummy.new($game_party.actors[0])
    @dummy_window.x = 320
    @dummy_window.visible = false
    Graphics.transition
    loop do
    Graphics.update
    Input.update
    update
    if $scene != self
    break
    end
    end
    Graphics.freeze

    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose

    @status_window.dispose
    @mapname_window.dispose
    @equip_window.dispose
    @stats_window.dispose
    @dummy_window.dispose
    end
    def update

    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    @mapname_window.update
    @equip_window.update
    @stats_window.update
    @dummy_window.update

    update_command
    end

    def update_command
    if Input.trigger?(Input::B)
    $game_system.se_play($data_system.cancel_se)
    $scene = Scene_Map.new
    return
    end
    if Input.trigger?(Input::C)
    if $game_party.actors.size == 0 and @command_window.index < 4
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    case @command_window.index
    when 0
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Item.new
    when 1 # Habilidades
    #-------------------------------------------------------#
    if $game_party.actors[0].restriction >= 2
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Skill.new(0)
    #-------------------------------------------------------#
    when 2 # Equipamentos
    #-------------------------------------------------------#
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Equip.new(0)
    #-------------------------------------------------------#
    when 3 # Salvar
    if $game_system.save_disabled
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Save.new
    when 4 # Fim de Jogo
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_End.new
    end
    return
    end
    end
    end



    ;D ;D ;D

      Data/hora atual: Sex Nov 22, 2024 1:58 pm