Registrarse

[RH - Scripting] Scrip para Shinyy

Estado
Cerrado para nuevas respuestas.

Blade31

Usuario habitual
shiny.jpg

Buenas noches a todos, estuve viendo unos tutoriales para que salgan shinys, y quisiera saber q es lo q coloque mal ahí :s
EB0B20 es el offset donde esta ubicado el parche del shinyzer
 

Acimut

Profesional de WaH
Supongo que tu script sería así:
Código:
#dynamic 0x800000

#org @Start
random 0x2 'desconozco por qué pones 2
compare LASTRESULT 0x0
if 0x1 goto @EsShiny
end

#org @EsShiny
callasm 0xEB0B21
setvar 0x8003 0x1
end
Como no lo he probado, sugiero hacer un backup de tu rom antes.
edit: Pero qué estoy diciendo, un script no rompe una rom, ¿o si?
 

Blade31

Usuario habitual
Supongo que tu script sería así:
Código:
#dynamic 0x800000

#org @Start
random 0x2 'desconozco por qué pones 2
compare LASTRESULT 0x0
if 0x1 goto @EsShiny
end

#org @EsShiny
callasm 0xEB0B21
setvar 0x8003 0x1
end
Como no lo he probado, sugiero hacer un backup de tu rom antes.
edit: Pero qué estoy diciendo, un script no rompe una rom, ¿o si?
Bueno prove ese scrip y no se q este mal en mi rom xD
Lo digo porq cuando coloco el random 0x0, si salen los shinys pero cuando deseo colocar a un charmander shiny salvaje (modifique para q salieran los iniciales de 1gen en la ruta1) el juego se pone negro y solo pasa con ese xD

tengo la rom antes de probar el shinyzer y corre normal porq es la q ando jugando en mi celular y sigo jugando normal, capture un shiny salvaje y la partida continua normal .-.
 

KERBEROS

Usuario de Platino
Ver el archivo adjunto 3130
Buenas noches a todos, estuve viendo unos tutoriales para que salgan shinys, y quisiera saber q es lo q coloque mal ahí :s
EB0B20 es el offset donde esta ubicado el parche del shinyzer
Prueba con este:

#dynamic 0x900000

#org @start
random 0x2
Compare LASTRESULT 0x0
If 0x1 goto @poke0
Compare LASTRESULT 0x1
If 0x1 goto @poke1
setvar 0x8000 0x1
end

#org @poke0
end

#org @poke1
end


yo lo compile y no me dio error

y me salio mi shiny
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Bueno prove ese scrip y no se q este mal en mi rom xD
Lo digo porq cuando coloco el random 0x0, si salen los shinys pero cuando deseo colocar a un charmander shiny salvaje (modifique para q salieran los iniciales de 1gen en la ruta1) el juego se pone negro y solo pasa con ese xD

tengo la rom antes de probar el shinyzer y corre normal porq es la q ando jugando en mi celular y sigo jugando normal, capture un shiny salvaje y la partida continua normal .-.
Hola Blade, ¿cómo estás? Lo que está rompiendo tu ROM es el callasm que sobra. Entonces estás enviando al procesador a ejecutar comandos que no entiende.
Fíjate en el script original del tutorial:
Código:
#dynamic 0x800000

#org @Start
random 0x64 'Creamos un nº entre 0 y 99.
compare LASTRESULT 0x3 'Si ese nº es 0, 1 ó 2, el Pokémon será shiny.
if 0x0 goto @EsShiny
end

#org @EsShiny 'Aquí usamos la rutina del shinyzer para que sea shiny.
setvar 0x8003 0x1
end
Yo creería que te ha hecho confundir la parte de "'Aquí usamos la rutina del shinyzer para que sea shiny.". Eso no quiere decir que debas llamar a la rutina. ¿Por qué? Pues porque la rutina para que el pokémon sea shiny se está ejecutando siempre por su cuenta, cada vez que entras en una batalla. Lo único que cambia es que si la variable 0x8003 no tiene valor 1, directamente no hace nada.
Solo quita el "callasm 0xEB0B21" y debería funcionar bien.


Prueba con este:

#dynamic 0x900000

#org @start
random 0x2
Compare LASTRESULT 0x0
If 0x1 goto @poke0
Compare LASTRESULT 0x1
If 0x1 goto @poke1
setvar 0x8000 0x1
end

#org @poke0
end

#org @poke1
end


yo lo compile y no me dio error

y me salio mi shiny
Supongo que está incompleto tu script puesto que nunca le pones un valor a la variable 0x8003, lo cual es indispensable en esta rutina.
Aún así, quiero comentar un temita lógico sobre la estructura.
  • Al hacer random 0x2, la variable 0x800D (también llamada LASTRESULT) puede tener únicamente dos valores: 0 y 1.
  • Haces una comparación para ver si el valor es igual a 0.
  • Luego vuelves a comparar para ver si es igual a 1.
  • Esto es completamente redundante. Si ya sabes que el valor no es 0, entonces debe forzosamente ser 1. Tu segunda comparación sobra.
  • Por último, como la variable no puede tener ningún otro valor, las dos líneas que tienes luego de "If 0x1 goto @poke1" nunca se ejecutarán, están ahí ocupando espacio simplemente.
Cambiando estos detalles que digo, tu script quedaría algo así:
Código:
#dynamic 0x900000

#org @start
random 2
compare LASTRESULT 0
if 1 goto @poke0
goto @poke1 'Solamente llega a ejecutar esta línea si el valor no es 0, entonces podemos asumir que es 1 y enviarle al otro puntero sin necesidad de comparar nada.

#org @poke0
' En algún lugar por aquí habría que settear la variable 0x8003
end

#org @poke1
' Y por aquí también
end
Nota: Todo lo que hay luego de ' (comilla simple) en XSE es un comentario, textos informativos que no tienen efecto en el script.

edit: Pero qué estoy diciendo, un script no rompe una rom, ¿o si?
Bueno, podría pasar si lo compilas en espacio usado jajajaja
 

Blade31

Usuario habitual
Prueba con este:

#dynamic 0x900000

#org @start
random 0x2
Compare LASTRESULT 0x0
If 0x1 goto @poke0
Compare LASTRESULT 0x1
If 0x1 goto @poke1
setvar 0x8000 0x1
end

#org @poke0
end

#org @poke1
end


yo lo compile y no me dio error

y me salio mi shiny
Muchas gracias también probare con este

Hola Blade, ¿cómo estás? Lo que está rompiendo tu ROM es el callasm que sobra. Entonces estás enviando al procesador a ejecutar comandos que no entiende.
Fíjate en el script original del tutorial:
Código:
#dynamic 0x800000

#org @Start
random 0x64 'Creamos un nº entre 0 y 99.
compare LASTRESULT 0x3 'Si ese nº es 0, 1 ó 2, el Pokémon será shiny.
if 0x0 goto @EsShiny
end

#org @EsShiny 'Aquí usamos la rutina del shinyzer para que sea shiny.
setvar 0x8003 0x1
end
Yo creería que te ha hecho confundir la parte de "'Aquí usamos la rutina del shinyzer para que sea shiny.". Eso no quiere decir que debas llamar a la rutina. ¿Por qué? Pues porque la rutina para que el pokémon sea shiny se está ejecutando siempre por su cuenta, cada vez que entras en una batalla. Lo único que cambia es que si la variable 0x8003 no tiene valor 1, directamente no hace nada.
Solo quita el "callasm 0xEB0B21" y debería funcionar bien.
Q tal bro, aqui aprendiendo poco a poco 😅
Sii, yo pensé q se debía agregar el offset donde estaba el shinyzer xD
El #dynamic 0x800000 viene a ser el offset q ocupara esta rutina no?? (no tiene q ver con el del shinyzer?)


EDIT: Ya probe y me demore en capturar al charmander shiny, hice el cambio para q salga de principal y no se puso la pantalla negra
MUCHAS GRACIAS A TODOS
 
Última edición:

KERBEROS

Usuario de Platino
Muchas gracias también probare con este


Q tal bro, aqui aprendiendo poco a poco 😅
Sii, yo pensé q se debía agregar el offset donde estaba el shinyzer xD
El #dynamic 0x800000 viene a ser el offset q ocupara esta rutina no?? (no tiene q ver con el del shinyzer?)
no, ese comando es para indicarle a XSE donde va a comenzar a buscar espacio para colocar tu script.

Hola Blade, ¿cómo estás? Lo que está rompiendo tu ROM es el callasm que sobra. Entonces estás enviando al procesador a ejecutar comandos que no entiende.
Fíjate en el script original del tutorial:
Código:
#dynamic 0x800000

#org @Start
random 0x64 'Creamos un nº entre 0 y 99.
compare LASTRESULT 0x3 'Si ese nº es 0, 1 ó 2, el Pokémon será shiny.
if 0x0 goto @EsShiny
end

#org @EsShiny 'Aquí usamos la rutina del shinyzer para que sea shiny.
setvar 0x8003 0x1
end
Yo creería que te ha hecho confundir la parte de "'Aquí usamos la rutina del shinyzer para que sea shiny.". Eso no quiere decir que debas llamar a la rutina. ¿Por qué? Pues porque la rutina para que el pokémon sea shiny se está ejecutando siempre por su cuenta, cada vez que entras en una batalla. Lo único que cambia es que si la variable 0x8003 no tiene valor 1, directamente no hace nada.
Solo quita el "callasm 0xEB0B21" y debería funcionar bien.




Supongo que está incompleto tu script puesto que nunca le pones un valor a la variable 0x8003, lo cual es indispensable en esta rutina.
Aún así, quiero comentar un temita lógico sobre la estructura.
  • Al hacer random 0x2, la variable 0x800D (también llamada LASTRESULT) puede tener únicamente dos valores: 0 y 1.
  • Haces una comparación para ver si el valor es igual a 0.
  • Luego vuelves a comparar para ver si es igual a 1.
  • Esto es completamente redundante. Si ya sabes que el valor no es 0, entonces debe forzosamente ser 1. Tu segunda comparación sobra.
  • Por último, como la variable no puede tener ningún otro valor, las dos líneas que tienes luego de "If 0x1 goto @poke1" nunca se ejecutarán, están ahí ocupando espacio simplemente.
Cambiando estos detalles que digo, tu script quedaría algo así:
Código:
#dynamic 0x900000

#org @start
random 2
compare LASTRESULT 0
if 1 goto @poke0
goto @poke1 'Solamente llega a ejecutar esta línea si el valor no es 0, entonces podemos asumir que es 1 y enviarle al otro puntero sin necesidad de comparar nada.

#org @poke0
' En algún lugar por aquí habría que settear la variable 0x8003
end

#org @poke1
' Y por aquí también
end
Nota: Todo lo que hay luego de ' (comilla simple) en XSE es un comentario, textos informativos que no tienen efecto en el script.


Bueno, podría pasar si lo compilas en espacio usado jajajaja
Es que olvide que el random no cuenta el cero, por eso coloque como si tuviera 3 opciones, jajaja
 
Estado
Cerrado para nuevas respuestas.
Arriba