Canal de Noticias del equipo INFSP y asuntos técnicos relacionados

viernes, 16 de julio de 2010

I7 - Cambiando los mensajes por defecto

Los mensajes por defecto del parser...ahh ese texto con que una aventura nos daba la sensación de entender (casi) todo lo tipeado en el prompt. Pero solo se trata de una explicación educada de que "el autor no se le dio la pegada gana de considerar la accion que intentas hacer y por ello te pongo el mensaje por defecto de la libreria". Tendrá sus detractores, pero aun así me resulta agradable que exista.

Inform 7 heredó de I6 la mayoria de los mensajes por defecto para muchas de las acciones que soporta y la extensión Spanish heredó los textos de informATE. Pero, como un apologista martilló una vez, tu aventura debe tener TUS mensajes por defecto, imprimiendo tu sello creativo aun en ese resquicio del juego.

¿Cómo cambiar un mensaje por defecto de la librería?
Veamos un método
Debes saber de qué acción se trata primero.
Para ello, desde el panel Game (es decir, ya has compilado tu juego) debes intentar la accion en cuestión.
Pero antes ejecuta el comando-debug  ACTIONS.


>actions
Actions listing on.


>canta
[singing]
Cantas fatal.
[singing - failed the block singing rule]



Ok, se trata de la accion singing (en nuestro ejemplo)
Aplica entonces la regla Instead en tu codigo y listo:

Instead of singing, say "I got the feeling..... ".

Bravo, ya tienes tu nuevo texto cada vez que cantas.
Pero yo quiero que muestre un texto distinto cada vez.
Ok, Vamos a usar una tabla de mensajes para ello, y una instruccion en el bloque de la regla Instead para que  elija un texto diferente cada vez:


Instead of singing:
 choose a random row in the Table of Msg Sing; 
say "[msg entry][line break]".




Table of Msg Sing
msg
"Oid mortales el grito sagrado....."
"Aqui hay amor, amor, amor, amor...."
"I got a feeling..."
"Sueños que son dolooooooor..."
"No voy en tren, voy en avión..."
"No, mejor no."

(puede ser que si copias y pegas no se copien correctamentes las tabulaciones, ten en cuenta eso)
En el panel Index>Actions verás los nombres de todas las acciones que soporta la libreria Inform, más las que agreguen las extensiones que hayas incluido.

También tienes acceso a las variables I7 que utilizan algunos mensajes, como noun y second noun;que hacen referencias al Objeto1 y Objeto2 asociados a la acción (algunas acciones solo tienen objeto1, como cerrar, otras -como cantar- ninguno). Hay otras variables más que podríamos analizar en otra ocación. Las tienes en la pestaña Index>Contens, seccion List of named values.



Para otros tipos de mensajes, como los mensajes de error del parser, puedes usar la Actividad printing a parser error:

Rule for printing a parser error when the latest parser error is the I beg your pardon error: 
    say "Cómo dices? Habla de una vez!" instead. 
  
Lo anterior reemplaza el >>Perdon? cuando le das intro al prompt sin decir nada.
Consulta la ayuda en Chapter 17 Activities: 17.33. Printing a parser error
Tienes 19 tipos diferentes de mensajes errores para modificar. Cada tipo de error lo pondrás despues del when...

Si husmeas en libro de recetas de la ayuda de I7 (The Inform Recipe Book) seccion 6.16. Alternate Default Messages, encontrarás en un ejemplo otra forma sencilla de alterar algunos mensajes.

¿Cómo cambio muchos mensajes por defecto de un tirón?
Una técnica muy chula es utilizando tablas.
Ah...las tablas resuelven muchas cosas. Ordenan los datos, convierten unidades, resuelven partidas de ajedrez, etc.

Con Inform 7 puedes usar una tabla para colocar los mensajes de manera ordenada.
Pero primero debes bajar e instalar la extension que te permite hacer eso (ya que de fábrica no tiene esa capacidad de poder alterar mensajes mediante tablas).
Te recomiendo la Default Messages by Ron Newcomb; una extension sencilla y compacta; con una documentacion breve que exlica la manera de usarla.

Veamos un ejemplo:

Include Spanish by Sebastian Arg.
Include Default Messages by Ron Newcomb.


Use library message alerts.


The Garden is a room.
A mapa is here.




Table of custom library messages (continued)
library-action library-message-id library-message-text
singing action 1         "La, la, la!!!!"
-- 30 "Lo qué?"



Qué tenemos aqui?
Use library message alerts: Una option use provista por la extension. Imaginalo como un switch que habilita algunas cositas que hará la extension. En este caso, te dirá el library-message-id de la accion asociada que la libreria dispará por defecto. Esto lo necesitas para saber indicar en la tabla qué mensaje vas a reemplazar.
Las acciones normalmente tienen solo un mensaje para mostrar (usaras un library-message-id de 1). Pero hay acciones que tienen varios mensajes, dependiendo del resultado de dicha accion. Por ejemplo, la accion opening tiene 7 mensajes diferentes, dependiendo de si la accion fracasó o tuvo éxito.
Hay una accion interna que Inform genera cuando debe mostrar mensajes de error del parser, mensajes ante algunos metacommandos, o algunos mensajes de librería no relacionados con acción alguna. Se le llama la library message.

Por ejemplo, el fastidioso "No veo eso que dices." corresponde a la library message #30.
Ok, con la opcion library message alerts activada, sabremos los datos para completar la tabla de reemmplazo de mensajes.

> COJE EL MAPA
{ taking action #1 }


Cojido.


> COJE LA LINTERNA
{ library message #30 }


"No veo eso que dices."

Lo que ves entre {} es a lo que me refiero. Esos {avisos} desaparecen en la version final del juego o al efectivamente reemplazarlos en la Tabla. Son solo debugstrativos.

Table of custom library messages: La tabla de reemplazo de mensajes propiemante dicha. Tiene 3 columnas. En la primera pones el nombre de la accion, en la segunda el numero de mensaje a reemplazar (1 si es una accion con un solo mensaje) y en la ulima pones el texto del mensaje que usará tu aventura. Asi que cada FILA de la tabla se usará para cada mensaje que quieras reemlazar. Un tip: si la accion que reemplazas es la library message, solo pon "--" en la columna library-action y el parser te entenderá.


Tamien aqui tienes un puñado de variables que puedes utilizar en el texto de tus mensajes, que se explican en la ayuda de la extension.


Si quieres comentar este articulo, me parece que lo mejor sea en el foro del CAAD, porque la edicion de comentarios de blogspot es bastante cutre.

No hay comentarios:

Etiquetas

>>Buscar en este blog

>>Foro