[Solucionado] duda sobre bucle de variable

Avisos

Like Tree7Gracias
  • 1 Post By .Areku_Sama
  • 2 Post By Dani_SR_17
  • 1 Post By BLAx501!
  • 3 Post By Enamorat de Aaró
Tema cerrado
 
Herramientas Desplegado
  #1  
25/06/2017
Predeterminado duda sobre bucle de variable
Buenas gente, estoy intentando hacer un script que mediante una rutina desencripta los datos de un poke dado y a traves de una variable se lo asigna a este, pero una vez asignado pase al siguiente valor y se lo asigne y asi hasta el final...

Se que es una especie de bucle pero lo he hecho y no se me ocurre de otra forma y por consiguiente, no es el resultado esperado:
Código:
#dynamic 0x800000

'---------------
#org @start
compare 0x40FF 0x0
if 0x1 goto @snippet1
compare 0x40FF 0x1
if 0x1 goto @snippet2
compare 0x40FF 0x2
if 0x1 goto @snippet3
compare 0x40FF 0x3
if 0x1 goto @snippet4
compare 0x40FF 0x4
if 0x1 goto @snippet5
compare 0x40FF 0x5
if 0x1 goto @snippet6
end

'---------------
#org @snippet1
givepokemon 0x5 0x5 0x0 0x0 0x0 0x0
setflag 0x860
addvar 0x40FF 0x1
setvar 0x8004 0x0
setvar 0x8000 0x27
setvar 0x8001 0x0
setvar 0x8002 0x1F
callasm 0x8E682B1
return

'---------------
#org @snippet2
setvar 0x8000 0x28
setvar 0x8002 0x1F
callasm 0x8E682B1
addvar 0x40FF 0x1
return

'---------------
#org @snippet3
setvar 0x8000 0x29
setvar 0x8002 0x1F
callasm 0x8E682B1
addvar 0x40FF 0x1
return

'---------------
#org @snippet4
setvar 0x8000 0x2A
setvar 0x8002 0x1F
callasm 0x8E682B1
addvar 0x40FF 0x1
return

'---------------
#org @snippet5
setvar 0x8000 0x2B
setvar 0x8002 0x1F
callasm 0x8E682B1
addvar 0x40FF 0x1
return

'---------------
#org @snippet6
setvar 0x8000 0x2C
setvar 0x8002 0x1F
callasm 0x8E682B1
addvar 0x40FF 0x1
end
Como observareis una vez asignado el valor 0x27 a la variable 0x8000 y asignado al poke, quiero que continue por 0x28 y se lo asigne de nuevo al poke y así...

¿Podriais echarme una mano? GRACIAS

Última edición por kakarotto; 26/06/2017 a las 22:32 Razón: Solucionado gracias a unos usuarios geniales!
  #2  
25/06/2017
Predeterminado Re: duda sobre bucle de variable
¿Qué resultado es exactamente el no deseado o el que te esta dando en este momento? Para poder ayudarte mejor
Gracias: kakarotto


Tutoriales:
www.scribd.com/~Areku

  #3  
25/06/2017
Predeterminado Respuesta: duda sobre bucle de variable
A ver, si te he entendido bien lo que quieres es esto:

Código:
#dynamic 0x800000

'---------------
#org @start
givepokemon 0x5 0x5 0x0 0x0 0x0 0x0
setflag 0x860
setvar 0x8001 0x0
setvar 0x8004 0x0
setvar 0x8000 0x27
goto @Bucle1

#org @Bucle1
setvar 0x8002 0x1F '¿Necesitas colocar la variable en esta valor siempre? Si no es así ponlo arriba mejor.
compare 0x40FF 0x7
if 0x0 goto @Bucle2
end

'---------------
#org @Bucle2
addvar 0x40FF 0x1
callasm 0x8E682B1
addvar 0x8000 0x1
goto @Bucle1

PD: Si pones return, tienes que llamar a esa parte del script con un call, no con un goto.
¡¡VIVA EL STAFFMIGUISMO!!

"Aunque algunos se empeñen en que pierda.
Sé que mis fans me harán grande,
mis haters me harán LEYENDA."



Premios






Dicho por Sayer301!
Tener que asumir que el alumno supera al maestro, puto Dani_SR_17 como controla de scripts.

Mis Tutoriales, Aportes e Investigaciones

-Recopilación de Scripts de Dani_SR_17-
-Colores del menú de info de los Pokémon-
-Pasar scripts usando la Refactorización-
-Pasar mapas de una Rom a otra y copias de seguridad-
-Pack de TextBox de Dani_SR_17-
-Daani Translate, por una Rom totalmente en Español-
-[Parche FR] No más Flashback-



Cheve, no he podido resistirme xD


_____Sexy?Sex
____?Sexy?Sexy
___y?Sexy?Sexy?
___?Sexy?Sexy?S
___?Sexy?Sexy?S
__?Sexy?Sexy?Se
_?Sexy?Sexy?Se
_?Sexy?Sexy?Se
_?Sexy?Sexy?Sexy?
?Sexy?Sexy?Sexy?Sexy
?Sexy?Sexy?Sexy?Sexy?Se
?Sexy?Sexy?Sexy?Sexy?Sex
_?Sexy?__?Sexy?Sexy?Sex
___?Sex____?Sexy?Sexy?
___?Sex_____?Sexy?Sexy
___?Sex_____?Sexy?Sexy
____?Sex____?Sexy?Sexy
_____?Se____?Sexy?Sex
______?Se__?Sexy?Sexy
_______?Sexy?Sexy?Sex
________?Sexy?Sexy?sex
_______?Sexy?Sexy?Sexy?Se
_______?Sexy?Sexy?Sexy?Sexy?
_______?Sexy?Sexy?Sexy?Sexy?Sexy
_______?Sexy?Sexy?Sexy?Sexy?Sexy?S
________?Sexy?Sexy____?Sexy?Sexy?se
_________?Sexy?Se_______?Sexy?Sexy?
_________?Sexy?Se_____?Sexy?Sexy?
_________?Sexy?S____?Sexy?Sexy
_________?Sexy?S_?Sexy?Sexy
________?Sexy?Sexy?Sexy
________?Sexy?Sexy?S
________?Sexy?Sexy
_______?Sexy?Se
_______?Sexy?
______?Sexy?
______?Sexy?
______?Sexy?
______?Sexy
______?Sexy
_______?Sex
_______?Sex
_______?Sex
______?Sexy
______?Sexy
_______Sexy
_______ Sexy?
________SexY

  #4  
25/06/2017
Predeterminado Respuesta: duda sobre bucle de variable
@kakarotto , si no he entendido mal, lo que tu quieres es acortar el script y hacerlo de forma más sencilla.

Mi propuesta es esta. No la he probado ni la he compilado porque estoy desde el móvil, pero en caso de tener errores, no creo que sean difíciles de detectar.

Si no es esto lo que quieres, he explicado todo lo que he ido haciendo, de modo que no te resultará demasiado difícil ajustarlo a lo que quieras

Código:
#dynamic 0x800000
'Para hacer todo más sencillo, aprovecharemos el comando goto.
'Haremos uso de una variable que nos permitirá ir avanzando en la ejecución de forma simple
'Dado que usabas aquí la 0x40FF, mantendré dicha variable para el script.
'Doy por hecho que el valor que quieres poner en la variable 0x8000 SIEMPRE comienza en 0x27
'En caso de que no sea así, habría que hacer alguna modificación.
'---------------
#org @start
givepokemon 0x5 0x5 0x0 0x0 0x0 0x0
setflag 0x860
setvar 0x8004 0x0
setvar 0x8000 0x27
setvar 0x8001 0x0
setvar 0x8002 0x1F
callasm 0x8E682B1
setvar 0x40FF 0x27 'Le asignamos el mismo valor que a la variable 0x8000
goto @loopStart
'Esto será la primera iteración. Debe de hacerse manualmente. Con el goto vamos al bucle en sí

#org @loopStart 
compare 0x40FF 0x2C
if 0x0 goto @mainLoop
end
'El bucle comprueba si has llegado ya a hacer que la variable valga 0x2C. Esto es variable y se
'adapta al valor máximo que le quieras poner. Mientras no llegues a dicho valor, el bucle se repetirá
'mediante el goto. En caso de que se alcance dicho valor, finaliza el script.

#org @mainLoop
addvar 0x40FF 0x1
copyvar 0x8000 0x40FF 'Copia el contenido de 0x40FF en 0x8000
setvar 0x8002 0x1F
callasm 0x8E682B1
goto @loopStart
'Este es el trozo de código que se ejecuta dentro del bucle. Como teníamos ya la variable asignada a 
'0x27 y esa asignación se ha hecho ya, aumentamos el valor, copiamos la variable en la variable dinámica
'damos el valor a la otra, ejecutamos el callasm y volvemos al inicio del bucle, para comprobar si la 
'condición de parada del mismo se cumple o no.
Te dejo también el script sin comentarios

