Registrarse

Hola a todos: Una ayuda con los Scripts

Estado
Cerrado para nuevas respuestas.
Hola a todos del foro. Soy nuevo en este lugar y espero que mi presencia sea de agrado :D. Como muchos de ustedes, yo también estoy creando un hack de Pokemon (Más especifico un hack de Fire Red). Comence de "0" en la hora del hack, pero, con ayuda de los tutoriales del foro y las herramientas de hack necesarias, comencé a progresar.
Uno de los temas que más estoy aprendiendo a manejar son los Scripts y bueno, gracias a las pautas del foro y los tutoriales, aprendi a hacer Scripts de Entrenadores, Pokemons salvajes, applymovement, givepokemn, giveitem, etc.
No obstante, me gustaría que me revisaran 2 Scripts que hice para mi hack y que, bueno, me estan trayendo problemas (Ligeros, nada serio).

El primer Script es este:

#dynamic 0x800000
#org @cientifico
lock
faceplayer
checkflag 0x201
if 0x1 goto @aviso
countpokemon
compare LASTRESULT 0x1
if 0x1 goto @si
if 0x0 goto @no
release
end

#org @aviso
lock
faceplayer
msgbox @mensaje3 0x6
release
end

#org @si
msgbox @mensaje1 0x6
pause 0x25
applymovement 0x4 @mov
waitmovement 0x4
setflag 0x201
release
end

#org @no
msgbox @mensaje2 0x6
release
end

#org @mensaje3
= [blue_fr]Cientifico: [black_fr]Explora la hierba\nalta, niño. Quizas encuentres\lPokemon interesantes.

#org @mensaje1
= [blue_fr]Cientifico: [black_fr]¡Vale! Parece que ya\ntienes un Pokemon. Ahí ya no hay\lproblema.\lPuedes pasar a la hierba alta.

#org @mensaje2
= [blue_fr]Cientifico: [black_fr]Lo siento niño. No\npuedo dejarte pasar. Entrar al\lhierba alta sin un Pokemon es muy\lpeligroso. Si vuelves con un\lPokemon, ahi quizas te de el paso.

#org @mov
#raw 0x12 'Paso Izquierda
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x0 'Mirar Abajo
#raw 0xFE 'Finalizar Movimientos

Resumen: El Script trata de que un Cientifico no me dejara pasar por una zona por no tener al menos un Pokemon en mi equipo. Cuando tenga al menos un Pokemon en el equipo, el cientifico se moverá y me dará pasar.

Problema del Script: El Script funciona perfectamente (Lo he probado). Sin embargo, cada vez que entro a una casa o cambio de ruta (o pueblo), el Científico vuelve a su posición original y me dice el mensaje que debería decirme el Científico cuando se aya movido de su lugar (Como si el Script se haya ejecutado, pero el Científico no se ha movido)

El segundo Script es este (Este es el más complejo que voy creando, pero soy seguro que es muy basico para un experto de Script):

#dynamic 0x800000
#org @Ranger
lock
faceplayer
checkflag 0x200
if 0x1 goto @vencido
msgbox @Rangerhabla 0x6
msgbox @opcion 0x5
compare LASTRESULT 0x1
if 0x1 goto @no
compare LASTRESULT 0x0
if 0x1 goto @si
end

#org @no
msgbox @aviso 0x6
trainerbattle 0x1 0x00A 0x0 @inicio @derrotado @despues
end

#org @despues
msgbox @mensaje1 0x2
pause 0x50
msgbox @explicacion 0x4
applymovement 0x3 @sorpresa
pause 0x75
msgbox @mensaje2 0x2
msgbox @mensaje3 0x2
clearflag 0x200
pause 0x25
applymovement 0x3 @mov
waitmovement 0x3
release
end

#org @si
msgbox @entrena 0x6
release
end

#org @vencido
msgbox @nota 0x6
release
end

#org @Rangerhabla
= [blue_fr]Ranger Ernesto: [black_fr]Has llegado\ndemasiado lejos, joven entrenador.\lSoy Ernesto, Ranger de Cresthea\ldel sur y cuidador del Bosque\lSagrado.\lYo, con mi compañera Ranger\lVioleta, no permitimos el paso a\leste bosque por orden de nuestro\ljefe psiquico. Asi que mejor\llargarte de aquí o........

#org @opcion
= [blue_fr]Ranger Ernesto: [black_fr]¿Tienes agallas\npara enfrentarme a mi, un Ranger?

#org @aviso
= [blue_fr]Ranger Ernesto: [black_fr]¡Ja! Has tomado\nuna mala decisión, novato.

#org @inicio
= [blue_fr]Ranger Ernesto: [black_fr]¡Preparate para\ncaer ante mi fuerza y astucia!

#org @derrotado
= ¡¿Pero que?! ¿Que estoy haciendo?\n¿QUE PASA?

#org @mensaje1
= [blue_fr]Ranger Ernesto: [black_fr]Madre mía. ¿Que\nesta pasando? Es como si me\lhubiera borrado la memoria y luego\lprogramado una orden que yo\lobedeci con gusto.\lGracias por liberarme, entrenador.\lCreo que si no hubieras aparecido,\lseria un zombi Ranger toda mi\lvida.

#org @explicacion
= [player] explica la situación actual al\nRanger Ernesto.

#org @mensaje2
= [blue_fr]Ranger Ernesto: [black_fr]Mmmmmm. Ya veo.\n¿Asi que hay más entrenadores que\lperdiron la razón y se volvieron\lsalvajes? y muchos de ellos se han\lido a ocultar en el Bosque Sagrado\l¿No?\lDale. Tengo que informar a los\lotros Rangers de esto situación.\l¿Querias entrar al Bosque Sagrado,\lno? Dale, te dare permiso para\lentrar y investigar lo que esta\lpasando alla.

#org @mensaje3
= [blue_fr]Ranger Ernesto: [black_fr]Ten cuidado, joven\nentrenador. No sabes que o con\lquien te vas a enfrentar.\lTampoco me sorprenderia de que mi\lcompañera Ranger Violeta este en\lese bosque, protegiendo al "jefe".\lTe deseo la mayor de la suerte.

#org @nota
= [blue_fr]Ranger Ernesto: [black_fr]¡Buena suerte!\nSi ves que la cosa se complica.\lEntrena a tus Pokemons o compra\lPociones.

#org @entrena
= [blue_fr]Ranger Ernesto: [black_fr]Es lo que crei.\nUn entrenador novato como tú no\lpodria contra un Ranger. Largo de\laqui chico. No te metas en asuntos\lde otros.

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

#org @mov
#raw 0x13 'Paso Derecha
#raw 0x2 'Mirar Izquierda
#raw 0xFE 'Finalizar Movimientos

Resumen: El Script consiste que al hablar con la persona (El Ranger) esta me diga un mensaje y luego me dira un mensaje de si/no, donde si respondo si, nos vamos a un combate Pokemon (Muy OP, debo decir XD. Para ser el inicio, me venció como 7 veces, pero bueno es para dar dificultad al hack ya que tampoco quiero que sea tan facil). Si respondemos que no, nos dirá un mensaje y nada más. Cuando hagemos el combate Pokemon, el Ranger nos dirá un mensaje y, después de 3 segundos, sale el mensaje de que el jugador le explica al Ranger la situacion. Al Ranger le saldrá un signo de exclamación y dirá dos nuevos mensajes. Después de eso, el Ranger se moverá para dar paso.

Problema del Script: Al igual que el anterior, el Script funciona perfectamente (No me esperaba que funcionara a la primera XD); pero tiene el mismo problema que el Script anterior: El Ranger vuelve a su posición original después de entrar y salir del lugar donde se encuentra el Ranger y dice el mensaje cuando una vez el Script ha acabado. Cabe señalar que no estoy 100% seguro si es necesario poner las pauses en la parte de "#org @despues" y si esta bien usado el "applymovement 0x3 @sorpresa" en esa parte. (Cabe señalar de que no se si la exclamación tiene su tiempo en seguidos o sale la exclamación y el msgbox al mismo tiempo).

Espero que me puedan ayudar y decirme donde esta el error en estos Scripts. Se los agradecería mucho :D

PD: Por un largo tiempo quería saber como poner la Pokedex nacional en FR. Lee muchos de los foros de aquí y dicen que hay reemplazar el special de la Pokedex por el de la Nacional. Lo que no se es que si se debe crear un Script especifico para que me actualice la Pokedex que me darán o cambiar el special de la Pokedex por la de la Pokedex nacional del Script del Prof. Oak de FR (Cuando este te entrega la Pokedex). Este ultimo lo he intentando y por extrañas razones una vez que termina el Script del Prof. Oak de darnos la Pokedex y 5 Pokeballs, el juego se queda colgado (Más especifico, mi personaje no se mueve, pero la musica se oye). Espero que me den una respuesta a esto y me orienten un poco :D.
 

Gold

Porrero a tiempo parcial
Miembro insignia
El principal problema en ambos es que cuando cambias de mapa todos los minis regresan a su pocisión original, lo que puedes hacer para resolver ese problema es que al terminar el scripr y el mini se mueva este desaparezca y que al instante aparezca uno idéntico en esa misma pocisión y diga lo que debería de decie al final, es sencillo y efectivo, en GBC hay varios eventos que usan este mismo método y ni se nota que fué hecho así
 
Aya. Entiendo. Bueno, ahora lo tengo todo claro. Gracias :D, pero si tengo una consulta ¿Cual es el comando (En Script) que hace aparecer/desaparecer minis? y ¿Ese comando lo debo poner al final o antes del "realese end"?
 

Gold

Porrero a tiempo parcial
Miembro insignia
Dale dale. Gracias :D. Lo tendré que poner a aprueba para ver si funciona. Igualmente gracias. Pueden cerrar este tema (Hasta que abra otro pidiendo otra ayuda diferente XD). No es por nada pero ¿Como hago para poner minis que estan presentes en el Advance Map, pero no aparecen una vez juegas el juego (O sea, por ejemplo, cuando el prof. Oak te detiene antes de entrar a la hierba alta. Su mini aparece en el Advance Map, pero en el juego no aparece hasta que vayas a la hierba alta?
 
Última edición:

Sayer301!

UnityLord!
Miembro de honor
Yo creo que deberías hacer un movimiento de mini fijo, como el del viejo de Ciudad Verde, para lo cual deberías crear un script de nivel que compare si X flag ha sido activada o no. Si si lo ha sido, lo mueves con un comando llamado
Movesprite2 0xPosX 0xPosY 0xnºMini

Así vayas a donde vayas estará siempre en su nueva posición.


Bueno ese es una de las posibles soluciones para tus dos problemas.

Respecto a la nueva pregunta... Pues para eso sirven las flags, le pones una flag al mini donde pone PEOPLE ID. Entonces, cuando actives la flag el mini no se verá, cuando la desactives si se verá.
 
Dale. Gracias. Bueno, estuve revisando los scripts de nivel y tambien vi el Script del viejo de Ciudad Verde para guiarme. El problema esta que en todo el Script no aparece algún comando (En mi opinión, quizás alla uno, pero no lo reconosco) que me permita mostrar el mini (En el Advance Map, el viejo de Ciudad Verde aparece representado en una casilla verde "S", pero revisando su Script no hay ningun comando para poner el mini especifico). ¿Que debo usar para poner un mini en el Script de nivel (Que no aparesca en el Advance Map, pero si en el juego)?
 

Sayer301!

UnityLord!
Miembro de honor
createsprite es el comando que buscas, pero aun así te renta mas moverlo con un applymovement2 y dejarte de líos.
 
Jajajaja Si es verdad XD. Mejor me guio por eso: Poner dos minis (Uno en el lugar donde esta originalmente el npc y el otro cuando ya el npc se movio). El problema esta de que quiero que el segundo mini no aparesca en el juego hasta que el Script del primer mini se ejecute (O sea: No quiero que el mini del Científico en el lugar que se debe mover aparezca al comienzo del juego, sino que aparezca una vez que el Script del Científico se aya ejecutado y el primer mini se aya movido). En pocas palabras: Hacer que ciertos minis estén ocultos al inicio del juego; pero que, al hablar con los npcs y estos se muevan, aparezcan cuando ya el npc se aya movido.
 

DeadApolo

A'KERIA'S TRACES
Jajajaja Si es verdad XD. Mejor me guio por eso: Poner dos minis (Uno en el lugar donde esta originalmente el npc y el otro cuando ya el npc se movio). El problema esta de que quiero que el segundo mini no aparesca en el juego hasta que el Script del primer mini se ejecute (O sea: No quiero que el mini del Científico en el lugar que se debe mover aparezca al comienzo del juego, sino que aparezca una vez que el Script del Científico se aya ejecutado y el primer mini se aya movido). En pocas palabras: Hacer que ciertos minis estén ocultos al inicio del juego; pero que, al hablar con los npcs y estos se muevan, aparezcan cuando ya el npc se aya movido.
Es simple, en un script de nivel pon que el mini desaparezca, de ese modo estará invisible hasta que lo vuelvas a activar en el otro script.

La verdad no sabría explicártelo y estoy ocupado en este momento, pero es básicamente uso de flags y scripts básico(no me dirán que un Show and Hide sprite es de nivel medio ¿cierto? ¬¬) así que no deberías tener muchos problemas si mientras scripteas tienes algún tuto por ahí a mano para guiarte.

¡Saludos!

Edit: En los macrotutoriales de javi te explican qué puede hacer cada script de nivel en A-Map, te podría servir tenerlos a mano.

Atte:

ApoloD - DeadApolo actualmente.
 
Si, eso pienso hacer: Crear un Script de nivel para ocultar todos los minis de los npcs que se van a mover y cuando hable con los npcs, los minis de los npcs con los cuales estoy hablando desaparecen y aparecen los minis ocultos.
Muchas gracias a todos por los consejos y la orientación :D
 
Estado
Cerrado para nuevas respuestas.
Arriba