Registrarse

Ayuda error runtime error 13 xse

Estado
Cerrado para nuevas respuestas.
Hola! Muy buenas, soy nuevo en el foro y haciendo scripts me salió un error, y se me ocurrió preguntar aquí ya que esta lleno de expertos. Me sale el error Runtime Error 13 Type Mismatch sobre la linea 5. Falta #define.
El script lo colocaría en el guardia.

El script es el siguiente:

#dynamic 0x800000
#org @inicio
setvar 0x4019 0x1
if 0x2 goto @pase
msgbox 0x2 @nopase
end

#org @pase
msgbox 0x2 @pase1
applymovement 0x3 @mover
waitmovement 0x3
end

#org @nopase
= No puedes pasar, no tienes un\npokemon.

#org @pase1
= Ya tienes un pokemon. Pasa

#org @mover
#raw 0x13
#raw 0xFE

----------------
El uso que le daria sería de que el "guardia" este en mi camino y en el script que recibo un pokemon darle el valor 0x2, lo que haria que se corra. Pero si no recibí al poke no se correrá.
 

Tyjet

Artista
Hola Theroom23! Acabo de empezar con el script hace poco, y no se si será lo que creo o no..
Pero diría que tienes que definir el msgbox antes de categorizarlo. Vendría a ser:
msgbox @nopase 0x2
Y lo mismo con el otro msgbox y supongo que el applymovement (este aún no lo he puesto en práctica).

Pruebalo y comentas a ver ^^

Ty.
 

Sergiofr_18

En el sendero de la vida
A parte de lo que dijo @Tyjet, ese script está un poco mal.

Te lo corrijo:

Código:
#dynamic 0x800000
#org @inicio
setvar 0x4019 0x1
if 0x2 goto @pase
msgbox @nopase 0x2
end

#org @pase
msgbox 0x2 @pase1
applymovement 0x3 @mover
waitmovement 0x3
end

#org @nopase
= No puedes pasar, no tienes un\npokemon.

#org @pase1
= Ya tienes un pokemon. Pasa

#org @mover
#raw 0x13
#raw 0xFE
Esto es lo que tienes corregido gracias al usuario previamente mencionado. Pero al principio das el valor 1 a la variable 4019, y luego dices "Si es mayor que 2, ve a @pase. El script de por sí no va a funcionar. Tendrías que darle el valor 1 a la variable en el script en el que te dan tu primer Pokémon. Luego, en este script, hacer un compare, quedando así:
Código:
compare 0x4019 0x1
Esto comprueba si la variable tiene el valor 1. Si es así, iremos a @pase
Código:
if 0x1 goto @pase
Y si tiene el valor 0, acabaríamos el script con el msgbox que tú pones.

Por lo tanto, así queda:

Código:
#dynamic 0x800000

#org @inicio
compare 0x4019 0x1
if 0x1 goto @pase
msgbox @nopase
release
end

#org @nopase
= No puedes pasar, no tienes un\npokemon.

#org @pase
msgbox 0x2 @pase1
applymovement 0x3 @mover
waitmovement 0x3
end

#org @mover
#raw 0x13
#raw 0xFE
Luego podrías hacer que una vez actives por primera vez el @pase, darle a la variable el valor 2, y poner un if 0x2 goto @fin. En @fin podrías release y end. Esto serviría para que si ya te dejó pasar por primera vez ya no te vuelva a decir nada. (Desconozco si habría que aplicar los moves otra vez, pero sería hacer el mismo applymovement)
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Luego, en este script, hacer un compare, quedando así:
Código:
compare 0x4019 0x1
Esto comprueba si la variable tiene el valor 1. Si es así, iremos a @pase
Código:
if 0x1 goto @pase
Y si tiene el valor 0, acabaríamos el script con el msgbox que tú pones.
Bueno, la duda en sí ya está casi resuelta, pero no puedo dejar esto explicado así porque es casi un delito lo que acabas de decir :S

El compare se fijará si la variable tiene valor 1, cierto.
Pero el if no funciona como dices, de tener valor 1 la variable, irá a @pase. Si tiene cualquier otro valor distinto (0, 2, 875, etc) irá a @nopase.

Recordemos la estructura compare/if:

Código:
compare 0xvar 0xvalor
if 0xCondición goto/call @label
Var: Cualquier número de variable
Valor: El valor que queremos comparar con la variable. Es decir, por ejemplo, ¿la variable 40FF tiene valor 5?
Condición: Especificaremos si el valor es menor, igual, mayor, menor o igual, mayor o igual o distinto al que contiene la variabel.
Las formas de condición son:

0x0: Menor
0x1: Igual
0x2: Mayor
0x3: Menor o igual
0x4: Mayor o igual
0x5: Distinto
Entonces, supongamos que la variable 40FF tiene un valor de X y queremos que, si es mayor a 5 vaya a la etiqueta "mayor".

Código:
...
compare 0x40FF 0x5
if 0x2 goto @mayor
(seguimos aquí si es menor)
...

#org @mayor
(Aquí es mayor)
...
O, equivalentemente:

Código:
...
compare 0x40FF 0x5
if 0x0 goto @menor
(seguimos aquí si es mayor)
...

#org @menor
(Aquí si es menor)
...
Espero haber dejado esto claro. ¡Saludos!
 
Estado
Cerrado para nuevas respuestas.
Arriba