I6 Cómo hacer

De WikiCAAD, la enciclopedia aventurera.

Una lista informal de algunas cosas que se preguntan por el foro.


Contenido

Anular pregunta de desambiguación del parser

En un caso concreto de una acción, que figura como "Seguir" en el código de abajo, pretendo saltarme la pregunta del parser en caso de empate "Cuál concretamente, el coche azul o el coche rojo?" para adjudicarle yo mismo otro objeto, desde [SeguirSub;, que quiero que se devuelva, y que no va a ser ninguno de los que estaban empatados. El caso es que no consigo deshacerme de la dichosa consulta, como mucho cambiar el texto... pero la pregunta del parser sigue ahí acechando, esperando su respuesta en el siguiente comando. ¿Alguien sabe cómo puedo anularla?

Gracias

Object LibraryMessages
with
before[;
Miscellany:
if (lm_n == 46){
!pregunta en caso de empate

!interferencia que quiero hacer
if(action_to_be==##seguir){marca=-1;rtrue;} !NO FUNCIONA!!

!!!ORIGINAL!!!print "¿Cuál concretamente, ";
!!!ORIGINAL!!!PreguntaCualExactamente=1;
!!!ORIGINAL!!!#ifndef NI_BUILD_COUNT;
!!!ORIGINAL!!!ImprimirListaDudosos("o");
!!!ORIGINAL!!!#endif;
       }
!
!...
!
[Seguirsub;
if(marca==-1) "Ha habido empate entre varios objetos...";!test
];


Respuesta

Debes interceptar al parser antes de eso: usando la rutina ChooseObjects (q pa eso está)

En inform es solo una rutina de entrada vacia. En informATE se incorpora como EligeObjetos (ChooseObjects para infsp6).

Cuando es llamado el LibraryMessages, el parser YA decidio que va a preguntarle al jugador.

Revisa el capitulo 33 del DM4: Helping the parser out of trouble, y el uso que hace de ChooseObjects. Pineso que por alli van los tiros.


Saludos!

Enlace foro

Anular el último nombre usado en I6

A veces ocurren cosas como éstas:

>>registra caja
dentro de la caja encuentras un papel
>>abrir
no es algo que pueda abrirse (el papel)

Vamos, que el parser utiliza el último nombre usado para completar la frase -creando situaciones confusas- en lugar de preguntarte "¿qué quieres abrir?"

¿Sabéis cómo se anulaba esta característica?

Gracias

Respuesta

Bueno, me autorespondo. El problema era con un verbo que no admitía en la gramática opción a aparecer sin complemento directo

verb 'xxx'
* noun -> Xxxar
* noun 'con' held -> Xxxxar;

De modo que la solución ha sido:

Extend 'xxx' first
* ->Especificar;

[EspecificarSub;
"Como no seas más concreto...";
];

De este modo ya no intenta coger el último objeto como complemento directo... para ese caso concreto de esa acción en concreto.

Aunque la pregunta sigue abierta, si hay alguna forma de que aunque el verbo necesite complemento directo, te lo pregunte si no lo escribes, y no intente apañarlo por su cuenta.

Saludos

Nota

Efectivamente, son "cosas como esas" y no exactamente "esa" ya que en un escenario como el que describes Inform intentaría abrir la caja antes que el papel. Y es que no se trata de el "último" objeto usado sino del "primero" que se encuentra.

Cuando la gramática de una acción requiere un objeto (un "uno", ya sabes) y no aparece en el input del jugador, el "instinto" (y con "instinto" quiero decir "grabado a fuego en Eparser.h y, por tanto, no fácilmente anulable") es echar un vistazo a los objetos que están al mismo nivel que el jugador en la habitación. Si hay varios y no encuentra ninguna pista que le haga "preferir" alguno, acaba preguntando al jugador lo de "¿Qué quieres... (abrir, coger examinar... lo que sea)". Si no hay ninguno, pues lo mismo. Pero si se encuentra con uno sólo frente a sus narices tiende a deducir que tiene que ser ese (por narices XDD) e intentará abrirlo, cogerlo, examinarlo... con los consiguientes mensajes de éxito o fracaso según proceda.

Que yo sepa, no hay ningún "switch" ni constante ni "botoncito" para cambiar esto, pero si eres un aventurero valiente, osado y arrojado, puedes probar a hacer que la rutina Adjudicate() de Eparse.h devuelva siempre cero. Esto equivaldría a ordenar "En estas situaciones, en caso de duda preguntar siempre".

Y luego poner una amplia y nutrida colección de velas a todos tus santos favoritos para que los efectos secundarios no sean desastrosos ^_^'

Enlace


Variables que no se guarden al grabar partida e imprimir Título

Enlace foro


Nadar en Inform

Enlace Foro

Herramientas personales