Registrarse

[Scripts] Activar una flag y script de movimiento

Estado
Cerrado para nuevas respuestas.

Ezerart

Seguidor de Lechonk
Buenos días/tardes/noches, me pregunto si álguien sabe cómo implementar una flag a éste script, para que se al escribir un nombre para el juegador, simplemente que la active, para que otro script en otro evento identifique si está activada o no.

#dynamic 0x800000

#org @start
lock
faceplayer
msgbox @msg 0x5
compare LASTRESULT 0x1
if 0x1 goto @si
release
end

#org @si
callasm 0x809FC91
waitstate
release
end

#org @msg
= Por favor, deje su respectivo\nnombre en la casilla indicada:


Y el otro pedido sería si alguien puede hacer un script en el cual un overworld dice que no se puede pasar, y que al activar la flag del evento anterior, diga que ya puede pasar y entonces se mueve un paso a la izaquierda y mire al jugador(posiciones: X:0001 Y:0002 y se mueva al X:0000 Y:0002).

Perdón por las molestias, yo me encargaré de cambiar los textos que diga el overworld.
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
Código:
#dynamic 0x800000

#org @start
lock
faceplayer
msgbox @msg 0x5
compare LASTRESULT 0x1
if 0x1 call @si
release
end

#org @si
callasm 0x809FC91
waitstate
setflag 0x200
return

#org @msg
= Por favor, deje su respectivo\nnombre en la casilla indicada:
Y el otro script sería:

Código:
#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x200
compare 0x800D 0x1
if 0x1 goto @activada
msgbox @string1 0x6
release
end

#org @activada
checkflag 0x201
compare 0x800D 0x1
if 0x1 goto @repetir
msgbox @string2 0x6
applymovement 0x(número del mini) @move1
waitmovement 0x(número del mini)
setflag 0x201
release
end

#org @repetir
msgbox @string3 0x6
release
end

#org @string1
=You shall no pass

#org @string2
=Puedes pasar

#org @string3
=Que pases ya!

#org @move1
#raw 0xA
#raw 0x3
#raw 0xFE
Si algo no funciona dilo, tengo un poco abandonado el scripting
 
Última edición:

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Buenos días/tardes/noches, me pregunto si álguien sabe cómo implementar una flag a éste script, para que se al escribir un nombre para el juegador, simplemente que la active, para que otro script en otro evento identifique si está activada o no.
Para activar una flag deberías usar el comando "setflag" justo debajo del callasm y el waitstate (se activará sí y solo sí eliges darle un nombre). Quedaría así:
Código:
[PLAIN]
#dynamic 0x800000

#org @start
lock
faceplayer
msgbox @msg 0x5
compare LASTRESULT 0x1
if 0x1 goto @si
release
end

#org @si
callasm 0x809FC91
waitstate
[/PLAIN][b]setflag 0x200[/b][PLAIN]
release
end


#org @msg
= Por favor, deje su respectivo\nnombre en la casilla indicada:
[/PLAIN]

Alex Silvally dijo:
Y el otro pedido sería si alguien puede hacer un script en el cual un overworld dice que no se puede pasar, y que al activar la flag del evento anterior, diga que ya puede pasar y entonces se mueve un paso a la izaquierda y mire al jugador(posiciones: X:0001 Y:0002 y se mueva al X:0000 Y:0002).

Perdón por las molestias, yo me encargaré de cambiar los textos que diga el overworld.
Bueno... En primer lugar, te recomiendo leer a fondo un tutorial de scripts y avanzar con esto. Verás que no es tan complicado lo que quieres y que no hay mejor modo de aprender que practicando.

Aún así, esta vez te dejo lo que pides. Te recomiendo leerlo (anotaciones incluidas) e intentar entender cómo funciona.

Código:
[PLAIN]
#dynamic 0x800000 'Busca espacio libre para compilar a partir del $08800000
#org @start 'Desde aquí empieza el script propiamente dicho
lock 'Bloquea el movimiento
faceplayer 'El personaje mira al jugador
checkflag 0x200 'Comprueba si la flag número $200 está activada
if 0x1 goto @pasas 'Si lo está, va a @pasas
msgbox @nopasasmensaje 6 'Si no lo está, sigue ejecutando estos comandos
release 'Libera el movimiento
end 'Termina el script

#org @pasas 'Lo de debajo pasa si está activada la flag
msgbox @pasasmensaje 6 'Mensaje
applymovement [/PLAIN][b][i]1[/i][/b][PLAIN] @movimiento 'Mueve al mini
release 'Libera el movimiento
end 'Termina el script

#org @nopasasmensaje 'Mensaje que dice cuando no puedes pasar
= No puedes pasar.

#org @pasasmensaje 'Mensaje que dice antes de moverse
= Pasa, me hago a un lado.

#org @movimiento
#raw 0x12 'Un paso a la izquierda
#raw 0 'Mira hacia abajo. Cámbialo por la dirección a la que deba mirar.
#raw 0xFE 'Termina los movimientos
[/PLAIN]
Movimiento
Para que un npc se mueva usamos el comando applymovement.
Sintaxis dijo:
applymovement (nº de mini) (puntero al movimiento)
El número de mini puedes encontrarlo en A-Map. El movimiento lo pones debajo como si se tratara de un texto. Veamos:

@movimiento dijo:
#org @movimiento
#raw 0x12 'Un paso a la izquierda
#raw 0 'Mira hacia abajo. Cámbialo por la dirección a la que deba mirar.
#raw 0xFE 'Termina los movimientos
#raw indica que va a compilar lo siguiente tal cual lo escribas. En este caso, escribirá en la ROM "12 0 FE".

Creo que eso es todo. Si no me he explicado correctamente, avísame que intentaré aclararme.

Alternativamente, hay una forma para que el npc no vuelva al lugar en que estaba una vez que se corre. Deberías usar scripts de nivel.
Puedes leer más sobre ellos aquí.

NOTA: Todo lo que hay tras el apóstrofo, el XSE lo detecta como un comentario. NO afecta al script.


EDIT: Por cierto, ya me olvidaba... Como a todo scripter, te recomiendo dejar el XSE y usar el Red Alien de @cosarara97 .

Por ejemplo, voy a dejarte ese mismo script con la sintaxis del RA:

Código:
[PLAIN]
#include "stdlib/std.rbh"
#include "stdlib/stdmoves.rbh" 'Nos permiten usar cosas fáciles como los nombres de los movimientos en lugar de sus números

#dyn 0x800000 'Busca espacio libre para compilar a partir del $08800000
#org @start 'Desde aquí empieza el script propiamente dicho
lock 'Bloquea el movimiento
faceplayer 'El personaje mira al jugador
if (!0x200) 'Comprueba si NO está activada la flag 0x200
{
'Ejecuta este bloque si no lo está
 loadptr :nopasasmensaje
 callstd 6
 release
 end
}
'Ejecuta este bloque si lo está
loadptr :pasasmensaje
callstd 6
applymovement 1 @movimiento 'Mueve al mini
release 'Libera el movimiento
end 'Termina el script

:nopasasmensaje 'Mensaje que dice cuando no puedes pasar
= No puedes pasar.$$

:pasasmensaje 'Mensaje que dice antes de moverse
= Pasa, 
= me hago a un lado.$$

#org @movimiento
walk_left
look_down
move_end
[/PLAIN]
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba