Registrarse

[RH - Scripting] Escuela de Scripts ~ Segunda clase

Estado
Cerrado para nuevas respuestas.

fm~

Llámame FM.
[align=center]Escuela de Scripts ~ Por -FM[/align]


Temario:

1- DYNAMIC, offset, #org, comandos generales.
2- msgbox (comandos de diálogo)
3- applymovement (movimientos de los minis)
4- givepokemon / giveegg (dar pokemon / dar huevo)
5- wildbattle (batalla salvaje contra un pokemon)
6- trainerbattle (batalla contra entrenadores)
7- Flags
8- Scripts de nivel
8- Scripts de Gatillo
9- Variables
10- Puntos Shiny

BlackCobalion
Sanq
Guerrero de luz
Taicer
RIAN
alexiva
fabian9819
Black2
klonoz
Baster

Bueno, la primera lección será más teórica que práctica, voy a enseñar algunos conceptos acerca de los scripts y los fundamentos que usted necesita saber acerca de ella.

1. En primer lugar, configurar el mapa de A-Map a trabajar con XSE.

A. Abrimos A-Map, vamos a "Opciones" y clic en "Choose Script Editor"


B. Buscamos a XSE y le damos dos clics, o "Abrir".


C. Les saltará una ventanita, clic "No"

D. iListo! A-Map ya estás configurado a trabajar con XSE.

iPero este no es el fin!

2. Resta actualizar a XSE. iA trabajo!

A. Abrimos XSE y clic en "Ayuda" ~ "Actualizar" ~ "Comprobar ahora".


B. Se nos abrirá una ventanita. Le damos a "Siguiente", hasta XSE conectarse a Internet y descargar la actualización:


C. Cuando termine, aparecerá una pantalla, solo damos clic a "Finalizar".

iPor fin, nuestra clase!

Aburrido pero importante. :dodgy:

En primero, lo que és un script?
Baro Escreveu: dijo:
Cualquier videojuego actual, es como una película interactiva y por lo tanto tiene un guión. Pero al referirnos a la interactividad, el guión de cada evento cobra más importancia porque dependerá de las demás acciones, si ya se han ejecutado para, sobretodo, conseguir coherencia en la historia. Además muchas de esas acciones deberán ser ejecutadas una sola vez, por lo que la cosa se complica.
Todo script está en algún lugar, una dirección... Esta dirección és nomeada 'offset'. En una ROM, hay muchos offsets, sean vacíos u ocupados por cualquier script, sprite, etc. O offset también puede ser llamado de "pointer" Todo script comienza como:

#org 0x1E8022

En el ejemplo, 0x1E8022 és el offset donde lo script está. Antes, era necesario sustituir a un offset, o encontrar uno que sea vacío, para que el script sea hecho. Pero, después de la actualización de XSE, un comando muy sencillo se añadió: el comando 'DYNAMIC'. Con este comando, no es necessário especificar el offset, sólo tiene que escrebir #DYNAMIC, para que este busque un offset libre donde "escribir" nuestro script, siendo así, un offset dinámico. Cuando especificamos el offset, el és un offset preestablecido(no recomendado).

Alumno:Profesor, como se escribe el comando DYNAMIC?

El comando #DYNAMIC debe siempre estar en el comenzo del script, seguido de 0x[nº dependiendo de con qué Rom trabajemos]. Este nº és:

Rubí: 0x800000
Fire Red: 0x6B0000
Emerald: 0xE3CF64

Ejemplo:

#DYNAMIC 0x800000

~ Hemos llegado al final de la primera clase, y la primera tarea es entregarme una tabla por MP siguiendo este modelo.
Plazo: 6 de Agosto, sábado.

¿Qué es un offset?:
Un offset puede ser llamado de:
¿Cuál es la función del comando #DYNAMIC?:
¿Donde se debe aplicar el comando #DYNAMIC?:
¿Qué tipo de offset se recomienda su uso?:
Sanq dijo:
¿Qué es un offset?: Es el lugar donde se encuentra un script.
Un offset puede ser llamado de: Pointer
¿Cuál es la función del comando #DYNAMIC?:Tiene la función de encontrar un script vació
¿Donde se debe aplicar el comando #DYNAMIC?: al comienzo del script
¿Qué tipo de offset se recomienda su uso?: el offset dinámico
Excelente, 10.

