Registrarse

[RH - Scripting] [ESCUELA DE SCRIPTS] Applymovement / MOVE_CAMERA

Estado
Cerrado para nuevas respuestas.

Xabier2012

Héroe de WaH



Applymovement

Con este comando conseguiremos que en nuestros scripts podamos mover minis por el mapa, incluyendo al propio personaje. La síntesis del comando es la siguiente:

Código:
applymovement 0x(Person event nº) @(dirección offset)
El person event nº corresponderá al número del mini al cual queremos mover. Es importante no confundir el número de evento con el número de evento de la persona. El número en el cual nos fijamos nosotros es este:



La diferencia de este número con el de arriba, es que el número de person event se lo podemos poner a varios minis a la vez, de esta forma podemos mover dos minis con el mismo movimiento. Para ser más claros, pensad que todos los minis que tengo el número que nosotros hayamos puestos van a ejecutar el movimiento que nosotros le asignemos en nuestro applymovement.

La dirección offset que debemos poner, es un @ con una palabra, como en un msgbox, esto nos indicará el #org de nuestro offset en el cual pondremos nuestros movimientos. Entonces un ejemplo sería:

Código:
applymovement 0x2 @mover

Tipos de movimientos

Como en un msgbox, tendremos que crear un #org con la palabra que generará nuestro offset (la palabra que hemos puesto en el @ del applymovement).

En esta firección offset pondremos los comandos que corresponden a un movimeinto, y los cuales se ejecutarán cuando se ejecute el correspondiente applymovement.

Un movimiento se pondrá como:
Código:
#raw 0x(numero de movimeinto)
Y los números de los movimientos son estos:

