qna_rh
Thread Id: 27655
Thread Name: Duda con checkattack
#0
RedMort 26611
Buenas, estoy empleando el comando checkattack, y por alguna razón que desconozco no me va.
Mi script es el siguiente (simplificado):

#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
#1
J.com 12785
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:


....
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.
#2
RedMort 26611
Como para adivinarlo xD creia que llegaba hasta 0x5 lo de las variables.
Muchas gracias ^^ tema resuelto
#3
J.com 12785
Poh'cierroh
#4
Javi4315♪ 13374
Quiero aclarar una cosa.

Iniciado por RedMort
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.