qna_rh
Thread Id: 15636
Thread Name: {FR}Consulta errores de script
Hola a todos, vengo con mi siguiente duda sobre el rom de pokemon fire red usa.
"Como saber cuanto espacio hay que dejar entre script o bien, como saber el tamaño que necesita un script"
1-)El problema que siempre me sucede, es que al crear un script, este funciona bien, luego creo un segundo y bien tambien, cuando ya tengo varios creados, vuelvo a revisar los otros script y me encuentro con la sorpresa de textos extraños, el rom se traba o se pone pantalla negra. reviso en el XSE con el offset del script y practicamente lo que ya habia compilado esta resumido a un solo offset y no hay nada mas.
2-)los script siempre los comienzo con #org 0xoffset, he visto que otros lo comienzan con #dynamic 0xoffset y luego el #org 0xoffset, no sé si eso igual afecta mucho, poco o nada.
3-)los espacios vacios los busco con el FSF y comienzo desde el 8000, tambien el intervalo que ahí sale, influye en que si el script es muy corto, monte al script siguiente¿?
Mi temor es mas que nada, usar un espacio en el cual el script sea muy grande y entonces sobre escriba otro ya existente como tambien el script sea grande y solo guarde una minima parte de lo que hice y no funcione.
Lo que mas desearia que me aclararan, es como usar bien los espacios vacios que el FSF me entrega.
por ultimo, es recomendable reciclar viejos script¿? como por ejemplo, el de prof. oak y green al comienzo del juego¿?, usar sus offset para escribir otras cosas¿?
gracias, y espero respuesta, soy paciente, comprendiendo esto, podré avanzar más en mi hack, que mi puto sueño es terminar un hack decentemente xD
Deja unos cuantos bytes de margen entre el final de un script y el siguiente - pyFSF es mejor que FSF con eso, pues tiene una función para ello, pero lo más visual es mirar con el editor hexadecimal.
Oh, y tienes que buscar a partir de 0x800000, no 8000 ni 0x8000, ni 80000 ni 0x80000 ni 800000. 0x800000.
haber si te puedo ayudar:
-Cuando busques offsets libres en FSF, recomiendo que en bytes pongas 9999 y en el intervalo 100, y que busquees desde el principio del rom, así lo hago yo.
-Al hacer esto, todos los script te deverían r bién, salvo algunos msgbox.
Algunos mensajes se estropean y aparecen letras extrañas sustituyendo a las nuestras, la solución es sustituir el offset por uno nuevo, y ya.
A mí este problemas me pasa muy pocas veces, y cuando me pasa, sustituyo el offset del texto y después ya me va muy bién.
Y lo mas importante, no utilices advanced map 1.95m porque al abrir los scripts casi siempre te aparecerán codigos extraños, utiliza en 1.92.
pd:Si quieres buscar por un numero, haz como dice cosarrara.
Iniciado por cosarara97
Deja unos cuantos bytes de margen entre el final de un script y el siguiente - pyFSF es mejor que FSF con eso, pues tiene una función para ello, pero lo más visual es mirar con el editor hexadecimal.
Oh, y tienes que buscar a partir de 0x800000, no 8000 ni 0x8000, ni 80000 ni 0x80000 ni 800000. 0x800000.
OK, entonces usar el pyFSF, lo buscaré.
Ahora, he intentado en la parte visual, y al menos a mi no me convence, me ahogo en un vaso de agua :C
pro tomaré el consejo... es 0x800000, desde ahi buscaré entonces, gracias, te pasaste :D
Iniciado por xabier2012
haber si te puedo ayudar:
-Cuando busques offsets libres en FSF, recomiendo que en bytes pongas 9999 y en el intervalo 100, y que busquees desde el principio del rom, así lo hago yo.
-Al hacer esto, todos los script te deverían r bién, salvo algunos msgbox.
Algunos mensajes se estropean y aparecen letras extrañas sustituyendo a las nuestras, la solución es sustituir el offset por uno nuevo, y ya.
A mí este problemas me pasa muy pocas veces, y cuando me pasa, sustituyo el offset del texto y después ya me va muy bién.
Y lo mas importante, no utilices advanced map 1.95m porque al abrir los scripts casi siempre te aparecerán codigos extraños, utiliza en 1.92.
pd:Si quieres buscar por un numero, haz como dice cosarrara.
intervalos de 100, ok, registrado.
buscar del comienzo del rom, registrado.
buscar offset a parte para los textos, registrado.
utilizo el advance map 1.92. recuerdo haber usado el 1.95 y no me gustó para nada.
se agradece tu ayuda. me han quitado dudas ya de encima, gracias :D
pd: me podrian explicar el hecho de que cuando se compila un scrit, a veces guarda una miseria de lo programado.
o se debe a lo mismo que escribi arriba, que es muy pequeño el offset donde esta y por eso no guarda todo¿?
Ya he leido bastante en los resultados de busqueda en los foros, y he hayado bastante ayuda y he aprendido bastante tambien, pero hay algo de lo que me complico mucho, y que aun no aclaro.
" #dynamic 0xoffset "
yo no lo uso, solo utilizo el #org 0xoffset y los espacios libres los busco con pyfsf y hago mis script.
Viendo que la mayoria usa el #dynamic, y que depues en #org ponen @algo y para todo hacia abajo lo mismo como msgbox @algo1 0x6... y se ahorran la lata de buscar direcciones y agregarlas ahí... por lo que no estoy seguro si es mas practico el dynamic o seguir como lo he aprendido hace tiempo atras con el #org y buscar offset por mi cuenta.
quiero estar seguro del significado del #dynamic. gracias.
Con dynamic le dices al compilador que busque los offsets él.
Para usar dynamic lo mejor es hacer lo siguiente:
1 - Hacer una copia del ROM.
2 - Compilar.
3 - Comprobar si funciona.
Si no funciona, volver al paso 1, si funciona, quedarse con la copia.
Esto lo digo porque si no vas a acabar con el ROM lleno de scripts viejos ocupando espacio.
Los Dynamic son una alternativa que a algunas personas les va mejor usar, en lugar de usar el FSF para buscar los offset. Yo siempre usaba FSF y hace poco empecé a usar los Dynamic y son bastante mas cómodos que no estar buscando offset por offset. Mira un ejemplo:
#dynamic 0x800000
#org @inicio
Aquí puedes ver que en la primera línea he puesto una dynamic con un 0x800000.
¿Porque he puesto 0x800000 y no cualquier otro número?
Pues fácil respuesta: en los roms de Ruby, Zafiro, Verde Hoja y Rojo Fuego si usas a partir de 0x800000 hay muchos mas offset libres y no te dará tantos problemas. En Esmeralda hay que usar de 0x900000 para arriba...
En la segunda línea hay un org que es el inicio del script, y al lado en lugar de poner el offset directamente, ponemos una arroba "@" acompañada de lo que tu quieras poner. Por ejemplo: #org @inicio / #org @iniciodelscript / etc...
¿Que pasa cuando hacemos esto? Pues lo que pasa es, que le estamos diciendo al programa (XSE o otro programa editor de Scripts) que donde pone "@inicio" lo cambie por un offset libre de 0x800000 para arriba.
Lo mismo puedes usarlo para los msgbox (@texto), applymovements (@mov), etc...
Espero que hayas entendido la explicación. Si cualquier cosa no entiendes pregúntala.
Un saludo! :D
Iniciado por cosarara97
Con dynamic le dices al compilador que busque los offsets él.
Para usar dynamic lo mejor es hacer lo siguiente:
1 - Hacer una copia del ROM.
2 - Compilar.
3 - Comprobar si funciona.
Si no funciona, volver al paso 1, si funciona, quedarse con la copia.
Esto lo digo porque si no vas a acabar con el ROM lleno de scripts viejos ocupando espacio.
OK, gracias por la explicacion. En el foro he leido muchos post y respuestas tuyas, me complace saber que alguien ya con bastante experiencia me responda.
siempre hago respaldos de rom, y ya me cambie a usar #dynamic. los script hasta el momento me funcionan bien, a lo que necesitaba.
aprovechando, te haré una pregunta:
Es recomendable reeditar los script que ya estaban asignados a otros personajes o eventos¿?
lo consulto, porque habia modificado al chico de la tienda que está en ruta 1 de pkmn fire red, le cabie los textos ( textos cortos ) y le cambie el item que te daba. entonces, al ingresar a cualquier opcion del menu de start, el sprite a quien le hablabas se movia y el sprite que manejas se queda congelado... porque sucede eso¿?
recuero haber leido esta misma pregunta por el foro, pero no la he podido hayar.
Iniciado por gintonic091
Los Dynamic son una alternativa que a algunas personas les va mejor usar, en lugar de usar el FSF para buscar los offset. Yo siempre usaba FSF y hace poco empecé a usar los Dynamic y son bastante mas cómodos que no estar buscando offset por offset. Mira un ejemplo:
#dynamic 0x800000
#org @inicio
Aquí puedes ver que en la primera línea he puesto una dynamic con un 0x800000.
¿Porque he puesto 0x800000 y no cualquier otro número?
Pues fácil respuesta: en los roms de Ruby, Zafiro, Verde Hoja y Rojo Fuego si usas a partir de 0x800000 hay muchos mas offset libres y no te dará tantos problemas. En Esmeralda hay que usar de 0x900000 para arriba...
En la segunda línea hay un org que es el inicio del script, y al lado en lugar de poner el offset directamente, ponemos una arroba "@" acompañada de lo que tu quieras poner. Por ejemplo: #org @inicio / #org @iniciodelscript / etc...
¿Que pasa cuando hacemos esto? Pues lo que pasa es, que le estamos diciendo al programa (XSE o otro programa editor de Scripts) que donde pone "@inicio" lo cambie por un offset libre de 0x800000 para arriba.
Lo mismo puedes usarlo para los msgbox (@texto), applymovements (@mov), etc...
Espero que hayas entendido la explicación. Si cualquier cosa no entiendes pregúntala.
Un saludo! :D
bastante directa tu aclaracion, me ayudó mejor a comprender el funcionamiento de #dynamic.
lo habia sacado por deduccion pero no estaba taaaaaan seguro de si era o no lo que suponia.
valio la pena entrar a estos foros, saqué muchas dudas xD
podré seguir con mi hack, gracias nuevamente :D
ahora me queda leer las respuestas de los script de nivel que vi por el foro.
Iniciado por klaudiom
OK, gracias por la explicacion. En el foro he leido muchos post y respuestas tuyas, me complace saber que alguien ya con bastante experiencia me responda.
siempre hago respaldos de rom, y ya me cambie a usar #dynamic. los script hasta el momento me funcionan bien, a lo que necesitaba.
aprovechando, te haré una pregunta:
Es recomendable reeditar los script que ya estaban asignados a otros personajes o eventos¿?
lo consulto, porque habia modificado al chico de la tienda que está en ruta 1 de pkmn fire red, le cabie los textos ( textos cortos ) y le cambie el item que te daba. entonces, al ingresar a cualquier opcion del menu de start, el sprite a quien le hablabas se movia y el sprite que manejas se queda congelado... porque sucede eso¿?
recuero haber leido esta misma pregunta por el foro, pero no la he podido hayar.
Si es recomendable, así puedes ahorrar offsets, y puedes aprovechar otros scripts en el juego para solo modificarlo y no tener que empezar de nuevo uno. Yo siempre que puedo modifico los que ya hay y me va mejor, y si es recomendable. ;)
hola, vengo con una consulta de script que estoy haciendo, espero me puedan ayudar:
tento esta parte de mi script donde me causa problemas:
msgbox @text1 0x6
fanfare 0x100
applymovement 0x4 @move1
msgbox @text2 0x6
applymovement 0x4 @move2
msgbox @text3 0x6
applymovement 0x4 @move3
msgbox @text4 0x6
applymovement 0x4 @move4
hidesprite 0x4
release
end
a ver... todo el script que hice me funciona bien, todo, pero... el ultimo applymovement no me lo reproduce, lo salta directo al hidesprite... la idea era que el ultimo applymovement hace que el sprite se vaya caminando y desaparezca, cosa que no hace, sino que despues del text4 se desaparece sin reproducir los pasos :C
( los pasos si quedan compilados, cambie el offset de posición y me funcina )
esa es mi duda... por qué se salta el ultimo applymovement >___<
Iniciado por klaudiom
hola, vengo con una consulta de script que estoy haciendo, espero me puedan ayudar:
tento esta parte de mi script donde me causa problemas:
msgbox @text1 0x6
fanfare 0x100
applymovement 0x4 @move1
msgbox @text2 0x6
applymovement 0x4 @move2
msgbox @text3 0x6
applymovement 0x4 @move3
msgbox @text4 0x6
applymovement 0x4 @move4
hidesprite 0x4
release
end
a ver... todo el script que hice me funciona bien, todo, pero... el ultimo applymovement no me lo reproduce, lo salta directo al hidesprite... la idea era que el ultimo applymovement hace que el sprite se vaya caminando y desaparezca, cosa que no hace, sino que despues del text4 se desaparece sin reproducir los pasos :C
( los pasos si quedan compilados, cambie el offset de posición y me funcina )
esa es mi duda... por qué se salta el ultimo applymovement >___<
No le pones waitmovement al código? El waitmovement se pone después de applymovement para que cuando termine de hacer los movimientos, el script pueda seguir. Prueba a ponerle uno despues de cada applymovement. Quedaría así:
msgbox @text1 0x6
fanfare 0x100
applymovement 0x4 @move1
waitmovement 0x4
msgbox @text2 0x6
applymovement 0x4 @move2
waitmovement 0x4
msgbox @text3 0x6
applymovement 0x4 @move3
waitmovement 0x4
msgbox @text4 0x6
applymovement 0x4 @move4
waitmovement 0x4
hidesprite 0x4
release
end
Iniciado por gintonic091
No le pones waitmovement al código? El waitmovement se pone después de applymovement para que cuando termine de hacer los movimientos, el script pueda seguir. Prueba a ponerle uno despues de cada applymovement. Quedaría así:
msgbox @text1 0x6
fanfare 0x100
applymovement 0x4 @move1
waitmovement 0x4
msgbox @text2 0x6
applymovement 0x4 @move2
waitmovement 0x4
msgbox @text3 0x6
applymovement 0x4 @move3
waitmovement 0x4
msgbox @text4 0x6
applymovement 0x4 @move4
waitmovement 0x4
hidesprite 0x4
release
end
Jajaja, gracias... No me habia dado cuenta de algo... que ponia solo el waitmovement.... y no le ponia 0x4 especificando al sprite. gracias, esa solo ese el problema y ya se solucionó :D
Hola nuevamente. Vuelvo con unas preguntas algo curiosas para mi, pues les cuento:
1- Cual es la direccion u offset de cuando pierdes y te manda a la casa y tu mamá te cura cuando aún no llegas a un centro pokemon por primera vez despues de haber perdido¿?
2- Como puedo hacer que, cuando luche con un entrenador sucedan dos cosas, ejemplo: si yo gano simplemente se vaya ( eso lo sé hacer ), si el gana, que no te envien al centro pokemon o a la casa tuya, sino que despues de perder, el script siga su curso, tipo batalla con silver de pokemon g/s donde, despues de volver de la casa del sr.pokemon te lo topabas a la salida de ciudad cerezo y este si ganabas o perdias, el script seguia, una cosa así necesito.
3-por ultimo... como se usan esos eventos donde te modifican la grafica del mapa, ejemplo, solo dejar un warp en advance map, y con un evento en el juego creado con script te cree una entrada a auna cueva¿? cosas de ese estilo¿?
eso seria, ya que no he encontrado tutorial que me ayude, ya que siempre busco antes de preguntar, saludos y gracias
He hecho un script para las clases de Aaron(1a tarea)
Pero hago el script una y otra vez pero en el xse me sale siempre
''Error en palabra clase ''lock'' en el linea 4''
Pero lo tengo bien que m lo he revisado y todo.
Ayuda porfavor.
#dynamic 0x8000
#org @inicio
lock
faceplayer
msgbox @frase 0x6
release
end
#org @frase
= El clima en Kanto es agradable no\ncrees?
Iniciado por Santiagohack
He hecho un script para las clases de Aaron(1a tarea)
Pero hago el script una y otra vez pero en el xse me sale siempre
''Error en palabra clase ''lock'' en el linea 4''
Pero lo tengo bien que m lo he revisado y todo.
Ayuda porfavor.
#dynamic 0x8000
#org @inicio
lock
faceplayer
msgbox @frase 0x6
release
end
#org @frase
= El clima en Kanto es agradable no\ncrees?
hola, de partida, tu pregunta esta mal puesta, ya que debes hacerla en tu propio tema, y no en el mio.
ahora, por lo que veo... tu offset es 0x8000... debes poner 0x800000
lo mas probable que con eso se solucione tu problema.
A ver... Lo que pasa es que:
1º: No tienes el XSE 1.1.1 Para actualizarlo vete a Ayuda, y dale a actualizar, o dale directamente en Ctrl + U.
2º: No creo que sea, pero pon primero el faceplayer y después el lock, de esta manera:
faceplayer
lock
3º: Como dice Klaudiom. Es mejor que busques la Offset desde 800000 y no de 8000. Siempre 5 ceros. Ya que de ahí para adelante, hay más espacio libre (en Ruby y RedFire. En Esmeralda busca mejor de 900000.)
Prueba una de esas cosas empezando por la primera y te funcionará!
Un saluder! :D
Muchas gracias.
:awesome::awesome: