CAAD
https://foro.caad.es/

¿InformATE o INFSP6?
https://foro.caad.es/viewtopic.php?f=12&t=5143
Página 2 de 2

Autor:  tesheñes [ 05 Feb 2012 00:02 ]
Asunto:  Re: ¿InformATE o INFSP6?

baltasarq escribió:
Hola !
¿Te refieres a Inform7 o a alguna otra cosa que se me escapa?


Sip, a I7. En realidad, infsp7 existe en parte gracias a infsp6.

Autor:  Eliuk Blau [ 07 Feb 2012 20:37 ]
Asunto:  Re: ¿InformATE o INFSP6?

Sothoth:

Muchas gracias por corregir el bug tú mismo y también por haberlo identificado y reportado. Yo he estado muy ocupado estas últimas semanas, y además desconectado de la internet, por lo que se me iba a hacer muy difícil parchear la lib.

En fin, que si tienes el trabajo hecho, agradecería mucho que me mandaras los archivos corregidos, indicando, por favor, los números de lineas afectados. (archivos + info de num. lineas afectadas), para darle una mirada. En cualquier caso, confío en tu habilidad y subiré una versión con tus cambios a la brevedad, pues estaba planificando ya una gran subida de archivos, así que es buen momento de poner tu aportación.

Por favor, enviar archivos completos, no solo diffs, pues no me manejo muy bien con esas herramientas todavía y no tengo mucho tiempo para aprenderlas, de momento.

Agrega cualquier información adicional que consideres pertinente, para evitarnos preguntas (recuerda que ando offline). Manda todo a mi email, por favor. En mi firma, en este post, está.

Yo subiré la nueva versión al ftp de INFSP6 y agregaré un enlace en la wiki. Así la nueva versión corregida estará accesible y nos sirve para darle tiempo a Tesheñes, que se lo tome con calma, y pueda revisar si aprueba estos cambios y los sube todos al repo oficial en Google (que por cierto, yo tampoco conocía su existencia. xD)

Gracias por tu tiempo,
Ah, y saludos Tesheñes, hace un montón que no se te ve. ;)

Autor:  Sothoth [ 08 Feb 2012 12:28 ]
Asunto:  Re: ¿InformATE o INFSP6?

Ya te lo he mandado, Eliuk. Cualquier duda que tengas, me la comentas ;)

¡Saludos!

Sothoth

Autor:  Sothoth [ 11 Feb 2012 21:38 ]
Asunto:  Re: ¿InformATE o INFSP6?

Buenas otra vez:

Me he liado la manta a la cabeza y me he puesto a toquetear. El resultado son dos repositorios que os propongo a continuación:

  • En https://github.com/ricpelo/informlibrary611_fix podréis encontrar la librería Inform 6/11 oficial a la que he aplicado los parches de http://www.inform-fiction.org/patches/library.html
  • En https://github.com/ricpelo/infsp6_fix tenéis la librería INFSP6 con los parches anteriores aplicados (sólo algunos, los que ha sido necesario aplicar, sobre todo en las rutinas hackeadas), más otros cambios de mi propia cosecha, entre los que destacan:
    • Las correcciones aplicadas también a InformATE, como el buen uso de la partícula'del'.
    • Una versión preliminar (pero funcional) de Spanish.h con soporte para primera, segunda y tercera persona, del singular y el plural.

Probablemente haya algún que otro fallo (sobre todo en el tema de la primera, segunda y tercera persona) pero he estado trasteando bastante y parece que va bastante bien. Lo estoy usando con la versión INFSP6 de mi A·L·I·E·N y por ahora todo va como la seda, aunque me queda probar más, claro.

Espero que os sea de utilidad a vosotros también ;).

Saludos,

Sothoth

Autor:  Makinaimo [ 11 Feb 2012 22:02 ]
Asunto:  Re: ¿InformATE o INFSP6?

Sothoth escribió:
[*] Una versión preliminar (pero funcional) de Spanish.h con soporte para primera, segunda y tercera persona, del singular y el plural.


¡Ostras, qué bueno! No me había fijado en eso.

Autor:  Sothoth [ 11 Feb 2012 23:32 ]
Asunto:  Re: ¿InformATE o INFSP6?

Makinaimo escribió:
Sothoth escribió:
[*] Una versión preliminar (pero funcional) de Spanish.h con soporte para primera, segunda y tercera persona, del singular y el plural.


¡Ostras, qué bueno! No me había fijado en eso.


La idea consiste en usar la propiedad 'persona' del objeto player, de manera que si pones, por ejemplo:

Código:
player.persona = PRIMERA_PERSONA + PERSONA_PLURAL


a partir de ese momento se mostrarán los mensajes en primera persona del plural ;).

Hay que probarlo bien a fondo, pero la idea básicamente está implantada, y no parece que vaya nada mal. Lo bueno de este sistema, además, es que los mensajes pueden cambiar a lo largo de la aventura, simplemente cambiando el valor de esa propiedad.

Autor:  Makinaimo [ 12 Feb 2012 00:30 ]
Asunto:  Re: ¿InformATE o INFSP6?

¿Y se puede cambiar también el tiempo verbal? Yo tengo algo parecido implementado usando una variable global GRAMMATICAL_FLEXION y omitiendo todos los mensajes de la librería para utilizar mi propia LanguageLM():

Código:
Default   GRAMMATICAL_FLEXION = 2;
[LanguageLM n x1;
   Attack:
      switch (GRAMMATICAL_FLEXION) {
      1,2,3:   "La violencia no es la solución.";
      4,5,6:   "La violencia no era la solución.";
      }

   Blow:
      switch (GRAMMATICAL_FLEXION) {
      1:   "Mi soplido no produce ningún efecto.";
      2:   "Tu soplido no produce ningún efecto.";
      3:   "Su soplido no produce ningún efecto.";
      4:   "Mi soplido no produjo ningún efecto.";
      5:   "Tu soplido no produjo ningún efecto.";
      6:   "Su soplido no produjo ningún efecto.";
      }

   Enter:
      !!   1:   Error, el jugador ya está en/sobre el objeto.
      !!   2:   Error, el objeto al que intenta entrar/subirse el jugador no
      !!      tiene el atributo "enterable".
      !!   3:   Error, el objeto al que intenta entrar/subirse el jugador tiene
      !!      los atributos "container" y "enterable", pero está cerrado.
      !!   4:   Error, el objeto al que intenta entrar/subirse el jugador está
      !!      en poder del propio jugador.
      !!   5:   Éxito, el jugador entra/sube al objeto.
      !!   6:   Aviso, el jugador estaba en otro objeto, la lib. intentará la
      !!      acción SALIR automáticamente antes de reintentar entrar el
      !!      nuevo objeto.
      !!   7:   Aviso, el objeto al que intenta entrar/subirse el jugador está
      !!      dentro de otros objeto. La lib. intentará automáticamente meter
      !!      al jugador en el objeto desde el cual pueda acceder al que el
      !!      jugador le ha indicado.
      switch (n) {
         1:   switch (GRAMMATICAL_FLEXION) {
            1,4:   print "Ya estaba ";
            2,5:   print "Ya estabas ";
            3,6:   print "Ya estaba ";
            }
            if (x1 has supporter) print "sobre "; else print "en ";
            print_ret (the) x1, ".";
         2:   switch (GRAMMATICAL_FLEXION) {
            1:   "No es algo donde pueda entrar.";
            2:   "No es algo donde puedas entrar.";
            3:   "No es algo donde pueda entrar.";
            4:   "No era algo donde pudiese entrar.";
            5:   "No era algo donde pudieses entrar.";
            6:   "No era algo donde pudiese entrar.";
            }
         3:   switch (GRAMMATICAL_FLEXION) {
            1:   "No puedo entrar en ", (the) x1 ," porque está",
               (n) x1, " cerrad", (o) x1 ,".";
            2:   "No puedes entrar en ", (the) x1, " porque está",
               (n) x1, " cerrad", (o) x1, ".";
            3:   "No puede entrar en ", (the) x1, " porque está",
               (n) x1, " cerrad", (o) x1, ".";
            4:   "No podía entrar en ", (the) x1, " porque estaba",
               (n) x1, " cerrad", (o) x1, ".";
            5:   "No podías entrar en ", (the) x1, " porque estaba",
               (n) x1, " cerrad", (o) x1, ".";
            6:   "No podía entrar en ", (the) x1, " porque estaba",
               (n) x1, " cerrad", (o) x1, ".";
            }
         4:   switch (GRAMMATICAL_FLEXION) {
            1:   "No puedo entrar ahí mientras no lo suelte.";
            2:   "No puedes entrar ahí mientras no lo sueltes.";
            3:   "No puede entrar ahí mientras no lo suelte.";
            4:   "No podía entrar ahí mientras no lo soltase.";
            5:   "No podías entrar ahí mientras no lo soltases.";
            6:   "No podía entrar ahí mientras no lo soltase.";
            }
         5:   switch (GRAMMATICAL_FLEXION) {
            1:   if (x1 has supporter) print "Subo ", (al) x1;
               else print "Entro en ", (the) x1;
               ".";
            2:   if (x1 has supporter) print "Subes ", (al) x1;
               else print "Entras en ", (the) x1;
               ".";
            3:   if (x1 has supporter) print "Sube ", (al) x1;
               else print "Entra en ", (the) x1;
               ".";
            4:   if (x1 has supporter) print "Subí ", (al) x1;
               else print "Entré en ", (the) x1;
               ".";
            5:   if (x1 has supporter) print "Subiste ", (al) x1;
               else print "Entraste en ", (the) x1;
               ".";
            6:   if (x1 has supporter) print "Subió ", (al) x1;
               else print "Entró en ", (the) x1;
               ".";
            }
         6:   switch (GRAMMATICAL_FLEXION) {
            1:   if (x1 has supporter) print "(Me bajo ";
               else print "(Salgo ";
            2:   if (x1 has supporter) print "(Te bajas ";
               else print "(Sales ";
            3:   if (x1 has supporter) print "(Se baja ";
               else print "(Sale ";
            4:   if (x1 has supporter) print "(Me bajé ";
               else print "(Salí ";
            5:   if (x1 has supporter) print "(Te bajaste ";
               else print "(Saliste ";
            6:   if (x1 has supporter) print "(Se bajó ";
               else print "(Salió ";
            } print_ret (del) x1, ".)";
         7:   switch (GRAMMATICAL_FLEXION) {
            1:   if (x1 has supporter) "(Me subo ", (al) x1, ".)^";
               if (x1 has container) "(Me meto en ", (the) x1, ".)^";
               "(Entro en ", (the) x1, ".)^";
            2:   if (x1 has supporter) "(Te subes ", (al) x1, ".)^";
               if (x1 has container) "(Te metes en ", (the) x1, ".)^";
               "(Entras en ", (the) x1, ".)^";
            3:   if (x1 has supporter) "(Se sube ", (al) x1, ".)^";
               if (x1 has container) "(Se mete en ", (the) x1, ".)^";
               "(Entra en ", (the) x1, ".)^";
            4:   if (x1 has supporter) "(Me subí ", (al) x1, ".)^";
               if (x1 has container) "(Me metí en ", (the) x1, ".)^";
               "(Entré en ", (the) x1, ".)^";
            5:   if (x1 has supporter) "(Te subiste ", (al) x1, ".)^";
               if (x1 has container) "(Te metiste en ", (the) x1,".)^";
               "(Entraste en ", (the) x1, ".)^";
            6:   if (x1 has supporter) "(Se subió ", (al) x1, ".)^";
               if (x1 has container) "(Se metió en ", (the) x1, ".)^";
               "(Entró en ", (the) x1, ".)^";
            }
      }
[...]

Así a mitad de aventura se llama a un SetGrammaticalFlexion(5), por ejemplo, y se te imprimen los mensajes a pasado. Sospecho que es bastante chapucero y tal vez se pueda hacer de otra manera, pero funcionar, funciona.

Código:
[ SetGrammaticalFlexion gf gender;
   if ( gender == 0 ) {   !! género masculino
      switch ( gf ) {
      1:   GRAMMATICAL_FLEXION = 1;
         FORMER__TX      = "mi antiguo ~yo~";
         YOURSELF__TX   = "mi mismo";
         CANTGO__TX      = "No puedo ir por ahí.";
         IS__TX         = " hay";
         ARE__TX         = " hay";
         IS2__TX         = "hay ";
         ARE2__TX      = "hay ";
         YOU__TX         = "Yo";
         PARTICULA_TE   = "me";
      2:   GRAMMATICAL_FLEXION = 2;
         FORMER__TX      = "tu antiguo ~yo~";
         YOURSELF__TX   = "ti mismo";
         CANTGO__TX      = "No puedes ir por ahí.";
         IS__TX         = " hay";
         ARE__TX         = " hay";
         IS2__TX         = "hay ";
         ARE2__TX      = "hay ";
         YOU__TX         = "Tú";
         PARTICULA_TE   = "te";
      3:   GRAMMATICAL_FLEXION = 3;
         FORMER__TX      = "su antiguo ~yo~";
         YOURSELF__TX   = "si mismo";
         CANTGO__TX      = "No puede ir por ahí.";
         IS__TX         = " hay";
         ARE__TX         = " hay";
         IS2__TX         = "hay ";
         ARE2__TX      = "hay ";
         YOU__TX         = "Él";
         PARTICULA_TE   = "se";
      4:   GRAMMATICAL_FLEXION = 4;
         FORMER__TX      = "mi antiguo ~yo~";
         YOURSELF__TX   = "mi mismo";
         CANTGO__TX      = "No podía ir por ahí.";
         IS__TX         = " había";
         ARE__TX         = " había";
         IS2__TX         = "había ";
         ARE2__TX      = "había ";
         YOU__TX         = "Yo";
         PARTICULA_TE   = "me";
      5:   GRAMMATICAL_FLEXION = 5;
         FORMER__TX      = "tu antiguo ~yo~";
         YOURSELF__TX   = "ti mismo";
         CANTGO__TX      = "No podías ir por ahí.";
         IS__TX         = " había";
         ARE__TX         = " había";
         IS2__TX         = "había ";
         ARE2__TX      = "había ";
         YOU__TX         = "Tú";
         PARTICULA_TE   = "te";
      6:   GRAMMATICAL_FLEXION = 6;
         FORMER__TX      = "su antiguo ~yo~";
         YOURSELF__TX   = "si mismo";
         CANTGO__TX      = "No podía ir por ahí.";
         IS__TX         = " había";
         ARE__TX         = " había";
         IS2__TX         = "había ";
         ARE2__TX      = "había ";
         YOU__TX         = "Él";
         PARTICULA_TE   = "se";
         }
      } else {            !! género femenino
         switch ( gf ) {
      1:   GRAMMATICAL_FLEXION = 1;
         FORMER__TX      = "mi antigua ~yo~";
         YOURSELF__TX   = "mi misma";
         CANTGO__TX      = "No puedo ir por ahí.";
         IS__TX         = " hay";
         ARE__TX         = " hay";
         IS2__TX         = "hay ";
         ARE2__TX      = "hay ";
         YOU__TX         = "Yo";
         PARTICULA_TE   = "me";
      2:   GRAMMATICAL_FLEXION = 2;
         FORMER__TX      = "tu antigua ~yo~";
         YOURSELF__TX   = "ti misma";
         CANTGO__TX      = "No puedes ir por ahí.";
         IS__TX         = " hay";
         ARE__TX         = " hay";
         IS2__TX         = "hay ";
         ARE2__TX      = "hay ";
         YOU__TX         = "Tú";
         PARTICULA_TE   = "te";
      3:   GRAMMATICAL_FLEXION = 3;
         FORMER__TX      = "su antigua ~yo~";
         YOURSELF__TX   = "si misma";
         CANTGO__TX      = "No puede ir por ahí.";
         IS__TX         = " hay";
         ARE__TX         = " hay";
         IS2__TX         = "hay ";
         ARE2__TX      = "hay ";
         YOU__TX         = "Ella";
         PARTICULA_TE   = "se";
      4:   GRAMMATICAL_FLEXION = 4;
         FORMER__TX      = "mi antigua ~yo~";
         YOURSELF__TX   = "mi misma";
         CANTGO__TX      = "No podía ir por ahí.";
         IS__TX         = " había";
         ARE__TX         = " había";
         IS2__TX         = "había ";
         ARE2__TX      = "había ";
         YOU__TX         = "Yo";
         PARTICULA_TE   = "me";
      5:   GRAMMATICAL_FLEXION = 5;
         FORMER__TX      = "tu antigua ~yo~";
         YOURSELF__TX   = "ti misma";
         CANTGO__TX      = "No podías ir por ahí.";
         IS__TX         = " había";
         ARE__TX         = " había";
         IS2__TX         = "había ";
         ARE2__TX      = "había ";
         YOU__TX         = "Tú";
         PARTICULA_TE   = "te";
      6:   GRAMMATICAL_FLEXION = 6;
         FORMER__TX      = "su antigua ~yo~";
         YOURSELF__TX   = "si misma";
         CANTGO__TX      = "No podía ir por ahí.";
         IS__TX         = " había";
         ARE__TX         = " había";
         IS2__TX         = "había ";
         ARE2__TX      = "había ";
         YOU__TX         = "Ella";
         PARTICULA_TE   = "se";
      }
   }
];

Autor:  Sothoth [ 12 Feb 2012 00:39 ]
Asunto:  Re: ¿InformATE o INFSP6?

¡Qué buena pinta tiene eso! Pues no, por ahora sólo he tenido en cuenta la persona, singulares y plurales, pero eso que comentas de usar tiempos verbales distintos suena genial :). A ver si entre todos buscamos una solución que combine ambas técnicas ;).

Autor:  Al-Khwarizmi [ 12 Feb 2012 09:56 ]
Asunto:  Re: ¿InformATE o INFSP6?

Aunque igual no os importa mucho, a título informativo, la palabra "flexión" en sentido gramatical se dice en inglés "inflection".

Autor:  Makinaimo [ 12 Feb 2012 13:35 ]
Asunto:  Re: ¿InformATE o INFSP6?

:) GRAMMATICAL_INFLECTION pues. Cambiado.
Gracias por el apunte Al-k.

Autor:  Eliuk Blau [ 19 Feb 2012 00:44 ]
Asunto:  Re: ¿InformATE o INFSP6?

Yo tenía escrito por ahí un hack para cambiar el tiempo verbal y la persona de TODOS los mensajes por defecto de la librería. Y se podía cambiar de un tiempo y persona a otros, en runtime. Aunque claro, le hacían falta testeos y cosas así, pensando sobre todo en la cantidad de mensajes editados a mano para toda la librería.

Pero funcionaba. Revisaré entre mis cosas. Mi solución hacía uso del mecanismo de reemplazo de mensajes en Spanish.h, que yo mismo implanté en INFSP6 hace un par de años atrás. Así que podríamos decir que es "estándar".

Por cierto, Sothoth, esos repos están de la pinta. :D Voy a utilizarlos para el kit de INFSP6 para Linux que lanzaré en los próximos días. Ya casi está terminado. Así que supongo que servirá para hacerle testeo a todos tus cambios (tanto de Lib. 6/11 como de INFSP6). Si pasan la prueba del tiempo (;)), pues entonces creo que podríamos pasarlos a la repos oficiales. [y a la web principal] :) ¿Qué te parece?

Enhorabuena!

P.S: Como ando offline, agradecería una enormidad que me pudieras explicar con un poquito de detalle en un mail todos los cambios aplicados a Lib 6/11 y a INFSP6 (sólo para tenerlos en mi mente). Cuando tengas algo de tiempo... :)

Autor:  saimazoom [ 19 Feb 2012 07:04 ]
Asunto:  Re: ¿InformATE o INFSP6?

Lo del cambio de persona en tiempo real lo tenéis en los fuentes del TC: Msg1P2P3P.h pero claro es para informate :)

Autor:  Sothoth [ 02 Mar 2012 12:46 ]
Asunto:  Re: ¿InformATE o INFSP6?

Eliuk Blau escribió:
Por cierto, Sothoth, esos repos están de la pinta. :D Voy a utilizarlos para el kit de INFSP6 para Linux que lanzaré en los próximos días. Ya casi está terminado. Así que supongo que servirá para hacerle testeo a todos tus cambios (tanto de Lib. 6/11 como de INFSP6). Si pasan la prueba del tiempo (;)), pues entonces creo que podríamos pasarlos a la repos oficiales. [y a la web principal] :) ¿Qué te parece?

Enhorabuena!

P.S: Como ando offline, agradecería una enormidad que me pudieras explicar con un poquito de detalle en un mail todos los cambios aplicados a Lib 6/11 y a INFSP6 (sólo para tenerlos en mi mente). Cuando tengas algo de tiempo... :)


¡Vaya! Se me había pasado este mensaje totalmente, y no me he dado cuenta hasta ahora. Lo siento, Eliuk :( .

Por supuesto, puedes usar mis repositorios como quieras, que para eso están, y de hecho seguro que así se pillan más bugs y se pueden depurar mejor :). En cuanto a los cambios que he hecho a la 6/11 y a INFSP6... ¡uf! Pues son unos pocos, y la verdad es que no los tengo documentados, más allá de los mensajes de los commit que he ido generando con git. Te recomiendo que mires el historial de cambios en ambos repositorios, y así podrás comprobar en qué consisten dichos cambios y qué líneas se ven afectadas en cada uno de ellos:

https://github.com/ricpelo/informlibrar ... ts/master/
https://github.com/ricpelo/infsp6_fix/commits/master/

Espero que te sirva ;)

¡Saludos!

Sothoth

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