NMP : RUTINAS AVANZADAS

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:

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


[Indice]