Desarrollo de Videojuegos
|
|
Juegos de Aventuras
Rutinas avanzadas en NMP
|
|
Artículo realizado por
Carlos Sánchez.
Rutinas avanzadas en NMP (1)
Comienzo aquí una serie de artículos en los que
se incluirán rutinas avanzadas para el parser NMP, para
aquellos que ya tenéis un cierto dominio sobre él.
La seccion está completamente abierta a vuestras colaboraciones,
por lo que si tenéis rutinas especialmente útiles
creadas para este parser, o para cualquier otro de los parsers
espanoles, podéis enviarlas a mi dirección para
futuros artículos. Esperamos vuestra colaboración,
y la necesitamos, porque sin ella esta sección no puede
subsistir. Pues bien, vamos allá con el primero de estos
artículos:
Una de las cosas que suelen quedar mal en una aventura es que,
por las limitaciones del parser, muchas veces nos encontramos
con frases del tipo "Puedes ver la espada de oro macizo",
como si fuera algo que ya hemos visto muchas veces, o bien el
problema contrario, "Coges una llave", cuando lo correcto
sería "Coges la llave" para el segundo ejemplo
y "Puedes ver una espada de oro macizo" para el primero.
Veamos que la solución es facil con el parser NMP, gracias
a las secuencias de escape que podemos incluir en sus mensajes.
El proceso es el siguiente:
- Creamos la tabla de objetos de la manera habitual utilizando
los articulos "un", "una", "unos",
etc.
- Utilizamos una tabla de mensajes para crear las descripciones
de los objetos, pero con los artículos "el",
"la", "los", etc.. Para ello usamos como número
de mensaje el correspondiente al número de objeto. Por
ejemplo: usamos la tabla de mensajes 3 y el mensaje 0 de esa tabla
para el objeto 0, el mensaje 1 para el objeto 1 y así sucesivamente.
Por ejemplo:
TABLA DE OBJETOS
{0} {una llave} {llave} {1} {1} {0000000000000000}
{1} {un libro} {libro} {1} {1} {0000000000000000}
TABLA DE MENSAJES
{3,0} {la llave}
{3,1} {el libro}
Bien, ahora viene la parte de programación, que es extremadamente
simple en realidad, aunque para ello hemos de tener los conceptos
claros.
Veamos primero lo que hace la secuencia de escape '@', al ser
insertada en los mensajes:
@f1f2
f1 = nº de un flag, en hexadecimal
f2 = idem.
Pues bien, el contenido del flag f1 nos indicará el número
de mensaje que se insertará en el otro, y el flag f2 el
nº de tabla de mensajes que le corresponde. Así que
al mensaje 57, que pongamos que es "Hola @0908", suponiendo
que el flag 9 contenga un 127 y el flag 8 un 4, se le añadiría
el mensaje 127 de la tabla 4, que si suponemos que es "Pepe"
haría que la orden MESSAGE 57 mostrara el texto "Hola
Pepe". Lo que a nosotros nos interesa es cambiar los mensajes
del sistema del tipo "Coges _." (como el 7 por ejemplo)
por otros del tipo "Coges @f1f2." de tal manera que
muestren esos mensajes que hemos creado en la tabla 3.
Para ello es fundamental que nuestros flags sean los correctos
y que contengan los valores apropiados. Si nos fijamos para que
esto funcione bien, y puesto que hemos elegido la tabla 3, el
flag f2 deberá contener siempre un 3. La única forma
de hacer esto es utilizar un flag de los libres y ponerlo a 3
al inicializar el juego, para ello como sabréis basta con
lo siguiente (utilizaremos el flag 255):
PROCESO 1
-* *
AT 0
LET 255 3
NOTDONE
Bien, ya tenemos uno de nuestros flags, el que corresponde al
número de tabla, preparado; nos falta conseguir que otro
flag nos marque el número de mensaje, y ha de contener
el número del objeto referenciado por la ultima frase.
Mirad por donde ese flag ya existe, y es uno de los flags del
sistema (en concreto el 9), por lo que no tenemos que hacer nada.
Por tanto, una vez establecidos los mensajes en la tabla 3, y
una vez incluida la entrada en el proceso 1 anteriormente comentada,
nos basta con cambiar los mensajes del sistema del tipo "Coges
_." por "Coges @09FF.". Primero ponemos f1, que
es 9, y luego f2 que es FF (255 en hexadecimal, para otros flags
utilizar la opción Hex del menu Utilidad de NMP).
Bien, eso es todo por hoy, si queréis saber más
o queréis colaborar con rutinas, comentarios, mejoras de
las mismas rutinas o simplemente queréis preguntar alguna
duda podéis contactar conmigo.
Carlos Sánchez
csanchez@temple.subred.org
Nota: la direccion e-mail especificada es un tanto especial, y
no admite attach de ficheros, por tanto no los mandéis,
porque no llegaran correctamente, limitaos a texto. También
podéis localizarme a traves de la red Fidonet, en la dirección
2:341/136.39
ÚLTIMA REVISIÓN EN FEBRERO DE 1999
DESARROLLO DE VIDEOJUEGOS
|
|