Registrarse

Duda con checkattack

Estado
Cerrado para nuevas respuestas.

RedMort

Aprendiendo Decomp
Buenas, estoy empleando el comando checkattack, y por alguna razón que desconozco no me va.
Mi script es el siguiente (simplificado):
Código:
#dynamic 0x800000

#org @inicio
lock
checkattack 0x1E
compare LASTRESULT 0x1
if 0x1 goto @a
release
end

#org @a
msgbox @msg 0x6
release
end

#org @msg
= Tengo el ataque.
La primera vez que lo ejecuté a modo de prueba me fue bien, pero ya no, y no sé por qué.
El problema es que lo detecta como que no tengo dicho ataque, cuando en verdad si lo tengo.
¿Esque el comando se usa de otra forma? Ayuda plis :S
 

Jo7a

Kiero mi nick amarillo D:
Es sencillo, se tiene que poner así:

....
checkattack 0xAtaque
compare LASTRESULT 0x6
if 0x1 goto 0xOffset si NO tienes ese ataque en ninún poke de tu equipo
....Continuación del script si tienes el ataque
Y por si por ejemplo, quieres hacer un checkattack, y si tienes el ataque que aparezca la anim del prota usando la pokeball y que salga la raya esa negra donde sale el pokémon que usa el ataque (como cuando usasmos corte/surf/golpe roca etc). Eso se hace asi:

Código:
....
checkattack 0xAtaque
compare LASTRESULT 0x6
if 0x1 goto 0xOffset NO tienes ataque
setanimation 0x0 LASTRESULT
bufferpartypokemon 0x0 LASTRESULT
msgbox 0xTEXT MSG_YESNO
compare LASTRESULT 0x1
if 0x0 goto 0xOffset si respondes NO
doanimation 0x28
waitstate
....


'---------
' Strings
'---------
#org 0xTEXT
= ¿Quieres usar (ataque)?
Esto te sirve por ejemplo para hacer más script estilo MOs, pero con el ataque que quieras.
 

RedMort

Aprendiendo Decomp
Como para adivinarlo xD creia que llegaba hasta 0x5 lo de las variables.
Muchas gracias ^^ tema resuelto
 

Javi4315

Babyface
Miembro de honor
Quiero aclarar una cosa.

Como para adivinarlo xD creia que llegaba hasta 0x5 lo de las variables.
Muchas gracias ^^ tema resuelto
Habláis de cosas distintas. Lo que llega hasta 0x5 en la condición que pones en el "if". Pero en el caso de ese "0x6", lo que se comprueba es si es el valor de la variable LASTRESULT que, obviamente, puede ser mucho mayor de 0x5. Esto, por cierto, viene porque el comando comprueba si algún pokémon del equipo tiene el ataque en cuestión y lo guarda como valor en la variable:

0x0: El ataque lo tiene el pokémon número 1
0x1: El ataque lo tiene el pokémon número 2
0x2: El ataque lo tiene el pokémon número 3
0x3: El ataque lo tiene el pokémon número 4
0x4: El ataque lo tiene el pokémon número 5
0x5: El ataque lo tiene el pokémon número 6
0x6: Desbordamiento, es decir, ningún pokémon lo tiene.

Por eso, lo que te plantea acertadamente Jota no es comprobar si un pokémon tiene el ataque, sino comprobar si ningún pokémon lo tiene comprobando si el valor de la variable es 0x6.
 
Estado
Cerrado para nuevas respuestas.
Arriba