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

[Script]Menu de Opções

Iniciado por singelinho, 14/02/2014 às 10:11


Primeiro de tudo, quero informar que sou iniciante ainda em ruby(RGSS) mais esta script eu fiz com carinho e tentei por uns códigos que muitos membros podem querer utiliza-los. Prosseguindo... a script é simples, podem melhora-las como quiser, qualquer erro peço que os relate aqui. Ela é um menu com botão, que possuem funções bem legais, como por exemplo: "Sair do Jogo", "Selecionar Boneco", "Tutorial do Jogo", "Configurações" e "Ajuda". 

<div>Descrição de tudo
:

Sair do Jogo -> Nome diz tudo, salva o jogo e sai
Selecionar Boneco -> Volta para a seleção de personagem
Tutorial do Jogo -> Teletransporta usuário para um mapa, coordenadas especifica.
Configurações -> Abre uma janela, para ativar e desativar musica/sons
Ajuda -> Abre um sprite informando tudo na tela
 - Será adicionado mais coisas -</div>

Spoiler

Screens:


OBS: Foi adicionado outra check_box > "Sons"
New
 

[close]

"Download de tudo que vamos utilizar





Se quiser utilizar uma demo:
(Seria melhor você próprio instalar)
[close]

Bem vamos lá !! Crie uma script nova e nela adicione:
#================================================================
#|Autor: Singelinho|      Menu de Opções                        =
#================================================================
# Version: 1.4                                                  =
# Menu simples, com diversas funções.                           =
#================================================================

class Opções < Window_Base
  def initialize
    super(254,154,160,160)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 200
    self.z = 50000
    self.visible = false
    self.active = false
    @dragable = false
    @closable = true
    #Sprites
    @sprite = Sprite.new
    @sprite.bitmap = (RPG::Cache.picture("Ajuda"))
    @sprite.visible = false
    #Widgets
    @button1 = Button.new(self, 35, 25, "Sair do Jogo") {click1}
    @button2 = Button.new(self, 20, 50, "Selecionar Boneco") {click2}
    @button3 = Button.new(self, 26, 75, "Tutorial do Jogo") {click3}
    @button4 = Button.new(self, 30, 98, "Configurações") {click4}
    @button5 = Button.new(self, 53, 120, "Ajuda") {click5}
  end
  
  #======= Métodos =======
  def click1 
    autosave
    Network::Main.close_socket
    exit
  end
  
  def click2
    $scene = Scene_Title.new
  end
  
  def click3
    $scene.TutorialG.visible = true
    $scene.TutorialG.active = true
  end
  
  def click4
    $scene.Configurações.visible = true
    $scene.Configurações.active = true
  end
  
  def click5
    @sprite.visible = !@sprite.visible
  end
  #======================
  #======================
  def show
    self.visible = true
    refresh
  end
  
  def hide
    self.visible = false
    self.active = false
  end
  #=======================
end

class Scene_Map
  attr_accessor('Opções')
  alias cal main_draw
  def main_draw
    cal
    @Opções = Opções.new
  end
  alias cali update
  def update
    cali
    @Opções.update
    #Input para abrir e fecha menu, neste caso é Esc
    if Input.triggerd?(Input::Esc) 
      if @Opções.visible
        @Opções.visible = false
      else 
        @Opções.visible = true
      end
    end
  end
end


Após criar a script "opções", crie outra e adicione:

#================================================================
#|Autor: Singelinho|      Menu de Teletransporte Tutu           =
#================================================================
# Version: 1.0                                                  =
# Para alterar o mapa e as cordenadas Linha -> 31, 34, 35, 36   =
#================================================================

