tuts_gba
Thread Id: 9439
Thread Name: GBA | Scripting | Uso correcto del waitmovement, perfeccionando hacks
#0
Rogy 12282
Bueno, esto es un pequeño tutorial, o más bien una aclaración, de una duda que me ha surgido en mi vuelta como RomHacker (sí, estoy intentando volver)

Siempre que nos han enseñado a usar un applymovement nos han dicho que podemos usar un comando después para esperar a que el movimiento termine. Y bien, nosotros hacíamos lo siguiente:

applymovement 0xNºMini @direccióndelmovimiento
waitmovement 0x0

El problema, que aquí no sucede, es cuando intentas usar ese mismo comando en un MOVE_PLAYER o en un MOVE_CAMERA.

Os mostraré un ejemplo de un script que presenté a un concurso y que contenía ese error, solucionado hoy mismo, al darme cuenta:
YouTube Video

Código original de la parte del error(que no se ve en el video, pero es para que comparéis y situéis el error)
special 0x113
applymovement MOVE_CAMERA 0x8900020
applymovement 0xB 0x8900180
waitmovement 0x0
msgbox 0x88003A0 MSG_NORMAL '"Rocket: Venga, danos la pasta ya,\..."
msgbox 0x8800620 MSG_NORMAL '"Comprador: Pero es que me da pena\..."

Con ese código, cuando el MOVE_CAMERA se estaba efectuando, el diálogo aparecía, y si pulsabas A, el MOVE_CAMERA se paraba, dejándote en una situación estúpida.

El problema viene del waitmovement, que tiene como parámetro 0x0 y debería tener como parámetro 0x7F.

Explico:


En la descripción del parámetro pone, traducido:
Bytes necesarios: 3
Parámetros:
> Número de persona(movimiento) a la que esperar.

Así que de ahí el error, no debería aparecer 0x0, sino 0x7F (7F es el número Hex que corresponde a la cámara).

Así que para cuando pongáis un waitmovement, recordad que el parámetro no es 0x0, sino el número de la persona que realiza el movimiento.

applymovement 0xNºMini @direccióndelmovimiento
waitmovement 0xNºMini

Y ahora diréis: "¡Qué estupidez de tutorial", y tendréis razón, si no sois cuidadosos con vuestra obra o si no os ha ocurrido ese error nunca, pero estaría bien que revisaseis vuestros scripts y comprobaseis errores, ¿no creéis?
#1
Javi4315♪ 13374
La idea como tal está bien, lo correcto es utilizarlo de esa forma, aunque en la mayoría de los casos no es necesario aplicar esto. Yo no lo suelo hacer a no ser que sean dos o más movimientos simultáneos o que requiera su utilización por algún motivo.

Pero bueno, de todas formas, la forma correcta es la que tu dices y se debe utilizar así ;D

Saludos!!
#2
Hackun 12904
Nunca esta de mas, gracias por compartirlo.
Saludos.
#3
Rogy 12282
Gracias por los comentarios, chicos (y chicas, si hay alguna)

¡Saludos y de nada!
#4
Gut_Bro 14808
Pues claro, yo siempre usé el número de mini para el waitmovement porque asi lo aprendí, pero me di cuenta algunas veces que en los scripts originales del juego sí se usa el parámetro 0x0.

Es muy buen aporte, ya que algunos tal vez no lo sabían y bueno... ahora ya XD

+Gracias :P
#5
Loony Boo♪ 12263
Rogy, la verdad es que hace un millón de años que me di cuenta de la utilización correcta del comando waitmovement, pero agradezco este manual porque así servirá para aquellos otros que no saben cómo utilizarlo realmente tengamos en cuenta que WAH aún está saliendo de la Prehistoria en cuanto a scripting nos referimos, los manuales de scripts de la página principal están en peligro de extinción.

Saludos.