Registrarse

[Scripting] FR | Lectura y modificación de IVs para FRhackedEngine

Buenas, soy nuevo aquí pero creo que puedo hacer una pequeña contribución.

Una de las cosas que mas me ha fastidiado de pokemon FR es que cuando capturas un pokemon para tu equipo, la única forma de saber si tiene buenos IVs es hacer muchas matemáticas, y si además no te conformas con saber cuales son sus IVs sino que quieres un pokemon perfecto, te puedes pasar meses criando... pero ¡venga ya! ¿No os gustaría que hubiera un cientifico que pueda hacer ingeniería qenética en vuestros pokemon?

Ahora esto es posible gracias al FRhackedEngine, una serie de parches que incluyen rutinas ASM para, entre otras cosas, desencriptar los datos de los pokemon y poder modificarlos. Para mas información, AQUÍ

Primero una breve explicacion:
Para este tutorial necesitaremos usar los specials 0x6 0x8 y 0x10 del FRHE

Special 0x6:
Descompila el pokemon del equipo que se encuentre en la posición guardada en la variable 0x8004. Si hay ya un pokemon descompilado, lo recompila.

Special2 0x[variable] 0x8:
Lee el IV del stat guardado en la variable 0x8005. y guarda el resultado en la variable especificada. Los id de los stat son:
  • 0x0 - PS
  • 0x1 - Ataque
  • 0x2 - Defensa
  • 0x3 - Velocidad
  • 0x4 - Ataque especial
  • 0x5 - Defensa especial

Special 0x10:
Establece al IV del stat guardado en 0x8005 el valor guardado en 0x8006. Los ID de los stats son los mismos de arriba, y el valor de los IVs puede ir de 0 a 32 (0x0 - 0x1F)

Ejemplo

Descompilar el primer pokemon del equipo un pokemon, leer su IV de ataque y recompilarlo

setvar 0x8004 0x0 'posición 0 guardada en 0x8004 (variable leida por special 0x6)
special 0x06 'descompilar el pokemon en la posicion 0 del equipo
setvar 0x8005 0x1 'guardar el id del stat ataque en 0x8005 (variable leida por el special 0x8)
special2 0x8006 0x8 'leer el iv y guardarlo en la variable 0x8006 para luego hacer algo con ese valor
special 0x06 'recompilar el pokemon


Ahora los 2 scripts que he prometido (tambien están adjuntos en .txt):

Lector de IVs

#dynamic 0x800000

#org @start

lock
faceplayer
msgbox @m1 'soy el genetista bla bla
callstd 0x5
compare LASTRESULT 0x00
if 0x1 goto @cancelado


special 0x09f 'muestra la pantalla de elegir pokemon, el elegido va a 0x8004
waitstate 'espera a que elijas
compare 0x8004 0x6 'los sesultados pueden ir de 0x0 a 0x5, 0x6 es "salir", si elegiste 0x6, te manda a @cancelado
if 0x4 goto @cancelado

special 0x6 'descompilar el pokemon elegido (este especial es incluido por el FRHE)

msgbox @m_hp 'muestra el mensaje de "evaluemos el HP de tu pokemon"
callstd 0x4
setvar 0x8005 0x0 'cargar stat que queremos evalua
special2 0x8006 0x8 'leer el iv
compare 0x8006 31 'comparar el valor del iv con 31
if 0x1 call @v_perfect 'si es igual llamar a @v_perfect (pone la variable 0x8007 a 3)
compare 0x8006 30 'comparar el valor del iv con 30
if 0x0 call @v_bueno 'si esmenor llamar a @v_bueno (pone la variable 0x8007 a 2)
compare 0x8006 20 'comparar el valor del iv con 20
if 0x0 call @v_normal 'si esmenor llamar a @v_normal (pone la variable 0x8007 a 1)
compare 0x8006 10 'comparar el valor del iv con 10
if 0x0 call @v_malo 'si esmenor llamar a @v_malo (pone la variable 0x8007 a 0)
compare 0x8007 0x3
if 0x1 call @perfect
compare 0x8007 0x2
if 0x1 call @bueno
compare 0x8007 0x1
if 0x1 call @normal
compare 0x8007 0x0
if 0x1 call @malo 'comparar la variable 0x8007 con sus diferentes posibles valores y call el script que muestra el mensaje correspondiente

msgbox @m_atk 'como arriba pero para el ataque
callstd 0x4
setvar 0x8005 0x1 'cargar stat
special2 0x8006 0x8 'leer el iv
compare 0x8006 31
if 0x1 call @v_perfect
compare 0x8006 30
if 0x0 call @v_bueno
compare 0x8006 20
if 0x0 call @v_normal
compare 0x8006 10
if 0x0 call @v_malo
compare 0x8007 0x3
if 0x1 call @perfect
compare 0x8007 0x2
if 0x1 call @bueno
compare 0x8007 0x1
if 0x1 call @normal
compare 0x8007 0x0
if 0x1 call @malo

msgbox @m_def 'como arriba pero para el ataque
callstd 0x4
setvar 0x8005 0x2 'cargar stat
special2 0x8006 0x8 'leer el iv
compare 0x8006 31
if 0x1 call @v_perfect
compare 0x8006 30
if 0x0 call @v_bueno
compare 0x8006 20
if 0x0 call @v_normal
compare 0x8006 10
if 0x0 call @v_malo
compare 0x8007 0x3
if 0x1 call @perfect
compare 0x8007 0x2
if 0x1 call @bueno
compare 0x8007 0x1
if 0x1 call @normal
compare 0x8007 0x0
if 0x1 call @malo

msgbox @m_spd 'como arriba pero para el ataque
callstd 0x4
setvar 0x8005 0x3 'cargar stat
special2 0x8006 0x8 'leer el iv
compare 0x8006 31
if 0x1 call @v_perfect
compare 0x8006 30
if 0x0 call @v_bueno
compare 0x8006 20
if 0x0 call @v_normal
compare 0x8006 10
if 0x0 call @v_malo
compare 0x8007 0x3
if 0x1 call @perfect
compare 0x8007 0x2
if 0x1 call @bueno
compare 0x8007 0x1
if 0x1 call @normal
compare 0x8007 0x0
if 0x1 call @malo

msgbox @m_sa 'como arriba pero para el ataque
callstd 0x4
setvar 0x8005 0x4 'cargar stat
special2 0x8006 0x8 'leer el iv
compare 0x8006 31
if 0x1 call @v_perfect
compare 0x8006 30
if 0x0 call @v_bueno
compare 0x8006 20
if 0x0 call @v_normal
compare 0x8006 10
if 0x0 call @v_malo
compare 0x8007 0x3
if 0x1 call @perfect
compare 0x8007 0x2
if 0x1 call @bueno
compare 0x8007 0x1
if 0x1 call @normal
compare 0x8007 0x0
if 0x1 call @malo

msgbox @m_sd 'como arriba pero para el ataque
callstd 0x4
setvar 0x8005 0x5 'cargar stat
special2 0x8006 0x8 'leer el iv
compare 0x8006 31
if 0x1 call @v_perfect
compare 0x8006 30
if 0x0 call @v_bueno
compare 0x8006 20
if 0x0 call @v_normal
compare 0x8006 10
if 0x0 call @v_malo
compare 0x8007 0x3
if 0x1 call @perfect
compare 0x8007 0x2
if 0x1 call @bueno
compare 0x8007 0x1
if 0x1 call @normal
compare 0x8007 0x0
if 0x1 call @malo

special 0x6 'recompilar
release
end

#org @cancelado
msgbox @m2 'Bye!
callstd 0x4
release
end

#org @malo
msgbox @m_malo
callstd 0x4
return
#org @normal
msgbox @m_normal
callstd 0x4
return
#org @bueno
msgbox @m_bueno
callstd 0x4
return
#org @perfect
msgbox @m_perfect
callstd 0x4
return

#org @v_malo
setvar 0x8007 0x0
return
#org @v_normal
setvar 0x8007 0x1
return
#org @v_bueno
setvar 0x8007 0x2
return
#org @v_perfect
setvar 0x8007 0x3
return



'LOS TEXTOS ESTÁN EN INGLÉS PORQUE MI HACK ESTÁ EN INGLES (me da pereza cambiar todo el idioma)

#org @m1
= I'm a genetist! I can know your \npokemon potential! Do you want me to \pexamine any of your pokemon?

#org @m2
= Bye!


#org @m_hp
= Let's test your pokemon's HP...

#org @m_atk
= Let's test your pokemon's ATTACK...

#org @m_def
= Let's test your pokemon's DEFENCE...

#org @m_spd
= Let's test your pokemon's SPEED...

#org @m_sa
= Let's test your pokemon's SP.ATTACK...

#org @m_sd
= Let's test your pokemon's SP.DEFENCE...



#org @m_malo
= Your pokemon has quite BAD genes in \nthis stat, im sorry.

#org @m_normal
= Your pokemon has AVERAGE genes in \nthis stat

#org @m_bueno
= Your pokemon is quite GOOD in this \nstat!

#org @m_perfect
= Your pokemon's genes are PERFECT for \nthis stat!! Congratulations!


