Registrarse

[Fire Red] Función de la variable LASTRESULT

Estado
Cerrado para nuevas respuestas.

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
Mi pregunta es la siguiente; cuales son los parámetros de esta variable?
Me explico, para comparar una decisión tales como el yes\no box... Usamos <compare LASTRESULT 0x(un número)>. Quisiera saber cómo usar correctamente ese número, he visto algunos tutoriales que ponen el número 1 pero no entiendo por qué.
Alguien podría explicarme qué números se pueden poner y que función tienen?
 
Última edición:

Toni

Leyenda de WaH
El 1 equivale a sí
El 0 equivale a no.

Ahora la función real.
[*]Menor a 0x0[*]Igual a 0x1[*]Mayor a 0x2[*]menor o igual a 0x3[*]mayor o igual a 0x4[*]Distinto de 0x5

Esto está en el mega tutorial de scripting de xabier.

Por cierto: variable LASTRESULT =8000D
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
Re: Respuesta: [Fire Red] Función de la variable LASTRESULT

El 1 equivale a sí
El 0 equivale a no.

Ahora la función real.
[*]Menor a 0x0[*]Igual a 0x1[*]Mayor a 0x2[*]menor o igual a 0x3[*]mayor o igual a 0x4[*]Distinto de 0x5

Esto está en el mega tutorial de scripting de xabier.

Por cierto: variable LASTRESULT =8000D
Una pregunta, has dicho que el 0 equivale a inferior, es decir, compare LASTRESULT 0x0 significa que el valor que tiene la variable LASTRESULT ( o 8000D) es inferior, pero inferior a que?
 

Xabier2012

Usuario mítico
El LASTRESULT se refiere a la última variable modificada. Normalmente la 8000D que es la que se modifica cuando utilizamos el YES/NO.
Tú si contestas que sí, la variable 8000D tendrá un 1, y si contestas que no tendrá un 0. Sabiendo esto solo hay que hacer una condición normal como lo haríamos con cualquier otra variable.

Puedes mirar si la var tiene un 0 y comprobar si no lo tiene:

Código:
compare 0x8000D 0x0
if 0x5 goto @si
Lo que viene a decir estos dos comandos es que si la var no tiene el valor 0, pues que vaya a @si. También podría comparar la variable con 0x1 y en el if poner otro 0x1 y sería exactamente igual. Una condición la podemos hacer de varias formas.
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
El LASTRESULT se refiere a la última variable modificada. Normalmente la 8000D que es la que se modifica cuando utilizamos el YES/NO.
Tú si contestas que sí, la variable 8000D tendrá un 1, y si contestas que no tendrá un 0. Sabiendo esto solo hay que hacer una condición normal como lo haríamos con cualquier otra variable.

Puedes mirar si la var tiene un 0 y comprobar si no lo tiene:

Código:
compare 0x8000D 0x0
if 0x5 goto @si
Lo que viene a decir estos dos comandos es que si la var no tiene el valor 0, pues que vaya a @si. También podría comparar la variable con 0x1 y en el if poner otro 0x1 y sería exactamente igual. Una condición la podemos hacer de varias formas.
Entonces lo que se lo e después del LASTRESULT es una cantidad, es decir, si ponemos 0xF estamos haciendo que se compruebe el valor de la variable dependiendo del número F, si 0x0 (inferior al número F) ..., Verdad?

Y otra pregunta, en que casos se modifica la variable LASTRESULT? Por ejemplo el yes\no box cambia el valor de la variable a 0 o a 1. Hay más formas de cambiar su valor. Por ejemplo que tenga el valor 5?

Edito: Creo que lo he entendido, el comando en si es "compare 0x(variable) 0x(valor con la que se compara )"?
Entonces, el comando compare 0x800D 0x(valor con la que se compara) es lo mismo que el LASTRESULT. Cuando habéis dicho que se puede hacer de diferentes formas es esto?:

Compare LASTRESULT 0x1
if 0x1 goto @si

