Registrarse

[Scripts] Script para recibir pokemon

Estado
Cerrado para nuevas respuestas.

TinoMartino

TinoScripter
Necesito ayuda para hacer un script para obtener un pokemon, uno como si te lo encontrarás sobre una mesa, pero el problema es que si es que ya tengo 6 pokemon en el equipo desaparece, e intentado consultar, pero el ponerle un mote lo dificulta mas, agradeceria cualquier aporte
 

Berserker1523

2-Intentando discernir qué es lo más importante...
Es fácil, pon un countpokemon y si el LastResult = 6 entonces que vaya a otra parte donde te dice que tu equipo está lleno. Si el número es menor que 6 pues que funcione el Script.

No sé si habrás visto la guía de Xabier2012 pero ahí muy explicitamente dice (En la sección GivePokémon):

Código:
countpokemon
"El funcionamiento es el siguiente: Al utilizar este comando, la variable 800D tendrá el valor igual al número de pokémons en nuestro equipo. Es decir, que si tenemos 6 la variable 800D pasará a tener el valor "6". De esta forma podemos poner una condición, si la variable 800D es igual a 6 pues no continuaremos el script por ejemplo.

Este script no funcionará si tenéis seis pokémon en vuestro equipo (Os eliminaría uno). (SE REFIERE AL DE GIVEPOKEMON)"

Entonces la solución es esa, lo de envíar al pc no lo he investigado pero creo que será con alguna rutina etc, ya que creo que en el Fire Red no está esa opción.
 

Lunos

Enfrentando a La Organización
Miembro insignia
Necesito ayuda para hacer un script para obtener un pokemon, uno como si te lo encontrarás sobre una mesa, pero el problema es que si es que ya tengo 6 pokemon en el equipo desaparece, e intentado consultar, pero el ponerle un mote lo dificulta mas, agradeceria cualquier aporte
Código:
countpokemon // Cuenta los Pokémon en tu equipo.
compare LASTRESULT 0x5 // Compara el resultado del "countpokemon" con 0x5.
if 0x5 goto @lleno // Si tienes 6 Pokémon, te irás a @lleno. De lo contrario, el script continua.
givepokemon 0x1 0x5 0x0 0x0 0x0 0x0 // Bulbasaur Nv5.
msgbox @3 0x5 // Pregunta si quieres darle un mote.
compare LASTRESULT 0x1 // Comprueba si respondiste con un "Si"
if 0x1 call @nick // De ser asi, llama a "@nick", de lo contrario, sigue el script normalmente.
end

#org @nick
countpokemon // Cuenta los Pokémon en tu equipo.
subvar 0x800D 0x1 // Le resta "1" al resultado obtenido por "countpokemon".
copyvar 0x8004 0x800D // Copia y Pega el resultado en la Variable 0x8004
fadescreen 0x1
special 0x9E // Invoca a la pantalla para escribir el mote.
waitstate
return // Te regresa al segmento del script donde estabas antes de llamar a "@nick"

#org @lleno
end
Incorporalo a tu script y/o modificalo como prefieras.
Aqui tienes una explicación mas detallada.
 
Última edición:

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Asumiré que ésto se refiere a romhacking y que la base es FR pues no lo has aclarado. Si algo de esto fuese incorrecto, por favor avísanos.

Así que vamos por partes, que yo recuerde, cuando ya tienes el equipo lleno el pokémon es enviado a la PC directamente aunque es posible que no te lo avise. De ninguna manera "desaparece" como estás afirmando. Revisa en la PC.
Por otro lado, es totalmente posible y, además, sencillo ponerle mote a un pokémon que es enviado a la PC: usa el special 0x166. Eso sí, ponlo lo más pronto que puedas pues usa variables temporales como parámetros y si sus valores (asignados por el givepokemon) se modifican, podrías tener problemas. No obstante, recuerda que debes armar la estructura condicional tras el givepokemon pues si no tenías 6 (el pokémon queda en tu equipo) el special correcto es el 0x9E.
 

TinoMartino

TinoScripter
Código:
countpokemon // Cuenta los Pokémon en tu equipo.
compare LASTRESULT 0x5 // Compara el resultado del "countpokemon" con 0x5.
if 0x5 goto @lleno // Si tienes 6 Pokémon, te irás a @lleno. De lo contrario, el script continua.
givepokemon 0x1 0x5 0x0 0x0 0x0 0x0 // Bulbasaur Nv5.
msgbox @3 0x5 // Pregunta si quieres darle un mote.
compare LASTRESULT 0x1 // Comprueba si respondiste con un "Si"
if 0x1 call @nick // De ser asi, llama a "@nick", de lo contrario, sigue el script normalmente.
end

#org @nick
countpokemon // Cuenta los Pokémon en tu equipo.
subvar 0x800D 0x1 // Le resta "1" al resultado obtenido por "countpokemon".
copyvar 0x8004 0x800D // Copia y Pega el resultado en la Variable 0x8004
fadescreen 0x1
special 0x9E // Invoca a la pantalla para escribir el mote.
waitstate
return // Te regresa al segmento del script donde estabas antes de llamar a "@nick"

#org @lleno
end
Incorporalo a tu script y/o modificalo como prefieras.
Aqui tienes una explicación mas detallada.
Gracias, pero lo que aun me falta es que al tener 6 pokemon, el ultimo va al pc, sin opcion de darle mote

Es fácil, pon un countpokemon y si el LastResult = 6 entonces que vaya a otra parte donde te dice que tu equipo está lleno. Si el número es menor que 6 pues que funcione el Script.

No sé si habrás visto la guía de Xabier2012 pero ahí muy explicitamente dice (En la sección GivePokémon):

Código:
countpokemon
"El funcionamiento es el siguiente: Al utilizar este comando, la variable 800D tendrá el valor igual al número de pokémons en nuestro equipo. Es decir, que si tenemos 6 la variable 800D pasará a tener el valor "6". De esta forma podemos poner una condición, si la variable 800D es igual a 6 pues no continuaremos el script por ejemplo.

Este script no funcionará si tenéis seis pokémon en vuestro equipo (Os eliminaría uno). (SE REFIERE AL DE GIVEPOKEMON)"

Entonces la solución es esa, lo de envíar al pc no lo he investigado pero creo que será con alguna rutina etc, ya que creo que en el Fire Red no está esa opción.
Pues si que lo vi, y si es un givepokemon, pero no se como al tener 6 pokemon, el recibido no puede tener nombre al ser enviado directo al pc

Asumiré que ésto se refiere a romhacking y que la base es FR pues no lo has aclarado. Si algo de esto fuese incorrecto, por favor avísanos.

Así que vamos por partes, que yo recuerde, cuando ya tienes el equipo lleno el pokémon es enviado a la PC directamente aunque es posible que no te lo avise. De ninguna manera "desaparece" como estás afirmando. Revisa en la PC.
Por otro lado, es totalmente posible y, además, sencillo ponerle mote a un pokémon que es enviado a la PC: usa el special 0x166. Eso sí, ponlo lo más pronto que puedas pues usa variables temporales como parámetros y si sus valores (asignados por el givepokemon) se modifican, podrías tener problemas. No obstante, recuerda que debes armar la estructura condicional tras el givepokemon pues si no tenías 6 (el pokémon queda en tu equipo) el special correcto es el 0x9E.
Perdon por no especificar, soy un poco nuevo en el foro, y noc conozco, la base si es Fr, ya me fije, si va a la pc, pero sin embargo no puedo ponerle mote(Al que va a la pc)
 

Lunos

Enfrentando a La Organización
Miembro insignia
Gracias, pero lo que aun me falta es que al tener 6 pokemon, el ultimo va al pc, sin opcion de darle mote
A menos de que escribas tu propia Rutina ASM para lograr ese efecto, dudo que lo puedas conseguir. Es por eso que normalmente evitas que el jugador pueda recibir correctamente un givepokemon si tiene el equipo lleno.

EDITO: Hice algunas preguntas a ciertos conocidos y me comentaron que quizá mirando el script de Eevee en Ciudad Azulona o el de Castform en el Centro Meteorologico cerca de Ciudad Arborada puedas descifrar algo.

EDITO2: En cualquier caso, la respuesta del usuario @Enamorat de Aaró es totalmente valida y es muchisimo mejor que le des el intento antes de recurrir a investigar el par de scripts previamente mencionados.
Y por encima de todo, que darle el intento al Assembly, que es algo muchisimo mas serio.
 
Última edición:

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Una vez más insisto: tal cual lo haces con el special 0x9E, pero usando el $166.
Es decir, si el pokémon queda en el equipo, usas el $9E y si es enviado a la PC, el $166.

Código:
...
countpokemon
copyvar 0x4001 LASTRESULT
givepokemon 0x1 0x5 0x0 0x0 0x0 0x0
compare 0x4001 6
if 0x1 goto @nombrepc
special 0x9E
waitstate
...

#org @nombrepc
special 0x166
waitsate
...
 

TinoMartino

TinoScripter
Una vez más insisto: tal cual lo haces con el special 0x9E, pero usando el $166.
Es decir, si el pokémon queda en el equipo, usas el $9E y si es enviado a la PC, el $166.

Código:
...
countpokemon
copyvar 0x4001 LASTRESULT
givepokemon 0x1 0x5 0x0 0x0 0x0 0x0
compare 0x4001 6
if 0x1 goto @nombrepc
special 0x9E
waitstate
...

#org @nombrepc
special 0x166
waitsate
...
Gracias, lo que me faltaba era el special
 
Estado
Cerrado para nuevas respuestas.
Arriba