Matias Biato escribió:
¿Cómo elimino la gramática de un comando que contiene más de una palabra?
Ayuda.
Mati!
El problema de los sinonimos de acciones.
Liberar una accion de todas su lineas de gramatica es una caracteristica futura (
planificada) de I7.
Lo que tu buscas probablemente se refiere a la caracteristica ´Extend .... replace´ en la gestion de gramatica a nivel I6.
Pero yo no he visto su par a nivel I7.
Lo unico que tienes en la capa I7 son los ´Understand the command......as something new.´ Pero esto quita (en la mayoria de los casos) la primera palabra que dispara la gramatica.
Lo veras claro con este ejemplo:
En tu historia compilada, escribe (en el panel Game del IDE) `SHOWVERB pon` (sin comillas)
Código:
>showverb pon
Verb 'coloca' 'echa' 'inserta' 'mete' 'pon'
* multiexcept 'en' noun=Routine(-26334) -> Insert
* multiexcept 'en' / 'sobre' noun -> PutOn
* 'cerrojo' / 'pestillo' / 'cierre' 'a' noun -> Lock
* multiexcept 'dentro' 'de' noun -> Insert
* multiexcept 'encima' 'de' noun -> PutOn
* 'a' creature 'en' noun=Routine(-26328) -> Insert
* 'el' 'cerrojo' / 'pestillo' / 'cierre' 'a' noun -> Lock
* 'a' creature 'en' noun -> PutOn
* 'a' creature 'sobre' noun -> PutOn
* 'cerrojo' / 'pestillo' / 'cierre' 'a' noun 'con' held -> Lock
* 'a' creature 'dentro' 'de' noun -> Insert
* 'a' creature 'encima' 'de' noun -> PutOn
* 'el' 'cerrojo' / 'pestillo' / 'cierre' 'a' noun 'con' held -> Lock
* noun 'a' topic -> SetTo
Lo que ves es cómo realmente entiende la gramatica el motor inform, es decir codigo I6 antes de alimentar al compilador (sabrás que el codigo I7 primero se traduce a I6 antes de compilarse). Por curiosidad puedes ver el codigo I6 completo de tu historia en MisDocumentos\Inform\Projects\MiHistoria.inform\Build\auto.inf. Alli van a parar todas las extensiones usadas + la Libreria Inform + el Source de tu historia.
Volvamos a lo nuestro:
La primera linea:
Código:
Verb 'coloca' 'echa' 'inserta' 'mete' 'pon'
Constituye los disparadores de las lineas de gramatica, que en realidad en la filosofia inform está ocupando el lugar del ´verbo que dispara la accion´ (modelo de interfaz <verbo> <parametros extras> de entrada de comandos del jugador),
el resto de las lineas completa la gramatica para cada accion.
Esta primera linea contiene tambien los verbos sinonimos entre sí y luego vendrían las ramificaciones a cada accion en particular.
La accion I7 'locking it with' corresponde a la accion I6 `Lock´.
El codigo I7 ´Understand the command......as something new.´ solo quita el verbo (primera linea),pero, como bien puntualizas, eso lo destierra de todas las acciones posibles codificadas.
Cuando se realizó la extension Spanish eso no importó mucho, pues ningun verbo inglés era usado en ninguna acción hispana (salvo un par de debugging).
Tienes dos caminos:
1- I7: Quita los verbos y reconstruye los efectos colateralesCódigo:
Understand the command "pon", "coloca","inserta", "mete","echa" as something new.
Y luego vuelve a insertar las lineas de gramatica de Spanish relacionadas con Insert (Inserting it into ),PutOn (Putting it on ) y SetTo (Setting it to ).
Esto deja el camino limpio para tu nuevo 'locking it with'
Con el comando de debug ShowVerb puedes ver las acciones afectadas al verbo en cuestion, y puedes complemetar esto con una busqueda rapida en la pestaña Index\Actions.
2- I6: Introduce codigo I6 que extirpe específicamente las lineas de gramatica que deseas.Tienes buenos ejemplos
aqui y
aqui.
Transplantar una linea compleja de gramatica sería una buena característica futura. Podrias plantearla en el foro
uservoice de I7.
Espero haberte ayudado y no liado. ya me contarás.