Herramientas de usuario

Herramientas del sitio


descripciones_y_nombres_dinamicos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
descripciones_y_nombres_dinamicos [2010/12/29 16:24]
al-khwarizmi Más sobre descripciones dinámicas
descripciones_y_nombres_dinamicos [2011/11/21 22:54] (actual)
al-khwarizmi
Línea 18: Línea 18:
   * Adicionalmente,​ en estos campos de condición tenemos una variable especial ''​viewer''​ que podemos utilizar para referirnos al jugador o criatura que está mirando aquello que describimos. Esto se puede usar, por ejemplo, en los ejemplos de aplicación que proponíamos antes para mostrar diferentes descripciones a un jugador según su humor o según sus conocimientos sobre la entidad. ​   * Adicionalmente,​ en estos campos de condición tenemos una variable especial ''​viewer''​ que podemos utilizar para referirnos al jugador o criatura que está mirando aquello que describimos. Esto se puede usar, por ejemplo, en los ejemplos de aplicación que proponíamos antes para mostrar diferentes descripciones a un jugador según su humor o según sus conocimientos sobre la entidad. ​
  
-Así, posibles condiciones podrían ser:+Así, ejemplos de posibles condiciones podrían ser:
  
 ''​get(self,"​oxidada"​)''​ -> esta descripción es sólo para si la cosa que describimos (una espada, por ejemplo) está oxidada. ''​get(self,"​oxidada"​)''​ -> esta descripción es sólo para si la cosa que describimos (una espada, por ejemplo) está oxidada.
 +
 ''​!get(self,"​oxidada"​)''​ -> lo contrario, se muestra sólo si la espada no está oxidada. ''​!get(self,"​oxidada"​)''​ -> lo contrario, se muestra sólo si la espada no está oxidada.
 +
 ''​get(viewer,"​conoce",​self)''​ -> descripción que se muestra sólo si el jugador que está mirando al personaje que describimos ya lo conoce (hecho descrito por una relación "​conoce"​). ''​get(viewer,"​conoce",​self)''​ -> descripción que se muestra sólo si el jugador que está mirando al personaje que describimos ya lo conoce (hecho descrito por una relación "​conoce"​).
 +
 ''​get(viewer,"​humor"​) > 5''​ -> mostrar esa descripción sólo si el humor del jugador que mira es mayor que 5 (si hemos definido el humor como una propiedad de tipo int que toma valores de 0 a 10, por ejemplo, esto sería una descripción que sólo se ve si estás de buen humor). ''​get(viewer,"​humor"​) > 5''​ -> mostrar esa descripción sólo si el humor del jugador que mira es mayor que 5 (si hemos definido el humor como una propiedad de tipo int que toma valores de 0 a 10, por ejemplo, esto sería una descripción que sólo se ve si estás de buen humor).
  
-Cuando un jugador mire la entidad cuya descripción dinámica hemos definido de esta manera, la descripción que se mostrará al jugador será la concatenación de todas aquellas descripciones de la lista cuyas condiciones asociadas se cumplan. Nótese que esto quiere decir que podemos construir descripciones dinámicas "a trozos",​ dividiéndolas en partes con distintas condiciones.+Cuando un jugador mire la entidad cuya descripción dinámica hemos definido de esta manera, la descripción que se mostrará al jugador será la concatenación de todas aquellas descripciones de la lista cuyas condiciones asociadas se cumplan. Nótese que esto quiere decir que podemos construir descripciones dinámicas "a trozos",​ dividiéndolas en partes con distintas condiciones. Un ejemplo de esto sería el siguiente, en una habitación:​ 
 + 
 +Condición: en blanco ("​siempre"​),​ descripción:​ Te encuentras en una habitación de hotel. 
 + 
 +Condición: ''​get(self,"​luzEncendida"​)'',​ descripción:​ Es una habitación pequeña y sencilla: sólo tiene una cama, un armario y una pequeña mesilla de noche. 
 + 
 +Condición: ''​!get(self,"​luzEncendida"​)'',​ descripción:​ La luz está apagada, y la escasa luz de las farolas que entra desde la ventana apenas te deja intuir la silueta de una cama. 
 + 
 +Condición: ''​( get(self,"​luzEncendida"​) && get(viewer,"​humor"​) > 5 )'',​ descripción:​ En una de las paredes hay un cuadro de dudoso gusto que muestra un hombre a caballo. 
 + 
 +Condición: ''​( get(self,"​luzEncendida"​) && get(viewer,"​humor"​) <= 5 )'',​ descripción:​ En una de las paredes hay un cuadro de un hombre a caballo, tan horriblemente pintado que dan ganas de tirarlo por la ventana. 
 + 
 +Así, is por ejemplo la luz estuviera encendida y el humor del jugador fuese 2, se le mostraría esta descripción de la habitación:​ 
 + 
 +''​Te encuentras en una habitación de hotel. Es una habitación pequeña y sencilla: sólo tiene una cama, un armario y una pequeña mesilla de noche. En una de las paredes hay un cuadro de un hombre a caballo, tan horriblemente pintado que dan ganas de tirarlo por la ventana.''​ 
 + 
 +Mientras que si la luz estuviese apagada, se mostraría 
 + 
 +''​Te encuentras en una habitación de hotel. La luz está apagada, y la escasa luz de las farolas que entra desde la ventana apenas te deja intuir la silueta de una cama.''​ 
 + 
 +=== Nombres dinámicos === 
 + 
 +El mismo mecanismo que hemos explicado para las descripciones de habitaciones,​ cosas y criaturas se aplica también a los nombres singulares y plurales para mostrar de las cosas y criaturas. Las características que deben cumplir las condiciones en este caso son las mismas que para las descripciones,​ incluida la posibilidad de utilizar la variable especial ''​viewer''​.
  
 +Hay, sin embargo, una diferencia: los nombres dinámicos que se muestran a los jugadores no se construyen "a trozos"​ como las descripciones,​ ya que eso no tendría mucha utilidad, sino que simplemente se muestra el primer nombre cuya condición se cumpla. Si hay más de un nombre cuya condición se cumple, el resto se ignorarán.
  
 +También es interesante saber que si no se cumple la condición de //ninguno// de los nombres para mostrar de una cosa o criatura, esa cosa o criatura será "​invisible"​ en el sentido de que no aparecerá por defecto en la descripción de la localidad o inventario en la que se encuentra. Esta característica se puede utilizar para hacer que una cosa o criatura sea invisible en estas descripciones,​ bien sea siempre, o bien en ciertas circunstancias. Nótese que una cosa o criatura que se encuentra en esta situación sigue pudiéndose mirar mediante "mirar cosa", e interactuar con ella mediante comandos en general, mientras tenga algún nombre de referencia por el cual el jugador se pueda referir a ella.
descripciones_y_nombres_dinamicos.1293636252.txt.gz · Última modificación: 2010/12/29 16:24 por al-khwarizmi