klonoz dijo:
¿Qué es un offset?:Es la dirección de un scrip.
Un offset puede ser llamado de: pointer.
¿Cuál es la función del comando #DYNAMIC?:buscar un offset que no este ocupado.
¿Donde se debe aplicar el comando #DYNAMIC?:en el comienzo del scrip segido de 0x6B0000 (en mi caso ruby).
¿Qué tipo de offset se recomienda su uso?:eek:ffster dinamico.
Muy bién, 9,0 ~ En rubí el nº és 0x800000

Baster dijo:
¿Qué es un offset?:es el lugar o la direccion en el cual se encuentra el script

Un offset puede ser llamado de: pointer

¿Cuál es la función del comando #DYNAMIC?:este comando sirve para localizar un offset libre en el cual podamos colocar nuestro script

¿Donde se debe aplicar el comando #DYNAMIC?: al inicio de nuestro script

¿Qué tipo de offset se recomienda su uso?: es recomendable usar un offset dinamico a uno preestablecido
Excelente, 10.

Taicer dijo:
¿Qué es un offset?: Pues, creo que viene siendo una especia de carpeta para colocar sprite, script, etc..

Un offset puede ser llamado de: Pointer

¿Cuál es la función del comando #DYNAMIC?: Buscar un offset libre donde "colocar" el script

¿Donde se debe aplicar el comando #DYNAMIC?: Debe de aplicarse al comienzo del script seguido de 0x[nº dependiendo del room

¿Qué tipo de offset se recomienda su uso?: offset dinámico
Muy bueno, 9,0 ~ Uno offset no es una carpeta, como de archivos, pero como una dirección, por ejemplo, como sería la dirección de una casa.

alexiva dijo:
¿Qué es un offset?: es la dirrecion donde se aloja el script a, sprite... se pueden encotrar varios offset puden estar vaciuos o ocupados ya en pocas palabras es la direccion de alojamiento de un script o sprite entre otros
Un offset puede ser llamado de: poiter
¿Cuál es la función del comando #DYNAMIC?: su funcion es buscar on offset vacio donde podremos escribir nuestro script
¿Donde se debe aplicar el comando #DYNAMIC?: siempre debe estar al comienzo del script
¿Qué tipo de offset se recomienda su uso?: se recomienda el uso de uno vacio ya que modificar uno hecho puede ocasionar errores ( expriencia propia)
Excelente, 10

Guerrero de luz dijo:
¿Qué es un offset?: Un offset es una dirección dentro del ROM en la que se localiza un script o un sprite.
Un offset puede ser llamado de: pointer.
¿Cuál es la función del comando #DYNAMIC?: Su función es localizar un offset vacío en el que colocar el script.
¿Donde se debe aplicar el comando #DYNAMIC?: Al comienzo del script.
¿Qué tipo de offset se recomienda su uso?: Offset dinámico.
Excelente, 10

BlackCobalion dijo:
¿Qué es un offset?:
Es el lugar o dirección en donde se encuentra ubicado el Script.

Un offset puede ser llamado de:
También se le puede llamar “pointer”.

¿Cuál es la función del comando #DYNAMIC?:
Ubicar un offset “libre” en donde se pueda escribir el script.

¿Donde se debe aplicar el comando #DYNAMIC?:
En la primera linea del script, y se debe escribir #DYNAMIC 0x mas el nuemro del rom en el que se trabaje.

¿Qué tipo de offset se recomienda su uso?: No entendí esta pregunta.
1.- No se recomienda especificar offset (offset preestablecido)
2.- Es mejor utilizar el comando #DYNAMIC
Excelente, 10 ~ El offset que tiene su uso recomendado es el offset dinamico, entendeste bien la clase.
iHola alumnos! Llegamos a la segunda clase, entonce, comenzemos:

Clase 2 ~ msgbox

Como en la clase pasada, havia olvidadome de hablar sobre los comandos generales, comenzemos con ellos:

Alumno:Pero, prof, ¿cuáles son los comandos generales?

Son ellos: faceplayer, lock, lockall, release, releaseall, end

faceplayer: Cuando hablas con alguiém, no se convierta para usted, ¿para que posa hablar? Para esto sirve el comando faceplayer. Vean:

#DYNAMIC 0x800000 [Ya aprendemos este comando en la clase pasada]

#org @inicio [Este es un offset dinamico]
faceplayer [Este comando hace que cuando hablas con un mini, el conviertase a usted, para que posa hablar]

Simples, ¿no? Ahora, hablaremos sobre el comando lock.

lock: Gracias a este comando sencillo y muy importante, el mini no puede se mover, el es paralisado. Imagínese, cuando hablas con alguiém en el juego, fose posible moverse aúnque el otro estivesse estaba hablando con usted. Muy confuso, ¿no? Para eso serve el comando lock. Vea como utilizarlo:

#DYNAMIC 0x800000 [Este comando ya aprendemos en la clase pasada]

#org @inicio ['@inicio' es un offset dinamico]
faceplayer [Convierte el otro mini a usted, para que posan hablar]
lock [Paraliza el movimiento del prota, siendo imposible moverse aúnque hablas con alguiém]

También un comando muy sencillo.

lockall: Cuando utilizas el comando lock, tu mini no puede moverse, pero, los otros minis en el mapa, continuam libres. lockall sirve para paralizar el movimiento de TODOS los minis del mapa. Ni necesita un ejemplo :D

release: Después del comando lock,¿el mini estará paralizado hasta la eternidad? Creo que no es lo que quieres :D
Utiliza release para liberar el movimiento del mini prota. Ejemplo:

#DYNAMIC 0x800000 [¿Es necessario explicar nuevamente? '¬¬]

#org @inicio ['']
faceplayer
lock
release [Aquí, tu movimiento es liberado]

releaseall: Sirve como release, pero, si has utilizado lockall, utilizas ello para liberar los movimientos del todo mapa. También no es necesario un ejemplo :)

end :furia:Este es el comando más estupendamente difícil :furia:, vea con un ejemplo:

#DYNAMIC 0x800000

#org @inicio
faceplayer
lock
release
end [Simplemente, acaba el script :)]

Vamos hablar sobre msgbox

El comando msgbox es una mensaje, como ya dice el nombre :blush:

Despues de tantas palabras, una carita para cativarlos: :awesome:. Listo, ahora volvemos a clase.

El msgbox es como una mensaje, un discurso, una citación, una pregunta, etc. Es utilizado muy facilmente:

#DYNAMIC 0x800000

#org @inicio
faceplayer
lock
msgbox @mensaje1 [¿Porque utilizé @mensaje1? Porque es el offset dinamico del msgbox. No olviden, :OMG:imsgbox también lleva offset!:OMG:]
release
end

Añadimos una mensaje a nuestro script, pero necesitamos editarla. Despues de terminado el cabezal del script, necesitase editar los otros offsets, allá de @inicio.

#DYNAMIC 0x800000

#org @inicio
faceplayer
lock
msgbox @mensaje1 0x6 [*~ El offset dinamico no puede ser escrito por separado, :OMG: ino deben levar espacio! :OMG:]
release
end

Alumno: ¿Prof, que es 0x6?

Simples, existem muchos tipos, del 0x0 hasta 0x6. Es el tipo de mensaje, siendo ellos:

Cheve_X dijo:
MSG_OBTAIN 0x0 [Mensaje de "Has obtenido...", reproduce el sonido que se escucha cuando nos dan un item]

MSG_FIND 0x1 [Mensaje de "Has encontrado...", reproduce el sonido que se escucha cuando encontramos un objeto]

MSG_FACE 0x2 [Mensaje de "Habla" es un mensaje común y corriente mas un "faceplayer" que se ejecuta automáticamente]

MSG_SIGN 0x3 [Mensaje de una placa, ejemplo, una placa en lo camino dieber ser 0x3]

MSG_KEEPOPEN 0x4 [Hace que el diálogo quede abierto hasta que agregemos el comando "closeonkeypress"]

MSG_YESNO 0x5 [Mensaje con pregunta de "si" o "No", lo desarrollaremos más adelante]

MSG_NORMAL 0x6 [Un mensaje normal, común y corriente, similar al 0x2 (o MSG_FACE) pero sin incluir el faceplayer]

MSG_POKENAV 0xA [Hace que nos llamen de la pokénav]
Ahora, otro concepto. Como msgbox es un offset a parte, es preciso hacerlo a parte del script principal. Así:

#org @mensaje1
= -FM és un excelente profesor y amigo.
¿No le gusta?

iPero estás mal! el cierto es:

#org @mensaje1
= 'Escribe tu mensaje aquí'

-------------------------------------------------------------------------------
#org @mensaje 1
= -FM és un excelente/nprofesor/ly amigo./pNo le gusta?

Alumno:¿Lo que son esos /n, /l, /p

/n, /l, /p sirvem como 'pasador de linea y de párrafo', vean:

/n ~ Sirve para saltar una linea.
/l ~ Tiene la miesma función de /n, pero, se ya utilizaste /n, debes utilizar /l ahora.

Además, se pueden hacer textos de color, agregando códigos en los mensajes:

Cheve_X dijo:
Hay otros códigos:

[player] ~ Nombre del personaje que el jogador he puesto.
[rival] ~ Nombre del rival

Bueno, ihemos a la tarea! :D

Tarea: Hacer una conversación entre tu personaje con otra persona de vuestra hack, tiendo colores en las conversaciones.
Plazo: 12 de Agosto

El video, puede ser subido a youtube o a imageshack, o donde quieran.
Si tienen dudas, me envían un mp o por perfil.

Saludos alumnos.

Esto es todo, iAdiós e Saludos!
 
RE: Escuela de Scripts ~ Primera clase

o_O

entendí mas o menos lo del offset


en mi tarea ya terminada te digo que entendí :blush:
 

fm~

Llámame FM.
RE: Escuela de Scripts ~ Primera clase

iHola alumnos! Foste llegado el plazo de las tareas y aquí las presento y doy nota:

Sanq dijo:
¿Qué es un offset?: Es el lugar donde se encuentra un script.
Un offset puede ser llamado de: Pointer
¿Cuál es la función del comando #DYNAMIC?:Tiene la función de encontrar un script vació
¿Donde se debe aplicar el comando #DYNAMIC?: al comienzo del script
¿Qué tipo de offset se recomienda su uso?: el offset dinámico
Excelente, 10.

klonoz dijo:
¿Qué es un offset?:Es la dirección de un scrip.
Un offset puede ser llamado de: pointer.
¿Cuál es la función del comando #DYNAMIC?:buscar un offset que no este ocupado.
¿Donde se debe aplicar el comando #DYNAMIC?:en el comienzo del scrip segido de 0x6B0000 (en mi caso ruby).
¿Qué tipo de offset se recomienda su uso?:eek:ffster dinamico.
Muy bién, 9,0 ~ En rubí el nº és 0x800000

Baster dijo:
¿Qué es un offset?:es el lugar o la direccion en el cual se encuentra el script

Un offset puede ser llamado de: pointer

¿Cuál es la función del comando #DYNAMIC?:este comando sirve para localizar un offset libre en el cual podamos colocar nuestro script

¿Donde se debe aplicar el comando #DYNAMIC?: al inicio de nuestro script

¿Qué tipo de offset se recomienda su uso?: es recomendable usar un offset dinamico a uno preestablecido
Excelente, 10.

Taicer dijo:
¿Qué es un offset?: Pues, creo que viene siendo una especia de carpeta para colocar sprite, script, etc..

Un offset puede ser llamado de: Pointer

¿Cuál es la función del comando #DYNAMIC?: Buscar un offset libre donde "colocar" el script

¿Donde se debe aplicar el comando #DYNAMIC?: Debe de aplicarse al comienzo del script seguido de 0x[nº dependiendo del room

¿Qué tipo de offset se recomienda su uso?: offset dinámico
Muy bueno, 9,0 ~ Uno offset no es una carpeta, como de archivos, pero como una dirección, por ejemplo, como sería la dirección de una casa.

alexiva dijo:
¿Qué es un offset?: es la dirrecion donde se aloja el script a, sprite... se pueden encotrar varios offset puden estar vaciuos o ocupados ya en pocas palabras es la direccion de alojamiento de un script o sprite entre otros
Un offset puede ser llamado de: poiter
¿Cuál es la función del comando #DYNAMIC?: su funcion es buscar on offset vacio donde podremos escribir nuestro script
¿Donde se debe aplicar el comando #DYNAMIC?: siempre debe estar al comienzo del script
¿Qué tipo de offset se recomienda su uso?: se recomienda el uso de uno vacio ya que modificar uno hecho puede ocasionar errores ( expriencia propia)
Excelente, 10

Guerrero de luz dijo:
¿Qué es un offset?: Un offset es una dirección dentro del ROM en la que se localiza un script o un sprite.
Un offset puede ser llamado de: pointer.
¿Cuál es la función del comando #DYNAMIC?: Su función es localizar un offset vacío en el que colocar el script.
¿Donde se debe aplicar el comando #DYNAMIC?: Al comienzo del script.
¿Qué tipo de offset se recomienda su uso?: Offset dinámico.
Excelente, 10

BlackCobalion dijo:
¿Qué es un offset?:
Es el lugar o dirección en donde se encuentra ubicado el Script.

Un offset puede ser llamado de:
También se le puede llamar “pointer”.

¿Cuál es la función del comando #DYNAMIC?:
Ubicar un offset “libre” en donde se pueda escribir el script.

¿Donde se debe aplicar el comando #DYNAMIC?:
En la primera linea del script, y se debe escribir #DYNAMIC 0x mas el nuemro del rom en el que se trabaje.

¿Qué tipo de offset se recomienda su uso?: No entendí esta pregunta.
1.- No se recomienda especificar offset (offset preestablecido)
2.- Es mejor utilizar el comando #DYNAMIC
Excelente, 10 ~ El offset que tiene su uso recomendado es el offset dinamico, entendeste bien la clase.

* ~ RIAN, Black2 y fabian 9819 no entregaran sus tareas en el plazo estabelecido, y tomaron una advertencia. Si no entregan la siguiente tarea será expulsado de la escuela.
*² ~ Kaliser se foé del foro por un tiempo indeterminado, pero no me avisaste, y por esto, foste baneado de la escuela.


EDIT: Kaliser estás de vuelva a escuela, por motivos personales, él havia fuera, pero, volveó y foé acepto.

Enhorabuena para los alumnos que entregaron tus tareas en día, me gusta mucho este comportamiento. :blush:

La proxima clase será ensenada Domingo, a lo sumo, de lunes. '¬¬
Saludos alumnos y perdoanme por el atraso de la clase, no se repitirás. :)
 

fm~

Llámame FM.
RE: Escuela de Scripts ~ Notas de la primera tarea

iHola alumnos! Llegamos a la segunda clase, entonce, comenzemos:

Clase 2 ~ msgbox

Como en la clase pasada, havia olvidadome de hablar sobre los comandos generales, comenzemos con ellos:

Alumno:Pero, prof, ¿cuáles son los comandos generales?

Son ellos: faceplayer, lock, lockall, release, releaseall, end

faceplayer: Cuando hablas con alguiém, no se convierta para usted, ¿para que posa hablar? Para esto sirve el comando faceplayer. Vean:

#DYNAMIC 0x800000 [Ya aprendemos este comando en la clase pasada]

#org @inicio [Este es un offset dinamico]
faceplayer [Este comando hace que cuando hablas con un mini, el conviertase a usted, para que posa hablar]

Simples, ¿no? Ahora, hablaremos sobre el comando lock.

lock: Gracias a este comando sencillo y muy importante, el mini no puede se mover, el es paralisado. Imagínese, cuando hablas con alguiém en el juego, fose posible moverse aúnque el otro estivesse estaba hablando con usted. Muy confuso, ¿no? Para eso serve el comando lock. Vea como utilizarlo:

#DYNAMIC 0x800000 [Este comando ya aprendemos en la clase pasada]

#org @inicio ['@inicio' es un offset dinamico]
faceplayer [Convierte el otro mini a usted, para que posan hablar]
lock [Paraliza el movimiento del prota, siendo imposible moverse aúnque hablas con alguiém]

También un comando muy sencillo.

lockall: Cuando utilizas el comando lock, tu mini no puede moverse, pero, los otros minis en el mapa, continuam libres. lockall sirve para paralizar el movimiento de TODOS los minis del mapa. Ni necesita un ejemplo :D

release: Después del comando lock,¿el mini estará paralizado hasta la eternidad? Creo que no es lo que quieres :D
Utiliza release para liberar el movimiento del mini prota. Ejemplo:

#DYNAMIC 0x800000 [¿Es necessario explicar nuevamente? '¬¬]

#org @inicio ['']
faceplayer
lock
release [Aquí, tu movimiento es liberado]

releaseall: Sirve como release, pero, si has utilizado lockall, utilizas ello para liberar los movimientos del todo mapa. También no es necesario un ejemplo :)

end :furia:Este es el comando más estupendamente difícil :furia:, vea con un ejemplo:

#DYNAMIC 0x800000

#org @inicio
faceplayer
lock
release
end [Simplemente, acaba el script :)]

Vamos hablar sobre msgbox

El comando msgbox es una mensaje, como ya dice el nombre :blush:

Despues de tantas palabras, una carita para cativarlos: :awesome:. Listo, ahora volvemos a clase.

El msgbox es como una mensaje, un discurso, una citación, una pregunta, etc. Es utilizado muy facilmente:

#DYNAMIC 0x800000

#org @inicio
faceplayer
lock
msgbox @mensaje1 [¿Porque utilizé @mensaje1? Porque es el offset dinamico del msgbox. No olviden, :OMG:imsgbox también lleva offset!:OMG:]
release
end

Añadimos una mensaje a nuestro script, pero necesitamos editarla. Despues de terminado el cabezal del script, necesitase editar los otros offsets, allá de @inicio.

#DYNAMIC 0x800000

#org @inicio
faceplayer
lock
msgbox @mensaje1 0x6 [*~ El offset dinamico no puede ser escrito por separado, :OMG: ino deben levar espacio! :OMG:]
release
end

Alumno: ¿Prof, que es 0x6?

Simples, existem muchos tipos, del 0x0 hasta 0x6. Es el tipo de mensaje, siendo ellos:

Cheve_X dijo:
MSG_OBTAIN 0x0 [Mensaje de "Has obtenido...", reproduce el sonido que se escucha cuando nos dan un item]

MSG_FIND 0x1 [Mensaje de "Has encontrado...", reproduce el sonido que se escucha cuando encontramos un objeto]

MSG_FACE 0x2 [Mensaje de "Habla" es un mensaje común y corriente mas un "faceplayer" que se ejecuta automáticamente]

MSG_SIGN 0x3 [Mensaje de una placa, ejemplo, una placa en lo camino dieber ser 0x3]

MSG_KEEPOPEN 0x4 [Hace que el diálogo quede abierto hasta que agregemos el comando "closeonkeypress"]

MSG_YESNO 0x5 [Mensaje con pregunta de "si" o "No", lo desarrollaremos más adelante]

MSG_NORMAL 0x6 [Un mensaje normal, común y corriente, similar al 0x2 (o MSG_FACE) pero sin incluir el faceplayer]

MSG_POKENAV 0xA [Hace que nos llamen de la pokénav]
Ahora, otro concepto. Como msgbox es un offset a parte, es preciso hacerlo a parte del script principal. Así:

#org @mensaje1
= -FM és un excelente profesor y amigo.
¿No le gusta?

iPero estás mal! el cierto es:

#org @mensaje1
= 'Escribe tu mensaje aquí'

-------------------------------------------------------------------------------
#org @mensaje 1
= -FM és un excelente/nprofesor/ly amigo./pNo le gusta?

Alumno:¿Lo que son esos /n, /l, /p

/n, /l, /p sirvem como 'pasador de linea y de párrafo', vean:

/n ~ Sirve para saltar una linea.
/l ~ Tiene la miesma función de /n, pero, se ya utilizaste /n, debes utilizar /l ahora.

Además, se pueden hacer textos de color, agregando códigos en los mensajes:

Cheve_X dijo:
Hay otros códigos:

[player] ~ Nombre del personaje que el jogador he puesto.
[rival] ~ Nombre del rival

Bueno, ihemos a la tarea! :D

Tarea: Hacer una conversación entre tu personaje con otra persona de vuestra hack, tiendo colores en las conversaciones.
Plazo: 12 de Agosto

El video, puede ser subido a youtube o a imageshack, o donde quieran.
Si tienen dudas, me envían un mp o por perfil.

Saludos alumnos.
 

fm~

Llámame FM.
Hola alumnos, vengo informalos que por motivos personales me voy del foro por unos días, ficaré en un lugar sin internet, no poderé conectarme al mundo, ni a ustedes :mad:

Pero, volveré a postear en 21 de agosto, hasta el plazo, pueden hacer nuevos scripts, para subir nota. Hasta la vista, "babies" ... :D
 
Estado
Cerrado para nuevas respuestas.
Arriba