🤔 Para Refletir : "Mudar não é fraqueza, pelo contrário, é um sinônimo de superação." - Ricky O Bardo

Adicionar código no script, para tocar algum som, depois de uma confirmação.

Estado
Tópico fechado. Não é possível fazer postagens nela.
Membro Membro
Postagens
12
Bravecoins
0
E ai pessoal, tava quebrando a cabeça de como eu faria isso, mas não consegui, até porque não entendo nada de
scripts para RM.
Bem, eu estou utilizando um script de Teletransporte, que ao ser chamado, abre uma lista com os nomes das "cidades" para se teletransportar.
Ok.
Quando abre essa lista, o jogador pode escolher pra onde quer ir, ai é só selecionar, e ele aparece no novo mapa.
Eu queria, que ao selecionar a cidade, tocasse algum audio, e ele fosse para outra cidade.
(Quero isso porque tenho o som do teletransporte do jogo League of Legends).
Tentei fazer umas gambiarras no evento em que chama o script, mas nao da. Porque o som do teleporte toca, assim que abre a lista das cidades, e nao quando ele escolhe a cidade, que no caso é o que eu quero.

Se puderem me ajudar, vou ficar feliz demais, na boa kk
Obg pela atenção.

Código:
#============================================================#
#--------------------- M+ SceneTeleport ---------------------#
#------------------------- por M3T --------------------------#
#============================================================#
=begin
Versão VX Ace 1.0 - Convertido em 14/06/2014
- Script feito em 2011 -

Como usar:
Para mostrar a janela, você deve chamar o seguinte script:
SceneManager.scene = Scene_Teleport.new([
["nome_do_mapa", id_do_mapa, coor_x, coor_y, custo]
])

Substitua:
nome_do_mapa pelo nome do mapa(mantenha as aspas)
id_do_mapa pelo id do mapa
coor_x pela coordenada x
coor_y pela coordenada y
custo pelo custo em dinheiro que o teleporte irá custar.

Para adicionar mais de um teleporte, coloque uma vírgula depois
do primeiro ], e coloque tudo novamente. Exemplo:
SceneManager.scene = Scene_Teleport.new([
["Delfos", 1, 5, 10, 200],
["Atena", 40, 53, 46, 1000]
])
E, se quiser adicionar mais de dois teleportes, repita o processo
anterior. Exemplo:
SceneManager.scene = Scene_Teleport.new([
["Delfos", 1, 5, 10, 200],
["Atena", 40, 53, 46, 1000],
["Esparta", 84, 23, 70, 5000]
])

E assim por diante.
Os teleportes padrões funcionam no mesmo esquema, mas somente
com o conteúdo dentro dos [].
Assim, quando você colocar no chamar script somente
SceneManager.scene = Scene_Teleport.new, os teleportes padrões serão
mostrados.
=end

module MPlus
# Configure aqui os teleportes padrões(sem ser definido quando
# a janela for chamada
  Teleport_default_conf = [
  ["Delfos", 2, 5, 10, 200],
  ["Atena", 40, 53, 46, 1000],
  ["Esparta", 84, 23, 70, 5000]
  ]
  # Configure aqui a mensagem que será mostrada em baixo dos 
  # teleportes
  Teleport_message = "Selecione um local para ser teleportado."

  # Configure aqui o comprimento e a largura da janela
  Teleport_width = 500 #Comprimento
  Teleport_height = 300 #Largura
  
  # Não mexer
  @teleport_data = []
  def self.teleport_data=(data)
    @teleport_data = data
  end
  def self.teleport_data
    @teleport_data
  end
end

#Fim das configurações

#=============================================================================#

module SceneManager
  def self.scene=(scene)
    @scene = scene
  end
end

class Window_Teleport < Window_Selectable
  include MPlus
  def initialize
    w = Teleport_width
    h = Teleport_height
    # Criar Janela
    super(544 / 2 - w / 2, 416 / 2 - h / 2, w, h)
    # Criar array das informações
    @data = MPlus.teleport_data
    # Colocar cursor no começo
    @index = 0
    @cursor_fix = false
    @cursor_all = false
    # Ativar a Janela
    activate
    # Desenhar informações
    refresh
  end
  # Retorna o número de itens
  def item_max
    MPlus.teleport_data.size
  end
  # Retorna informações sobre uma escolha
  def infos
    return @data[self.index]
  end
  def refresh
    # Moeda
    currency = Vocab::currency_unit
    for i in 0..@data.size-1
      land_name = @data[i][0]
      land_gold = @data[i][4]
      rect = item_rect_for_text(i)
      self.contents.clear_rect(rect)
      # Nome do Teleporte
      self.contents.draw_text(rect, land_name, 0)
      # Preço do Teleporte
#~       rect.x = width - 95
#~       self.contents.draw_text(rect, land_gold.to_s + currency, 0)
    end
    # Mensagem
    self.contents.draw_text(10, self.height-72, width-40, 32, 
    Teleport_message, 0)
  end
end
class Scene_Teleport < Scene_Base
  include MPlus
  def initialize(array=Teleport_default_conf)
    # Chamar o Mapa no fundo e a Janela
    @array = array
    @back = Spriteset_Map.new
    MPlus.teleport_data = @array
    @tele = Window_Teleport.new
  end
  def update
    # Atualizar Janela e verificar comandos
    update_basic
    cmd_update
  end
  def cmd_update
    if Input.trigger?(Input::B)
      # Reproduzir SE de cancelamento
      Sound.play_cancel
      # Alternar para a tela do Mapa
      SceneManager.goto(Scene_Map)
      @tele.contents.dispose
    end
    
    if Input.trigger?(Input::X)
      # Reproduzir SE de cancelamento
      Sound.play_ok
      # Alternar para a tela do Mapa
      SceneManager.goto(Scene_Map)
      @tele.contents.dispose
    end
    
    # Se o botão C for pressionado
    if Input.trigger?(Input::C)
      informations = @tele.infos
      if $game_party.gold >= informations[4]
        # Reproduzir SE de OK
        Sound.play_ok
        $game_party.lose_gold(informations[4])
        $game_map.setup(informations[1])
        $game_player.moveto(informations[2], informations[3])
        SceneManager.goto(Scene_Map)
        @back.dispose
        @tele.dispose
      else
        # Reproduzir SE de erro
        Sound.play_buzzer
      end
    end
  end
end
#---------------------- M+ Scripts 2011 ---------------------#
#============================================================#
 
Eu fiz uns testes aqui e até que funcionou, não sei se da forma que você quer. Veja aí!

Na linha 161:
Mude a linha:      Sound.play_ok
Por:                    RPG::SE.new("Darius").play
Usei até um som da voz do Darius rs'

Código:
 # Se o botão C for pressionado
    if Input.trigger?(Input::C)
      informations = @tele.infos
      if $game_party.gold >= informations[4]
        # Reproduzir SE de OK
        RPG::SE.new("Darius").play
        $game_party.lose_gold(informations[4])
        $game_map.setup(informations[1])
        $game_player.moveto(informations[2], informations[3])
        SceneManager.goto(Scene_Map)
        @back.dispose
        @tele.dispose
      else
 
Driko comentou:
Eu fiz uns testes aqui e até que funcionou, não sei se da forma que você quer. Veja aí!

Na linha 161:
Mude a linha:      Sound.play_ok
Por:                    RPG::SE.new("Darius").play
Usei até um som da voz do Darius rs'

Código:
 # Se o botão C for pressionado
    if Input.trigger?(Input::C)
      informations = @tele.infos
      if $game_party.gold >= informations[4]
        # Reproduzir SE de OK
        RPG::SE.new("Darius").play
        $game_party.lose_gold(informations[4])
        $game_map.setup(informations[1])
        $game_player.moveto(informations[2], informations[3])
        SceneManager.goto(Scene_Map)
        @back.dispose
        @tele.dispose
      else


EXATAMENTE ISSO CARA.
Putz kkk
Pra você deve ter sido moleza isso, mas como eu nao sei ainda fazer script, fica complicado. Vlw cara
ajudou MUITO!!!
 
Estado
Tópico fechado. Não é possível fazer postagens nela.
Voltar
Topo