Perfeccionador de pokemon

#dynamic 0x800000

#org @start

lock
faceplayer
msgbox @m1 'soy el genetista bla bla
callstd 0x5
compare LASTRESULT 0x00
if 0x1 goto @cancelado

msgbox @m3 'Bye!
callstd 0x4

special 0x09f 'elegir pokemon, el elegido va a 0x8004
waitstate
compare 0x8004 0x6
if 0x4 goto @cancelado

showmoney 0x0 0x0 0x0
msgbox @m4 'esto te costara 60000 pavos bla bla...
callstd 0x5
compare LASTRESULT 0x00
if 0x1 goto @cancelado 'si elijes no pagar, salir

checkmoney 60000 0x0 'ver si tienes pasta
compare LASTRESULT 0x0
if 0x1 goto @poor 'si no tienes, decirte que te largues

paymoney 60000 0x0 'pagar
updatemoney 0x0 0x0 0x0 'reflejar los cambios en la caja de dinero

special 0x6 'descompilar el poke

setvar 0x8005 0x0 'poner el iv de PS en la var 0x8005
setvar 0x8006 31 'poner el valor maximo en la var 0x8006
special 0x10 'ejecutar el cambio del valor de iv
setvar 0x8005 0x1 'lo mismo que arriba para los demas stats
setvar 0x8006 31
special 0x10
setvar 0x8005 0x2
setvar 0x8006 31
special 0x10
setvar 0x8005 0x3
setvar 0x8006 31
special 0x10
setvar 0x8005 0x4
setvar 0x8006 31
special 0x10
setvar 0x8005 0x5
setvar 0x8006 31
special 0x10

special 0x6 'recompilar
hidemoney 0x0 0x0 'ocultar la pasta

msgbox @m5 'Bueno empecemos!
callstd 0x4

fadescreen 0x1 'fade para que parezca que el cientifico hace algo aunque el script ya lo ha hecho todo ¬¬
pause 0x90
fadescreen 0x0

msgbox @m6 'fin del script normal
callstd 0x4
release
end

#org @cancelado
msgbox @m2 'fin del scriptsi canclas
callstd 0x4
hidemoney 0x0 0x0
release
end


#org @poor
msgbox @mpoor 'fin del scriptsi eres pobre
callstd 0x4
hidemoney 0x0 0x0
release
end

'strings

#org @m1
= Hey! Did you know pokemon genes can \nbe modified? It's dangerous, \pexpensive and pokemon usually don't \nlike it, but I can rise one of your \ppokemon into

perfection!!! \nDo you want to try?

#org @m3
= Which pokemon should I modify?

#org @m4
= The whole proccess will cost 60000[$]\nDo we have a deal?

#org @m5
= Ok, let's start!

#org @m6
= Finished! Your pokemon is now PERFECT!


#org @mpoor
= Oh, im sorry but you cant afford this.


#org @m2
= Bye!


Espero que me haya explicado bien :blush:

Por cierto, sois completamente libres de usar estos scripts en vuestros hacks si lo deseáis, no es necesario dar crédito (si quiereis podeis dar crédito a Thymocyte o Adenosin) pero si me gustaría que me avisarais de que lo vais a usar (siempre mola saber que has ayudado a alguien!)

Venga ánimo!
 
Última edición por un moderador:
Respuesta: FR | Scripting | Script de lectura y modificación de IVs utilizando FRhackedEngine

yo lo usare que no te quepa duda ;)
 

Versekr Dark

Usuario mítico
Respuesta: FR | Scripting | Script de lectura y modificación de IVs utilizando FRhackedEngine

Me podrias ayudar a hacer esto lo he intentado pero nada, claro si no quiere no.
 
Respuesta: FR | Scripting | Script de lectura y modificación de IVs utilizando FRhackedEngine

trate de hacerlo funcionar y se me freezea... algun video seria buenisimo
 

Versekr Dark

Usuario mítico
Ya me salio muchas gracias es mas sencillo de lo que parece.

trate de hacerlo funcionar y se me freezea... algun video seria buenisimo
Amigo aqui te dejo el script te aseguro que te servira:

#dynamic 0x900000

#org @inicio
lock
faceplayer
if 0x0 goto @inicio2
checkflag 0x204
end



#org @inicio2
lock
faceplayer
checkflag 0x204
msgbox @msg1 0x5
compare 0x800D 0x1
if 0x1 goto @msg2
if 0x0 goto @msg3
setflag 0x204
release
end