Compare LASTRESULT 0x0
If 0x5 goto @si
 
Última edición:

Toni

Leyenda de WaH
Msgbox @texto1 0x5
Compare LASTRESULT 0x1(si le has dicho que si al msgbox)
if 0x1(si es cierto que has dicho que si) goto @si
.
.
.
Es simple.
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
Entonces la variable LASTRESULT solo se puede modificar con el yes\no box?
 

Xabier2012

Usuario mítico
Respuesta: Re: Respuesta: [Fire Red] Función de la variable LASTRESULT

Entonces lo que se lo e después del LASTRESULT es una cantidad, es decir, si ponemos 0xF estamos haciendo que se compruebe el valor de la variable dependiendo del número F, si 0x0 (inferior al número F) ..., Verdad?

Y otra pregunta, en que casos se modifica la variable LASTRESULT? Por ejemplo el yes\no box cambia el valor de la variable a 0 o a 1. Hay más formas de cambiar su valor. Por ejemplo que tenga el valor 5?
Exacto.
Y por ejemplo el comando "countpokemon" hace que la variable 8000D adquiera el valor de cuantos pokemons tienes en el equipo. Pueden ser 0 o 6. Ahí también podemos utilizar lastresult o la var. El lastresult existe para no tener que recordar que variables especiales se modifican con ciertos comandos. Simplemente ponemos lastresult y ya.
 

Cheve

MoonLover~
Miembro de honor
Respuesta: Re: [Fire Red] Función de la variable LASTRESULT

¡Cuántos conceptos erróneos!

El LASTRESULT es una sintaxis del XSE para referirse a la variable 0x800D.

Lo utiliza así ya que hay ciertos comandos que tienen una salida en dicha variable, por ejemplo:

El countpokemon, cuenta cuántos pokémons tienes en la party y guarda automáticamente ese valor en LASTRESULT (En la variable 0x800D) para que luego lo uses como quieras (Como cualquier variable).

El random, elije un numero al azar y lo guarda en LASTRESULT.

El callstd 0x5 (el 0x5 despues del msgbox) guarda 0 o 1 en LASTRESULT dependiendo de lo que contestes.

Y así con varios comandos.
Recuerda que los comandos no son más que rutinas ASM que están prediseñadas para ser combinadas, algunas de ellas devuelven valores (Como las anteriores), y otras simplemente ejecutan acciones (Applymovement) o terminan algún ciclo (closeonkeypress)

Entonces con el compare se suele poner LASTRESULT normalmente?
No, el compare es para comparar dos variables cualesquiera.
Se usa el compare LASTRESULT 0xY dependiendo de lo que estés haciendo en tu script. (Un condicional que depende del valor que te dió un comando anterior y te lo devolvió en el LASTRESULT)


Por ejemplo si quiero hacer que pase por un lugar solo teniendo un pokémon:

.
.
.
countpokemon
compare LASTRESULT 0x1
if 0x1 call @pasa
msgbox @nopasas 0x6
.
.
.

Pero si quiero que pase por ese lugar luego de completar X evento de la historia, cuando ese X evento pase, seteo la variable 0x40FF a 1

.
.
.
compare 0x40FF 0x1
if 0x1 call @pasa
msgbox @nopasas 0x6
.
.
.
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
@Cheverus Snape

Has dicho que para determinados comandos se usa el LASTRESULT, pero ese 0x40FF es un número cualquiera o se usa para algo exacto? Ahora recuerdo haber visto en algún tutorial que es recomendable usar las variables de un numero en adelante, es para no alterar por ejemplo la variable LASTRESULT?
 

Xabier2012

Usuario mítico
Respuesta: Re: [Fire Red] Función de la variable LASTRESULT

Entonces con el compare se suele poner LASTRESULT normalmente?
No. Es especial para la variable 800D

@Cheverus Snape

