Registrarse

[RH - Scripting] [ESCUELA DE SCRIPTS] Especial / Efectos de pantalla

Estado
Cerrado para nuevas respuestas.

Xabier2012

Usuario mítico



Special

Un special es un comando el cual ejecutará un evento pre-programado del juego. Esto quiere decir que el juego tiene diferentes "specials" los cuales harán diferentes eventos como curar tus pokémons o activar la dex nacional.

El comando a usar es simple:

Código:
special 0x(num del special)
Dependiendo del número de special que pongamos se ejecutará una función u otra. aquí tenéis la lista de los números del special y a que evento corresponde:

special 0x0 - Heal Pokemon
special 0x3C - Access Bill's PC (FR/LG)
special 0x98 - Going up to Mountain (R/S)
special 0x9C - Wally Catch (R/S)
special 0x9F - choose A Pokemon (R/S)
special 0xE0 - PokeBlock Case (R/S)
special 0x10F - Restart Game
special 0x110 - Hall of Fame and Credits
special 0x111 - Elevator Animation
special 0x119 - Groudon's Orb effect (R/S)
special 0x131 - Earthquake (R/S)
special 0x132 - Show Floors
special 0x133 - Long Earthquake (Emerald)
special 0x136 - Earthquake (FR/LG)
special 0x137 - Lava Battle
special 0x13D - Short Earthquake (Emerald)
special 0x156 - Battle with Ghost (FR/LG)
special 0x157 - Get on Bike (FR/LG)
special 0x161 - Start Surfing (FR/LG)
special 0x166 - Nickname
special 0x16F - Activate National Dex (FR/LG)
special 0x17B - Seagallop Animation
special 0x191 - SS. Anne Leaving
special 0x1F3 - Activate National Dex (Emerald)

Por ejemplo en Rojo Fuego si ejecutamos el special 0x3C, se nos abrirá el pc de bill.


Waitstate

Cuando utilizamos un special es recomendable poner después un waitstate para que se acabe de ejecutar el special antes de seguir leyendo código. Es imprescindible en eventos como al poner el mote a un pokemon.

Código:
special 0x9E
waitstate
Con el special 0x9E damos un mote al primer pokémon de nuestro equipo, y sin el waitstate el código que tuviéramos más adelante no funcionaría.


Terremotos

El efecto del terremoto se consigue mediante un special y modificar unas variables que tiene el juego para este evento.

Para explicaros el terremoto, me voy a dar el lujo de coger de ejemplo el script del señor @Gut_Bro, el cual lo explicó en su momento perfectamente y me gustaría entrar en detalle. El código del terremoto es este:

Código:
#dynamic 0x740000

'---------------
#org @start
sound 0x4B 'Efecto de sonido
setvar 0x8004 0x2 'Movimiento Y
setvar 0x8005 0x2 'Movimiento X
setvar 0x8006 0x16 'Repeticiones
setvar 0x8007 0x3 'Velocidad
special 0x136 'Ejecutar el temblor
waitstate
msgbox @mensaje MSG_NORMAL
end

'---------------
#org @mensaje
= [PLAYER]: ¡Waaaaah!\nEstúpidos temblores[.]
Como ya explica en el propio script, con el sound 0x4B haremos el sonido correspondiente al terremoto, luego habrá que darle valores a 4 variables que maneja el juego y que le dirán el movimiento, las repeticiones y la velocidad con la que ejecutará el movimiento del temblor. Entonces dependiendo del valor que les deis a esas variables tendremos un efecto u otro.

Cada terremoto es a gusto de la persona que lo quiera hacer. Lo normal es variar las repeticiones para hacerlo más largo o más corto, pero depende de vosotros.

Con el special 0x136 ejecutamos el terremoto y con el waitstate esperará a que se termine de ejecutar el terremoto para decir el msgbox. No es complicado.


Fadescreen

Con este comando podremos poner la pantalla de color negro o blanco. Los fadescreen disponibles son estos:

Código:
fadescreen 0x0 (De negro a normal)
fadescreen 0x1 (De normal a negro)
fadescreen 0x2 (De blanco a normal)
fadescreen 0x3 (De normal a blanco)
Entonces, si queremos que la pantalla se vuelva negra, utilizaremos fadescreen 0x1, cuando queramos que vuelva a la normalidad usaremos fadescreen 0x0.

Cabe destacar que los diálogos que tengamos aunque la pantalla esté en negro o blanco se verán igual.


Pantalla color blanco-negro

Esto no tiene nada que ver con un fadescreen, sino con un comando llamado writebytetooffset, el cual en esta escuela no vamos a entrar en su función ni en como manejarnos con él, pero os diré como se crea el efecto por si lo queréis hacer (como por ejemplo para representar un flashback).

Es simple, si queremos que la pantalla se ponga blanco-negro, pondremos este comando:

Código:
writebytetooffset 0x1 0x2036E28
Y cuando queramos que vuelva a la normalidad pondremos este:

Código:
writebytetooffset 0x0 0x2036E28
OJO para que se ejecute completamente el comando necesitaremos refrescar la pantalla, esto quiere decir que necesitamos poner un warp o cambiar de mapa.


Hidesprite

Como indica ese "hide", este comando sirve para ocultar un sprite. Normalmente se utiliza en eventos que tu quieres que un personaje desaparezca caminado, por ejemplo. Pero en realidad este comando solo sirve para hacer visible el sprite temporalmente. Funciona de esta forma:

Código:
hidesprite 0x(Person event no)
Como podéis intuir, tenemos que poner el person event no de la persona del Advance map que queremos que desaparezca. Como he comentado antes, esto solo tiene un efecto temporal, ¿Qué hace falta para que sea permanente? Pues activar la flag asignada a dicho sprite.

Por ejemplo, si a una persona en person id (en AM) le ponemos la flag 0x200, si nosotros en un script activamos dicha flag, desactivaremos el mini que tiene esa flag y no volverá aparecer, pero esto solo se hará cuando se refresque el mapa. Si queremos que el efecto sea inmediato tendremos que poner un hidesprite con el person event no de la persona que queremos que desaparezca, de tal forma que tendríamos que ponerlo así:

Código:
hidesprite 0x3
setflag 0x200
Si el sprite con person event no 3 tiene en person_id la flag 200, cuando se ejecuten estos dos comandos desaparecerá completamente.


Showsprite

Esto es igual al hidesprite, pero para minis que ya están desactivados. De tal forma que si queremos que un mini vuelva a aparecer, tendremos que poner:

Código:
showsprite 0x(person event no)
Al igual que el hidesprite, es temporal.


TAREA

Os lo voy a poner fácil y guay para que entreguéis todos. Simplemente hacer un script donde haya un special y un terremoto. Cuanto más original, más nota.

@Tervaxx @Toni @rdoble @AwesomeCS @RafaSc3 @LluviaElemental @AlexanderWWE @Axnez @♦ZeØn♦ @jfem

*La tardanza de esta clase se debe a que hoy se ha caido internet en mi zona
 
Última edición:

KevinXDE

Usuario mítico
Ignora que es un Cubone, pero cuando lo vi de lejos el mini parecía un Marowak y ya era tarde cuando me di cuenta xD. El video aún se está subiendo, pero posteo ya para que la tarea llegue a tiempo

Usuario: Tervaxx
Rom Base: Fire Red
Lección: Especial / Efectos de pantalla
Scripts:
Código:
#dynamic 0x700000
#org @start
lockall
applymovement 0x1 @move1
msgbox [MENTION=29127]String[/MENTION]1 MSG_NORMAL '"[black_fr]Estaba bajando el Monte ..."
waitmovement 0x0
msgbox [MENTION=29127]String[/MENTION]2 MSG_NORMAL '"Cuando de pronto...\pMonty: ¿Uh? ¿..."
waitmsg
applymovement 0x1 [MENTION=19696]monty[/MENTION]
special 0x113
applymovement Move_Camera @camara
waitmovement 0x0
special 0x114
pause 0x25
msgbox @cadaver 0x6
applymovement 0x5 @segira
waitmovement 0x0
cry 0x69 0x0
waitcry
applymovement 0x5 @secabrea
waitmovement 0x0
cry 0x69 0x0
waitcry
msgbox @estaba 0x6
waitmsg
pause 0x25
msgbox @asustado 0x6
waitmsg
sound 0x4B
setvar 0x8004 0x2
setvar 0x8005 0x2
setvar 0x8006 0x1E
setvar 0x8007 0x3
special 0x136
waitstate
cry 0x69 0x0
waitcry
special 0x136
waitstate
msgbox @tranki 0x6
waitmsg
applymovement 0x1 @haciaabuelo
applymovement 0x5 @haciebuelo
waitmovement 0x0
pause 0x25
msgbox @nosolu 0x6
waitmsg
special 0x113
applymovement Move_Camera @camama
waitmovement 0x0
special 0x114
writebytetooffset 0x0 0x2036E28
setvar 0x4011 0x2
setvar 0x4012 0x1
releaseall
warpmuted 0x3 0x0 0x2 0x9 0x9
end


'---------
' Strings
'---------
#org [MENTION=29127]String[/MENTION]1
= [black_fr]Estaba bajando el Monte Ascuas\ndespués de un día de escalada.\p[blue_fr]Monty[black_fr]: Uff, que día más duro.\n¡Cuando llegue a casa me voy a\lla cama directo!

#org [MENTION=29127]String[/MENTION]2
= [black_fr]Cuando de pronto...\p[blue_fr]Monty[black_fr]: ¿Uh? ¿Qué es eso de\nahí?

#org @cadaver
= [black_fr]Había un cadáver, y a su lado...\nUn Marowak.

#org @estaba
= [black_fr]Estaba enfadado. Creo que trataba\nde proteger al muerto, así que\lcuando me vio...

#org @asustado
= [blue_fr]Monty[black_fr]: Eh... Tranquilo, bonito...\n¡Vengo a ayudar!\pParece que no se lo tomó bien,\nasí que empezó a crear terremotos.

#org @tranki
= [blue_fr]Monty[black_fr]: ¡Ah! ¡Cálmate! ¡Juro\nque no tengo malas intenciones!\pDespués de un momento parece que\nse dio cuenta de que no era\lpeligroso.

#org @nosolu
= [black_fr]Inspeccioné el cuerpo. No había\nduda, estaba muerto.\pParece que Marowak y ese señor\nestaban también bajando el monte\lcuando cayó por las escaleras.\pIntenté calmar al Marowak y avisé\na las autoridades. Llegaron\lpronto...\pMarowak supo que estaba ayudando,\ny aunque le dolía la pérdida,\lpronto decidió quedarse conmigo,\lya que no tenía a nadie más...\pY esa es la historia.

'-----------
' Movements
'-----------
#org @move1
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0xFE 'End of Movements

#org @camara
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0xFE 'Finalizar Movimientos

#org [MENTION=19696]monty[/MENTION]
#raw 0x1D 'Paso Abajo (Rápido)
#raw 0x1D 'Paso Abajo (Rápido)
#raw 0x1F 'Paso Izquierda (Rápido)
#raw 0x1F 'Paso Izquierda (Rápido)
#raw 0x1F 'Paso Izquierda (Rápido)
#raw 0x1F 'Paso Izquierda (Rápido)
#raw 0x1D 'Paso Abajo (Rápido)
#raw 0x1D 'Paso Abajo (Rápido)
#raw 0x1D 'Paso Abajo (Rápido)
#raw 0x20 'Paso Derecha (Rápido)
#raw 0x17 'Saltar 2 Derecha
#raw 0x20 'Paso Derecha (Rápido)
#raw 0x20 'Paso Derecha (Rápido)
#raw 0x0 'Mirar Abajo
#raw 0xFE 'Finalizar Movimientos

#org @segira
#raw 0x2 'Mirar Izquierda
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x3 'Mirar Derecha
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1 'Mirar Arriba
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x65 'Doble Exclamación (!!)
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0xFE 'Finalizar Movimientos

#org @secabrea
#raw 0x53 'Saltar en el Lugar (Mirando Arriba)
#raw 0x1B 'Esperar 4
#raw 0x53 'Saltar en el Lugar (Mirando Arriba)
#raw 0x1B 'Esperar 4
#raw 0x1E 'Paso Arriba (Rápido)
#raw 0x1E 'Paso Arriba (Rápido)
#raw 0x1F 'Paso Izquierda (Rápido)
#raw 0x1 'Mirar Arriba
#raw 0x53 'Saltar en el Lugar (Mirando Arriba)
#raw 0x1B 'Esperar 4
#raw 0x53 'Saltar en el Lugar (Mirando Arriba)
#raw 0x1B 'Esperar 4
#raw 0xFE 'Finalizar Movimientos

#org @haciaabuelo
#raw 0x13 'Paso Derecha
#raw 0x13 'Paso Derecha
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0x2 'Mirar Izquierda
#raw 0xFE 'Finalizar Movimientos

#org @haciebuelo
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x3 'Mirar Derecha
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x1B 'Esperar 4
#raw 0x13 'Paso Derecha
#raw 0x10 'Paso Abajo
#raw 0x10 'Paso Abajo
#raw 0xFE 'Finalizar Movimientos

#org @camama
#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 0x11 'Paso Arriba
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0x12 'Paso Izquierda
#raw 0xFE 'Finalizar Movimientos

Video
 
Estado
Cerrado para nuevas respuestas.
Arriba