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

Super Khrono Menu (Menu Personalizavel)

Iniciado por Khrono, 06/03/2014 às 15:19

06/03/2014 às 15:19 Última edição: 07/03/2014 às 01:46 por Khrono
Super Khrono Menu (1.0)
"A beleza da vida reside na variedade"
Samuel Johnson


Sobre o sistema:
Bom, comecei a trabalhar ontem nesse menu, me baseando no meu primeiro script para RGSS (que tirava a opção de salvar do menu), pensei que dava pra fazer um script que personalizasse bem mais do que só tirar a opção de salvar. E aí está o resultado, esse menu é muito personalizável, você pode mudar a cor do menu (utilizando o meu pack ou o pack de qualquer pessoa), pode por uma música para tocar no menu, pode escolher o nome das opções do menu e etc.

Como usar:
Copie o script:
#==================================================================
#Khrono Menu (1.0v) - Criado por: Khrono
#
#visite: www.khronomaker.blogspot.com.br
#
#
#==================================================================
#======================CONFIGURAÇÃO================================
module KHR_CONFIG
  ESTILO_KHR = 1 # 1 - Estilo XP / 2 - Estilo VX/Ace
  OPACIDADE_KHR = 255  # valor de 0 a 255
 
# Aqui você pode esolher o nome das opções do menu:
 
  ITEM        = "Item"
  HABILIDADE  = "Habilidade"
  EQUIPAMENTO = "Equipamento"
  STATUS      = "Status"
  SALVAR      = "Salvar"
  FIM_DE_JOGO = "Fim de Jogo"
  
  FUNDO = false # true = fundo com mapa/false = fundo preto
 
# Aqui você escolhe a cor do menu
# Cores possíveis: red, green, black,ultra_black, pink, 001-Blue01
 
  COR = "pink" #para cor padrão use "001-Blue01"
 
# Aqui você escolhe se deseja tocar alguma BGM no menu:
   
  BGM_MENU = true #true = toca música no menu
  BGM_NOME = "062-Slow05" #Nome da música entre aspas
  BGM_VOLUME = 100 #De 0 a 100
  BGM_VELOCIDADE = 100 #De 50 a 200
 
# Aqui você escolhe se aparece a opção Salvar no menu:
  SALVAR_COMMAND = true
end
#======================FIM DA CONFIGURAÇÃO============================
class Window_Base < Window
  def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    self.windowskin = RPG::Cache.windowskin(KHR_CONFIG::COR.to_s)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
  end
  def update
    super
    if $game_system.windowskin_name != @windowskin_name
      @windowskin_name = "001-Blue01"
      self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    end
  end
end
 
class Window_Command < Window_Selectable
  def initialize(width, commands)
    super(0, 0, width, commands.size * 32 + 32)
    self.opacity = KHR_CONFIG::OPACIDADE_KHR
    @item_max = commands.size
    @commands = commands
    self.contents = Bitmap.new(width - 32, @item_max * 32)
    refresh
    self.index = 0
  end
end
 
class Window_Gold < Window_Base  
  def initialize
    super(0, 0, 160, 64)
    self.opacity = KHR_CONFIG::OPACIDADE_KHR
    self.contents = Bitmap.new(width - 32, height - 32)
        self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
  end
end
 
 
class Window_MenuStatus < Window_Selectable
  def initialize
    super(0, 0, 480, 480)
    self.opacity = KHR_CONFIG::OPACIDADE_KHR
    self.contents = Bitmap.new(width - 32, height - 32)
       self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
    self.active = false
    self.index = -1
  end
end
 
class Window_PlayTime < Window_Base
  def initialize
    super(0, 0, 160, 96)
    self.opacity = KHR_CONFIG::OPACIDADE_KHR
    self.contents = Bitmap.new(width - 32, height - 32)
        self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
  end
end
 
class Window_Steps < Window_Base
  def initialize
    super(0, 0, 160, 96)
    self.opacity = KHR_CONFIG::OPACIDADE_KHR
    self.contents = Bitmap.new(width - 32, height - 32)
        self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
  end
end
 
