Registrarse

[duda] duda script playerfacing up right left down

Estado
Cerrado para nuevas respuestas.

Nachoius

Caminante del cielo
Ok tengo una duda de como sería la estructura de este comando(PLAYERFACING) en un script cualquiera, primero tengo entendido que se pondría esto dentro de nuestra estructura (sin contar todo lo demás necesario para realizar un script):

compare PLAYERFACING UP
if 0xFF call @up
compare PLAYERFACING RIGHT
if 0xFF call @right
compare PLAYERFACING LEFT
if 0xFF call @left

Y por cada @ (sea up right o left) nos dirigiría a un offset nuevo, es decir:

#org @up
#org @rigth
#org @left

Ahora si el contenido de esos nuevos offset (tómese por ejemplo el @up) tuviese un applymovement dentro de él, se me genera una duda, la cual es la siguiente:

En ese nuevo offset (@up) que contiene un applymovement deberá redirigir nuevamente a otro offset más indicando el movimiento que realiza? es decir debería quedar de esta forma?

#org @up
applymovement 0x1 @mov1
waitmovement 0x1

Y luego en ese offset (@mov1) especificar los movimientos a realizar? o basta con indicarlos en el mismo offset @up ? Slds espero que entiendan mi duda
 

Sayer301!

UnityLord!
Miembro de honor
Si, es eaxtamente como dices, luego tendras que hacer un #org @mov1 especificando los movimientos, lo has clavao, no se donde esta la duda XD
 

Nachoius

Caminante del cielo
Si, es eaxtamente como dices, luego tendras que hacer un #org @mov1 especificando los movimientos, lo has clavao, no se donde esta la duda XD
Ok todo bn resulta que el playerfacing puede ser. 0x1 2 3 4 depende de donde mire el jugador la cosa ed que en mi script no reconoce eso y ejecuta todos los movimientos de una vez ! ( luego edito cin mi script)
 

Cheve

MoonLover~
Miembro de honor
Pero es que veo el primer mensaje y digo.. WTF! Y luego veo el de Sayer diciendo que es asi y como que ._.

compare PLAYERFACING 0x1
if 0x1 call @snippet3
compare PLAYERFACING 0x2
if 0x1 call @snippet3
compare PLAYERFACING 0x3
if 0x1 call @snippet3
compare PLAYERFACING 0x4
if 0x1 call @snippet4

"PLAYERFACING" es una variable, específicamente la 0x800C,

El 0x1 , 0x2, 0x3 o 0x4, no debes escribirlos como pusiste tu.

Puedes escribir los valores como en mi ejemplo de arriba, o los escribes así:

FACE_DOWN = 0x1
FACE_UP = 0x2
FACE_LEFT = 0x3
FACE_RIGHT = 0x4

.
.
.

compare PLAYERFACING FACE_DOWN
if 0x1 call @snippet3
compare PLAYERFACING FACE_UP
if 0x1 call @snippet3
compare PLAYERFACING FACE_LEFT
if 0x1 call @snippet3
compare PLAYERFACING FACE_RIGHT
if 0x1 call @snippet4


Estas comparandao "If 0xFF" es que yo quedo a cuadros si asi te lo compila el XSE xD

Debes tratarlo como una variable más.

(Si B...) (B es el valor respecto al valor de la variable)

B_< 0x0
B_<< 0x0
B_= 0x1
B_== 0x1
B_> 0x2
B_>> 0x2
B_<= 0x3
B_>= 0x4
B_!= 0x5
B_<> 0x5
 

Nachoius

Caminante del cielo
Pero es que veo el primer mensaje y digo.. WTF! Y luego veo el de Sayer diciendo que es asi y como que ._.

compare PLAYERFACING 0x1
if 0x1 call @snippet3
compare PLAYERFACING 0x2
if 0x1 call @snippet3
compare PLAYERFACING 0x3
if 0x1 call @snippet3
compare PLAYERFACING 0x4
if 0x1 call @snippet4

"PLAYERFACING" es una variable, específicamente la 0x800C,

El 0x1 , 0x2, 0x3 o 0x4, no debes escribirlos como pusiste tu.

Puedes escribir los valores como en mi ejemplo de arriba, o los escribes así:

FACE_DOWN = 0x1
FACE_UP = 0x2
FACE_LEFT = 0x3
FACE_RIGHT = 0x4

.
.
.

compare PLAYERFACING FACE_DOWN
if 0x1 call @snippet3
compare PLAYERFACING FACE_UP
if 0x1 call @snippet3
compare PLAYERFACING FACE_LEFT
if 0x1 call @snippet3
compare PLAYERFACING FACE_RIGHT
if 0x1 call @snippet4


Estas comparandao "If 0xFF" es que yo quedo a cuadros si asi te lo compila el XSE xD

Debes tratarlo como una variable más.

(Si B...) (B es el valor respecto al valor de la variable)

B_< 0x0
B_<< 0x0
B_= 0x1
B_== 0x1
B_> 0x2
B_>> 0x2
B_<= 0x3
B_>= 0x4
B_!= 0x5
B_<> 0x5
Pues este es mi script

#dynamic 0x800000

#org @incio
lock
faceplayer
special 0x140
showpokepic 0x5C 0x1 0x4
msgbox @msg1 0x06
hidepokepic
compare PLAYERFACING 0x2
if 0x1 goto @up
compare PLAYERFACING 0x4
if 0x1 goto @right
compare PLAYERFACING 0x3
if 0x1 goto @left
cry 0x5c 0x0
msgbox @msg3 0x06
givepokemon 0x5c 0x5 0x0 0x0 0x0 0x0
setflag 0x828
hidesprite 0x1
release
end



#org @up
fadescreen 0x1
pause 0x20
applymovement 0x1 @mov2
waitmovement 0x1
fadescreen 0x0
applymovement 0xFF @mov1
waitmovement 0xFF
cry 0x5c 0x0
msgbox @msg2 0x06
applymovement 0x1 @mov3
waitmovement 0x1
return

#org @right
fadescreen 0x1
pause 0x20
applymovement 0x1 @mov4
waitmovement 0x1
fadescreen 0x0
applymovement 0xFF @mov1
waitmovement 0xFF
cry 0x5c 0x0
msgbox @msg2 0x06
applymovement 0x1 @mov3
waitmovement 0x1
return

#org @left
fadescreen 0x1
pause 0x20
applymovement 0x1 @mov7
waitmovement 0x1
fadescreen 0x0
applymovement 0xFF @mov8
waitmovement 0xFF
cry 0x5c 0x0
msgbox @msg2 0x06
applymovement 0x1 @mov9
waitmovement 0x1
return

#org @msg1
= Gaaaastly!

#org @msg2
= Hey! menudo susto que me has\ndado, ¿Así que quieres jugar a\llas escondidas?


#org @mov2
#raw 0x10
#raw 0x12
#raw 0x3
#raw 0xFE

#org @mov1
#raw 0x30
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x2D
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x2F
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x54
#raw 0x62
#raw 0xFE


#org @mov3
#raw 0x55
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x66
#raw 0xFE

#org @msg3
= Qué? Quieres unirte a mi equipo?\nPues adelante!


#org @mov4
#raw 0x12
#raw 0x12
#raw 0x3
#raw 0xFE


#org @mov7
#raw 0x13
#raw 0x13
#raw 0x2
#raw 0xFE

#org @mov8
#raw 0x2E
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x2D
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x2F
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x55
#raw 0x62
#raw 0xFE

#org @mov9
#raw 0x54
#raw 0x1B
#raw 0x1B
#raw 0x1B
#raw 0x66
#raw 0xFE

Lo que pasa es que el personaje hace todos los movimientos no distinguiendo si está boca arriba abajo a la izquierda o derecha, y ejecuta ambos movimientos uno tras otro, y no como debería ser: "segun la posición que se encuentre moverse de determinada forma". nose si me explico, en otras palabras el personaje ejecuta @up @left @rigth uno tras otro.
 

Cheve

MoonLover~
Miembro de honor
... No uses return, en éste caso no; haz ésto:

#dynamic 0x800000

#org @incio
lock
faceplayer
special 0x140
showpokepic 0x5C 0x1 0x4
msgbox @msg1 0x06
hidepokepic
compare PLAYERFACING 0x2
if 0x1 goto @up
compare PLAYERFACING 0x4
if 0x1 goto @right
compare PLAYERFACING 0x3
if 0x1 goto @left
end

#org @continuar
cry 0x5c 0x0
msgbox @msg3 0x06
givepokemon 0x5c 0x5 0x0 0x0 0x0 0x0
setflag 0x828
hidesprite 0x1
release
end



#org @up
fadescreen 0x1
pause 0x20
applymovement 0x1 @mov2
waitmovement 0x1
fadescreen 0x0
applymovement 0xFF @mov1
waitmovement 0xFF
cry 0x5c 0x0
msgbox @msg2 0x06
applymovement 0x1 @mov3
waitmovement 0x1
goto @continuar

#org @right
fadescreen 0x1
pause 0x20
applymovement 0x1 @mov4
waitmovement 0x1
fadescreen 0x0
applymovement 0xFF @mov1
waitmovement 0xFF
cry 0x5c 0x0
msgbox @msg2 0x06
applymovement 0x1 @mov3
waitmovement 0x1
goto @continuar

#org @left
fadescreen 0x1
pause 0x20
applymovement 0x1 @mov7
waitmovement 0x1
fadescreen 0x0
applymovement 0xFF @mov8
waitmovement 0xFF
cry 0x5c 0x0
msgbox @msg2 0x06
applymovement 0x1 @mov9
waitmovement 0x1
goto @continuar



Te puse los cambios en negrita.

¿Porqué? Porque seguramente, el script te funcionaba solo si estaba mirando hacia la izquierda ¿Verdad?
Es que al hablarle mirando hacia arriba, al finalizar los movimientos de @up, seguramente quedaba mirando a Izquierda o Derecha, lo que hacia que ejecutase lo demás :p
 
Estado
Cerrado para nuevas respuestas.
Arriba