Registrarse

Comprobar tamaño de un POKéMON

Estado
Cerrado para nuevas respuestas.

hacanoca

Héroe de WaH
Buenas.
Busco hacer un script en el que un mini me revise el tamaño de un POKéMON, de tal forma que si se trata de un POKéMON gigante me den alguna recompensa. Algo similar a lo que pasa en Esmeralda con los SEEDOT y los LOTAD en la ciudad del octavo gimnasio.
En Esmeralda si no estoy mal lo hacen con varios special.
Alguno sabe cómo puedo verificar el tamaño (o peso) de algún POKéMON del equipo.
Lo que debe hacer el script es revisar que lleve al POKéMON en el equipo, si lo llevo, revisar el tamaño (o peso), y en caso de que sea grande dar alguna recompensa.
Para esto me imagino que también debo fijar en alguna variable el valor de referencia que debemos superar, aparte que también quisiera poner un cartel indicando el record.
Perdón, si es muy simple y estoy preguntando cosas fáciles.
Llevo poco tiempo.
Gracias
 

Inferno

Miembro insignia
Miembro insignia
Para revisar si tienes un Pokémon específico en el equipo es más sencillo, lo puedes hacer por las rutinas que Franco ha hecho y ha posteado aquí: https://whackahack.com/foro/t-43946/fr-asm-gps-s-get-pokemon-species-slot

Para lo del peso, en Fire Red, según JPAN, sabemos que los specials 0x77/0x78/0x79/0x7A actúan en torno al peso de los Pokémon Magikarp y Heracross de modo que:

077 Buffers Heracross in buffer 0x0 and its recorded size in buffer 0x1
078 checks Heracross size. returns to given variable 0x1 if there was no heracross, 0x2 if it was smaller, 0x3 if bigger and 0x4 if the same size. Updates record automatically
079 Buffers Magicarp in buffer 0x0 and its recorded size in buffer 0x1
07A checks Magicarp size. returns to given variable 0x1 if there was no Magicarp, 0x2 if it was smaller, 0x3 if bigger and 0x4 if the same size. Updates record automatically
Lo único que se me ocurre para que sea con otro Pokémon que tu quieras, sería por ASM, modificando la rutina original.
Desconozco si hay otra manera más sencilla de hacer lo que buscas la verdad.
Pero por si alguien con los conocimientos se anima a modificar las rutinas os dejo el offset específico de las mismas:
special 0x77---0x0CADC0
special 0x78---0x0A0918
special 0x79---0x0A0930
special 0x7A---0x0A096C
 

hacanoca

Héroe de WaH
Para revisar si tienes un Pokémon específico en el equipo es más sencillo, lo puedes hacer por las rutinas que Franco ha hecho y ha posteado aquí: https://whackahack.com/foro/t-43946/fr-asm-gps-s-get-pokemon-species-slot

Para lo del peso, en Fire Red, según JPAN, sabemos que los specials 0x77/0x78/0x79/0x7A actúan en torno al peso de los Pokémon Magikarp y Heracross de modo que:



Lo único que se me ocurre para que sea con otro Pokémon que tu quieras, sería por ASM, modificando la rutina original.
Desconozco si hay otra manera más sencilla de hacer lo que buscas la verdad.
Pero por si alguien con los conocimientos se anima a modificar las rutinas os dejo el offset específico de las mismas:
Gracias
De hecho lo pensaba hacer con un Magikarp, no sabía que se tenían esos specials.
En el caso del special 0x7A:
1) ¿Se requiere revisar que se lleve el Magikarp en el equipo, o el special lo revisa sólo?
2) ¿En qué variable se guarda el record del tamaño?, como para mostrarla luego en un poste diferente
 

MichaKing

Grafista avanzado

Lo único que se me ocurre es que "manipules" los Pokémon que tenga el jugador en ese momento de alguna manera, aunque llevaría trabajo hacer que tenga los Pokémon exactos en el equipo creo que es lo más óptimo. ¿Y para que serviría saber los Pokémon que tiene en ese momento? muy simple, modificando la rutina de Franco puedes comprobar que el jugador tenga por ejemplo, un Rhydon, y de ser así ganaría el concurso en caso de que supere la altura expuesta. No sé si sea posible hacerlo o si quiera que hayas entendido, pero espero lo hayas hecho y se te ocurra algo a raíz de todo esto.

~MichaKing
 

hacanoca

Héroe de WaH
Hola
Bueno, gracias a la respuesta de Inferno he logrado que un mini evalúe el peso de mi POKéMON (Un Magikarp) correctamente.
Ahora, lo que no he conseguido es mostrar el record del tamaño en un cartel.
(Igual que en Esmeralda con los SEEDOT y LOTAD, pero aquí con MAGIKARP)
Basándome en el script de esa parte de esmeralda, estoy usando el siguiente código:

#dynamic 0x800000
#org @pesca
lockall
faceplayer
special 0x79
msgbox @texto 0x3
releaseall
end

#org @texto
= El [buffer1] más\ngrande que se ha visto en este\lconcurso, tiene un tamaño de\l[buffer2] pulgadas.

Cuando lo ejecuto, en el buffer 1 me queda MAGIKARP (como esperaba) pero en el buffer 2 me queda cualquier cosa, como lo último que se guardó. Entonces si por ejemplo leo el cartel luego de coger un objeto, me aparece por ejemplo que el Magikarp mide POKéBALL pulgadas.

No sé cómo debo hacer el script =(
 

Inferno

Miembro insignia
Miembro insignia
Hola
Bueno, gracias a la respuesta de Inferno he logrado que un mini evalúe el peso de mi POKéMON (Un Magikarp) correctamente.
Ahora, lo que no he conseguido es mostrar el record del tamaño en un cartel.
(Igual que en Esmeralda con los SEEDOT y LOTAD, pero aquí con MAGIKARP)
Basándome en el script de esa parte de esmeralda, estoy usando el siguiente código:

#dynamic 0x800000
#org @pesca
lockall
faceplayer
special 0x79
msgbox @texto 0x3
releaseall
end

#org @texto
= El [buffer1] más\ngrande que se ha visto en este\lconcurso, tiene un tamaño de\l[buffer2] pulgadas.

Cuando lo ejecuto, en el buffer 1 me queda MAGIKARP (como esperaba) pero en el buffer 2 me queda cualquier cosa, como lo último que se guardó. Entonces si por ejemplo leo el cartel luego de coger un objeto, me aparece por ejemplo que el Magikarp mide POKéBALL pulgadas.

No sé cómo debo hacer el script =(
Te paso un script que he hecho ahora en un momento:

Código:
#dynamic 0x800000

#org @start
lock
faceplayer
special 0x79
msgbox @msg 0x6
special 0x9F
waitstate
copyvar LASTRESULT 0x8004
compare LASTRESULT 0x7
if 0x1 goto @OSalir
special 0x7A
compare LASTRESULT 0x1
if 0x1 goto @nopkm
compare LASTRESULT 0x2
if 0x1 goto @pequeño
compare LASTRESULT 0x3
if 0x1 goto @grande
compare LASTRESULT 0x4
if 0x1 goto @mismo
release
end

#org @OSalir
msgbox @msg2 0x6
release
end

#org @nopkm
msgbox @msg3 0x6
release
end

#org @pequeño
msgbox @msg4 0x6
release
end

#org @grande
msgbox @msg5 0x6
release
end

#org @mismo
msgbox @msg6 0x6
release
end

#org @msg
= Por casualidad no tendrás un\nMagikarp de gran tamaño en tu\lequipo, ¿Verdad?

#org @msg2
= Que pena, si consigues alguno ven\ny enséñamelo.

#org @msg3
= Eso no es un Magikarp...

#org @msg4
= Este mide [buffer2] cm, no es tan grande\ncomo esperaba, hasta ahora el más\lgrande que me has enseñado medía\l [buffer3] cm.

#org @msg5
= ¡¡[buffer2] cm!! ¡Es impresionante! Nunca\nhabía visto un Magikarp tan\lgrande.

#org @msg6
= ¿[buffer2] cm? Este es el mismo que me has\nenseñado.
Ahí ya tendrías el medidor del record, pero de todas formas he visto que se guardaba en el buffer3, si quieres hacer un cartel podrías hacer de forma rápida algo así:

Código:
#dynamic 0x800000

#org @start
lock
checkflag 0x2FF
if 0x0 goto @desactivada
special 0x79
msgbox @record 0x3
release
end

#org @desactivada
msgbox @nada 0x6
release
end

#org @record
= Tu record es de [buffer3] cm.

#org @nada
= Tu record es de 0 cm.
Activando obviamente la flag en el script anterior, no llega con poner la parte del script sin la flag porque en el buffer3 se guarda el record que necesitas sobrepasar, por lo tanto si pulsases el cartel sin previamente hablar con la otra persona, no te saldría 0 cm en el record.

Como curiosidad y como dato, aquí os dejo un link de como se establece el tamaño de los magikarp: http://www.pokexperto.net/index2.php?seccion=mecanica/magikarp
 
Estado
Cerrado para nuevas respuestas.
Arriba