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

Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

Fetelk13

Fetelk13
Membro Honorário I
Membro Honorário I
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

http://elementosrpgmakerbr.forumeiros.com/forum

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos