CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 16 Jul 2020 05:59

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 3 mensajes ] 
Autor Mensaje
 Asunto: target en mundo
NotaPublicado: 14 Nov 2010 17:44 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Estoy intentando comparar el target de una frase con la localidad del personaje principal. Mi intención es que cuando el jugador escriba "ir al corredor" estando en el corredor reciba una respuesta acorde a la situación y no la negación que por defecto tiene el juego.

El caso es que no consigo ni que la frase sea parseada por ese parseCommad, y recibo una y otra vez la contestación por defecto del sistema.

Código:
     aCreature.write("Desde mundo "+verb+" "+target+"\n");
     if( (equals(verb,"ir")) && (equals(aCreature.getRoom().getTitle(),target) )  )
     {
         aCreature.write("Ya te encuentras ahí.\n");
         end();
     }       


Lo que más me mosquea es que no se imprime el "Desde el mundo.." ¿?

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 14 Nov 2010 17:56 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Tengo una sensación de dèja vu, creo que esto ya ha salido antes alguna vez :D

El tema es que las habitaciones no son objetos a los que el jugador se pueda referir por defecto en AGE. No tienen nombres de referencia.

Cuando AGE analiza una oración para localizar a qué entidades se ha referido el jugador (entidades que son luego las que te aparecen en el parámetro "target" de los parseCommand), esa búsqueda no incluye habitaciones, sólo cosas y personajes que estén al alcance del jugador.

La solución más sencilla para implementar lo que tú quieres sería mirar directamente el parámetro args del parseCommand que no tiene entidades, algo como esto:

Código:
/*en el mundo*/
void parseCommand( Mobile aCreature , String verb , String args )
{
   if( (equals(verb,"ir")) && args.contains(aCreature.getRoom().getTitle())  )
     {
         aCreature.write("Ya te encuentras ahí.\n");
         end();
     }       
}

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 14 Nov 2010 18:13 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:

La solución más sencilla para implementar lo que tú quieres sería mirar directamente el parámetro args del parseCommand que no tiene entidades, algo como esto:

Código:
/*en el mundo*/
void parseCommand( Mobile aCreature , String verb , String args )
{
   if( (equals(verb,"ir")) && args.contains(aCreature.getRoom().getTitle())  )
     {
         aCreature.write("Ya te encuentras ahí.\n");
         end();
     }       
}




Si ya se habló del tema, lo había olvidado por completo. :oops:
Y sí, esa es la solución que había implementado, si bien no había conseguido hacerlo funcionar en el parseCommad de un solo objeto, por las razones que ahora sé.
Espero que no se me vuelva a olvidar. :)

Gracias

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 3 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 4 invitados


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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM