Registrarse

[pokeemerald] Poner un nombre fijo al protagonista

Samu

Miembro insignia
Miembro insignia
La verdad es que es una completa tontería (son 5 líneas de código), pero bueno ya que Howdy me preguntó como hacerlo, lo dejo por aquí para futuras referencias.

Enlace al commit en GitHub

Como se explica en el título del tema, esto pondrá un nombre predefinido a nuestro personaje al empezar la partida.

Lo primero que tenemos que hacer es definir una cadena de texto que contenga el nombre del protagonista (máximo 7 caracteres), lo más recomendable para dejarlo todo limpio es que este string esté en "string.c"
Código:
const u8 gText_PlayerName[] = _("Howdy");
Además de esto, habrá que poner el identificador del texto en strings.h para que pueda ser importado desde otros ficheros.
Código:
extern const u8 gText_Playername[];
Por último nos toca ir al fichero "new_game.c", añadir los includes a "strings.h" y "string_util.h", y editar la función 'NewGameInitData' añadiendo la línea que podéis ver a continuación:
Código:
#include "strings.h"
#include "string_util.h"

void NewGameInitData()
{
    // Código anterior
    StringCopy(gSaveBlock2Ptr->playerName, gText_PlayerName);  //Línea añadida
    // Código posterior
}
y con esto, me voy a tomar por el culo.
 

Lunos

Enfrentando a La Organización
Miembro insignia
La verdad es que es una completa tontería (son 5 líneas de código), pero bueno ya que Howdy me preguntó como hacerlo, lo dejo por aquí para futuras referencias.

Enlace al commit en GitHub

Como se explica en el título del tema, esto pondrá un nombre predefinido a nuestro personaje al empezar la partida.

Lo primero que tenemos que hacer es definir una cadena de texto que contenga el nombre del protagonista (máximo 7 caracteres), lo más recomendable para dejarlo todo limpio es que este string esté en "string.c"
Código:
const u8 gText_PlayerName[] = _("Howdy");
Además de esto, habrá que poner el identificador del texto en strings.h para que pueda ser importado desde otros ficheros.
Código:
extern const u8 gText_Playername[];
Por último nos toca ir al fichero "new_game.c", añadir los includes a "strings.h" y "string_util.h", y editar la función 'NewGameInitData' añadiendo la línea que podéis ver a continuación:
Código:
#include "strings.h"
#include "string_util.h"

void NewGameInitData()
{
    // Código anterior
    StringCopy(gSaveBlock2Ptr->playerName, gText_PlayerName);  //Línea añadida
    // Código posterior
}
y con esto, me voy a tomar por el culo.
Si bien esto funciona, es un pelín chapucero en mi opinión.

Estaba tan aburrido y esto me pareció algo tan sencillo que se me dió por revisar el asunto yo mismo.
Como resultado, me gustaria dejar como alternativa el metodo correcto (de nuevo, en mi opinión) de hacer las cosas.
El que no deja codigo innecesario en un proyecto.


¡Muchas gracias por el aporte!
 
Última edición:

Samu

Miembro insignia
Miembro insignia
Si bien esto funciona, es un pelín chapucero en mi opinión.

Estaba tan aburrido y esto me pareció algo tan sencillo que se me dió por revisar el asunto yo mismo.
Como resultado, me gustaria dejar como alternativa el metodo correcto (de nuevo, en mi opinión) de hacer las cosas.
El que no deja codigo innecesario en un proyecto.


¡Muchas gracias por el aporte!
Lo que he dejado yo es solo para cambiar el nombre, el tema de la intro del profesor birch Howdy ya lo tenía quitado. La única parte mala de lo que has pasado es que depende de la intro del profesor para ejecutarse, y por lo general la van a quitar aquellos que tengan un nombre preset.

En cualquier caso, si quieren mantener la intro está perfecto, y los que no pueden ver los cambios de tu commit para ver la info redundante que pueden quitar, pero yo eso se lo dejo a la aplicación ad-hoc de cada uno. Yo me limito a cambiar el nombre, ya el resto que se busquen la vida xDD.

PD: Tal vez se podría hacer algo general que sirva en ambos casos, solo con hacer unos pequeños cambios a lo que has pasado. Habría que colocar la asignación del nombre en NewGameInitData en lugar de hacerlo en una de las Task de la intro, y cuando el profesor dice tu nombre después de elegir chico/chica que lo saque de las constantes en función del género.

Así tendríamos un cambio de nombre que no rompe la intro de forma cutre, y que sigue funcionando después de haber quitado la intro.
 
Última edición:
Arriba