CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 20 Oct 2017 20:45

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 4 mensajes ] 
Autor Mensaje
NotaPublicado: 10 Oct 2015 03:57 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 13 Sep 2015 18:42
Mensajes: 114
Estoy tratando de hacer que el parser pida un código (alfanumérico) cuando utilizo un objeto y en función del mismo haga una acción en el juego. Tras una charla con n-n en la que me mostró un poco del código de BYOD he deducido que la mejor forma de tratar esto en i7 es utilizando tablas y he probado algunas cosas que me han funcionado parcialmente, pero sin llegar a conseguir del todo lo que me propongo.

No quiero hacer spoilers de mi propia aventura, así que para poder explicar lo que pretendo voy a suponer la aplicación de esto en... por ejemplo una caja fuerte:

Código:
>abrir caja fuerte

Escribe el código:
>87B391

*Click*


Pongamos que detrás de esto habría un código con una tabla tal que así:

Código:
Table of caja fuerte
 Topic   Action
"87B391"   open


Y en un instead cogería el texto introducido, lo compararía con la tabla y aplicaría la acción, pero esta es la parte que (por el momento) se me escapa.

También puede que haya una forma más sencilla que no haya tenido en cuenta, pero vistas las opciones hasta ahora creo que es la que mejor se adapta a lo que trato de hacer (no se si me estaré metiendo en camisa de once varas...)

Muchas gracias!


Arriba
 Perfil  
 
NotaPublicado: 10 Oct 2015 09:03 
Desconectado
Yiepp
Yiepp

Registrado: 26 Jul 2015 17:18
Mensajes: 62
Si el código tiene ese formato (un solo topic de longitud <=9 y sin espacios) yo no pondría un prompt específico para introducirlo, porque supone crear un caso especial en el parser y rechazar el comando.

Puedes crear una acción typing con formato "teclear [text] en [thing]" o similar.

En la regla carry out pondrías el caso en el que fallas, dirías "no pasa nada" y podrías incrementar un contador de intentos, por ejemplo.

Y luego, en una regla "Instead of typing a topic listed in the Table of caja fuerte", pones los casos relevantes. Si la tabla tiene una sola fila la abrirías directamente (reiniciando el contador de errores), pero si tuvieras el típico " código de coacción", que abre la caja avisando en secreto a la policía, tendrías que validar el "action entry" de la fila dentro del bloque, si es open, say "*Click*", y en el else, el resto de la lógica.


Arriba
 Perfil  
 
NotaPublicado: 10 Oct 2015 13:09 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 13 Sep 2015 18:42
Mensajes: 114
Gracias de nuevo n-n.

Hasta ahora, lo más semejante que encuentro a lo que busco lo he visto en este post de infiction: http://www.intfiction.org/forum/viewtopic.php?f=7&t=2578&p=17786#p17786

Voy a intentar hacerlo de las dos maneras, a ver cual de ellas me parece finalmente más correcta para lo que busco. De entrada por el momento lo que te decía en #caad, las tablas en i7 me parecen un recurso tremendamente malo cuya utilización prefiero desechar siempre que me sea posible, pero bueno, todo es ponerse y verle las posibilidades, a lo mejor al tiempo de familiarizarse con ello ya no resulta tan odioso.


Arriba
 Perfil  
 
NotaPublicado: 11 Oct 2015 12:55 
Desconectado
Yiepp
Yiepp

Registrado: 26 Jul 2015 17:18
Mensajes: 62
Mira, una pequeña prueba que he hecho, sin tablas:

Código:
"La caja" (in Spanish)

When play begins:
   say "Trepas el muro exterior del chalet y... no pasa nada. Tu contacto dentro de la casa ha desactivado la alarma. Las luces están apagadas y el silencio es total. Cruzas rápidamente el jardín y entras por la ventana del despacho, donde te espera la caja fuerte.".
   
El Despacho is a room. The description is "El despacho del testaferro ocupa la esquina noroeste del chalet.".

La linterna is a thing. It is carried.

La caja fuerte is a thing. "Puedes ver la caja fuerte que te ha traído hasta aquí.". The description is "Está incrustada en la pared. La puerta es una superficie de metal con acabado mate y un teclado en el centro.". Understand "caja" or "puerta" or "teclado" as la caja fuerte. It is in el Despacho.

Typing on is an action applying to one visible thing and one topic. Understand "teclear en [thing] [text]" or "teclea en [thing] [text]" as typing on. Understand "teclear [text] en [thing]" or "teclea [text] en [thing]" as typing on (with nouns reversed).


Carry out typing on something that is not la caja fuerte:
   say "Tamborileas con los dedos sobre [the noun] durante unos segundos.".


Carry out typing on la caja fuerte:
   if the topic understood matches "C44DR00LZ":
      say "*Click*[paragraph break]";
   else:
      say "No pasa nada.".

   
Test me with "teclear 123 en linterna/ teclear en caja 123/ teclear C44DR00LZ en caja"


Resultado:
Citar:
>test me
(Testing.)

>[1] teclear 123 en linterna
Tamborileas con los dedos sobre la linterna durante unos segundos.

>[2] teclear en caja 123
No pasa nada.

>[3] teclear c44dr00lz en caja
*Click*



Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 4 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM