FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)

Avisos

Like Tree34Gracias
  • 22 Post By FEL!X
  • 1 Post By ♠Ϛﮠც㆚ꂅℛᎧ♠
  • 2 Post By BLAx501!
  • 3 Post By Jo7a
  • 1 Post By ИѦСӉѺіԱՏ
  • 2 Post By jiangzhengwenjz
  • 1 Post By Guilly Alpha
  • 1 Post By Invert
  • 1 Post By ~SAGE

Respuesta
 
Herramientas Desplegado
  #1  
30/09/2016
Favorito FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
FR|Scripting|Wildbattle modificable (nick/marca/estado/nivel/HP/stats)


Éste tutorial es para FR/LG. Para la versión Emerald (U) usad éste link: (link directo)

¡Hola WAH! Hoy traigo con mucha ilusión un tema que llevo investigando desde hace varios días. Se trata del data estructure de un pokémon salvaje. Gracias a que la web de Bulbapedia te da el orden del data pokémon y el offset desde donde se cargan los wildbattle he conseguido realizar una investigación. El resultado ha sido éste, un wildbattle personalizable.

Con este tuto podréis personalizar éstas características del pokémon salvaje:
  • Nick
  • Marca
  • Estado
  • Nivel
  • Cantidad de puntos de vida
  • Cantidad máxima de puntos de vida
  • Estadísticas (Atk,Def,Vel,SpAtk,SpDef)

¡Y si! ¡Todas estas características se mantienen si el pokémon es capturado!


(Te dedico éste tuto @Guilly Alpha )

¿Cómo lo hacemos?

Sencillo, aprovecharemos los comandos setwildbattle y dowildbattle para cambiar antes de empezar el combate todas las características del pokémon salvaje mediante writebytetooffsets (WBTOs):

Os dejo un ejemplo y el fragmento que lo definió:

Fragmento

Código:
[…]
setwildbattle 0x8 0x5 0x0 
writebytetooffset 0xC1 0x2024034 "G de GUILLY"
writebytetooffset 0xCF 0x2024035 "U de GUILLY"
writebytetooffset 0xC3 0x2024036 "I de GUILLY"
writebytetooffset 0xC6 0x2024037 "L de GUILLY"
writebytetooffset 0xC6 0x2024038 "L de GUILLY"
writebytetooffset 0xD3 0x2024039 "Y de GUILLY"
writebytetooffset 0xFF 0x202403A "7mo espacio borrado del nick"
writebytetooffset 0xFF 0x202403B "8vo espacio borrado del nick"
writebytetooffset 0xFF 0x202403C "9no espacio borrado del nick"
writebytetooffset 0xFF 0x202403D "10mo espacio borrado del nick"
writebytetooffset 0xA 0x2024047 "Marcado con cuadrado y corazón"
writebytetooffset 0x8 0x202407C "Estado envenenado"
writebytetooffset 254 0x2024080 "Nivel=254"
writebytetooffset 0x37 0x2024082 "Primer byte de salud"
writebytetooffset 0x2 0x2024083  "Segundo byte de salud"
writebytetooffset 0xF7 0x2024084  "Primer byte de salud máxima"
writebytetooffset 0x2 0x2024085 "Segundo byte de salud máxima"
writebytetooffset 255 0x202408E "Defensa especial = 255"
dowildbattle
[…]


Código:
setwildbattle 0x(especie pokémon) 0x(nivel) 0x(objeto)
Éste primer comando generará un nuevo pokémon salvaje según su especie, nivel y objeto en 0x202402C (la propia que usa el juego para los pokémon salvajes, trankis, es segura). Tras ello, modificaremos éste data creado en dicha dirección mediante WBTOs para personalizarlo.

Código:
dowildbattle
Éste comando cerrará la serie de WBTOs intermedios y realizara el wildbattle que hemos diseñado gracias a los anteriores comandos.

WBTOS


Pequeño recordatorio para facilitar el trabajo

Antes de empezar os recuerdo que XSE convertirá cualquier parámetro numérico igual o inferior a 255 a su versión en hexadecimal, por lo que es lo mismo escribir en XSE el parámetro 10 que el 0xA.

Es lo mismo...
Código:
writebytetooffset 0xFE 0x2024080
...que escribir:
Código:
writebytetooffset 254 0x2024080
(XSE nunca leerá ni convertirá parámetros superiores a 255)

Por lo tanto, no tendréis que buscar valores superiores a 255 para los bytes, solo lo haréis en caso de los words, es decir, las parejas de bytes. (Tranquilos, Os dejo un link a un conversor decimal-hexadecimal para que os sea más sencillo: Conversor binario/decimal/hexadecimal)

Y ahora vamos a ver los WBTOs que he investigado:

Nick


En éste apartado le damos un Nick al pokémon salvaje. El Nick se compone de 7 letras. Pensad que las letras deben estar en hex (Os dejo éste link a una herramienta del usuario kakaroto para ello: [Tool] Text Hex Convert - The PokéCommunity Forums
Código:
writebytetooffset 0x1 0x2024040
writebytetooffset 0x2 0x2024041
writebytetooffset 0x3 0x2024042
writebytetooffset 0x4 0x2024043
writebytetooffset 0x5 0x2024044
writebytetooffset 0x6 0x2024045
writebytetooffset 0x7 0x2024046
Como anotación rápida no es lo mismo un espacio que un texto vacío. El espacio es el byte 0x00 y el espacio vació es 0xFF. Parecerá tonto pero si queréis que el Nick sea menor a 0x7 deberéis rellenar el espacio del nickname que no vayáis a utilizar con 0xFF empezando por el final. Pensad que si no lo hacéis se verán los caracteres propios del pokémon.

Marca


La marca yo lo considero algo sin importancia pero se puede cambiar también, lo define así:
Código:
writebytetooffset 0x(byte) 0x2024047
Lista de bytes:
Código:
	0x0 	nada
	0x1	círculo
	0x2	cuadrado
	0x3	0x1+0x2
	0x4 	triángulo
	0x5	0x1+0x4
	0x6	0x2+0x4
	0x7	0x2+0x1+0x4
	0x8	corazón
	0x9	[…] combinaciones siguientes con 0x8

Estado


¿Quién no ha deseado en un evento combatir con un Snorlax mientras duerme? Pues con esto podrás añadirle efectos de estado al pokémon salvaje mediante la modificación de un byte.
Código:
writebytetooffset 0x(byte) 0x202407C
Código:
	0x0 a 0x7	SLP 	Dormido (0 turnos) a Dormido (7 turnos)
	0x8 		PSN 	Envenenado
	0x10 		BRN 	Quemado
	0x20 		FRZ 	Congelado
	0x40 		PAR 	Paralizado
	0x80 		PSN2 	Tóxico
Por ejemplo, si queremos que nuestro pokémon salvaje aparezca con el estado dormido y le dure 3 turnos usaremos:
Código:
	writebytetooffset 0x3 0x202407C
A parte de estos estados el juego tiene otros estados válidos pero que permanecen ocultos, éstos son los estados dobles dónde uno actúa de principal (el que vemos) y otro de secundario aunque, en realidad, se activen ambos. ¿Veneno paralizante? Sí, existe en el propio juego y es totalmente válido. Os dejo una lista de las combinaciones que he comprobado durante mi investigación:

Lista de combinaciones de efectos, efectos extendidos

Código:
0x0 a 0x7	 SLP (0) a SLP (7)
0x8	 	 PSN
0x9 a 0xF	 SLP (0) a SLP (7) + PSN
0x10	 	 BRN
0x11 a 0x17 	SLP (0) a SLP (7) + BRN
0x18	 	 PSN + BRN
0x19 a 0x1F	SLP (0) a SLP (7) + PSN + BRN
0x20	 	 FRZ
0x21 a 0x27 	SLP (0) a SLP (7) + FRZ
0x28	 	 PSN + FRZ
0x29 a 0x2F 	SLP (0) a SLP (7) + PSN + FRZ
0x30	 	 BRN + FRZ
0x31 a 0x37 	SLP (0) a SLP (7) + BRN + FRZ
0x38	 	 PSN + BRN + FRZ
0x39 a 0x3F 	SLP (0) a SLP (7) + PSN + BRN + FRZ
0x40	 	 PAR
0x41 a 0x47 	SLP (0) a SLP (7) + PAR
0x48	 	 PSN + PAR
0x49 a 0x4F 	SLP (0) a SLP (7) + PSN + PAR
0x50	 	 BRN + PAR
0x51 a 0x57 	SLP (0) a SLP (7) + BRN + PAR
0x58	 	 PSN + BAR + PAR
0x59 a 0x5F 	SLP (0) a SLP (7) + PSN + BAR + PAR
0x60	 	 FRZ + PAR
0x61 a 0x67 	SLP (0) a SLP (7) + FRZ + PAR
0x68	 	 PSN + FRZ + PAR
0x69 a 0x6F 	SLP (0) a SLP (7) + PSN + FRZ + PAR
0x70	 	 BRN + FRZ + PAR
0x71 a 0x77 	SLP (0) a SLP (7) + BRN + FRZ + PAR
0x78	 	 PSN + BRN + FRZ + PAR
0x79 a 0x7F 	SLP (0) a SLP (7) + PSN + BRN + FRZ + PAR
0x80	 	 PSN2
0x79 a 0x7F 	SLP (0) a SLP (7) + PSN2
[…]
0xFF	SLP (7) + PSN2+ PSN + BRN + FRZ + PAR + PSN2 (Todos)


Nivel


El nivel está relacionado con sus estadísticas. Por ello, debo aclarar que al cambiar el nivel mediante WBTO de un pokémon esto solo cambiará el nivel aparente durante el combate. Eso sí, al atrapar el pokémon, éste ganará el nivel aparente como real en lugar del nivel determinado en el setwildbattle. El nivel establecido en el setwildbattle es el que genera sus estadísticas de combate así que si queréis que un pokémon coincida su nivel con sus estadísticas no modifiquéis éste parámetro. El WBTO para el nivel es el siguiente:
Código:
writebytetooffset 0x(nivel) 0x2024080

Cantidad de puntos de vida y cantidad máxima de puntos de vida


¿Quién no ha querido hacer un combate con un pokémon que ya había sido herido por terceros? Con estos WBTOS podréis modificar la salud del pokémon tanto para establecer los niveles de salud que queráis. Son éstos comandos.
Código:
writebytetooffset 0x(HP) 0x2024082
writebytetooffset 0x(HP) 0x2024083
writebytetooffset 0x(MaxHP) 0x2024084
writebytetooffset 0x(MaxHP) 0x2024085
Como veis la salud son words es decir, parejas de bytes, esto ocurre puesto que la salud puede superar los 255 puntos es decir 0xFF como es el caso de 256 = 0x01 0x00 = 0xFF + 0x01.

Pongamos por ejemplo que queremos que nuestro pokémon tenga 150/300 puntos de salud (300 equivale a 0x1 0x2C)
Código:
writebytetooffset 150 0x2024082
writebytetooffset 0 0x2024083
writebytetooffset 0x2C 0x2024084
writebytetooffset 0x1 0x2024085
Posibles bugs: Si el HP supera al maxHP el juego puede cerrar o crashear a el juego. Es algo normal, no puedes tener algo que tu tope no te permite ¿No? Haría carecer de sentido lo que es el MaxHP.

Estadísticas (Atk,Def,Vel,SpAtk,SpDef)


Éstas estadísticas se generaran por defecto por el nivel y la especie determinados en el setwildbattle pero se pueden modificar. Imagínate que por alguna causa quieras que un pokémon salvaje gane o pierda fuerza durante un combate, aquí tienes la solución.
Código:
writebytetooffset 0x(Atk) 0x2024086
writebytetooffset 0x(Atk) 0x2024087
writebytetooffset 0x(Def) 0x2024088
writebytetooffset 0x(Def) 0x2024089
writebytetooffset 0x(Vel) 0x202408A
writebytetooffset 0x(Vel) 0x202408B
writebytetooffset 0x(SpAtk) 0x202408C
writebytetooffset 0x(SpAtk) 0x202408D
writebytetooffset 0x(SpDef) 0x202408E
writebytetooffset 0x(SpDef) 0x202408F
Al igual que el caso anterior, las estadísticas son words ya que pueden superar los 255 puntos. El primer byte de cada estadística determina los primeros 255 y el segundo los siguientes. Por lo tanto, si queremos que el ataque especial de un pokémon sea de 300 (0x01 0x2C) y su defensa especial 10 haremos lo siguiente:
Código:
writebytetooffset 0x1 0x202408C
writebytetooffset 0x2C 0x202408D
writebytetooffset 10  0x202408E
writebytetooffset 0 0x202408F


Cualquier duda me la mandáis por aquí, las dudas de uno le servirán para los demás. Todos salimos ganando.

¡Un abrazo a todos!

FEL!X, ~Tu amigo el espadachín

PD: En la investigación he encontrado más cosas pero aún las estoy testeando. Seguramente en el subforo de investigaciones cuelgue todo el tema para compartirlo con quién esté interesado. Entre otras cosas porque se podría personalizar aún más con, por ejemplo; el moveset, el tipo de pokéball, el entrenador, etc [...].

Os dejo algunos tutoriales relacionados a éste temario:

Click para ver la firma




FEL!X



Premios




Galería (Link directo)



Aportaciones y participaciones



Algunas respuestas a posts y más posts





Respuesta: Cuantos años teneis? Que año Conocisteis Wah?

Respuesta: Con qué Pokémon te has encariñado y porqué?

Respuesta: GBA | Gráficos | [AVANZADO] ¡Añadir más frames a tus minis!

[Vídeo] Cuando Pokemon GO se vuelve violento
Respuesta: Rap de los Hackrom - Sage [A capella]
Respuesta: GBA | ASM | Clase Número 3: Instrucciones Básicas
Respuesta: ¿Cómo olvido a una chica? No puedo.
Respuesta: [Encuesta]¿Que encuentras mas divertido/entretenido al Rom Hackear/Makear?
* * *
Respuesta: [Cosas De WaH Ep2]¡¡5 Cosas Paranormal Que Nos Han Sucedido!!
Respuesta: FR| ASM| Salto en cualquier dirección.
Respuesta: [Cosas De WaH Ep1]¡¡10 Cosas Sobre Nosotros!!
¡fel!xidades! (Gracias a todos)

¡Ya están aquí!: Resultados PWaH 2015

Respuesta: ¿Qué estás escuchando ahora? (2)
* * *

Respuesta: [Relato de invierno] Chicago.
Respuesta: ¡TIPOS DE HACKERS! ¡Dime qué clase eres tú!
[TAG del MangaAnime]
Respuesta: [FR][DUDA]Comandos de dinero
[Por Una Wah Unida]
Respuesta: Mis motivos de estar aqui
* * *

Respuesta: Psicólogo para el psicólogo, filósofo para el filósofo~
Respuesta: ¿Qué estás escuchando ahora?
Respuesta: [Historia] Hijos del bosque, hijos del viento
Respuesta: [IDEA] Jugador se pueda liar
Respuesta: ¿Cuál es vuestro arquetipo de personaje favorito?
Respuesta: [Encuesta] ¿Cuál fue tu primer juego de pokemon?
* * *


Respuesta: [Test] ¿Qué tipo de personalidad eres?(Viva el comandante FEL!X)

Tu TOP 5 de animes (Mi propio top)
Respuesta:Pregunta a todos los spriters (Mi punto de vista)
Respuesta: IDEA | Nuevos Tipos Elementales 8El tipo experto)
Respuesta: IDEA | Nuevos Tipos de Evolucion (El caso de Machamp )

¡Un abrazo!


Última edición por FEL!X; 01/10/2016 a las 19:50
  #2  
30/09/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Madre mía @Guilly Alpha esto es muy bueno para hacer combates en plan "este pokemon salvaje lleva el nombre que le dio el entrenador que lo dejo solo" (?) y muchas cosas mas.
No se me había cruzado por la cabeza que algo así era posible y siempre me he preguntado para que eran los comandos setwildbattle y dowildbattle, he aquí una respuesta a mi pregunta...
Me gusta lo bien que has explicado las cosas, se ve muy fácil de hacer (y le resultara fácil a los nuevos). Buen aporte @FEL!X

Salu2
Gracias: FEL!X
  #3  
30/09/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Genial tuto, @FEL!X , como siempre currándotelo para que quede bien explicado y accesible a todos
  #4  
01/10/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Ahora si, es el momento de comentar, por que estoy superinspiradis... nah es coña, solo estoy aburrido (?)

Pues me parece jodidamente cojonuda esta investigación que has hecho. Es algo a lo que se le puede dar un montón de usos y créeme que yo lo usaré.

Si también se pudiese hacer lo mismo para "chetar" a los pokemon de X entrenador sería la polla, pero bueno ya es pedir por pedir y yo no soy de esos, pero si tienes tiempo míramelo y me haces un llama-cuelga (?)

Gracias bro por este aportazo, te haces querer pedazo puta (L)

PD: El comentario de Blax es puta basura, quiéreme a mi más :P
  #5  
01/10/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
a ver jajaja no te habi acomentado pq estaba en la Uni, como dice jota mas arriba, tiene muchas aplicaciones, felix das esperanza a esta pocilga llamada wah. mis 10, + repu, esperamos que nos traigas más de estas hermosuras! slds sin duda lo mejor es el nick y los ps!
Gracias: FEL!X
"En los tiempos de las copias infinitas,
el Caballero metálico, creará el ejercito de dominación
y en oscuridad al mundo envolverá"

Diario de los T-Zaos 2X:645U


POKEMON X2020


  #6  
01/10/2016
Predeterminado Re: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Not bad, but from my perspective it should be better to handle the wildpokemon via ASM/C.

The first advantage of ASM/C over writebytetooffset is that you can handle encrypted data as well (IV, EV, ...) and the second one is that the pokemon's stat won't be recalculated to fit your modification if you simply use writebytetooffset. (e.g. You change the pokemon's level via wbto, but his attack remains the same as what it was before your modification so you need to calculate and set them manually. )
Gracias: Lunos y FEL!X

Última edición por jiangzhengwenjz; 01/10/2016 a las 05:31
  #7  
01/10/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Si me dedican un tuto tendre que hacerle caso (vaya )

Gran gran gran tuto ¡si señor!

Me parece una investigacion de 10, que ademas le puede dar mucho mucho juego a un hack si está bien hecho. (ya me veo luchando contra un @FEL!X salvaje Dormido+Paralizado con la mitad de vida y con un ataque superior a 300)

Esto es algo muy util y mis felicitaciones por este pedazo de aporte.
Pero lo mejor de todo es lo bien explicado que esta, lo haces claro y sencillo

Te has ganado +gracias y +repu bro
Gracias: FEL!X
  #8  
01/10/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Es genial bro, me gusta la forma en como explicas todo y también genial lo que has logrado.
No sé mucho de los datos de los Pokes, pero el poder manipularlos así es básicamente esplendido ya que si usas la imaginación puedes hacer cosas increíbles con ella.
Me gusta, me gusta lo que veo, seguro lo usaré cuando llegue el momento c:
Gracias: FEL!X
  #9  
01/10/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Lo mismo que el de arriba x2 ↑↑↑

El tutorial esta wahpisimo, bien explicado, bien redactado y todo lo demás.
Ya conocia este metodo, pero jamás llegué a investigarlo taaann a fondo.
Sin duda un señor tutorial feudal digno de los dioses del olimpo
+10 Y REPU papu!

Sigue así, Buenas vibras!

#SeichCapriccola
Gracias: FEL!X
  #10  
02/10/2016
Predeterminado Respuesta: FR|Scripting|Wildbattle modificable (nick/estado/nivel/HP/stats)
Uouo que guapada de tutorial. Sabes que me viene de perlas, directo a favoritos :P
Respuesta

Etiquetas
efectos de estado , modificable , nickname , personalizable , pokémon , salvaje , wildbattle

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 00:58.