Registrarse

Items y scripts de gatillo

Estado
Cerrado para nuevas respuestas.
Hola soy nuevo en la comunidad y en el rom hacking.
Hasta el momento he ido aprendiendo con tutoriales y con logica.
Aprendi a usar giveitem,que te lo de una persona pero no encontre un tuto que explicara como hacer items pokeballs.
Abri un script del juego ya creado y vi como se hacia,el caso es que funciona pero tengo un unico problema. Cuando cojo el item la pokeball desaparece,pero al dar un paso vuelve a aparecer y asi sucesivamente,no se como hacer que desaparezca.
Esto es lo que pongo para hacerlo de forma que sigue apareciendo:
#dynamic 0x800000

#org @start
giveitem 0x0 0x0 0x0
end

De esta forma aparece el objeto,y sigue apareciendo siempre aunque lo coja 20 veces.

Mi otra duda es sobre script de gatillo,lo hago lo inserto y funciona todo bien,pero cada vez que piso se activa,y no se como quitarlo,creo que el problema es a la hora de ordenar las flags o de que scripts debe tenerlas,o quizas de que flags estan libres en FR. ¡Gracias!
Espero que alguien pueda ayudarme, ¡Gracias!
 

Gold

Porrero a tiempo parcial
Miembro insignia
El problema en el script de la pokeball está en que no le has asignado en a-map una flag, (People ID), ponle una y con eso debería de de andar bien.

Los scripts de gatillo se te repiten porque no le has puesto una variable, ponle una y así ya no se va a repetir, todo eso lo puedes encontrar en los diversos tutoriales de scripts.
 

Skyflyer

Creador de Pokémon Zenit
Hola soy nuevo en la comunidad y en el rom hacking.
Hasta el momento he ido aprendiendo con tutoriales y con logica.
Aprendi a usar giveitem,que te lo de una persona pero no encontre un tuto que explicara como hacer items pokeballs.
Abri un script del juego ya creado y vi como se hacia,el caso es que funciona pero tengo un unico problema. Cuando cojo el item la pokeball desaparece,pero al dar un paso vuelve a aparecer y asi sucesivamente,no se como hacer que desaparezca.
Esto es lo que pongo para hacerlo de forma que sigue apareciendo:
#dynamic 0x800000

#org @start
giveitem 0x0 0x0 0x0
end

De esta forma aparece el objeto,y sigue apareciendo siempre aunque lo coja 20 veces.

Mi otra duda es sobre script de gatillo,lo hago lo inserto y funciona todo bien,pero cada vez que piso se activa,y no se como quitarlo,creo que el problema es a la hora de ordenar las flags o de que scripts debe tenerlas,o quizas de que flags estan libres en FR. ¡Gracias!
Espero que alguien pueda ayudarme, ¡Gracias!
Debes asignarle a la pokéball una flag, como a un mini cualquiera, y dentro de su script tienes que hacer que se active. De esta manera no volverá a aparecer, es un mini más y se oculta como el resto.

El script de gatillo es algo parecido, creo que con simplemente ponerle una variable como bien te ha dicho @Ruki ya debería dejar de repetirse.
 
Ya sabia que yo que algo hacia mal con las flags jaja y sabriais decirme cuales son las flags libres en red fire y que variables son las que tengo que utilizar?
Gracias.

He usado la flag 1208 y ha funcionado a la perfeccion! Muchas gracias!
Ahora toca solucionar el problema de los scripts de gatillo, de todas formas me seria de mucha utilidad si pudieras decirme que variables y que flags estan libres,ya que en internet cada sitio dice una cosa diferente. ;)

Estoy probando y el script de gatillo funciona a medias,esto es lo que he utilizado:

#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x1210
if 0x1 call 0x1210
msgbox @lalala 0x6
setflag 0x1210
release
end

#org @lalala
(TEXTO)

(En A.Map) Desconocido:0003
Var.Number 4049

Cuando piso el script se activa y todo bien.
Si lo vuelvo a pisar no se activa asi que eso es buena señal,pero,el protagonista se queda atascado en casa casilla,no gira,no camina,me impide hacer cualquier movimiento.
Aqui si que ya no tengo ni idea de cual es el problema.

Creo que sobra el lock,faceplayer y release.
Aun quitandolo...no funciona...
 
Última edición:

FEL!X

ᴛᴜ ᴀᴍɪɢᴏ ᴇʟ ᴇsᴘᴀᴅᴀᴄʜíɴ
Usuario de Oro
Estoy probando y el script de gatillo funciona a medias,esto es lo que he utilizado:

#dynamic 0x800000

#org @start
lock
faceplayer
checkflag 0x1210
if 0x1 call 0x1210
msgbox @lalala 0x6
setflag 0x1210
release
end

#org @lalala
(TEXTO)

(En A.Map) Desconocido:0003
Var.Number 4049

Cuando piso el script se activa y todo bien.
Si lo vuelvo a pisar no se activa asi que eso es buena señal,pero,el protagonista se queda atascado en casa casilla,no gira,no camina,me impide hacer cualquier movimiento.
Aqui si que ya no tengo ni idea de cual es el problema.

Creo que sobra el lock,faceplayer y release.
Aun quitandolo...no funciona...
el if esta mal, nose porque pones call cuando es goto que sirve para ir a otra direccion...
Phantom, no participes en la resolución de una duda si no tienes datos o conocimientos suficientes para resolverla. Ambas, call y goto sirven para ejecutar y continuar leyendo a partir de un segundo script en otro offset (dirección), la diferencia entre ambos radica en que el goto cuando ha terminado el segundo script finalizará el evento mientras que el call te da la opción de volver al primer script gracias al comando return (Al regresar, seguirá leyendo desde el call)

El script de gatillo es algo parecido, creo que con simplemente ponerle una variable como bien te ha dicho Ruki ya debería dejar de repetirse.
Te digo lo mismo que a Phantom, Skyfler, si no lo tienes claro mejor no comentes en la duda, con simplemente ponerle una variable en A-Map no es suficente, ya ves que te ha dicho que el script se le repite.

* * *​

Volviendo al tema,

fer94, en el citado te he marcado en rojo la parte que hace que el prota se atasque. Todo se debe al “if 0x1 call 0x1210” el cual lee ya que sí que lee el script de gatillo. No es que no se active el script de Gatillo y falle, sino que falla precisamente porque el gatillo se activa y una parte del script está mal. El tema es que la primera vez activas la flag 1210 pero al volver a pisarlo el check revisa la flag y el if, al ver que está activa (0x1) llama (call) la dirección 1210 y de ahí el error, el juego no entiende qué hacer con ésa dirección y se atasca.

El tema es que deberías explicarte para que quieres hacer un check de la flag ahí. Pero eso sí, si quieres que al volver al gatillo si la flag esté activa pase algo, envíalo a otro offset/pointer con un if goto/call @(pointer que elijas). Por otra parte, si quieres que el gatillo no se repita debes cambiarle el valor en el script para que no coincida con el de A-Map en “var value”.

Te explico fer94, tienes una var asignada al A-Map que es la 4049 como ya bien dices, entonces si quieres que no se repita debes cambiar el valor de la var 4049 dentro del script. Eso lo puedes hacer con un simple setvar 0x(variable) 0x(valor). En tu caso , setvar 0x4049 0x(valor diferente a lo que tengas en var value de A-Map)

Y eso es todo, te recomiendo que te leas los tutoriales, es muy sencillo y todo está ahí. Si pese a ello, sigues teniendo dudas, coméntamelo por perfil y lo solucionamos. :)

Un abrazo.
 
He quitado todo el principio de OAK en pueblo paleta incluyendo eleccion de Pokemon, y lo lo he sustituido por un script de givepokemon. El script de gatillo quiero me impida salir del pueblo, hasta que te den el Pokemon inicial, me parece que tengo que poner algo en el script de givepokemon, pero soy novato y todavia voy un poco verde. Actualmente es lo que mas problema me da, y considero que para hacer un hack es imprescindible cortar caminos hasta que se realicen ciertas acciones en el juego,para asi seguir un orden.

¡Gracias!
 

FEL!X

ᴛᴜ ᴀᴍɪɢᴏ ᴇʟ ᴇsᴘᴀᴅᴀᴄʜíɴ
Usuario de Oro
He quitado todo el principio de OAK en pueblo paleta incluyendo eleccion de Pokemon, y lo lo he sustituido por un script de givepokemon. El script de gatillo quiero me impida salir del pueblo, hasta que te den el Pokemon inicial, me parece que tengo que poner algo en el script de givepokemon, pero soy novato y todavia voy un poco verde. Actualmente es lo que mas problema me da, y considero que para hacer un hack es imprescindible cortar caminos hasta que se realicen ciertas acciones en el juego,para asi seguir un orden.

¡Gracias!
Vale fer94. Lo que tienes que hacer es jugar con los dos scripts, el del gatillo en la salida del pueblo y el script del NPC que te da el pokemon. Vamos a definir el evento:

El evento consistirá en que puedes salir del pueblo hasta que tengas a tu pokemon. Para ello, el script de gatillo en la salida del pueblo empezará activa (Usaremos una variable con var value 0 y desconocido 3. Por defecto , valor será 0 así que empezará activa )

El script de gatillo consistirá en un applymovement que enviará al jugador un paso atrás
en dirección al pueblo. Es decir, si la var es =0 y das un paso fuera del pueblo, pisaras el gatillo y darás un paso atrás.

Para poder pasar deberás ir a conseguir tu pokemon. En éste segundo script pondrás el givepokemon y, importante, además de ello deberás cambiar el valor de la variable del gatillo a un valor diferente de 0 como ya te dije en mi anterior respuesta.

Un abrazo. :)

PD: Te recomiendo leerte este macrotutorial de javi: http://whackahack.com/foro/t-16885/macrotutorial-gba-hacking-desde-0-8-9-entrega fue el mismo con el cual aprendí yo al empezar en esto. Me repito, pero es algo que cualquier hacker novato debería tener impreso a mano para poderlo consultar siempre que quiera.
 
Precisamente es lo que buscaba,un tuto que explicase todo esto, gracias por facilitarmelo.

;)

Una ultima duda.
Habiendo aclarado ya todo esto y entendiendo lo de las variables,que es lo que me desactiva el gatillo,no se porque el script de givepokemon desaparece al desactivar el de gatillo.
He estado leyendo el apartado de los scripts en el tuto,y aun asi no encuentro el fallo.
¿Influye en esto el comando setvar?
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba