Registrarse

BGM Surf

Estado
Cerrado para nuevas respuestas.
Buenos dias. Soy algo nuevo en esto del RPG Maker. Ya tengo algo de conocimiento basico pero me acabo de topar con un problema.
Ya se que para cambiar el audio de surf, tengo que hacerlo desde el archivo "metadata". Pero lo que yo busco es cambiar ese audio solamente en ciertos mapas.

Me explico: Estoy haciendo un mapa algo siniestro, y queria ponerle una musica de surf que fuera acorde sin cambiar la del resto de los mapas.
 
def pbAutoplayOnTransition
surfbgm=pbGetMetadata(0,MetadataSurfBGM)
if $PokemonGlobal.surfing && surfbgm
pbBGMPlay(surfbgm)
else
$game_map.autoplayAsCue
end
end

busca esto en la sección de scripts, cambialo y ponle una condicion de que si un interruptor está activo toque otra musica.
 
Y como llamo a un interruptor desde el editor de scripts? De eso no entiendo mucho.

Si pudieras poner un ejemplo te lo agradeceria mucho.
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Lo que ha dicho @digitalzone está bien a medias porque, ¿que vas a estar activando interruptores cada vez que cambias de mapa?
Lo suyo sería poner una condición según la ID del mapa, crea un nuevo script encima del script "main" y pega esto.
Código:
def pbAutoplayOnTransition
  surfbgm=pbGetMetadata(0,MetadataSurfBGM)

  # Si estamos en el mapa con ID 50
  if $game_map && $game_map.map_id == 50
    surfbgm = "otramusica.mp3"
  end

  if $PokemonGlobal.surfing && surfbgm
    pbBGMPlay(surfbgm)
  else
    $game_map.autoplayAsCue
  end
end
Si quisieses añadir más mapas simplemente copia el trozo de la condición otra vez, por ejemplo:

Código:
def pbAutoplayOnTransition
  surfbgm=pbGetMetadata(0,MetadataSurfBGM)

  # Si estamos en el mapa con ID 50
  if $game_map && $game_map.map_id == 50
    surfbgm = "otramusica.mp3"
  end

  # Si estamos en el mapa con ID 51
  if $game_map && $game_map.map_id == 51
    surfbgm = "otramusica2.mp3"
  end

  if $PokemonGlobal.surfing && surfbgm
    pbBGMPlay(surfbgm)
  else
    $game_map.autoplayAsCue
  end
end
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Por lo que veo es que esa no es al forma en la que carga la música de Surf, mi respuesta era simplemente explicando lo de las condiciones.
Me he puesto a mirarlo en un momentillo y a comprobar que funcionase, en lugar de lo que te he dicho antes pon esto en el script.

Código:
def pbGetMetadata(mapid,metadataType)
  if metadataType == MetadataSurfBGM

    # Si estamos en el mapa con ID 50
    if $game_map && $game_map.map_id == 50
      return  "otramusica.mp3"
    end

  end
  
  meta=pbLoadMetadata
  return meta[mapid][metadataType] if meta[mapid]
  return nil
end
 
No probe ese ultimo codigo que me pasaste pero gracias al anterior, pude resolverlo. No se programar muy bien pero algo entiendo.
Lo solucione mezclando tu primer codigo con el que esta en PField_HiddenMoves. (linea 487) :p
Me quedo esto:
Código:
def Kernel.pbSurf
  if $game_player.pbHasDependentEvents?
    return false
  end
  if $DEBUG ||
    (HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORSURF : $Trainer.badges[BADGEFORSURF])
    movefinder=Kernel.pbCheckMove(:SURF)
    if $DEBUG || movefinder
      if Kernel.pbConfirmMessage(_INTL("The water is a deep blue...\nWould you like to surf on it?"))
        speciesname=!movefinder ? $Trainer.name : movefinder.name
        Kernel.pbMessage(_INTL("{1} used Surf!",speciesname))
        pbHiddenMoveAnimation(movefinder)
        if $game_map && $game_map.map_id != 43
        surfbgm=pbGetMetadata(0,MetadataSurfBGM)
      end
      if $game_map && $game_map.map_id == 43
        surfbgm = "AOsurfing"
        end
        if surfbgm
          pbCueBGM(surfbgm,0.5)
        end
        pbStartSurfing()
        return true
      end
    end
  end
  return false
end
Muchas gracias por la ayuda :)
 
Estado
Cerrado para nuevas respuestas.
Arriba