qna_rh
Thread Id: 12766
Thread Name: ¿Else?
#0
Ciro4315♪ 17148
Bueno, mi duda es: ¿para qué es el else en el XSE?

Qué diferencia hay entre poner esto:


if 0x1 goto @inicio2
else goto @inicio3


A poner esto?


if 0x1 goto @inicio2
goto @inicio3


Eso es todo :D
#1
Cheve_X 15014
... Segun mi XSE el "Else" no existe x'D

Pero usar

Compare LASTRESULT 0x
if 0x

etc es lo mismo que el Else en C ;P
#2
Ciro4315♪ 17148
Sí existe :P



Creo que le voy a enviar un MP a HackMew pidiéndole que haga un elseif en la próxima versión :P
#3
Shiro~ 24544
if 0x1 goto @inicio2
else goto @inicio3
end

es igual que:

if 0x1 goto @inicio2
comandos de @inicio3
end
#4
Ciro4315♪ 17148
No, no confundas goto con call ^^
#5
Shiro~ 24544
Funciana con los dos:
es algo asi:
if 0x1 goto @inicio2
if 0x0 goto @inicio3
end
en lugar de volver a poner if goto 0x0 pones else y sucede lo mismo :)
FUNCIONARIA PARA CALL Y GOTO
dejame provarlo en mi hack y edito...
#6
Ciro4315♪ 17148
No tiene por qué, hay más aparte de if 0x1 e if 0x0
#7
Shiro~ 24544
:s ¿¿¿que??? no entedi que me dijiste xD
pero el else es solo para valores de tru o false, ose cuando if puede ser 0 o 1
EDIT:
El ejemplo:
#org 0x777777
checkflag 0x4444
if 0x0 goto 0x222222
else goto 0x111111
end
#8
Cheve_X 15014
Bueno, ahora que veo como es que se usa, lo veo como un comando innecesario, así como ese If 0x0 aquí:

if 0x1 goto @inicio2
if 0x0 goto @inicio3
end


Exceptuando que se Trate de Un Compare, donde puede haber más que 0x1 o 0x0 ese "If 0x0" está demás, ya que si el "If 0x1" Dice que no es 0x1 sigue el Script, pudiendo poner los comandos de @inicio3 debajo debajo de "if 0x1 goto @inicio2" en un solo Código.
#9
javcdark 15833
poniendolo en logica de programacion es un simple "ir a xx si yy no se cumple"
pero como toma la siguiente linea automaticamente si no se cumple la primera pues tambien lo veo innecesario (ya que estas haciendo saltos)
esto se aplicaria mas si tubieras algo asi:

if 0x1
camina arriba
habla con personaje x
else
no hagas nada

es solo un ejemplo para que entiendas un poco como podrias usarlo
espero y te alla quedado claro

edito-----
ya entendi bien a que te refieres
el primer codigo lo que hace es comparar si el resultado es "0x1", si esto es cierto, realizara los comandos de "inicio2", si el resultado es diferente de "0x1" (sea cual sea, 0x2, 0x3, en caso de tener varios resultados) saltara automaticamente a los comandos de "inicio3" siempre y cuando el resultado no sea "0x1"

el segundo codigo lo que hace es ver si el resultado es "0x1" si esto es cierto realizara los te de comandos de "inicio 2" e inmediatamente despues realizara un salto a "inicio 3", si el resultado es diferente de "0x1", no realizara los comandos de "inicio 2" y de automaticamente saltara a "inicio 3"

es algo enredado pero si hay diferencia entre usar else o no

espero y no haberte confundido aun mas
#10
Shiro~ 24544
Iniciado por Cheve_X

Bueno, ahora que veo como es que se usa, lo veo como un comando innecesario, así como ese If 0x0 aquí:

if 0x1 goto @inicio2
if 0x0 goto @inicio3
end


Exceptuando que se Trate de Un Compare, donde puede haber más que 0x1 o 0x0 ese "If 0x0" está demás, ya que si el "If 0x1" Dice que no es 0x1 sigue el Script, pudiendo poner los comandos de @inicio3 debajo debajo de "if 0x1 goto @inicio2" en un solo Código.

si es inesesario, solo era un ejemplo, una buena forma de usarle seria por ejemplo:

al darle un cabezazo a un arbol:
.
.
.
random 0x6 (un numero 1,2,3,4,5 o 6)
compare LASTRESULT 0x0
if 0x1 goto 0x81B0E32 (sale un hot hot)
compare LASTRESULT 0x1
if 0x1 goto 0x81B0E32(sale un aipon)
else goto 0x6B57D0 (si el randon no es 0 ni 1 no sale pokemon)
.
.
.
asi evitas repetir comandos
espero que ahora me ayas entendido :xD:
aqui el else tambien seria innesesario porque podrias poner (no sale pokemon) defrente :D pero ya esta en tu creatividad darle una utilidad, personalmente lo uso para no hacer muy largo un escrip.
SALU2
PD: me corrijo sobre lo de solo para valores de true y false
#11
cosarara97 12296
A ver... Ahora no voy a abrir el PKSV (y menos el XSE, que tendría que arrancar el virtualbox xD) porque soy muy vago, pero se me han ocurrido 2 utilidades para el else:
Esta es la más simple, aunque no creo que funcione:

if 0x0 setvar 1 25
else setvar 1 30
addvar 1 2

Si == 0x0, al final la variable 1 será 27, pero si no, será 32.

Y esta es la otra:

if 0x0 call @asdf
else call @qwerty
' aquí el script sigue, ya que en @asdf y @querty acabas volviendo con un return.


Pero no tengo ni idea de si funciona.

NO hay más aparte de if 0x0 y if 0x1.
¿Porqué?
A ver, lo que hacemos es un compare, verdad?
¿Y que es un compare?
Un compare es decirle al procesador de la gba "coge esto y esto, y dime si son iguales.".
¿Como nos lo dice?
Devolviendo un valor.
¿Como puede ser este valor?
True o False. Que es lo mismo que "1" o "0", o "0x1" o "0x0"


Pero la respuesta fácil es que el else es una cosa que sirve para que no tengamos que escribir código de más en los lenguajes de programación de alto nivel.