#org @msg1
= Hola \v\h01, yo soy el\nperfeccionar de pokémon\pHe encontrado la manera de hacer\nque los pokémon sean perfectos en\lsus IV´s.\pNadie lo ha logrado pero excepto\nyo, pero ahora vengo a ofrecerte\leste servicio.\p¿Te gustaria que lo prefeccionara?

#org @msg2
lock
faceplayer
checkflag 0x205
msgbox @msg4 0x5
compare 0x800D 0x1
if 0x1 goto @msg6
if 0x0 goto @msg7
setflag 0x205
release
end

#org @msg4
= Esta bien lo hare pero necesito\nque me pagues $600 por el trabajo.\p¿Aun asi quieres continuar?


#org @msg3
lock
faceplayer
msgbox @msg5 0x6
release
end

#org @msg5
= Esta bien si no quieres no pasa\nnada.




#org @msg6
lock
faceplayer
checkflag 0x206
msgbox @msg8 0x6
special 0x09f
waitstate
compare 0x8004 0x6
if 0x4 goto @cancelado
fadescreen 0x1
pause 0x90
paymoney 0x1 0x00
special 0x6
setvar 0x8005 0x0
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x1
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x2
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x3
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x4
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x5
setvar 0x8006 0x1f
special 0x10
special 0x6
fadescreen 0x0
msgbox @msg9 0x6
setflag 0x206
release
end


#org @cancelado
= Esta bien estare aqui por si\ncambias de opinion.

#org @msg8
= Esta bien empezare con el trabajo.

#org @msg9
= Regresa pronto

#org @msg7
lock
faceplayer
msgbox @nada 0x6
release
end

#org @nada
= Esta bien si no quieres estare\naqui.
 
Última edición por un moderador:
Respuesta: FR | Scripting | Script de lectura y modificación de IVs utilizando FRhackedEngine

Amigo aqui te dejo el script te aseguro que te servira:

#dynamic 0x900000

#org @inicio
lock
faceplayer
if 0x0 goto @inicio2
checkflag 0x204
end



#org @inicio2
lock
faceplayer
checkflag 0x204
msgbox @msg1 0x5
compare 0x800D 0x1
if 0x1 goto @msg2
if 0x0 goto @msg3
setflag 0x204
release
end

#org @msg1
= Hola \v\h01, yo soy el\nperfeccionar de pokémon\pHe encontrado la manera de hacer\nque los pokémon sean perfectos en\lsus IV´s.\pNadie lo ha logrado pero excepto\nyo, pero ahora vengo a ofrecerte\leste servicio.\p¿Te gustaria que lo prefeccionara?

#org @msg2
lock
faceplayer
checkflag 0x205
msgbox @msg4 0x5
compare 0x800D 0x1
if 0x1 goto @msg6
if 0x0 goto @msg7
setflag 0x205
release
end

#org @msg4
= Esta bien lo hare pero necesito\nque me pagues $600 por el trabajo.\p¿Aun asi quieres continuar?


#org @msg3
lock
faceplayer
msgbox @msg5 0x6
release
end

#org @msg5
= Esta bien si no quieres no pasa\nnada.




#org @msg6
lock
faceplayer
checkflag 0x206
msgbox @msg8 0x6
special 0x09f
waitstate
compare 0x8004 0x6
if 0x4 goto @cancelado
fadescreen 0x1
pause 0x90
paymoney 0x1 0x00
special 0x6
setvar 0x8005 0x0
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x1
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x2
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x3
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x4
setvar 0x8006 0x1f
special 0x10
setvar 0x8005 0x5
setvar 0x8006 0x1f
special 0x10
special 0x6
fadescreen 0x0
msgbox @msg9 0x6
setflag 0x206
release
end


#org @cancelado
= Esta bien estare aqui por si\ncambias de opinion.

#org @msg8
= Esta bien empezare con el trabajo.

#org @msg9
= Regresa pronto

#org @msg7
lock
faceplayer
msgbox @nada 0x6
release
end

#org @nada
= Esta bien si no quieres estare\naqui.
lo probare man...
 

Versekr Dark

Usuario mítico
Respuesta: FR | Scripting | Script de lectura y modificación de IVs utilizando FRhackedEngine

todo se derrumbó...
Exacto, pero puedes usarlo doble claro esta que en uno ocupes el parche de especial y fisico(Hay un parche que no es el de mrdollsetak), el cual tu mismo tendras que cambiar las categorias y ahi si se puede hacer esto, y puedes usarlo como para revisar pokes y otras cosas bueno eso pienso hacer yo.
 
Respuesta: FR | Scripting | Script de lectura y modificación de IVs utilizando FRhackedEngine

Amigos alguien me ayuda con el scrip de lector de ivs es que no me funciona u.u
 
Arriba