#raw 0x00 = Face Down
#raw 0x01 = Face Up
#raw 0x02 = Face Left
#raw 0x03 = Face Right
#raw 0x04 = Step Down (Slow)
#raw 0x05 = Step Up (Slow)
#raw 0x06 = Step Left (Slow)
#raw 0x07 = Step Right (Slow)
#raw 0x08 = Step Down (Normal)
#raw 0x09 = Step Up (Normal)
#raw 0x0A = Step Left (Normal)
#raw 0x0B = Step Right (Normal)
#raw 0x0C = Jump2 Down
#raw 0x0D = Jump2 Up
#raw 0x0E = Jump2 Left
#raw 0x0F = Jump2 Right
#raw 0x10 = Delay1
#raw 0x11 = Delay2
#raw 0x12 = Delay3
#raw 0x13 = Delay4
#raw 0x14 = Delay5
#raw 0x15 = Step Down (Fast)
#raw 0x16 = Step Up (Fast)
#raw 0x17 = Step Left (Fast)
#raw 0x18 = Step Right (Fast)
#raw 0x19 = Step on the Spot Down (Slow)
#raw 0x1A = Step on the Spot Up (Slow)
#raw 0x1B = Step on the Spot Left (Slow)
#raw 0x1C = Step on the Spot Right (Slow)
#raw 0x1D = Step on the Spot Down (Normal)
#raw 0x1E = Step on the Spot Up (Normal)
#raw 0x1F = Step on the Spot Left (Normal)
#raw 0x20 = Step on the Spot Right (Normal)
#raw 0x21 = Step on the Spot Down (Faster)
#raw 0x22 = Step on the Spot Up (Faster)
#raw 0x23 = Step on the Spot Left (Faster)
#raw 0x24 = Step on the Spot Right (Faster)
#raw 0x25 = Step on the Spot Down (Fastest)
#raw 0x26 = Step on the Spot Up (Fastest)
#raw 0x27 = Step on the Spot Left (Fastest)
#raw 0x28 = Step on the Spot Right (Fastest)
#raw 0x29 = Slide Down
#raw 0x2A = Slide Up
#raw 0x2B = Slide Left
#raw 0x2C = Slide Right
#raw 0x2D = Slide Down
#raw 0x2E = Slide Up
#raw 0x2F = Slide Left
#raw 0x30 = Slide Right
#raw 0x31 = Slide Down
#raw 0x32 = Slide Up
#raw 0x33 = Slide Left
#raw 0x34 = Slide Right
#raw 0x35 = Slide Running Down
#raw 0x36 = Slide Running Up
#raw 0x37 = Slide Running Left
#raw 0x38 = Slide Running Right
#raw 0x3A = Jump Facing Left (Down)
#raw 0x3B = Jump Facing Down (Up)
#raw 0x3C = Jump Facing Up (Left)
#raw 0x3D = Jump Facing Left (Right)
#raw 0x3E = Face Player
#raw 0x3F = Face Against Player
#raw 0x40 = Lock Sprite Facing
#raw 0x41 = Release Sprite Facing
#raw 0x42 = Jump Down
#raw 0x43 = Jump Up
#raw 0x44 = Jump Left
#raw 0x45 = Jump Right
#raw 0x46 = Jump in Place (Facing Down)
#raw 0x47 = Jump in Place (Facing Up)
#raw 0x48 = Jump in Place (Facing Left)
#raw 0x49 = Jump in Place (Facing Right)
#raw 0x4A = Jump in Place (Facing Down/Up)
#raw 0x4B = Jump in Place (Facing Up/Down)
#raw 0x4C = Jump in Place (Facing Left/Right)
#raw 0x4D = Jump in Place (Facing Right/Left)
#raw 0x4E = Face Left
#raw 0x54 = Hide Sprite
#raw 0x55 = Show Sprite
#raw 0x56 = Exclamation Mark (!)
#raw 0x57 = Question Mark (?)
#raw 0x58 = Love (<3)
#raw 0x62 = Walk Down
#raw 0x63 = Walk Down
#raw 0x64 = Face Down (Delayed)
#raw 0x65 = Face Up (Delayed)
#raw 0x66 = Face Left (Delayed)
#raw 0x67 = Face Right (Delayed)
#raw 0x70 = Jump in Place (Facing Down)
#raw 0x71 = Jump in Place (Facing Up)
#raw 0x72 = Jump in Place (Facing Left)
#raw 0x73 = Jump in Place (Facing Right)
#raw 0x74 = Jump Down Running
#raw 0x75 = Jump Up Running
#raw 0x76 = Jump Left Running
#raw 0x77 = Jump Right Running
#raw 0x78 = Jump2 Down Running
#raw 0x79 = Jump2 Up Running
#raw 0x7A = Jump2 Left Running
#raw 0x7B = Jump2 Right Running
#raw 0x7C = Walk on the Spot (Down)
#raw 0x7D = Walk on the Spot (Up)
#raw 0x7E = Walk on the Spot (Left)
#raw 0x7F = Walk on the Spot (Right)
#raw 0x80 = Slide Down Running
#raw 0x81 = Slide Up Running
#raw 0x82 = Slide Left Running
#raw 0x83 = Slide Right Running
#raw 0x84 = Slide Down
#raw 0x85 = Slide Up
#raw 0x86 = Slide Left
#raw 0x87 = Slide Right
#raw 0x88 = Slide Down on Left Foot
#raw 0x89 = Slide Up on Left Foot
#raw 0x8A = Slide Left on Left Foot
#raw 0x8B = Slide Right on Left Foot
#raw 0x8C = Slide Left diagonally (Facing Up)
#raw 0x8D = Slide Right diagonally (Facing Up)
#raw 0x8E = Slide Left diagonally (Facing Down)
#raw 0x8F = Slide Right diagonally (Facing Down)
#raw 0x90 = Slide2 Left diagonally (Facing Up)
#raw 0x91 = Slide2 Right diagonally (Facing Up)
#raw 0x92 = Slide2 Left diagonally (Facing Down)
#raw 0x93 = Slide2 Right diagonally (Facing Down)
#raw 0x96 = Walk Left
#raw 0x97 = Walk Right
#raw 0x98 = Levitate
#raw 0x99 = Stop Levitating
#raw 0x9C = Fly Up Vertically
#raw 0x9D = Land
#raw 0xFE = End of Movements

#raw 0x0 = Face Down
#raw 0x1 = Face Up
#raw 0x2 = Face Left
#raw 0x3 = Face Right
#raw 0x4 = Face Down (Faster)
#raw 0x5 = Face Up (Faster)
#raw 0x6 = Face Left (Faster)
#raw 0x7 = Face Right (Faster)
#raw 0x8 = Step Down (Very Slow)
#raw 0x9 = Step Up (Very Slow)
#raw 0xA = Step Left (Very Slow)
#raw 0xB = Step Right (Very Slow)
#raw 0xC = Step Down (Slow)
#raw 0xD = Step Up (Slow)
#raw 0xE = Step Left (Slow)
#raw 0xF = Step Right (Slow)
#raw 0x10 = Step Down (Normal)
#raw 0x11 = Step Up (Normal)
#raw 0x12 = Step Left (Normal)
#raw 0x13 = Step Right (Normal)
#raw 0x14 = Jump2 Down
#raw 0x15 = Jump2 Up
#raw 0x16 = Jump2 Left
#raw 0x17 = Jump2 Right
#raw 0x18 = Delay1
#raw 0x19 = Delay2
#raw 0x1A = Delay3
#raw 0x1B = Delay4
#raw 0x1C = Delay5
#raw 0x1D = Step Down (Fast)
#raw 0x1E = Step Up (Fast)
#raw 0x1F = Step Left (Fast)
#raw 0x20 = Step Right (Fast)
#raw 0x21 = Step on the Spot Down (Normal)
#raw 0x22 = Step on the Spot Up (Normal)
#raw 0x23 = Step on the Spot Left (Normal)
#raw 0x24 = Step on the Spot Right (Normal)
#raw 0x25 = Step on the Spot Down (Faster)
#raw 0x26 = Step on the Spot Up (Faster)
#raw 0x27 = Step on the Spot Left (Faster)
#raw 0x28 = Step on the Spot Right (Faster)
#raw 0x29 = Step on the Spot Down (Fastest)
#raw 0x2A = Step on the Spot Up (Fastest)
#raw 0x2B = Step on the Spot Left (Fastest)
#raw 0x2C = Step on the Spot Right (Fastest)
#raw 0x2D = Face Down (Delayed)
#raw 0x2E = Face Up (Delayed)
#raw 0x2F = Face Left (Delayed)
#raw 0x30 = Face Right (Delayed)
#raw 0x31 = Slide Down (Slow)
#raw 0x32 = Slide Up (Slow)
#raw 0x33 = Slide Left (Slow)
#raw 0x34 = Slide Right (Slow)
#raw 0x35 = Slide Down (Normal)
#raw 0x36 = Slide Up (Normal)
#raw 0x37 = Slide Left (Normal)
#raw 0x38 = Slide Right (Normal)
#raw 0x39 = Slide Down (Fast)
#raw 0x3A = Slide Up (Fast)
#raw 0x3B = Slide Left (Fast)
#raw 0x3C = Slide Right (Fast)
#raw 0x3D = Slide Running on Right Foot (Down)
#raw 0x3E = Slide Running on Right Foot (Up)
#raw 0x3F = Slide Running on Right Foot (Left)
#raw 0x40 = Slide Running on Right Foot (Right)
#raw 0x41 = Slide Running on Left Foot (Down)
#raw 0x42 = Slide Running on Left Foot (Up)
#raw 0x43 = Slide Running on Left Foot (Left)
#raw 0x44 = Slide Running on Left Foot (Right)
#raw 0x46 = Jump Facing Left (Down)
#raw 0x47 = Jump Facing Down (Up)
#raw 0x48 = Jump Facing Up (Left)
#raw 0x49 = Jump Facing Left (Right)
#raw 0x4A = Face Player
#raw 0x4B = Face Against Player
#raw 0x4C = Lock Sprite Facing
#raw 0x4D = Release Sprite Facing
#raw 0x4E = Jump Down
#raw 0x4F = Jump Up
#raw 0x50 = Jump Left
#raw 0x51 = Jump Right
#raw 0x52 = Jump in Place (Facing Down)
#raw 0x53 = Jump in Place (Facing Up)
#raw 0x54 = Jump in Place (Facing Left)
#raw 0x55 = Jump in Place (Facing Right)
#raw 0x56 = Jump in Place (Facing Down/Up)
#raw 0x57 = Jump in Place (Facing Up/Down)
#raw 0x58 = Jump in Place (Facing Left/Right)
#raw 0x59 = Jump in Place (Facing Right/Left)
#raw 0x60 = Hide Sprite
#raw 0x61 = Show Sprite
#raw 0x62 = Exclamation Mark (!)
#raw 0x63 = Question Mark (?)
#raw 0x64 = Cross (X)
#raw 0x65 = Double Exclamation Mark (!!)
#raw 0x66 = Happy (^_^)
#raw 0xFE = End of Movements

Entonces, si queremos que un mini camine tres pasos hacia arriba tendríamos que hacer esto:

Código:
#dynamic 0x800000

#org @inicio
applymovement 0x2 @mover
end

#org @mover
#raw 0x9
#raw 0x9
#raw 0x9
#raw 0xFE
9 es el número asignado a dar un paso arriba de forma normal.

¿Porqué ponemos #raw 0xFE?

Todos los movimientos que pongamos en un #org tienen que acabar obligatóriamente con #raw 0xFE, esto le indica al juego que los movimentos se acaban. Si no lo ponemos no funcionará y se trabará el juego.

Si descargasteis el pack de herramientas de la primera lección, dentro hay una herramienta llamada move it!, la cual sirve para generar los #raw de los movimientos de forma simple dándole a botones. De esta forma no tendréis que buscar en la lista los #raw de cada movimiento, lo que es un coñazo.


Waitmovement

Con waitmovement haremos que los comandos después de este no se ejecuten hasta que no se hayan producido todos los movimientos asignados a nuestro applymovement. De esta forma, si por ejemplo tenemos un mini que esta caminando hacia arriba y luego nos habla con un msgbox, si no ponemos waitmovement, se producirá el mensaje a la vez que camina.

La forma correcta de utilizarlo es esta:

Código:
waitmovement 0x(Person event nº)
Person event nº es el número de nuestra persona el cual hemos puesto anteriormente. De esta forma si tenemos varios applymovement ejecutándose a la vez, con el waitmovement podremos determinar a que movimiento queremos esperar exactamente.

En caso de que queramos esperar a todos los movimientos, deberemos poner: waitmovement 0x0. El 0x0 indica que se tienen que esperar a que se acaben todos los movimientos de todas las personas.

Aquí un ejemplo:

Código:
#dynamic 0x800000

#org @inicio
applymovement 0x2 @mover
waitmovement 0x2
msgbox @texto 0x6
end

#org @texto
= He dado 3 pasos.

#org @mover
#raw 0x9
#raw 0x9
#raw 0x9
#raw 0xFE

Bug cuando das pasos

Hay una especie de bug a tener en cuenta cuando utilizamos applymovement. Y es que si damos pasos y queremos luego que nuestro mini se quede fijo, tendremos que poner los #raw de los pasos y luego el #raw de mirar hacia donde ha dado los pasos. Si no hacemos esto el sprite del mini al que hemos aplicado el movimiento se quedará en la postura de caminar, en vez de quedar con los pies juntos mirando hacia el último paso caminado. Por ejemplo, en el movimiento de arriba en vez de esto:

Código:
#org @mover
#raw 0x9
#raw 0x9
#raw 0x9
#raw 0xFE
Tenemos que poner esto:

Código:
#org @mover
#raw 0x9
#raw 0x9
#raw 0x9
#raw 0x1
#raw 0xFE
Añadiendo el movimiento #raw 0x1 de mirar arriba, el mini no se quedará en una postura extraña.


Moviendo a player

Para movernos a nosotros mismos, donde ponemos el person event nº, tendremos que poner FF. Entonces un applymovement donde nos movemos a nosotros sería así:

Código:
applymovement 0xFF @mover
Y lógicamente su waitmovement sería así:

Código:
waitmovement 0xFF

MOVE_CAMERA

Si lo que queremos es mover la cámara del juego, no es muy distinto a como los hemos hecho anteriormente pero hay que cumplir ciertos requisitos:

1-En el applymovmement tenemos que poner 0x7F o MOVE_CAMERA
2-Antes del applymovement hay que poner el comando "special 0x113"
3-Después del applymovement hay que poner el comando "special 0x114"
4-El waitmovement es muy recomendable ponerlo con 0x0

Entonces, si queremos mover la cámara el applymovement quedará así:

Código:
special 0x113
applymovement 0x7F @mover
waitmovement 0x0
special 0x114
El special 0x113 hará que la cámara se desfije del jugador. El special 0x114 hará que la cámara se vuelva a fijar en el jugador.

En el #org @mover pondremos los #raw como si de un mini normal se tratara. Como veis, no tiene mayor complicación, solo que tienen que cumplirse unos requisitos. (Sobre los specials y sus funciones entraremos en detalle en la próxima clase).


Preguntas frecuentes

¿Puedo reutilizar un applymovement?

Sí. Cuando tenemos un #org con #raws de movimientos, esa dirección offset la podemos usar en otro applymovement si queremos ejecutar los mismos movimientos. De esta forma no hace falta escribir el código de los movimientos dos veces. Claro está, que en @ del applymovement tendrás que poner el mismo @ del #org de los movimientos.

¿Cómo vuelvo a fijar la cámara?

Tendrás que volver a ejecutar un MOVE_CAMERA y dar los movimientos a la inversa para que se vuelva a fijar en el player. Cuando digo que el special 0x114 vuelve a fijar la cámara en el juegador, no me refiero a que la cámara vuelve a su sitio, simplemente es obligatorio hacerlo así. Si refrescas el mapa, la cámara se debería colocar otra vez en su sitio.

No me funciona el move_camera en ruby

Tienes que sustituir el special 0x113 por 0x116 y el 0x114 por 0x117


TAREA

Tenéis que hacer una tarea en la cual al hablar con un mini:

1-La primera vez se sorprenderá con una exclamación, y luego con un MOVE_CAMERA os dirá donde está el laboratorio del profesor Oak.

2-La segunda vez que habléis con él nos dirá que somos unos pesados.

@Tervaxx @Toni @rdoble @AwesomeCS @RafaSc3 @LluviaElemental @AlexanderWWE @Axnez @♦ZeØn♦ @jfem
 
Última edición:

KevinXDE

Héroe de WaH
Usuario: Tervaxx
Rom Base: Fire Red
Lección: Applymovement / MOVE_CAMERA
Scripts:
Código:
#dynamic 0x700000
#org @start
faceplayer
lock
compare 0x4011 0x1
if 0x1 goto @inicio2
applymovement 0x3 @excla
waitmovement 0x0
pause 0x25
msgbox @frase1 0x6
waitmsg
applymovement 0x3 @mirar1
waitmovement 0x0
special 0x113
applymovement Move_Camera @camara1
waitmovement 0x0
special 0x114
msgbox @frase2 0x6
waitmsg
special 0x113
applymovement Move_camera @camara2
waitmovement 0x0
special 0x114
faceplayer
msgbox @frase3 0x6
waitmsg
setvar 0x4011 0x1
release
end

#org @inicio2
applymovement 0x3 @excla
waitmovement 0x0
pause 0x25
msgbox @frase4 0x6
waitmsg
applymovement 0x3 @seva
waitmovement 0x0
hidesprite 0x3
setflag 0x200
release
end

#org @frase1
= [rival][black_fr]: ¡Tío, eres lento de\ncojones! Mi abuelo te está\lesperando en el laboratorio.\p[blue_fr][rival][black_fr]: ¿Cómo? ¿Que no sabes\ndónde está? ¡Pero si está ahí\lmismo!

#org @frase2
= [rival][black_fr]: Debes de estar ciego para\nno verlo...

#org @frase3
= [rival][black_fr]: Te ha quedado claro ya,\n¿no? Porque no quiero volver\la repetírtelo.

#org @frase4
= [rival][black_fr]: ¿Joder, va en serio? Qué\npesado eres, chaval. Me piro.

#org @excla
#raw 0x62 'Exclamación (!)
#raw 0xFE 'Finalizar Movimientos

#org @mirar1
#raw 0x3
#raw 0xFE 'Finalizar Movimientos

#org @camara1
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x13 'Paso Izquierda
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0xFE 'Finalizar Movimientos

#org @camara2
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0x12 'Paso Derecha
#raw 0xFE 'Finalizar Movimientos

#org @seva
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0xFE 'Finalizar Movimientos

Video
 
Usuario JFeM
ROM BASE Fire Red
Tema Applymovement / MOVE_CAMERA
Código:
#dynamic 0x865000

#org @start
lock
faceplayer
checkflag 0x259
if 0x1 goto @start2
special 0x113
msgbox @text 0x6
applymovement 0x7F @camara
waitmovement 0x0
msgbox @text2 0x6
applymovement 0x7F @camaravuelta
waitmovement 0x0
special 0x114
setflag 0x259
release
end

#org @start2
msgbox @pesado 0x6
release
end

#org @text
= ¡Hey! Hola.\nAh, con que quieres saber donde\lestá el laboratorio....\pMira...

#org @text2
= Eso de ahí es el laboratorio,\npuedes subir por las escaleras.\l

#org @pesado
= ¿Qué quieres? No seas pesado, ya\nte dije donde está el laboratorio.

#org @camara
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0xFE 'Finalizar Movimientos


#org @camaravuelta
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0xFE 'Finalizar Movimientos



Perdona por tardar tanto en subir estas dos clases, pero esta semana se me junto mucho trabajo y no he podido dedicarle el tiempo que esto necesitaba, a partir de mañana ya tendré mas tiempo.
 
Estado
Cerrado para nuevas respuestas.
Arriba