Registrarse

[RPG - Gráficos] Cambio animación hierba

Estado
Cerrado para nuevas respuestas.
Hola!
Perdón si esta duda ya tiene respuesta en otro hilo, busqué pero no pude encontrarla...
Estoy trabajando con Pokemon Essentials 17.2 y el Engine GS 1.1 con gráficos de la Segunda Generación (G/S/C).
Cuestión que al ingresar a la hierba no consigo hacer que la animación tenga el mismo color que la hierba. Dejo una captura:




He creado las animaciones con los colores correspondientes tanto para el color de hierba nocturna como para otro tipo de hierba "seca" que quiero usar en mi juego, pero no sé cómo hacer que al elegir el tileset correspondiente se active la animación correspondiente. Supongo que tal vez tiene algo que ver con el Script de Field Movement, pero lo cierto es que soy nuevo con RPGMaker y no llego a darme una idea de qué modificar.
Muchas gracias por la ayuda!! =)
 

Jessie

What goes around, comes around
En la sección PokemonField, cerca de la linea 1392, encontrarás esta parte :

Código:
Events.onStepTakenFieldMovement+=proc{|sender,e|
  event=e[0] # Get the event affected by field movement
  currentTag=pbGetTerrainTag(event)
  if pbGetTerrainTag(event,true)==PBTerrain::Grass  # Won't show if under bridge
    $scene.spriteset.addUserAnimation(GRASS_ANIMATION_ID,event.x,event.y)
  elsif event==$game_player && currentTag==PBTerrain::WaterfallCrest
    # Descend waterfall, but only if this event is the player
    Kernel.pbDescendWaterfall(event)
  elsif event==$game_player && currentTag==PBTerrain::Ice && !$PokemonGlobal.sliding
    Kernel.pbSlideOnIce(event)
  end
}
Aquí es donde se realizan las animaciones cuando el jugador se mueve sobre cierto terreno.

Ahora si lo que quieres es cambiar esa animación lo que puedes hacer es agregar condicionales para cada situación.

Código:
Events.onStepTakenFieldMovement+=proc{|sender,e|
  event=e[0] # Get the event affected by field movement
  currentTag=pbGetTerrainTag(event)
  if pbGetTerrainTag(event,true)==PBTerrain::Grass  # Won't show if under bridge
    
#Verificamos si es tarde o noche
    tiempo=pbGetTimeNow
    if PBDayNight.isNight?(tiempo)
        $scene.spriteset.addUserAnimation(2,event.x,event.y)
    elsif PBDayNight.isEvening?(tiempo)
        $scene.spriteset.addUserAnimation(3,event.x,event.y)
    else
        $scene.spriteset.addUserAnimation(GRASS_ANIMATION_ID,event.x,event.y)
    end

    

  elsif event==$game_player && currentTag==PBTerrain::WaterfallCrest
    # Descend waterfall, but only if this event is the player
    Kernel.pbDescendWaterfall(event)
  elsif event==$game_player && currentTag==PBTerrain::Ice && !$PokemonGlobal.sliding
    Kernel.pbSlideOnIce(event)
  end
}
Si es de noche se muestra la animación 2, si es de tarde la animación 3 y para el día la animación básica.

Con base en esto puedes agregar diferentes condicionales para las situaciones que requieras, por ejemplo si quieres que es el mapa Número 29 tenga hierba seca entonces puedes colocar otro condicional así :

Código:
Events.onStepTakenFieldMovement+=proc{|sender,e|
  event=e[0] # Get the event affected by field movement
  currentTag=pbGetTerrainTag(event)
  if pbGetTerrainTag(event,true)==PBTerrain::Grass  # Won't show if under bridge
    
#Verificamos si es tarde o noche
    tiempo=pbGetTimeNow
    if $game_map.map_id==29
        $scene.spriteset.addUserAnimation(4,event.x,event.y)
    elsif PBDayNight.isNight?(tiempo)
        $scene.spriteset.addUserAnimation(2,event.x,event.y)
    elsif PBDayNight.isEvening?(tiempo)
        $scene.spriteset.addUserAnimation(3,event.x,event.y)
    else
        $scene.spriteset.addUserAnimation(GRASS_ANIMATION_ID,event.x,event.y)
    end
    

  elsif event==$game_player && currentTag==PBTerrain::WaterfallCrest
    # Descend waterfall, but only if this event is the player
    Kernel.pbDescendWaterfall(event)
  elsif event==$game_player && currentTag==PBTerrain::Ice && !$PokemonGlobal.sliding
    Kernel.pbSlideOnIce(event)
  end
}
Si estas en el mapa 29 siempre te saldrá la animación 4.

Pero en caso de que quieras que esa animación especial para el mapa 29 también tenga variaciones según la hora del día, puedes acomodar el condicional de esta forma :

Código:
Events.onStepTakenFieldMovement+=proc{|sender,e|
  event=e[0] # Get the event affected by field movement
  currentTag=pbGetTerrainTag(event)
  if pbGetTerrainTag(event,true)==PBTerrain::Grass  # Won't show if under bridge

    #Verificamos si es tarde o noche y según el mapa
    tiempo=pbGetTimeNow
    if $game_map.map_id==29 # Si estas en el mapa 29
       if PBDayNight.isNight?(tiempo)
          $scene.spriteset.addUserAnimation(5,event.x,event.y)
       elsif PBDayNight.isEvening?(tiempo)
          $scene.spriteset.addUserAnimation(6,event.x,event.y)
       else
          $scene.spriteset.addUserAnimation(4,event.x,event.y)
       end
    else # Si estas en cualquier otro mapa
       if PBDayNight.isNight?(tiempo)
          $scene.spriteset.addUserAnimation(2,event.x,event.y)
       elsif PBDayNight.isEvening?(tiempo)
          $scene.spriteset.addUserAnimation(3,event.x,event.y)
       else
          $scene.spriteset.addUserAnimation(GRASS_ANIMATION_ID,event.x,event.y)
       end
    end
    

  elsif event==$game_player && currentTag==PBTerrain::WaterfallCrest
    # Descend waterfall, but only if this event is the player
    Kernel.pbDescendWaterfall(event)
  elsif event==$game_player && currentTag==PBTerrain::Ice && !$PokemonGlobal.sliding
    Kernel.pbSlideOnIce(event)
  end
}
De esta manera puedes colocar diferentes animaciones según lo que necesites, es solo cuestión de añadir más condicionales o modificar lo que ya existen para que se adapten a lo que estás buscando para tu proyecto.

Espero que te sirva, saludos.
 
Estado
Cerrado para nuevas respuestas.
Arriba