Has dicho que para determinados comandos se usa el LASTRESULT, pero ese 0x40FF es un número cualquiera o se usa para algo exacto? Ahora recuerdo haber visto en algún tutorial que es recomendable usar las variables de un numero en adelante, es para no alterar por ejemplo la variable LASTRESULT?
La variable lasresult es la variable 800D, y ahí se acaba todo el misterio. En un principio pensaba que lastresult podía referirse a otras variables que se modifican con ciertos comandos, pero acabo de mirar y todos esos comando modifican la variable 800D, así que realmente el lastresult es como se le llama a la variable 800D. Será que cuesta recordar el número.
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
Por eso lo decía, si solo se puede usar una variable determinada para determinados comandos
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
No quiero ser pesado, pero una última duda. Es que todavía no sé cuando usar el LASTRESULT y cuando otra variable
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
El LASTRESULT se refiere a la última variable modificada. Normalmente la 8000D que es la que se modifica cuando utilizamos el YES/NO.
Tú si contestas que sí, la variable 8000D tendrá un 1, y si contestas que no tendrá un 0. Sabiendo esto solo hay que hacer una condición normal como lo haríamos con cualquier otra variable.

Puedes mirar si la var tiene un 0 y comprobar si no lo tiene:

Código:
compare 0x8000D 0x0
if 0x5 goto @si
Lo que viene a decir estos dos comandos es que si la var no tiene el valor 0, pues que vaya a @si. También podría comparar la variable con 0x1 y en el if poner otro 0x1 y sería exactamente igual. Una condición la podemos hacer de varias formas.
Quiero aclarar un solo punto: LASTRESULT no significa la última variable modificada, sino que es el nombre que nuestro editor de scripts le da a la variable $800D.
Es decir, siempre y en todos los casos, LASTRESULT = VAR $800D.

EDIT: Mil disculpas, no había visto que Chevito ya había aclarado eso.

Ah, y la var $800D, como tantas otras es dinámica, su valor cambia.
 
Última edición:

Toni

Leyenda de WaH
Lastresult es una variable que no tiene un valor fijo, o sea, que se almacenan allí valores y luego se desechan.
 

Adke

weeeh
Respuesta: Re: [Fire Red] Función de la variable LASTRESULT

No quiero ser pesado, pero una última duda. Es que todavía no sé cuando usar el LASTRESULT y cuando otra variable
Lastresult solo se usa cuando se ha usado previamente un comando que devuelve un valor (yes/no, countpokemon, random, multichoice, etc)

Las demás variables se usan cuando necesitas tener un valor que varíe en un script, por ejemplo que cuando la variable X tenga un determinado valor ocurra algo. O para scripts de gatillo y nivel.
Realmente las variables sirven para muchas más cosas pero eso es, a grandes rasgos, para lo que se utilizan.

Espero que esto te ayude a aclarar tus dudas ^^
 

Gold

Porrero a tiempo parcial
Miembro insignia
El LASTRESULT se refiere a la última variable modificada. Normalmente la 8000D que es la que se modifica cuando utilizamos el YES/NO.
Tú si contestas que sí, la variable 8000D tendrá un 1, y si contestas que no tendrá un 0. Sabiendo esto solo hay que hacer una condición normal como lo haríamos con cualquier otra variable.

Puedes mirar si la var tiene un 0 y comprobar si no lo tiene:

Código:
compare 0x8000D 0x0
if 0x5 goto @si
Lo que viene a decir estos dos comandos es que si la var no tiene el valor 0, pues que vaya a @si. También podría comparar la variable con 0x1 y en el if poner otro 0x1 y sería exactamente igual. Una condición la podemos hacer de varias formas.
las variables son dwords, por lo tanto lo correcto es 0x800D, no 8000D.

LASTRESULT es el nombre que le da XSE a la vsriable 0x800D, la cual es usada por vsrios specials y comandos para almacenar cierto valor, cabe mencionar que es uns variable temporal, por lo que cada refrescado su valor volverá a 0.
 
Estado
Cerrado para nuevas respuestas.
Arriba