class TutorialG < Window_Base
  def initialize
    super(423,154,179,85)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 200
    self.z = 50000
    self.visible = false
    self.active = false
    @dragable = false 
    @closable = true
    #Widgets
    @button1 = Button.new(self, 35, 50, "Sim") {click1}
    @button2 = Button.new(self, 90, 50, "Não") {click2}
    refresh
  end
  
  #======= Métodos ======
  def refresh
    @txt1 = self.contents.draw_text(0, 0, 480-32, 32, "Deseja mesmo ir ao tutorial?")
  end
  
  def click1 
    #Teletransporta para tal mapa e tal coordenadas (ID, X, Y)
    if $game_temp.player_new_map_id == $game_temp.player_new_map_id = 1 
      p 'Você já esta no mapa'
    else
      $game_temp.player_new_map_id = 1 
      $game_temp.player_new_x = 12 
      $game_temp.player_new_y = 12
      $game_temp.player_transferring = true 
      $game_map.update
      $scene = Scene_Map.new
      Network::Main.send_start
      $game_temp.chat_log.push("Sistema: Bem Vindo ao tutorial, que seja bem útil.")
    end
  end
  
  def click2
    self.close
  end
  #======================
end

class Scene_Map
  attr_accessor('TutorialG')
  alias edca main_draw
  def main_draw
    edca
    @TutorialG = TutorialG.new
  end
  alias edup update
  def update
    edup
    @TutorialG.update
    #Fechar com ESC
    if Input.triggerd?(Input::Esc)
      if @TutorialG.visible
        @TutorialG.visible = false
      end
    end
  end
end


Ultima > Tendo criada as duas acima, adicione mais uma script e nela ponha isto:

#================================================================
#|Autor: Singelinho|    Menu de Configurações do Jogo           =
#================================================================
# Version: 1.0                                                  =
#================================================================

class Configurações < Window_Base
  def initialize
    super(70,154,179,130)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 200
    self.z = 50000
    self.visible = false
    self.active = false
    @dragable = false 
    @closable = true
    #Widgets
    @button1 = Button.new(self, 35, 93, "Aplicar") {click1}
    @button2 = Button.new(self, 100, 93, "Fechar") {click2}
    @check1 = Check_Box.new(self, 30, 45)
    @check2 = Check_Box.new(self, 30, 65)
    refresh
  end
  
  #======= Métodos ======
  def refresh
    @txt1 = self.contents.draw_text(0, 0, 480-32, 32, "Menu de Configurações")
    @txt2 = self.contents.draw_text(40, 20, 480-32, 32, "Musica")
    @txt3 = self.contents.draw_text(40, 40, 480-32, 32, "Sons")
  end
  
  def click1 
    if @check1.checked
      Audio.bgm_play("Audio/BGM/Base1")
      $game_temp.chat_log.push("Sistema: Musica (ON)")
    else
      Audio.bgm_stop
      $game_temp.chat_log.push("Sistema: Musica (OFF)")
    end
    if @check2.checked
      Audio.bgm_play("Audio/BGM/Base2")
    else
      Audio.bgm_stop
      $game_temp.chat_log.push("Sistema: Son desativado")
    end
  end
  
  def click2
    self.close
  end
  #======================
end

class Scene_Map
  attr_accessor('Configurações')
  alias edc main_draw
  def main_draw
    edc
    @Configurações = Configurações.new
  end
  alias edu update
  def update
    edu
    @Configurações.update
    #Fechar com ESC
    if Input.triggerd?(Input::Esc)
      if @Configurações.visible
        @Configurações.visible = false
      end
    end
  end
end


Pronto o sistema foi devidamente instalado !!
Qualquer bug, error, alguma coisa que seria legal de por... Podem falar, quero que esta script vocês possam utilizar e abusar dela xD 

créditos - Singelinho

Atualizações feitas(A pedidos de alguns membros), mas é opcional use se quiser. Para adquiri-la confira o tópico http://www.aldeiarpg.com/t9569-scriptmenu-de-opcoes.

[hs width=480 height=200]http://i.imgur.com/VMscx1Q.png[/hs]

Oi singelinho! Não nos falaremos lá na ARM, mas aqui sim :=|:. Ainda não testei, mas achei bem legal.
1 ouro para você