Registrarse

[RH - Scripting] [ESCUELA DE SCRIPTS] Posters / Flags

Estado
Cerrado para nuevas respuestas.

Xabier2012

Héroe de WaH



Crear un póster

Primero, creamos el evento en AM. Para eso en el apartado eventos aumentados el número de "singposts". Le damos a "change events" y nos aparecerá una "S" de color anaranjado.

En las opciones de este eventos debemos ponerlo como tipo "script", para que podamos poner nuestro offset en él. Aparte de esto, también podemos ponerlo como script pero si el jugador está mirando para cierto lado, eso ya depende de cada uno.

Para crear el script de un póster es muy sencillo, solo hay que usar el tipo msgbox 0x3. De esta forma:

Código:
#dynamic 0x800000

#org @inicio
msgbox @texto 0x3
end

#org @texto
= ¡Bienvenido a Pueblo Sol!
Ya está. Demasiado fácil, ¿Verdad?


¿Qué es una Flag?

Las flags son elementos como las variables, solo que estas no almacenan números, sino que almacenan dos estados, activada o desactivada.

Una Flag por defecto siempre estará desactivada.


¿Para qué sirven?

Se pueden utilizar como las variables, para controlar condiciones. Por ejemplo, tenemos un mini que te da un objeto. Pues primeros miramos si la flag está activada. En caso de que no lo esté, le damos el pokémon, y en caso de que esté activada pues preguntará como está el pokémon entregado. Cuando se ejecuten los comandos de entregar el pokémon, ponemos un comando para activar la flag, de esta forma el evento de entregar el pokémon solo se hará una vez y no se repetirá constantemente. Luego nos preguntará siempre por el pokémon, porque la flag estará activada.

Podemos asignarle una flag a un minisprite en el campo "person_id". De esta forma, si activamos la flag del minisprite conseguiremos que el mini sea completamente invisible, como el profesor oak en Pueblo Paleta, que si os fijáis aparece su minisprite en medio del mapa sin embargo no lo podéis ver en el juego y lo traspasáis. Esto es porque cuando ocurre el evento de que te vas a la hierba alta, se desactiva su flag asignada.


Activando y desactivando Flags

Normalmente, se pueden usar flags desde la 100 hasta la 2FF. Muchas son utilizadas en el juego por objetos ocultos y minisprites. Estas son las más seguras de utilizar pero muchas gente utilizada flags de la 500 para arriba.

Para activar una Flag, utilizamos el comando setflag (número de flag), de esta forma:

Código:
setflag 0x200
Ahí estamos activando la flag número 200


Desactivando una flag

Una flag que esté activada se puede desactivar con el comando clearflag (número de flag). Tal que así:

Código:
clearflag 0x200
Ahora la flag 200 estará desactivada


Condiciones con Flags

Se pueden hacer condiciones con las flags. Si utilizamos el comando checkflag (número de flag), el juego comprobará si una flag está activada.
Entonces es cuando nosotros podremos poner la condición if 0x1, la cual se cumplirá si la flag está activada.(La condición de estar activada se representa con if 0x1)

Vamos a comprobar si una flag está activada, y dependiendo de si lo está, que se diga un texto u otro.

Código:
#dynamic 0x800000

#org @inicio
checkflag 0x200
if 0x1 goto @activada
msgbox @texto1 0x6
end

#org @activada
msgbox @texto2 0x6
end

#org @texto1
= Está desactivada

#org @texto2
= Está activada
Primeros comprobamos si la flag 200 está activada (checkflag 0x200)
En caso de que esté activada iremos a @activada (if 0x1 goto @activada)
Si hemos ido a @activada nos dirán el @texto2
Si no se cumple la condición el script seguirá y se ejecutará el msgbox @texto1.


Flags vs Variables

¿Es mejor trabajar con variables o con flags para las condiciones dentro de un script?

Sin duda alguna es mejor utilizar variables, y las flags utilizarlas para hacer desaparecer objetos ocultos y minisprites.

¿Por qué?

Aparte de que creo que las flags son más valiosas, una variable da más posibilidades de hacer un script más complejo.

Por ejemplo, vamos a utilizar el script de decir un texto u otro que utilizamos arriba y lo vamos hacer con flags y con variables. Y esta vez cuando diga el @texto1 activaremos la flag o le daremos un valor a nuestra variable para que después solo nos diga el @texto2.

Con flags:

Código:
#dynamic 0x800000

#org @inicio
checkflag 0x200
if 0x1 goto @activada
msgbox @texto1 0x6
setflag 0x200
end

#org @activada
msgbox @texto2 0x6
end

#org @texto1
= Está desactivada

#org @texto2
= Está activada

Con variables: (Toda var empieza teniendo el valor 0)

Código:
#dynamic 0x800000

#org @inicio
compare 0x4000 0x1
if 0x1 goto @activada
msgbox @texto1 0x6
setvar 0x4000 0x1
end

#org @activada
msgbox @texto2 0x6
end

#org @texto1
= Está desactivada

#org @texto2
= Está activada

Como veis, podemos utilizar una variable y una flag para condiciones en scripts. Ahora bien, y si queremos que después de pasarnos la liga pokémon
el minisprite nos diga algo distinto (es un poco absurdo pero es para poner un ejemplo).

Pues en el caso de la flag tendríamos que utilizar otra flag. Activaríamos por ejemplo la flag 201 cuando nos pasemos la liga, y así en nuestro script comprobando la flag 201 sabremos si nos hemos pasado la liga y dirá el tercer texto que queremos.

Quedaría así:

Código:
#dynamic 0x800000

#org @inicio
checkflag 0x201
if 0x1 goto @ligapasada
checkflag 0x200
if 0x1 goto @activada
msgbox @texto1 0x6
setflag 0x200
end

#org @activada
msgbox @texto2 0x6
end

#org @ligapasada
msgbox @texto3 0x6

#org @texto1
= Está desactivada

#org @texto2
= Está activada

#org @texto3
= ¡Te has pasado la liga!

Gastaremos un flag más.

Si utilizamos variables, no hace falta gastar otra variable, simplemente cuando nos pasemos la liga, le daremos el valor 2 a nuestra variable, y solo tendremos que comprobar si dicha variable es mayor que uno.

Código:
#dynamic 0x800000

#org @inicio
compare 0x4000 0x1
if 0x1 goto @activada
if 0x2 goto @ligapasada
msgbox @texto1 0x6
setvar 0x4000 0x1
end

#org @activada
msgbox @texto2 0x6
end

#org @ligapasada
msgbox @texto3 0x6

#org @texto1
= Está desactivada

#org @texto2
= Está activada

#org @texto3
= ¡Te has pasado la liga!

Hemos utilizado solo una variable de forma más práctica. Y en caso de que quisiéramos poner más condiciones, podríamos estar jugando con el valor de la misma variable infinitamente (hasta el valor FFFF).

Mi consejo es que las flags las aprovechéis para objetos ocultos, no ocultos, minisprites, entrenadores ect.


Crear un objeto oculto

Primero tenemos que crear un evento como el de un póster.
En singpost type pondremos la opción 7 hidden item (objeto oculto). En la opción de abajo donde pone ID, tendremos que poner una flag que no hayamos utilizado, y en la opción de abajo es el número de objetos que te va a dar (normalmente solo se pone 1).

Cuando encontremos dicho objeto en nuestro juego, la flag que habremos puesto como id se actiará, de esta forma no podremos volver a coger el objeto oculto, por eso es importante que esa flag ya no la utilicemos para otras cosas.


Flags especiales

Los juegos de pokémon tienen unas flags especiales las cuales cuando se activan provocan que se activen un evento del juego, como las zapatillas.
Por ejemplo, en Fire Red si activamos la flag 0x82F, podremos correr con las zapatillas. También hay flags especiales para activar el menú pokémon, la pokédex y las medallas. Estas son las que hay en los tres juegos:

0x820 – Activa la primera medalla
0x821 - Activa la segunda medalla
0x822 - Activa la tercera medalla
0x823 - Activa la cuarta medalla
0x824 - Activa la quinta medalla
0x825 - Activa la sexta medalla
0x826 - Activa la septima medalla
0x827 - Activa la octava medalla
0x828 - Activa el menú Pokemon
0x829 - Activa la Pokedex
0x82F - Activa las zapatillas

0x800 - Activa el menu pokemon
0x801 - Activa la pokedex
0x802 - activa el pokenav
0x807 - Activa la primera medalla
0x808 - Activa la segunda medalla
0x809 - Activa la tercera medalla
0x80A - Activa la cuarta medalla
0x80B - Activa la quinta medalla
0x80C - Activa la sexta medalla
0x80D - Activa la septima medalla
0x80E - Activa la octava medalla
0x860 - Activa las zapatillas

0x860 - Activa el menu pokemon
0x861 - Activa la pokedex
0x862 - activa el pokenav
0x867 - Activa la primera medalla
0x868 - Activa la segunda medalla
0x869 - Activa la tercera medalla
0x86A - Activa la cuarta medalla
0x86B - Activa la quinta medalla
0x86C - Activa la sexta medalla
0x86D - Activa la septima medalla
0x86E - Activa la octava medalla
0x8C0 - Activa las zapatillas

Cuando hagáis un setflag en alguna de estas flags, hará lo que indica al lado.


Preguntas frecuentes

Activo una flag que está en el person_id de un mini, pero el mini no desaparece

El mini no desaparecerá hasta que cambiéis de mapa o refresquéis la pantalla, eso es así. Pero si utilizáis el comando hidesprite 0x(numero del mini en AM), justo antes del comando setflag, hará el efecto de desaparecer instantáneamente.

Utilizo el comando clearflag pero el mini no vuelve a aparecer en mi evento

Un mini que no está visible debido a un setflag no hace falta que hagáis un clearflag para que se visualice en vuestro script. Simplemente con el comando showsprite 0x(numero del mini en AM) podéis que hacer que aparezca en vuestro evento. Si después utilizáis un hidesprite lo haréis desaparecer y ni tendréis que utilizar ni el clearflag ni el setflag.

He perdido la cuenta de las flags o variables que estaba utilizando

Todo buen rom-hacker tiene una archivo de texto donde apunta las variables y flags que va utilizando y para qué las utilizó.


Hacer un script donde al hablar con un mini os dé la pokedex. No se podrán utilizar variables y solo se podrá aparecer el número de una flag, de decir, que si en mi script aparece la flag 0x200, puedo hacer con esa flag los comandos que quiera pero no podré utilizar otro número de flag.

Se tiene que entregar antes del miércoles.

@Tervaxx @Toni @Neon Skylar @rdoble @AwesomeCS @RafaSc3 @~Nozz~ @LluviaElemental @AlexanderWWE @Luna @Axnez @♦ZeØn♦ @KaycerWolf @jfem
 

Zeon

Haters gonna Hate.
Bueno puesto que esta es mi ultima tarea la he decidido ambientar un poco al caso, he usado comandos como sound (muy ilogico por mi parte, ya que he quitado el sonido para reducir el lag) y otros como applymovement que no entraban, se que no tendrían que estar, pero al ser la ultima puesto que el 15 me tendre que ir... Pues eso

(Evidentemente lo que se pide en la tarea esta incluido y se que no suben la nota los demas)

Usuario:Zeon
Rom Base:FireRed
Lección:Posters/Flags
Scripts:
Código:
#dynamic 0x800000

'---------------
#org @start
checkflag 0x829
if 0x1 goto @snippet1
faceplayer
lock
msgbox  [MENTION=29127]String[/MENTION]1 MSG_NORMAL '"[red_fr]Susana: Vaya! Que sorpresa..."
applymovement 0x1 @move1
applymovement MOVE_PLAYER @move2
waitmovement 0x0
goto @snippet2

'---------------
#org @snippet1
faceplayer
lock
msgbox  [MENTION=29127]String[/MENTION]2 MSG_NORMAL '"Pero si ya te he dado una!\nAnda a..."
release
end

'---------------
#org @snippet2
faceplayer
lock
msgbox  [MENTION=29127]String[/MENTION]3 MSG_NORMAL '"Esto, es una Pokedex, te voy a\nha..."
hidesprite 0x2
applymovement 0x1 @move3
waitmovement 0x0
setflag 0x829
sound 0x4
msgbox  [MENTION=29127]String[/MENTION]4 MSG_NORMAL '"Ya es tuya! Sé feliz :D"
applymovement 0x1 @move4
waitmovement 0x0
release
end


'---------
' Strings
'---------
#org  [MENTION=29127]String[/MENTION]1
= [red_fr]Susana: Vaya! Que sorpresa Tú\npor aquí!\lVen, acompañame.

#org  [MENTION=29127]String[/MENTION]2
= Pero si ya te he dado una!\nAnda a capturar Pokemons...

#org  [MENTION=29127]String[/MENTION]3
= Esto, es una Pokedex, te voy a\nhacer entrega de ella puesto que\leres muy apuesto, ¿Lo has pillado?\lPuesto, apuesto... No? Vale, mejor\llo dejo.[blue_fr] Toma.

#org  [MENTION=29127]String[/MENTION]4
= Ya es tuya! Sé feliz :D


'-----------
' Movements
'-----------
#org @move1
#raw 0x20 'Step Right (Fast)
#raw 0x20 'Step Right (Fast)
#raw 0x1E 'Step Up (Fast)
#raw 0x1E 'Step Up (Fast)
#raw 0x1E 'Step Up (Fast)
#raw 0x2 'Face Left
#raw 0xFE 'End of Movements

#org @move2
#raw 0x20 'Step Right (Fast)
#raw 0x20 'Step Right (Fast)
#raw 0x20 'Step Right (Fast)
#raw 0x1 'Face Up
#raw 0xFE 'End of Movements

#org @move3
#raw 0x1D 'Step Down (Fast)
#raw 0x1D 'Step Down (Fast)
#raw 0x4 'Face Down (Faster)
#raw 0x66 'Happy (^_^)
#raw 0xFE 'End of Movements

#org @move4
#raw 0x1E 'Step Up (Fast)
#raw 0x1E 'Step Up (Fast)
#raw 0x2 'Face Left
#raw 0xFE 'End of Movements


Video
 
Usuario: AwesomeCS
Rom Base: Fire Red
Lección: Posters /Flags
Scripts:
Código:
#dynamic 0x800000

'---------------
#org @start
faceplayer
lock
checkflag 0x829
if 0x1 goto @snippet1
msgbox [MENTION=29127]String[/MENTION]1 MSG_NORMAL '"Como sé que eres un vago he venido..."
setflag 0x829
release
end

'---------------
#org @snippet1
msgbox [MENTION=29127]String[/MENTION]2 MSG_NORMAL '"Encima de vago no seas tacaño, ya\..."
end


'---------
' Strings
'---------
#org [MENTION=29127]String[/MENTION]1
= Como sé que eres un vago he venido\nyo a darte la pokédex, ¡vago!

#org [MENTION=29127]String[/MENTION]2
= Encima de vago no seas tacaño, ya\nte he dado una.

Imágenes



[/img]
 
Usuario:AlexanderWWE
Rom Base:PokemonFR
Lección:Posters/Flags
Scripts:
Código:
'---------------
#org 0x80010D
checkflag 0x829
if 0x1 goto 0x8800123
msgbox 0x880012D MSG_NORMAL '"soy un ayudante del prof.Oak\neste..."
setflag 0x829
end

'---------------
#org 0x800123
msgbox 0x8800177 MSG_NORMAL '"capullo, ya te di la pokedex"
end


'---------
' Strings
'---------
#org 0x80012D
= soy un ayudante del prof.Oak\neste es un regalo suyo,por favor\laceptalo.

#org 0x800177
= capullo, ya te di la pokedex

 
Última edición:

KevinXDE

Héroe de WaH
Usuario: Tervaxx
Rom Base: Fire Red
Lección: Posters / Flags
Scripts:
Código:
#dynamic 0x700000
#org @start
faceplayer
lock
checkflag 0x829
if 0x1 goto [MENTION=19050]poke[/MENTION]dex
msgbox @frase1 0x6
setflag 0x829
release
end

#org [MENTION=19050]poke[/MENTION]dex
msgbox @frase2 0x6
release
end

#org @frase1
= [blue_fr]Prof. Oak[black_fr]: Hola, ¡[red_fr][player][black_fr]! Justo\nte estaba buscando.\p[blue_fr]Prof. Oak[black_fr]: Como me dijiste que\ntu Pokédex se había roto y no\lpodías usarla, me he tomado la\lmolestia de fabricarte otra.\p[blue_fr]Prof. Oak[black_fr]: Ya me lo agradecerás\nluego. Debo decirte que le he\lhecho varios retoques, ¡así que\lahora tienes una Pokédex con\lfunciones que no tenía la\lanterior!\p[blue_fr]Prof. Oak[black_fr]: ¡Ahora hazme sentir\norgulloso y ve a rellenarla con\ldatos de Pokémon!

#org @frase2
= [blue_fr]Prof. Oak[black_fr]: ¡Adelante! ¡Ve a por\ntodas!

Video
 
Usuario: RafaSc3
Rom Base: Fire Red
Lección: Posters /Flags
Scripts:
Código:
#dynamic 0x800000