Código:
#dynamic 0x800000

#org @start
givepokemon 0x5 0x5 0x0 0x0 0x0 0x0
setflag 0x860
setvar 0x8004 0x0
setvar 0x8000 0x27
setvar 0x8001 0x0
setvar 0x8002 0x1F
callasm 0x8E682B1
setvar 0x40FF 0x27
goto @loopStart

#org @loopStart 
compare 0x40FF 0x2C
if 0x0 goto @mainLoop
end

#org @mainLoop
addvar 0x40FF 0x1
copyvar 0x8000 0x40FF
setvar 0x8002 0x1F
callasm 0x8E682B1
goto @loopStart
P.D. Te recomiendo que tengas esto a mano porque te resultará útil de cara a futuros scripts.

Lower Than (0x0)
Equals (0x1)
Greater Than (0x2)
Lower than or Equal to (0x3)
Greater than or Equal to (0x4)
Not exactly equal to (0x5)

P.D.2. He visto que mientras preparaba todo, @Dani_SR_17 se me ha adelantado... Prefiero mi versión porque reasigna todas las veces las variables dinámicas y así te aseguras de que no se alteran los valores de las mismas entre medias (que no debería, ojo). Es un pelín más larga, pero igualmente compacta
Gracias: kakarotto
  #5  
26/06/2017
Predeterminado Re: duda sobre bucle de variable
¿Y si mejor nos dejamos de joder con el XSE y usamos un editor de scripts que no solamente es mejor sino que además está desarrollado por un miembro de esta misma comunidad? Vamos, ¡Red Alien de @cosarara97 por favor!

Con un bonito while


Suponiendo que el valor de las variables $8000 y $8002 no son modificadas en la ejecución
Código:
#include "stdlib/std.rbh"
#dyn 0x800000

#org @inicio
 givepokemon 5 5 0 0 0 0
 setflag 0x860
 setvar 0x8000 0x27
 setvar 0x8001 0
 setvar 0x8002 0x1F
 setvar 0x8004 0

:loop
 while (0x8000<=0x2C)
 {
  callasm 0x8E682B1
  addvar 0x8000 1
 }
end
En el caso de que sí sean modificadas, o bien si no estás seguro
Código:
#include "stdlib/std.rbh"
#dyn 0x800000

#org @inicio
 givepokemon 5 5 0 0 0 0
 setflag 0x860
 setvar 0x40FF 0x27
 setvar 0x8001 0
 setvar 0x8004 0

:loop
 while (0x40FF<=2C)
 {
  copyvar 0x8000 0x40FF
  setvar 0x8002 0x1F
  callasm 0x8E682B1
  addvar 0x40FF 1
 }
end


Si por alguna misteriosa razón no quieres usar el while


Ídem caso 1 del spoiler anterior
Código:
#include "stdlib/std.rbh"
#dyn 0x800000

#org @inicio
 givepokemon 5 5 0 0 0 0
 setflag 0x860
 setvar 0x40FF 0x27
 setvar 0x8001 0
 setvar 0x8002 0x1F
 setvar 0x8004 0

:loop
 callasm 0x8E682B1
 addvar 0x8000 1
 compare 0x8000 0x2C
 if 0x3 goto :loop

:end
 end
Ídem caso 2 del spoiler anterior
Código:
#include "stdlib/std.rbh"
#dyn 0x800000

#org @inicio
 givepokemon 5 5 0 0 0 0
 setflag 0x860
 setvar 0x40FF 0x27
 setvar 0x8001 0
 setvar 0x8004 0

:loop
 copyvar 0x8000 0x40FF
 setvar 0x8002 0x1F
 callasm 0x8E682B1
 addvar 0x40FF 1
 compare 0x40FF 0x2C
 if 0x3 goto :loop

:end
 end


Spoiler

@Aarón maldito imbécil de mente en 2 dimensiones. Igual te quiero <3
Hola usuario, quiero presentarte a mi amorcito, el gatito más bonito de todos:
¡AARÓ!

T'ESTIMO AARÓ <3

Confirmado chicos, nos casamos :3
Formulario para padrinos por MP: pulsa aquí.
Tema cerrado

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 04:13.
Skin Afternoon por Sage