CAAD
http://foro.caad.es/

Relaciónes
http://foro.caad.es/viewtopic.php?f=31&t=5625
Página 1 de 1

Autor:  edlobez [ 12 Jun 2014 12:54 ]
Asunto:  Relaciónes

Buenas, no sé exactamente que me puede estar fallando en la relaciones que he creado. Me explico.

Tengo un item ("hacha"), el cual tiene una función que inicializo después de crearse todos los objeto y personajes del world.

Código:
// Código a ejecutar cuando se inicializa el personaje
//...inicaliza los temas de conversa con este personaje
void inicializar()
{
    // Relacionamos este personaje con los objetos sobre los que les puede preguntar.
    //... el último parámetro está a true o false, dependiendo de si éste tema
    //... de conversa está activo   
    set( self, "hablaDe", mobile("herrero"), false); 
   
}


He relacionado el item ("hacha"), con el mobile("herrero").

Luego en el mobile ("herrero") tengo este código;

Código:
// Temas de conversa con esta personaje
//...es decir sobre que cosas este personaje tiene respuesta
void temasDeConversa()
{
    // La lista de todos los items y la recorremos entera   
    EntityList cosas = world.getAllItems();
    for (int i=0; i<cosas.size(); i++)
    {
        mobile("jugador").write ("Relación con : "+ cosas.get(i).getRelatedEntities("hablaDe") + "\n");
        // Si existe la relación de ese objeto, y la relación es con este personaje
        if ( equals (self, cosas.get(i).getRelatedEntities("hablaDe") ) )
        {
            mobile("jugador").write ("Hay relación.\n");
            mobile("jugador").write(cosas.get(i).getOutputNameThe() + "\n");
        }
    }
}


Es decir, si el item lo tengo relacionado con el mobile("herrero"), por la relación "hablaDe", sacaría en nombre del item, pero no me imprime nada. Esta es el resultado cuando lo ejecuto:

Spoiler: Mostrar
>>dices temas
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : [[ eu.irreality.age.Mobile:20000001:herrero ]]
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []
Relación con : []


Ha detectado la relación, del item con el mobile ("herrero"), que le imprimo con el write ("Relación con : "+ cosas.get(i).getRelatedEntities("hablaDe") + "\n");
Sin embargo no me entra en el if ( equals (self, cosas.get(i).getRelatedEntities("hablaDe") ) ).
Si justo me ha detectado la relación entre ambos, ¿qué es lo que no se cumple en éste if? ¿qué se me está escapando?

Gracias!

Autor:  dddddd [ 12 Jun 2014 13:05 ]
Asunto:  Re: Relaciónes

Respuesta rápida sin profundizar en el asunto: getRelatedEntities() devuelve una lista, así que nunca será igual al mobile("herrero"). Tendrás que comprobar el contenido.

Autor:  edlobez [ 12 Jun 2014 13:15 ]
Asunto:  Re: Relaciónes

Solucionado entonces, he modificado;

if ( cosas.get(i).getRelatedEntities("hablaDe").contains(self) )

Gracias!

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