#org @inicio
faceplayer
lock
checkflag 0x829
if 0x1 goto  [MENTION=19050]poke[/MENTION]dex
msgbox @texto 0x2
setflag 0x829
release
end
release
end

#org  [MENTION=19050]poke[/MENTION]dex
msgbox @texto2 0x2
release
end

#org @texto
= Me ha dicho tu madre que ayer\ncuando llegaste a casa tu perrito\lTommy te tiró la Pokedex y la\lrompió. Aqui tienes otra, ademas\lesta mejorada y podrás hacer\lnuevas funciones con ella.

#org @texto2
= Ya te la he dado.

 

rdoble

Gente legal... ¿o no?
Usuario: rdoble
Rom Base: Fire Red
Lección: Posters / Flags
Scripts:
Código:
'---------------
#org 0x802899
faceplayer
lock
checkflag 0x829
if 0x1 goto 0x88028B2
msgbox 0x88028BD 0x6 '"Antes de que ese inútil de Oak te\..."
setflag 0x829
release
end

'---------------
#org 0x8028B2
msgbox 0x8802924 0x6 '"¿Qué haces ahí parado? ¡Venga, sal..."
release
end


'---------
' Strings
'---------
#org 0x8028BD
= Antes de que ese inútil de Oak te\ndé la pokédex, te la doy yo.\l¿Quién es el más rápido ahora,\lviejo?

#org 0x802924
= ¿Qué haces ahí parado? ¡Venga, sal\na estrenar esa Pokédex! Y cuando\lla completes, no olvides decir que\lte la dio el Profesor Morgan.

Imágenes:






 
Usuario:JFeM
Rom Base:FIRE RED
Lección:POSTES/FLAGS
Scripts:
Código:
#org @start
lock
faceplayer
applymovement 0x3 @mov1
waitmovement 0x3
msgbox @text1 0x6
waitmsg
setflag 0x829
pause 0x20
applymovement 0x4 @mov4
waitmovement 0x4
msgbox @text2 0x6
waitmsg
applymovement 0x3 @mov5
waitmovement 0x3
applymovement 0x4 @mov6
waitmovement 0x4
msgbox @text3 0x6
fadescreen 0x1
hidesprite 0x3
hidesprite 0x4
setflag 0x200
fadescreen 0x0
release
end

#org @text1
= [black_fr]Eh! ¿Qué es lo que has visto?\n¿Nada verdad? Esta POKéDEX es mía,\lsi, mía... ADIOS !!

#org @mov1
#raw 0x62 'Exclamación (!)
#raw 0xFE 'Fin de los movimientos


#org @mov5
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0xFE 'Finalizar Movimientos



#org @mov4
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x11 'Paso Arriba
#raw 0x65 'Doble Exclamación (!!)
#raw 0xFE 'Finalizar Movimientos

#org @mov6
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x13 'Paso Derecha
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0x11 'Paso Arriba
#raw 0xFE 'Finalizar Movimientos

#org @text3
= [red_fr][player][black_fr] recibió [blue_fr]POKéDEX[black_fr] de\n[red_fr]LADRÓN[black_fr].

#org @text2
= [blue_fr]POLICIA: [black_fr] EH! Tú, ladrón ven\naquí.\p[red_fr]LADRÓN: [black_fr]Oh, mierda, toma esto.\nADIOS !


VIDEO
 

Toni

Profesional de WaH
Usuario:Toni
Rom Base:FR
Lección:Posters / Flags
Scripts:
Código:
#dynamic 0x800000

#org @inicio 
lock
faceplayer
checkflag 0x829
if 0x1 goto @despues 
msgbox @texto1 0x6 
setflag 0x829
msgbox @texto3 0x6
release 
end

#org @despues
msgbox @texto2 0x6
release
end

#org @texto1
= Me ha dicho el profesor que\ncompletes esta Pokédex.
#org @texto3
= Cuidala mucho
#org @texto2
= ¿Y ahora que quieres?\nEres un poco pesado sabes...


Imágenes
 

Axnez

El que te trasnocha :v
Usuario:Axnez
Rom Base:FR
Lección:Posters / Flags
Scripts:
Código:
#dynamic 0x80000

#org @inicio
checkflag 0x829
if 0x1 goto premio
msgbox @texto2 0x6
setflag 0x829
end

#org premio
msgbox @texto1 0x6
end

#org @texto1
= Eres molesto ¿sabes? 

#org @texto2
= Toma tu premio

Imágenes
 
Estado
Cerrado para nuevas respuestas.
Arriba