Author Id: 24185 Author Name: adenosin Post Content: 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, [url=http://wahackpokemon.com/es/mICp8/Potencia_pa_tu_FireRed_Colgamos_el_Hacked_Engine]AQUÍ[/url] 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: [list] [*]0x0 - PS [*]0x1 - Ataque [*]0x2 - Defensa [*]0x3 - Velocidad [*]0x4 - Ataque especial [*]0x5 - Defensa especial [/list] 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 [spoiler=Pincha para desplegar este spoiler] 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 [/spoiler] Ahora los 2 scripts que he prometido (tambien están adjuntos en .txt): Lector de IVs [spoiler=Pincha para desplegar este spoiler] #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! [/spoiler] Perfeccionador de pokemon [spoiler=Pincha para desplegar este spoiler] #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 'descompilarel 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! [/spoiler] 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!