Registrarse

[pokefirered] Cómo obtener EXP. por captura [SUPER FÁCIL!]

Max_Multi

RH inexperto
¡Heeeeeeey!, ¿cómo están?. Bienvenidos sean a mi segundo tutorial, y vaya que sí que estoy nervioso.
Hoy solo les voy a enseñar una cosa que, aunque su forma de hacer funcionar es demasiado rápida, fácil y sencilla me costó un poco para investigar, hasta que mi cabeza iluminó el foco y de ahí para adelante fue solo compilar el proyecto, ¿Cómo obtengo EXP al capturar un POKéMON?, pues vamos, dentro tutorial.

¡Bien!, ¿qué vamos a necesitar?, pues, vamos a necesitar un proyecto de pokefirered y la habilidad de usar el ratón.

Empezamos dirigiéndonos a data/battle_script2.s
Al abrir este documento vamos a pulsar "Ctrl+F" y vamos a buscar: "BattleScript_SuccessBallThrow::" y debería salirnos así:

Bien, ahora vamos a escribir justo debajo esto:
Código:
pause 200
setbyte sGIVEEXP_STATE, 0
getexp BS_TARGET
Una vez hecho esto debería quedarnos así:

¡Perfecto!, ahora solo quedaría guardar y abrir nuestro compilador para probar el proyecto.
1616116843236.png
1616116880757.png

¡Y listo!, ya tendríamos exp por captura. Fue fácil, y súper rápido eh?
Gracias al usuario @Lunos les puedo traer este tuto perfectamente funcional, todos los créditos hacia él por mostrarnos la forma correcta de insertar EXP por captura.

Nos dirigimos a la ruta data/battle_scripts_2.s, pulsamos Ctrl + f y buscamos "BattleScript_SuccessBallThrow::" y justo abajo de eso vamos a escribir: "setbyte sMON_CAUGHT, TRUE" y debería quedarnos así:
Ahora vamos a buscar "BattleScript_SafariNoIncGameStat::" y debajo de "printstring STRINGID_GOTCHAPKMNCAUGHT" vamos a escribir
setbyte sGIVEEXP_STATE, 0x0
getexp BS_TARGET
jumpifbyte CMP_NOT_EQUAL, sEXP_CATCH, TRUE, BattleScript_TryPrintCaughtMonInfo
BattleScript_TryPrintCaughtMonInfo::
Y quedaría así:
Una vez hecho esto nos dirigimos a include/battle.h, pulsamos ctrl+g y escribimos 506 para irnos a esa línea, una vez listo pulsamos enter para escribir en al línea 507 y ponemos "bool8 monCaught;" quedándose así:
Ahora nos dirigimos a include/constants/battle_script_command.h, pulsamos ctrl+g y ponemos 32, aquí vamos a escribir:
#define sMON_CAUGHT gBattleScripting + 0x27
#define sEXP_CATCH gBattleScripting + 0x28
y quedaría así:
Ahora nos vamos a src/battle_main.c, inmediatamente vamos a pulsar ctrl+f y vamos a buscar "gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; ", al encontrarlo pulsamos enter y escribimos lo siguiente "gBattleScripting.monCaught = FALSE;". Nos debería quedar así:
Ahora nos vamos a src/battle_script_commands.c y vamos a buscar con ctrl+f "PlayBGM(MUS_VICTORY_WILD);" al encontrarlo vamos a añadirle "//" al principio para que se convierta en un comentario. Quedando así:
y ahora finalmente vamos a src/reshow_battle_screen.c, pulsamos ctrl+g y escribimos 232, pulsamos enter y escribimos:
if (gBattleScripting.monCaught)
return;
Y ya por fin tendríamos listo todos los cambios!
Ya solo sería compilar y ya!, gracias por leerme.
  • Agradecimientos especiales a: @InmortalKaktus (Por el constante apoyo, gracias bro por esos animos!)
  • También agradecimientos especiales a @Lunos por la información para el nuevo tutorial. ¡Gracias máquina!
  • Agradecimientos a: @Lumbreon (Por su post de ganar exp por captura para pokéruby que fue de donde me basé para hacer esto)
  • Agradecimientos también a: @victor94abcd (Gracias por darme ánimos y por querer ayudarme en esta mini investigación bro)
Y eso sería todo, muchísimas gracias por ver. Cualquier error notificar con la mayor brevedad por favor.
 

Adjuntos

Última edición:

Max_Multi

RH inexperto
Es genial que estés trabajando e decomp bro y es bueno que estés trabajando en pokefired ya que está muy poco documentado
Por ahora solo estoy jugando un poco con los archivos. Aún estoy aferrado como un kohala a el ROMHacking Binario, pero voy a tratar de hacer unos tutos de pokéfirered, porque me pareció un tanto raro que no hubiesen tutos de esto.

¡Gracias por tu comentario ACE!
 

Kaktus

Miembro insignia
Miembro insignia
¡¡Que bien Matz!!

Como ya te dije por Discord, me alegra mucho ver que ha dado frutos ayudaros a los nuevos a iniciarios en decompilación de una forma más personal. Tutorial muy sencillo, pero eficaz y útil. Bien redactado y organizado, mis 10 compañero. Sigue así y serás una leyenda en unos añitos.

(Y ya veo que a la gente le ha gustado que hicieras un tuto para pokefirered 😮 )

¡¡Animos!!
 

Max_Multi

RH inexperto
Que buen tuto te aventaste bro, poco a poco se documentara pokefirered, sigue asi
Sí bro poco a poco quiero venir a traerles contenido de pokefirered, pero también te digo que estoy super verde en decomp.

¡Gracias por comentar!

¡¡Que bien Matz!!

Como ya te dije por Discord, me alegra mucho ver que ha dado frutos ayudaros a los nuevos a iniciarios en decompilación de una forma más personal. Tutorial muy sencillo, pero eficaz y útil. Bien redactado y organizado, mis 10 compañero. Sigue así y serás una leyenda en unos añitos.

(Y ya veo que a la gente le ha gustado que hicieras un tuto para pokefirered 😮 )

¡¡Animos!!
Creo que sabes lo que puede llegar a hacer la gente que inicias en decomp antes de que piensen hacerlo, muchísimas gracias por la ayuda que me brindaste para instalar decomp, espero seguir trayendo tutos de pokefirered mua pronto.

¡Gracias por tu comentario!
 

Lunos

Enfrentando a La Organización
Miembro insignia
¡Heeeeeeey!, ¿cómo están?. Bienvenidos sean a mi segundo tutorial, y vaya que sí que estoy nervioso.
Hoy solo les voy a enseñar una cosa que, aunque su forma de hacer funcionar es demasiado rápida, fácil y sencilla me costó un poco para investigar, hasta que mi cabeza iluminó el foco y de ahí para adelante fue solo compilar el proyecto, ¿Cómo obtengo EXP al capturar un POKéMON?, pues vamos, dentro tutorial.

¡Bien!, ¿qué vamos a necesitar?, pues, vamos a necesitar un proyecto de pokefirered y la habilidad de usar el ratón.

Empezamos dirigiéndonos a data/battle_script2.s
Al abrir este documento vamos a pulsar "Ctrl+F" y vamos a buscar: "BattleScript_SuccessBallThrow::" y debería salirnos así:

Bien, ahora vamos a escribir justo debajo esto:
Código:
setbyte sGIVEEXP_STATE, 0
getexp BS_TARGET
Una vez hecho esto debería quedarnos así:
¡Perfecto!, ahora solo quedaría guardar y abrir nuestro compilador para probar el proyecto.

¡Y listo!, ya tendríamos exp por captura. Fue fácil, y súper rápido eh?


Y eso sería todo, muchísimas gracias por ver. Cualquier error notificar con la mayor brevedad por favor.
Presiento que no has comprobado el resultado con el audio del juego activado.
 

Max_Multi

RH inexperto
Presiento que no has comprobado el resultado con el audio del juego activado.
Vaya, no, no lo había probbado con la música en ON, pero supongo que algo podré hacer al respecto, agradezco tu observación!

Edit 1: Lunos, ya he corregido el post, agradecería si lo vieras y me dijeras que tal, gracias por tu aporte bro!
 
Última edición:

Lunos

Enfrentando a La Organización
Miembro insignia
Vaya, no, no lo había probbado con la música en ON, pero supongo que algo podré hacer al respecto, agradezco tu observación!

Edit 1: Lunos, ya he corregido el post, agradecería si lo vieras y me dijeras que tal, gracias por tu aporte bro!
Pues añadir una pausa es una opción, pero no arregla el problema totalmente.
Si escuchas con atención, la fanfare de victoria se reinicia en cuanto la linea de texto "Gotcha! Pokémon was caught!" aparece en pantalla, y añadir una pausa no lo soluciona.
 

Max_Multi

RH inexperto
Pues añadir una pausa es una opción, pero no arregla el problema totalmente.
Si escuchas con atención, la fanfare de victoria se reinicia en cuanto la linea de texto "Gotcha! Pokémon was caught!" aparece en pantalla, y añadir una pausa no lo soluciona.
Después de escucharlo unas veces más he notado eso también, ¿cómo podría hacer para solucionar eso?, cambiar el orden del msg o cómo?, si me podrías decir para arreglar el post estaría totalmente agradecido
 

Lunos

Enfrentando a La Organización
Miembro insignia
Después de escucharlo unas veces más he notado eso también, ¿cómo podría hacer para solucionar eso?, cambiar el orden del msg o cómo?, si me podrías decir para arreglar el post estaría totalmente agradecido
Yo cuando implementé esto en Pokefirered lo hice tal que así, y funciona perfectamente.
 
Arriba