EDITO: He porteado esta mecanica que Blurose escribió a Pokeemerald y Pokefirered.
Pueden ver los cambios necesarios a continuación.
Pokeemerald:
https://github.com/pret/pokeemerald/compare/master...LOuroboros:gen6_exp_share
Pokefirered:
https://github.com/LOuroboros/pokefirered/commit/fb68fb9d133dc8a350a847c7c322415cd681fb06
El asunto es simple, revisen los cambios dentro de GitHub y apliquenlo en su proyecto.
Las lineas verdes son contenido nuevo. Representan codigo entrante.
Las lineas rojas son contenido viejo. Representan codigo que sale, o es reemplazado por codigo nuevo.
La versión de Pokefirered puede estar desactualizada.
La verdad es que no lo uso activamente porque es una opción inferior a Pokeemerald.
Así luce el producto terminado:
Post Original:
Y ya está.
Pueden ver los cambios necesarios a continuación.
Pokeemerald:
https://github.com/pret/pokeemerald/compare/master...LOuroboros:gen6_exp_share
Pokefirered:
https://github.com/LOuroboros/pokefirered/commit/fb68fb9d133dc8a350a847c7c322415cd681fb06
El asunto es simple, revisen los cambios dentro de GitHub y apliquenlo en su proyecto.
Las lineas verdes son contenido nuevo. Representan codigo entrante.
Las lineas rojas son contenido viejo. Representan codigo que sale, o es reemplazado por codigo nuevo.
La versión de Pokefirered puede estar desactualizada.
La verdad es que no lo uso activamente porque es una opción inferior a Pokeemerald.
Así luce el producto terminado:
Post Original:
Holi. Siguiendo con estos no tutoriales, vengo a dejar por aquí las modificaciones para hacer que nuestro Exp. Share pase a funcionar como el de la Sexta Generación de juegos pokémon.
Antes de comenzar, hay que destacar que esto lo hizo @BluRose y lo escribió justo aqui, asi que todos los creditos van para él.
Sin mas que decir, empecemos.
Requisitos:
-Leer mi tema de introducción a Pokeruby.
-Editor de texto (yo usaré Notepad++)
Instrucciones:
1) Abrimos pokeruby\include\global.h con nuestro editor de texto.
Acto seguido buscamos "struct SaveBlock2 /* 0x02024EA4 */" mediante Ctrl+F, y veremos esto:
Sugiero respetar el patrón de espacios, para que todo luzca lindo y prolijo.
2) Abrimos pokeruby\src\strings.c con nuestro editor de texto.
Acto seguido añadiremos estas 2 lineas en donde nos plazca.
Yo las añadí en las Lineas #151 y #152, porque si.
Acto seguido añadiremos estas 2 lineas en donde nos plazca.
Yo las añadí en las Lineas #141 y #142, porque si.
4) Abrimos pokeruby\src\item_use.c con nuestro editor de texto.
Añadiremos la siguiente función en donde queramos.
Yo la puse luego de "void ItemUseOutOfBattle_Mail(u8 taskId)" porque me salió de las pelotas.
Añadiremos esta linea en donde queramos.
Yo la puse debajo de "void ItemUseOutOfBattle_Mail(u8);" porque me salia de las pelotas.
Aquí la bestia aumenta un poco de tamaño ( ͡° ͜ʖ ͡°) ....
No, en serio, vamos a la función "static void atk23_getexp(void)" en la Linea #5367, y veremos este pedazo de cacho de trozo de función que ni en broma pienso pegar aquí
Pues lo que modificaremos serán los Casos 1 y 2.
Basicamente reemplazaremos el contenido de la Linea #5397 a la #5531 por esta función que tambien es medio larga y no pondré aquí directamente porque luce para el ojete.
7) Abrimos pokeruby\src\data\items_en.h con nuestro editor de texto.
Ctrl+F "share" y veremos lo siguiente:
Por ahi la sintaxis luce para el reverendo culo en este foro. En ese caso, agarren las piezas de codigo nuevas desde el post enlazado al inicio de este y ya. Muy sencillo todo.
Antes de comenzar, hay que destacar que esto lo hizo @BluRose y lo escribió justo aqui, asi que todos los creditos van para él.
Sin mas que decir, empecemos.
Requisitos:
-Leer mi tema de introducción a Pokeruby.
-Editor de texto (yo usaré Notepad++)
Instrucciones:
1) Abrimos pokeruby\include\global.h con nuestro editor de texto.
Acto seguido buscamos "struct SaveBlock2 /* 0x02024EA4 */" mediante Ctrl+F, y veremos esto:
Debajo de "u16 regionMapZoom:1" añadiremos "u16 expShare:1;".struct SaveBlock2 /* 0x02024EA4 */
{
/*0x00*/ u8 playerName[8];
/*0x08*/ u8 playerGender; // MALE, FEMALE
/*0x09*/ u8 specialSaveWarp;
/*0x0A*/ u8 playerTrainerId[4];
/*0x0E*/ u16 playTimeHours;
/*0x10*/ u8 playTimeMinutes;
/*0x11*/ u8 playTimeSeconds;
/*0x12*/ u8 playTimeVBlanks;
/*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]
/*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]
u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes
u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO]
u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
u16 optionsBattleSceneOff:1; // whether battle animations are disabled
u16 regionMapZoom:1; // whether the map is zoomed in
/*0x18*/ struct Pokedex pokedex;
/*0x90*/ u8 filler_90[0x8];
/*0x98*/ struct Time localTimeOffset;
/*0xA0*/ struct Time lastBerryTreeUpdate;
/*0xA8*/ struct BattleTowerData battleTower;
};
Sugiero respetar el patrón de espacios, para que todo luzca lindo y prolijo.
2) Abrimos pokeruby\src\strings.c con nuestro editor de texto.
Acto seguido añadiremos estas 2 lineas en donde nos plazca.
Yo las añadí en las Lineas #151 y #152, porque si.
3) Abrimos pokeruby\include\strings.h con nuestro editor de texto.const u8 gOtherText_ExpShareOn[] = _("Turned on the Exp. Share.\pParty will now gain a portion\nof the Experience Points.{PAUSE_UNTIL_PRESS}");
const u8 gOtherText_ExpShareOff[] = _("Turned off the Exp. Share.\pParty will no longer gain a portion\nof any Experience Points.{PAUSE_UNTIL_PRESS}");
Acto seguido añadiremos estas 2 lineas en donde nos plazca.
Yo las añadí en las Lineas #141 y #142, porque si.
3.1) Opcionalmente:extern const u8 gOtherText_ExpShareOn[];
extern const u8 gOtherText_ExpShareOff[];
Nos vamos a pokeruby\src\data y abrimos el archivo item_descriptions_en.h con nuestro editor de texto.
Ctrl+F "gItemDescription_ExpShare" y reemplazaremos la descripción del Exp. Share que es esta:
Ctrl+F "gItemDescription_ExpShare" y reemplazaremos la descripción del Exp. Share que es esta:
Por esta:static const u8 gItemDescription_ExpShare[] = _(
"A hold item that\n"
"gets EXP. points\n"
"from battles.");
^ O si prefieren, traduzcanla.static const u8 gItemDescription_ExpShare[] = _(
"A special device\n"
"that spreads Exp.\n"
"pts. from battles.");
4) Abrimos pokeruby\src\item_use.c con nuestro editor de texto.
Añadiremos la siguiente función en donde queramos.
Yo la puse luego de "void ItemUseOutOfBattle_Mail(u8 taskId)" porque me salió de las pelotas.
5) Abrimos pokeruby\include\item_use.h con nuestro editor de texto.void ItemUseOutOfBattle_ExpShare(u8 taskId)
{
if (!gSaveBlock2.expShare)
{
PlaySE(SE_EXPMAX);
if (!gTasks[taskId].data[2]) // to account for pressing select in the overworld
{
Menu_EraseWindowRect(0, 13, 13, 20);
DisplayItemMessageOnField(taskId, gOtherText_ExpShareOn, CleanUpItemMenuMessage, 1);
}
else
{
DisplayItemMessageOnField(taskId, gOtherText_ExpShareOn, CleanUpOverworldMessage, 0);
}
}
else
{
PlaySE(SE_PC_OFF);
if (!gTasks[taskId].data[2]) // to account for pressing select in the overworld
{
Menu_EraseWindowRect(0, 13, 13, 20);
DisplayItemMessageOnField(taskId, gOtherText_ExpShareOff, CleanUpItemMenuMessage, 1);
}
else
{
DisplayItemMessageOnField(taskId, gOtherText_ExpShareOff, CleanUpOverworldMessage, 0);
}
}
gSaveBlock2.expShare = !gSaveBlock2.expShare;
}
Añadiremos esta linea en donde queramos.
Yo la puse debajo de "void ItemUseOutOfBattle_Mail(u8);" porque me salia de las pelotas.
6) Abrimos pokeruby\src\battle\battle_4.cvoid ItemUseOutOfBattle_ExpShare(u8);
Aquí la bestia aumenta un poco de tamaño ( ͡° ͜ʖ ͡°) ....
No, en serio, vamos a la función "static void atk23_getexp(void)" en la Linea #5367, y veremos este pedazo de cacho de trozo de función que ni en broma pienso pegar aquí
Pues lo que modificaremos serán los Casos 1 y 2.
Basicamente reemplazaremos el contenido de la Linea #5397 a la #5531 por esta función que tambien es medio larga y no pondré aquí directamente porque luce para el ojete.
7) Abrimos pokeruby\src\data\items_en.h con nuestro editor de texto.
Ctrl+F "share" y veremos lo siguiente:
Lo modificaremos tal que asi:{
.name = _("EXP. SHARE"),
.itemId = ITEM_EXP_SHARE,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
.description = gItemDescription_ExpShare,
.importance = 1,
.exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_ExpShare,
.battleUsage = 0,
.battleUseFunc = NULL,
.secondaryId = 0,
},
Si no me salté nada, este deberia ser su resultado:{
.name = _("EXP. SHARE"),
.itemId = ITEM_EXP_SHARE,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
.description = gItemDescription_ExpShare,
.importance = 1,
.exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_ExpShare,
.battleUsage = 0,
.battleUseFunc = NULL,
.secondaryId = 0,
},
Por ahi la sintaxis luce para el reverendo culo en este foro. En ese caso, agarren las piezas de codigo nuevas desde el post enlazado al inicio de este y ya. Muy sencillo todo.
Y ya está.
Última edición: