qna_rh
Thread Id: 9649
Thread Name: [Pokemon_ruby_USA]Duda-problema con scripts, comando dynamic
#0
Beykex 16430
Saludos foro:

Tengo una duda/problema a ver si alguien puede ayudarme a resolverla, por favor. Ayer estuve intentanto hacer un script con bastante texto y movimientos, y para evitar complicaciones con offsets incluí el comando #dynamic al inicio del script.
Cuando lo depuro y lo compilo no da error, y me da una lista con los offsets que se han asignado.
El script es este:
#dynamic 0x800000
#org @inicio
lock
msgbox @msg1 MSG_NORMAL
applymovement 0x0 @move1
waitmovement 0x0
msgbox @msg2 MSG_NORMAL
applymovement 0x0 @move2
waitmovement 0x0
msgbox @msg3 MSG_NORMAL
applymovement 0x0 @move3
msgbox @msg4 MSG_NORMAL
warp 0x6 0x18 0x6 0x0 0x0
release
end

#org @msg1
= [player]: Uh... where am I?\p????: We are where everything\nbegins and ends...
#org @msg2
= [player]: Who's that voice from?\nWho are you!?
#org @msg3
= ???: It is more complicated than\nwhat you think...\pDon't waste your time, you must\nreach your aims...\pas well as your DESTINY...
#org @msg4
= [player]: Huh? Wha?-\pWHOAH!
#org @move1
#raw 0x56 'Exclamación (!)
#raw 0x2 'Mirar Izquierda
#raw 0x3 'Mirar Derecha
#raw 0x1 'Mirar Arriba
#raw 0xFE 'Fin de los movimientos
#org @move2
#raw 0xB 'Paso Derecha (normal)
#raw 0x10 'Esperar 1
#raw 0x2 'Mirar Izquierda
#raw 0x57 'Interrogación (?)
#raw 0xA 'Paso Izquierda (normal)
#raw 0x6 'Paso Izquierda (lento)
#raw 0x10 'Esperar 1
#raw 0x1 'Mirar Arriba
#raw 0xFE 'Fin de los movimientos
#org @move3
#raw 0x38 'Correr Derecha
#raw 0x1 'Mirar Arriba
#raw 0x0 'Mirar Abajo
#raw 0x56 'Exclamación (!)
#raw 0xFE 'Fin de los movimientos


Una vez hecho eso, asigno el offset de inicio del script al script en Advance-Map (es un poste), y cuando lo abro con XSE... sorpresa, me aparece lo siguiente:

'---------------
#org 0x800000
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop

El debug es el que sigue, por si hace falta en algo:
eXtreme Script Editor v1.1.1
-------------------------------------
04-17-2011 20:45:06
-------------------------------------
Abriendo salida: C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\~DebugTest.gba...
Procesando script de entrada...
1 - #DYNAMIC
> lDynamicStart = 0x800000
2 - #ORG
> lNewOffset = 0x800000
3 - (6A) - LOCK [+1]
4 - (0F) - MSGBOX (native) [+8]
> pText = 0x8800047
> bType = 0x6
5 - (4F) - APPLYMOVEMENT [+7]
> iWord = 0x0
> pPointer = 0x8800156
6 - (51) - WAITMOVEMENT [+3]
> iWord = 0x0
7 - (0F) - MSGBOX (native) [+8]
> pText = 0x8800090
> bType = 0x6
8 - (4F) - APPLYMOVEMENT [+7]
> iWord = 0x0
> pPointer = 0x880015C
9 - (51) - WAITMOVEMENT [+3]
> iWord = 0x0
10 - (0F) - MSGBOX (native) [+8]
> pText = 0x88000BB
> bType = 0x6
11 - (4F) - APPLYMOVEMENT [+7]
> iWord = 0x0
> pPointer = 0x8800166
12 - (0F) - MSGBOX (native) [+8]
> pText = 0x880013E
> bType = 0x6
13 - (39) - WARP [+8]
> bByte = 0x6
> bByte = 0x18
> bByte = 0x6
> iWord = 0x0
> iWord = 0x0
14 - (6C) - RELEASE [+1]
15 - (02) - END [+1]
17 - #ORG
> lNewOffset = 0x800047
18 - RAW TEXT [+71]
> sText = "[player]: Uh... where am I?\p????: We are where everything\nbegins and ends..."
19 - #ORG
> lNewOffset = 0x800090
20 - RAW TEXT [+41]
> sText = "[player]: Who's that voice from?\nWho are you!?"
21 - #ORG
> lNewOffset = 0x8000BB
22 - RAW TEXT [+129]
> sText = "???: It is more complicated than\nwhat you think...\pDon't waste your time, you must\nreach your aims...\pas well as your DESTINY..."
23 - #ORG
> lNewOffset = 0x80013E
24 - RAW TEXT [+22]
> sText = "[player]: Huh? Wha?-\pWHOAH!"
25 - #ORG
> lNewOffset = 0x800156
26 - #RAW
> bOut = 0x56
27 - #RAW
> bOut = 0x2
28 - #RAW
> bOut = 0x3
29 - #RAW
> bOut = 0x1
30 - #RAW
> bOut = 0xFE
31 - #ORG
> lNewOffset = 0x80015C
32 - #RAW
> bOut = 0xB
33 - #RAW
> bOut = 0x10
34 - #RAW
> bOut = 0x2
35 - #RAW
> bOut = 0x57
36 - #RAW
> bOut = 0xA
37 - #RAW
> bOut = 0x6
38 - #RAW
> bOut = 0x10
39 - #RAW
> bOut = 0x1
40 - #RAW
> bOut = 0xFE
41 - #ORG
> lNewOffset = 0x800166
42 - #RAW
> bOut = 0x38
43 - #RAW
> bOut = 0x1
44 - #RAW
> bOut = 0x0
45 - #RAW
> bOut = 0x56
46 - #RAW
> bOut = 0xFE
-------------------------------------
DYNAMIC_OFFSET 1
> sLabel = @inicio
> lOffset = 0x800000
DYNAMIC_OFFSET 2
> sLabel = @msg1
> lOffset = 0x800047
DYNAMIC_OFFSET 3
> sLabel = @msg2
> lOffset = 0x800090
DYNAMIC_OFFSET 4
> sLabel = @msg3
> lOffset = 0x8000BB
DYNAMIC_OFFSET 5
> sLabel = @msg4
> lOffset = 0x80013E
DYNAMIC_OFFSET 6
> sLabel = @move1
> lOffset = 0x800156
DYNAMIC_OFFSET 7
> sLabel = @move2
> lOffset = 0x80015C
DYNAMIC_OFFSET 8
> sLabel = @move3
> lOffset = 0x800166
-------------------------------------
Depurando...
Cerrando salida...
Acabando proceso de entrada en 0,067 segundos.

Me gustaría saber por qué no aparece el script en el offset, si el propio dynamic del XSE indicó que ahí era donde estaba el script.

Y, en definitiva, ¿estoy usando correctamente el comando #dynamic?

Muchas gracias por todo, y saludos.
#1
.:F?an The KilleR:. 13541
No veo ningun error en el script lo unico que veo raro es que no hay espacios entre los #org de msgbox y los de apply, intenta separando y si no surte efecto spera que venga javi (es buen scripter) y el seguro te lo solucionará.
#2
Beykex 16430
@KiLLeR93 por lo que tengo entendido, los espaciados entre comandos del tipo #org son resultado del formateado que hace XSE después de compilarlo. A fin de cuenta, son instrucciones que se codifican en forma de bytes. El cómo las represente cada editor de scripts puede ser distinto (insisto, por lo que tengo entendido y hasta donde puedo llegar a deducir xD).

Es raro... siempre consigo liarla cuando se trata de scripts xD.
#3
.:F?an The KilleR:. 13541
yo te digo que no veo ningun error en el script, yo no esq sea un super experto en scripts pero creo que no hy ningun problema en el script, no habrás cogido otro offset que no es?
#4
Beykex 16430
Eso pensé, pero he revisado varias veces el log (además de que copié los offsets que me devolvió #dynamic) y me he asegurado de que está bien.
Tal y como has dicho, voy a esperar a javi, que entiende más de scripts. Gracias por todo :)
#5
Javi4315♪ 13374
A ver, he compilado el script tal y como lo has puesto. A mí me compila bien y, cuando lo abro, me sale bien. Así que veamos.

Asegúrate de que lo estás compilando y no depurando. Es decir, aseguraté de que le estás dando al ícono de las ruedecitas azules (ahora mismo no me acuerdo de cómo se llama eso xD).

Quizás ese sea el error que estás cometiendo. No obstante, si no es eso, abre el rom con un editor hexadecimal. Ve al offset 0x800000 y comprueba si hay datos o todos los bytes están vacíos (FF). En caso de que NO estén vacíos, vuelve a intentar compilar el script. Si te da de nuevo el offset 0x800000 es que XSE, por alguna razón, no está funcionando bien. Así que quizás deberías probar a descargarlo de nuevo, a ver si se soluciona.

No obstante, asegúrate de que no es lo primero que he dicho ;D
#6
Beykex 16430
Hola de nuevo:

Pues bien, me he descargado la última versión de XSE que hay en Wah por si acaso; pues bien, parece ser que (por alguna razón) no compilaba en esa dirección, pero cuando he compilado de nuevo #dynamic me ha devuelto otro offset. Lo he indicado en advance map y sí ha funcionado. El script se abre correctamente en advance map, pero es un desastre al jugarlo (no se reproduce ningun texto ni movimiento ni nada, tan sólo me transporta a un mapa que no tiene nada que ver).

He probado dicho script en otra Rom, en una copia de seguridad del hack, y me sucede exactamente lo mismo en todas. ¿Qué puede estar pasando?

Gracias por todo, y saludos.
#7
cosarara97 12296
Iniciado por Beykex

#dynamic 0x800000
#org @inicio
lock
msgbox @msg1 MSG_NORMAL
applymovement 0x? @move1 'applymovement 0x"numero del mini" (el prota es 0xFF)
waitmovement 0x? 'Hay un tutorial sobre el correcto uso del waitmovement
msgbox @msg2 MSG_NORMAL
applymovement 0x? @move2 'applymovement 0x"numero del mini"
waitmovement 0x? 'Hay un tutorial sobre el correcto uso del waitmovement
msgbox @msg3 MSG_NORMAL
applymovement 0x? @move3 'applymovement 0x"numero del mini"
waitmovement 0x? 'si no lo pones el warp no dejara acabar el applymovement ni el msgbox
msgbox @msg4 MSG_NORMAL
warp 0x6 0x18 0x6 0x0 0x0
release
end

#org @msg1
= [player]: Uh... where am I?\p????: We are where everything\nbegins and ends...

#org @msg2
= [player]: Who's that voice from?\nWho are you!?

#org @msg3
= ???: It is more complicated than\nwhat you think...\pDon't waste your time, you must\nreach your aims...\pas well as your DESTINY...

#org @msg4
= [player]: Huh? Wha?-\pWHOAH!



#org @move1
#raw 0x56 'Exclamación (!)
#raw 0x2 'Mirar Izquierda
#raw 0x3 'Mirar Derecha
#raw 0x1 'Mirar Arriba
#raw 0xFE 'Fin de los movimientos

#org @move2
#raw 0xB 'Paso Derecha (normal)
#raw 0x10 'Esperar 1
#raw 0x2 'Mirar Izquierda
#raw 0x57 'Interrogación (?)
#raw 0xA 'Paso Izquierda (normal)
#raw 0x6 'Paso Izquierda (lento)
#raw 0x10 'Esperar 1
#raw 0x1 'Mirar Arriba
#raw 0xFE 'Fin de los movimientos

#org @move3
#raw 0x38 'Correr Derecha
#raw 0x1 'Mirar Arriba
#raw 0x0 'Mirar Abajo
#raw 0x56 'Exclamación (!)
#raw 0xFE 'Fin de los movimientos


Bueno, pues según lo que dices, al iniciar el script va directo al warp.
Tengo 2 teorias (quizá luego se me ocurran otras):
1. Es culpa de que los waitmovements estaban mal puestos
2. Has puesto mal los offsets en Amap

Si no es ninguna de las 2 no pasa nada, en este foro hay mucha mas gente que sabe de scripts y alguno seguro que verá el error :)

Pregunta: ¿Esto es un gatillo u otra cosa? Edit: No se leer, es un poste xD


Dew
#8
Beykex 16430
Hola a todos:

Siento haber tardado en responder pero he estado ocupado haciendo otras cosas.

Muy bien, hay buenas noticias. He conseguido que se efectúen los applymovements (gracias a cosarara ;) ), estaba indicando mal qué sprite tenía que moverse. La warp también está arreglada, había indicado mal los parámetros. Ahora bien, los textos no aparecen. Y me he fijado que los comandos "msgbox" del script han sido cambiados por XSE por "loadpointer", comando que no sé cómo funciona.

Éste es el nuevo script:
'---------------
#org 0x808708
lock
loadpointer 0x0 0x880B8F9 '"[player]: Uh... where am I?\p????:..."
applymovement 0xFF 0x880C099
waitmovement 0xFF
loadpointer 0x0 0x880B949 '"[player]: Who's that voice from?\n..."
applymovement 0xFF 0x880C09F
waitmovement 0xFF
loadpointer 0x0 0x880BFF5 '"???: It is more complicated than\n..."
applymovement 0xFF 0x880C0A9
waitmovement 0xFF
loadpointer 0x0 0x880C07B '"[player]: Huh? Wha?-\pWHOAH!"
warp 0x18 0x6 0x6 0x19 0x4
end


'---------
' Strings
'---------
#org 0x80B8F9
= [player]: Uh... where am I?\p????: We are where everything\nbegins and ends...

#org 0x80B949
= [player]: Who's that voice from?\nWho are you!?

#org 0x80BFF5
= ???: It is more complicated than\nwhat you think...\pDon't waste your time, you must\nreach your aims...\pas well as your DESTINY...

#org 0x80C07B
= [player]: Huh? Wha?-\pWHOAH!


'-----------
' Movements
'-----------

¿Es posible que el comando "loadpointer" tenga relación? Aún no he configurado bien los waitmovement, en seguida lo haré.

Gracias a todos por intentar ayudarme, perdón por no tener tanta idea de scripting, sinceramente nunca fue lo mío.

Saludos.
#9
.:F?an The KilleR:. 13541
si amigo, el loadpointer tiene la culpa te lo digo porq a mi tnb me paso con un script, asi que sustituye en el script ya compilado por msgbox y compila de nuevo, prueba el script y deberá irte.

Salu2.
#10
Beykex 16430
Muchas gracias KiLLeR. Ya está todo arreglado :D.

En resumen, lo que ocurrió fue que:
[list=1]
  • Me equivoqué al indicar qué sprite debía moverse (0xFF para el prota)
  • Los waitmovement también estaban mal, debían de apuntar al prota y no al 0x0
  • Me transportaba a otro mapa porque había puesto los parámetros del comando warp en el orden incorrecto.
  • Lo del loadpointer... que llevabas razón KiLLeR, pero no sé por qué no funciona dicho comando ni por qué XSE lo mete en la rom así. Bueno, ya da igual, se arregló xD.
  • [/list]

    Ahora tengo que pensar mejor en qué movimientos quedarán bien, cómo usar el waitmovement bien, etc. pero eso ya es cosa mía, me encargo yo.

    Pues bien gente, muchísimas gracias por haberme ayudado en esta pequeña aventura con el script xDD. Ya está solucionado y sin problemas :).

    Nos vemos en el foro xD