class Scene_Menu
  def main
    $game_temp.map_bgm = $game_system.playing_bgm
    if KHR_CONFIG::FUNDO == true
      @fundo_menu = Spriteset_Map.new
    end
    if KHR_CONFIG::BGM_MENU == true
      Audio.bgm_play("Audio/BGM/" + KHR_CONFIG::BGM_NOME, KHR_CONFIG::BGM_VOLUME, KHR_CONFIG::BGM_VELOCIDADE)
    end
    $item_command = true
    $habilidade_command = true
    $equipamento_command = true
    $status_command = true
    $fim_command = true
    unless KHR_CONFIG::SALVAR_COMMAND
    s1 = KHR_CONFIG::ITEM.to_s
    s2 = KHR_CONFIG::HABILIDADE.to_s
    s3 = KHR_CONFIG::EQUIPAMENTO.to_s
    s4 = KHR_CONFIG::STATUS.to_s
    s5 = KHR_CONFIG::FIM_DE_JOGO.to_s
    command = []
    command << s1 if $item_command
    command << s2 if $habilidade_command
    command << s3 if $equipamento_command
    command << s4 if $status_command
    command << s5 if $fim_command
  end
  if KHR_CONFIG::SALVAR_COMMAND
    s1 = KHR_CONFIG::ITEM.to_s
    s2 = KHR_CONFIG::HABILIDADE.to_s
    s3 = KHR_CONFIG::EQUIPAMENTO.to_s
    s4 = KHR_CONFIG::STATUS.to_s
    s5 = KHR_CONFIG::SALVAR.to_s
    s6 = KHR_CONFIG::FIM_DE_JOGO.to_s
    command = []
    command << s1 if $item_command
    command << s2 if $habilidade_command
    command << s3 if $equipamento_command
    command << s4 if $status_command
    command << s5 if KHR_CONFIG::SALVAR_COMMAND
    command << s6 if $fim_command
    end
    @command_window = Window_Command.new(160, command)
    @command_window.index = @menu_index
    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
    if KHR_CONFIG::ESTILO_KHR == 1
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    end
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    if KHR_CONFIG::ESTILO_KHR == 1
    @playtime_window.dispose
    @steps_window.dispose
    end
    @gold_window.dispose
    @status_window.dispose
  end
  def update
    if KHR_CONFIG::FUNDO == true
      @fundo_menu.update
    end
    @command_window.update
    if KHR_CONFIG::ESTILO_KHR == 1
    @playtime_window.update
    @steps_window.update
    end
    @gold_window.update
    @status_window.update
    if @command_window.active
      update_command
      return
    end
    if @status_window.active
      update_status
      return
    end
  end
  def update_command
    if Input.trigger?(Input::B)
      $game_system.bgm_play($game_temp.map_bgm)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if KHR_CONFIG::SALVAR_COMMAND
    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
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4
        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 5
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_End.new
      end
      return
    end
  end
 
    unless KHR_CONFIG::SALVAR_COMMAND
    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
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3
        $game_system.se_play($data_system.decision_se)      
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  
 
        $game_system.se_play($data_system.decision_se)
     
        $scene = Scene_End.new
      end
      return
    end
  end
end
  def update_status
   
    if Input.trigger?(Input::B)
     
      $game_system.se_play($data_system.cancel_se)
     
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    if KHR_CONFIG::SALVAR_COMMAND
   
    if Input.trigger?(Input::C)
     
      case @command_window.index
      when 1
       
        if $game_party.actors[@status_window.index].restriction >= 2
         
          $game_system.se_play($data_system.buzzer_se)
          return
        end
       
        $game_system.se_play($data_system.decision_se)
       
        $scene = Scene_Skill.new(@status_window.index)
      when 2  
       
        $game_system.se_play($data_system.decision_se)
       
        $scene = Scene_Equip.new(@status_window.index)
      when 3
       
        $game_system.se_play($data_system.decision_se)
       
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
 
    unless KHR_CONFIG::SALVAR_COMMAND
   
    if Input.trigger?(Input::C)
     
      case @command_window.index
      when 1
       
        if $game_party.actors[@status_window.index].restriction >= 2
       
          $game_system.se_play($data_system.buzzer_se)
          return
        end
       
        $game_system.se_play($data_system.decision_se)
       
        $scene = Scene_Skill.new(@status_window.index)
      when 2  
   
        $game_system.se_play($data_system.decision_se)
       
        $scene = Scene_Equip.new(@status_window.index)
      when 3
   
        $game_system.se_play($data_system.decision_se)
     
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end
end
class Scene_End
    def update
   
    @command_window.update
   
    if Input.trigger?(Input::B)
     
      $game_system.se_play($data_system.cancel_se)
     
      unless KHR_CONFIG::SALVAR_COMMAND
      $scene = Scene_Menu.new(4)
    else
      $scene = Scene_Menu.new(5)
    end
   
      return
    end
   
    if Input.trigger?(Input::C)
     
      case @command_window.index
      when 0  
        command_to_title
      when 1  
        command_shutdown
      when 2
        command_cancel
      end
      return
    end
  end
end

e cole-o acima do Main. Agora você deve fazer o download do meu Pack (Pack do Khrono) lá estão as windownsskin que fiz para que você possa já utilizar outras cores para o menu. Assim que fizer o download do meu pack copie todas as imagens para pasta Graphics/Windowskins. O jeito mais fácil de fazer isso é apertar a tecla "f10" clicar em Graphics/Windowskins e importar todas as imagens do pack.

Feito isso o menu já pode ser personalizado. Perceba que o uso do menu não se limita a usar apenas o meu pack, se você quiser pode fazer suas próprias windowskin e usa-las.

Screenshots:
Spoiler



[close]

Vídeo:



Criador: Khrono
Agradecimentos: Masked, Raizen

Download do Pack:
Spoiler

Cara ficou legal e talz, mas de qualquer modo xD, ajeita o link do youtube, o link certo para por dentro da tag, é aquele que quando você clica compartilhar no vídeo aparece um link, use aquele.


Então, uma coisa, tem um monte de variáveis globais(os que começam com $) além disso o nome deles é bem comum tipo $opacidade. Isso atrapalha na compatibilidade, e as variáveis globais não são recomendadas para serem usadas assim, em casos não necessários xD, veja como usar módulos, vai aumentar a compatibilidade e ainda deixar o código melhor. Mas belo trabalho, boa sorte nos próximos scripts :D

kkkk.. por isso meus vídeos nunca pegavam!!  :facepalm: (eu já achando que era preconceito do youtube comigo)

Poxa!! é mesmo!! usar módulos caras!! eu não tinha pensado nisso é uma ótima ideia, já estudei um pouco sobre módulos ("serve como deposito de coisas que você irá usar mais tarde" li isso em algum lugar ehaioe) vou estudar mais isso e substituir as variáveis globais! (eu realmente não pensei em incompatibilidade, e realmente se tratando de um menu isso é importante né.. normalmente usa-se menus com pelo menos mais um script)

Obrigado cara! obrigado mesmo pelas dicas, e é uma honra você analisar meu script!

Obrigado!

Ficou realmente muito bom, mas acho que não atraiu muita gente pois é para XP, acho que a maioria esta usando o vx ace, poucas pessoas ainda gostam do estilo "retro" :c

Mas realmente ficou muito bom, bom trabalho C:
Tudo vai dar certo (y(8.

07/03/2014 às 01:50 #4 Última edição: 07/03/2014 às 01:53 por Khrono
Poxa obrigado cara!

se tiver sugestão aí só falar que eu tento por em prática rsrs

pô o que eu acho maneiro no vx/ace são os gráficos (meio shibi algo assim neh?) acho mó estilo aquelas bolinhas lutando iaheiuoaeha. Eu to doido pra scriptar em vx ace também, mas tenho que aprender no xp primeiro, não sei porque mas acho que as coisas fluem mais nele. (acho que é porque tem comentários mais detalhados que no vx ace)

Obrigado pela força aí cara! sempre dando seu feedback eu gosto muito disso isso que me faz evoluir!! flw!!


Uia, você existe aqui também!
Como eu já disse, o script ficou bem legal, poderia ter mais opções, como tirar mais coisas e mudar a posição das janelas, e pode usar módulos, como o Raizen disse, e sempre ir evoluindo.

Eu acho que RGSS3 é 'mais melhor', mas faça como quiser o percurso...
Se quiser alguma ajuda com algum add-on para o script pode avisar  :ok:
~ Masked

Sempre dou uma olhada nos sistemas do khrono, são muito bons, e esse não foge a risca
bem pode ser simples, mas ainda sim é um bom trabalho. :XD:

Tenho uma dúvida sobre isso .-.

Aonde vocês aprendem a fazer Script ? Curso ou pc mesmo? ,_, Meu sonho é aprender script mas nem sei por onde começar ,_,
Tudo vai dar certo (y(8.

Citação de: Masked online 07/03/2014 às 02:36
Uia, você existe aqui também!
Como eu já disse, o script ficou bem legal, poderia ter mais opções, como tirar mais coisas e mudar a posição das janelas, e pode usar módulos, como o Raizen disse, e sempre ir evoluindo.

Eu acho que RGSS3 é 'mais melhor', mas faça como quiser o percurso...
Se quiser alguma ajuda com algum add-on para o script pode avisar  :ok:
rsrs existo! Obrigado Masked pela sua ajuda! tenho certeza que com seus conselhos e ajuda o sistema vai ficar bem
legal

Citação de: SimonMuran online 07/03/2014 às 03:39
Sempre dou uma olhada nos sistemas do khrono, são muito bons, e esse não foge a risca
bem pode ser simples, mas ainda sim é um bom trabalho. :XD:
Obrigado pelos seus feedback, fico feliz que meu trabalho lhe agrade!  qualquer incremento ou dicas ficarei feliz de ouvir (ou ler xD).

Citação de: katumblo online 07/03/2014 às 13:41
Tenho uma dúvida sobre isso .-.

Aonde vocês aprendem a fazer Script ? Curso ou pc mesmo? ,_, Meu sonho é aprender script mas nem sei por onde começar ,_,
Po cara.. eu sofro xD, eu estudo pelas aulas disponíveis nos foruns e fico lendo os comentários dos scripts da própria engine..