Registrarse

[RPG - Scripting] Insertar Sprite Animado en el Summary Screen

Estado
Cerrado para nuevas respuestas.

Jenkkrystal

Usuario de oro
Hola, muy buenas!, estoy tratando de insertar un sprite-sheet (sprite animado) en el summary screen. En concreto, querría sustituir los sprites estáticos de los símbolos de las constelaciones del script Birthsigns de Lucidious89.

He tenido éxito sustituyendo el sprite de pokemon variocolor (la estrellita roja), por uno animado propio, pero los Birthsigns se me complican.

Alguien me echa una mano?

Os dejo un ejemplo de los sprite sheets que quiero insertar:
 

Jessie

What goes around, comes around
Honestamente yo no uso el script de Birthsigns, pero podrías agregar la animación de la misma manera que has agregado la de la Estrella.

Dices que se te complica, entonces podrías mostrar como lo has hecho? así poder guiarte mejor.
 

Jenkkrystal

Usuario de oro
Vale, fallo mio :p

Primero dejaré claro que aún soy muy malo con los scripts, aunque voy consiguiendo cosillas.

Essentials 17.2

Para sustituir el sprite animado de la estrella shiny lo que hice fue añadir en PScreen_Summary, dentro de def pbStartScene(party,partyindex) las siguientes líneas:
@Sprites["shinyjenk"] = AnimatedSprite.new("Graphics/Pictures/shinyjenk",20,32,32,4,@viewport)
@Sprites["shinyjenk"].x = 34
@Sprites["shinyjenk"].y = 55
@Sprites["shinyjenk"].play
@Sprites["shinyjenk"].visible = false

Sustituir el apartado de: # Show shininess star
por:

# Show shininess star

if @pokemon.isShiny?
@Sprites["shinyjenk"].visible = true
# imagepos.push([sprintf("Graphics/Pictures/shiny"),2,302,0,0,-1,-1])
end
if @pokemon.isShiny?
@Sprites["shinyjenk"].visible = false
# imagepos.push([sprintf("Graphics/Pictures/shiny"),2,302,0,0,-1,-1])

e ir ocultando el sprite de la estrella en las páginas del sumario donde no quiero que aparezca con:
@Sprites["shinyjenk"].visible = false if @Sprites["shinyjenk"]

Básicamente es eso.

Tratando de sustituir los sprites de los "zodiactokens" (que son sprites comunes que se muestran junto al sprite del pokemon en el summary screen, pero que cambia según el birthsign que tenga tu pokemon) realizo más o menos el mismo procedimiento:

agrego en PScreen_Summary, dentro de def pbStartScene(party,partyindex) lo siguiente:

@Sprites["tokitoki1"] = AnimatedSprite.new("Graphics/Pictures/birthsigns/token%02d",15,64,64,4,@viewport)
@Sprites["tokitoki1"].x = 154
@Sprites["tokitoki1"].y = 292
@Sprites["tokitoki1"].play
@Sprites["tokitoki1"].visible = false
@Sprites["tokitoki2"] = AnimatedSprite.new("Graphics/Pictures/birthsigns/bless_token%02d",15,64,64,4,@viewport)
@Sprites["tokitoki2"].x = 154
@Sprites["tokitoki2"].y = 292
@Sprites["tokitoki2"].play
@Sprites["tokitoki2"].visible = false

Los sprites-sheets van en Graphics/Pictures/birthsigns/ y se nombran: Token01, Token02, ...etc y bless_token01, bless_token02... etc

dentro de class PokemonSummary_Scene, he modificado lo siguiente:



y en def drawpage(page) he añadido:

#===========================================================================
# Birthsigns - Zodiac Token
#===========================================================================
if @pokemon.hasBirthsign? || isConst? @pokemon.species,PBSpecies,:ARCEUS)
#zodiactoken=pbDisplaySummaryToken
pbDisplaySummaryToken
#imagepos.push([zodiactoken,154,292,0,0,-1,-1])
end

Eso es todo: el primer error, que tengo por ahora me aparece al entrar en el summary:



Se que no está bien hecho el script, pero no sé exactamente donde falla.

Muchas gracias de antemano :)
 

Jessie

What goes around, comes around
Pues no estoy muy al tanto de como funciona el script de Birthsigns,pero a simple vista parece ser que colocaste mal el nombre de los bitmaps.

Si te fijas en el original (supongo que es la misma versión que la que usas), el bitmap se carga de manera distinta



Además de que la función pbDisplaySummaryToken solo debería cargar la información de 1 solo bitmap(la dirección); y tu has agregado otras cosas xd

Solucion :

Primero, deja a pbDisplaySummaryToken como estaba originalmente, luego regresa a pbStartScene(party,partyindex) y define los bitmap correctamente

Código:
dir1=pbDisplaySummaryToken
 [MENTION=24071]Sprite[/MENTION]s["tokitoki1"] = AnimatedSprite.new(dir1,15,64,64,4,@viewport)
 [MENTION=24071]Sprite[/MENTION]s["tokitoki1"].x = 154
 [MENTION=24071]Sprite[/MENTION]s["tokitoki1"].y = 292
 [MENTION=24071]Sprite[/MENTION]s["tokitoki1"].play
 [MENTION=24071]Sprite[/MENTION]s["tokitoki1"].visible = false
ahora para la imagen del bless, necesitas hacer otra función idéntica al de pbDisplaySummaryToken solo le cambias el nombre y la dirección



Y luego modificas el bitmap para el bless

Código:
dir2=pbDisplaySummaryTokenBless
 [MENTION=24071]Sprite[/MENTION]s["tokitoki2"] = AnimatedSprite.new(dir2,15,64,64,4,@viewport)
 [MENTION=24071]Sprite[/MENTION]s["tokitoki2"].x = 154
 [MENTION=24071]Sprite[/MENTION]s["tokitoki2"].y = 292
 [MENTION=24071]Sprite[/MENTION]s["tokitoki2"].play
 [MENTION=24071]Sprite[/MENTION]s["tokitoki2"].visible = false
Y para drawPage(page), sustituir la info que tenía y agregar dos pequeños condicionales para los bitmaps



Y con eso debe quedar.

Te repito, no estoy muy al tanto de como funciona este script, pero supongo que con esto ya debería funcionar, al menos los bitmaps

Saludos
 

Jenkkrystal

Usuario de oro
Genial! Funciona!

He corregido todo como me has dicho, y he tenido que modificar el código que va en def drawpage(page) por:

if @pokemon.hasBirthsign? || isConst? @pokemon.species,PBSpecies,:ARCEUS)
if @pokemon.isBlessed?
@Sprites["tokitoki1"].visible = false
@Sprites["tokitoki2"].visible = true
else
@Sprites["tokitoki2"].visible = false
@Sprites["tokitoki1"].visible = true
end
end

Así luce:



Aún tengo un pequeño problema, y es que el sprite animado que he añadido, que es distinto para cada birthsign, solo aparece correctamente cuando entro por primera vez al summary, y si cambio de pokemon con las teclas de arriba o abajo no se actualiza, si no que se mantiene, (como se ve en el .gif de arriba, cuando abro el summary de pikachu tiene un signo morado, que se corresponde con su signo, pero al cambiar a pidgeotto, no se actualiza el sprite con el correspondiente al signo de pidgeotto; si abro directamente el summary de pidgeotto, sería al contrario)

Se donde dirigirme en el script, pero no se que código usar para actualizar el sprite.

Mil gracias Jess!

Edito:

Hay 34 Birthsigns, cada uno con su correspondiente Sprite, y otros 34 sprites para los "BlessedPokemons".
 
Última edición:

Jessie

What goes around, comes around
Lo que sucede es que el class AnimatedSprite no permite el cambio de bitmap una vez definido este. Lo que puedes hacer es eliminar y crear nuevamente el bitmap cada vez que se cambie de pagina.

Primero crea una nueva función arriba del pbStartScene(party,partyindex) en la cual definirás los sprites de los tokens



Yo la he nombrado crea_bitmap_tokens pero puedes nombrarla como gustes.

Ahora en el pbStartScene(party,partyindex) elimina los sprites que habías definido y en su lugar los definiremos desde el drawPage(page)

Luego en el drawPage(page) editas el condicional para que este así


Así te creará los bitmaps al cambiar de pagina y si estos ya existen te los elimina y crea nuevamente para poder actualizar los iconos.
Quizás tarde unos segundos adicionales en cargar al cambiar de pagina o de poke.

Espero que ahora si te sirva, saludos.
 

Jenkkrystal

Usuario de oro
Lo he puesto todo como me has dicho, y esta vez no para de tirarme errores cuando entro en el summary:

[Pokémon Essentials version 17.2]
Exception: NoMethodError
Message: undefined method `[]' for nil:NilClass
PScreen_Summary:106:in `crea_bitmap_tokens'
Birthsign:3523:in `drawPage'
PScreen_Summary:199:in `pbStartScene'
PScreen_Summary:1539:in `pbStartScreen'
PScreen_Party:728:in `pbSummary'
Birthsign:1714:in `pbPokemonScreen'
Birthsign:1371:in `loop'
Birthsign:3242:in `pbPokemonScreen'
ModularMenu:372
ModularMenu:371:in `pbFadeOutIn'

He probado con la configuración de antes y añadiendo esto (en Down y Up):



y también me tira error, aunque esta vez no es al entrar directamente en el summary, sino cuando cambio de pokemon con las teclas de arriba y abajo:

[Pokémon Essentials version 17.2]
Exception: NoMethodError
Message: undefined method `[]' for nil:NilClass
Birthsign:3872:in `pbScene'
Birthsign:3803:in `loop'
Birthsign:3928:in `pbScene'
PScreen_Summary:1540:in `pbStartScreen'
PScreen_Party:728:in `pbSummary'
Birthsign:1714:in `pbPokemonScreen'
Birthsign:1371:in `loop'
Birthsign:3242:in `pbPokemonScreen'
ModularMenu:372
ModularMenu:371:in `pbFadeOutIn'

No hay manera..

Saludos
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Si no me equivoco eso es porque has puesto @Sprites, con mayusculas, para Ruby @Sprites y @sprites son dos cosas diferentes.
 
Estado
Cerrado para nuevas respuestas.
Arriba