CAAD
https://foro.caad.es/

verbos tipo META y antes[;
https://foro.caad.es/viewtopic.php?f=12&t=1433
Página 1 de 1

Autor:  jarel [ 13 Ene 2007 16:40 ]
Asunto:  verbos tipo META y antes[;

Resulta que tengo esto en la gramática:

Código:
 Verb meta 'salidas' 'exits'
    *                                   -> Salidas;
  Extend only 'x//' first
    *                                   -> Salidas;


'salidas' y 'exits' es un verbo de tipo meta, en cambio 'x', al ser una extensión de examinar, funciona como comando salidas pero sin meta, es decir, consume turno de juego.

El caso es que acabo de descubrir una diferencia importante:
Si en una localidad tengo algo como esto:
Código:
lugar lacuevadelcoco "cueva"
with
...
antes[;
salidas: "Ahora mismo no ves ninguna salida";
],

Si escribo:
>>X
Ahora mismo no ves ninguna salida.

...Bien, pero si escribo:
>>SALIDAS
Salidas: norte, abajo...

Entonces el parser utiliza la rutina salidas por defecto ignorando completamente mi Antes.

¿Cómo puedo hacer para que sin dejar de ser un verbo tipo meta (no quiero que el comando 'salidas' consuma turno) tenga en cuenta el antes que defino en la localización?

Y otra pregunta, ¿cómo hago que 'x//' no siendo META cuando funciona como examinar, sí lo sea cuando funciona como comando salidas?

Gracias

Autor:  Nombre En Blanco [ 13 Ene 2007 18:27 ]
Asunto:  Re: verbos tipo META y antes[;

Como has podido comprobar, los verbos "meta" son "inmunes" al ANTES, lo que producía el graciosos efecto de que el ANTES te funcionaba al teclear "x" (no lo considera meta) pero no al usar "salidas" (si lo considera como tal) a pesar de estar invocando una misma acción.

Trepanemos un poquito, interceptemos la acción en algún lugar adecuado y demosle un pequeño "pinchazo" al parser. Seguramente esto se puede hacer de otras maneras o metiendo mano en otra parte, pero a mi esto me ha funcionado bien y parece (nunca pongamos la mano en el fuego con eso) que no trastoca otras cosas

Código:
[RutinaPreJuego;
   if (accion==##Salidas) meta=1;
   rfalse;
];


En principio parece que con esto la acción salidas sienpre va a ser meta y siempre será debidamente pillada por los ANTES. La cosa era poner la variable global META a 1 si la acción ha sido debidamente interpretada como "Salidas" con independencia del verbo concreto usado. Ojito con no poner el rfalse, que se pifiaría todo (pero todo, todo... XDD)

Editaaaaando :o : Y no te olvides de quitar el meta de la gramatica del verbo salidas dejandolo como debía estar (copiado de Gramatica.h versión 030305):

Código:
ifdef ADMITIR_COMANDO_SALIDAS;
! A partir de la revisión [021025] el verbo Salidas ya no es metaverbo.

  Verb 'salidas' 'exits'
    *                                   -> Salidas;
  Extend only 'x//' first
    *                                   -> Salidas;
endif;  ! ADMITIR_COMANDO_SALIDAS

Autor:  jarel [ 13 Ene 2007 19:35 ]
Asunto:  Re: verbos tipo META y antes[;

Muchas gracias RML. Has fulminado dos problemas con una sola bala. ;D

Autor:  sarganar [ 15 Ene 2007 00:14 ]
Asunto: 

notable RML,

por cierto, para una mayor 'inteligencia aparente' del parser:
Código:
ifdef ADMITIR_COMANDO_SALIDAS;
! A partir de la revisión [021025] el verbo Salidas ya no es metaverbo.

  Verb 'salidas' 'exits'
    *                                   -> Salidas;
  Extend only 'x//' first
    *                                   -> Salidas;
VerboIrregular "mostrar las salidas" with imperativo 'salidas';

endif;  ! ADMITIR_COMANDO_SALIDAS


ese VerboIrregular del final pule un poquitin la cosa.

Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/