CAAD
http://foro.caad.es/

Objetos wereables y más asuntos sobre PSis.
http://foro.caad.es/viewtopic.php?f=31&t=3112
Página 1 de 1

Autor:  jenesis [ 22 May 2009 09:05 ]
Asunto:  Objetos wereables y más asuntos sobre PSis.

Quiero que en un momento dado uno de los psis, se ponga una prenda y ahora mismo no se me ocurre cómo.
Se me ocurre cómo pasar el objeto al inventario del Psi, pero no cómo conseguir que salga como que lo lleva puesto... :roll:

¿Cómo puedo conseguir ese efecto?

Un saludo y gracias.
Jenesis

(Editado para cambiar el asunto. )

Autor:  Al-Khwarizmi [ 22 May 2009 10:34 ]
Asunto: 

La manera "bonita" sería usando el método

boolean wear ( Item item )

que te comentaba en la página 42 del macro-hilo; pero aún no lo he puesto como público. Lo puedo hacer en un momento, sin embargo. Con esto ya obtendrías el mensaje de "X se pone Y", etc.

Si lo quieres hacer a mano, sin mensajes por defecto ni nada, simplemente se trataría de fijar la relación "wears" entre un miembro del PSI y la prenda.

Autor:  jenesis [ 22 May 2009 10:52 ]
Asunto: 

Al-Khwarizmi escribió:
La manera "bonita" sería usando el método

boolean wear ( Item item )

que te comentaba en la página 42 del macro-hilo; pero aún no lo he puesto como público. Lo puedo hacer en un momento, sin embargo. Con esto ya obtendrías el mensaje de "X se pone Y", etc.

Si lo quieres hacer a mano, sin mensajes por defecto ni nada, simplemente se trataría de fijar la relación "wears" entre un miembro del PSI y la prenda.


Yo quería que el protagonista fuera testigo de cómo el psi se pone la corona, que tiene más fuerza dramática, y además queda guapo que la corona que hasta ese momento estaba en mesa, pase a estar en la cabeza del rey.
Es que es uno de los momentos más estelares de la aventura, cuando se descubre quién es el rey. :D

Pero no tengo prisa, ya lo apunto en el TODO, por ahora me basta con hacer desaparecer la corona de la habitación. :)

Un saludo y gracias.

Autor:  jenesis [ 22 May 2009 11:05 ]
Asunto: 

Repasando ese hilo, he encontrado esto:

Código:
void onEnterRoom ( Mobile b )
{
...
}


Eso genera que el psi reaccione cuando otra criatura entra en la habitación en la que él se encuentra.

Pero los informáticos tenéis la manía de hablar con variables en vez de hablar con ejemplos y no es lo más claro para el resto de los mortales. ;)

¿Qué tal si cambiamos esos puntos suspensivos por un ejemplo práctico? :)

También me gustaría saber cómo hacer lo contrario, o sea, que el psi reaccione cuando entre a una habitación en la que se encuentra el protagonista.

Un saludo y gracias.

Autor:  Al-Khwarizmi [ 22 May 2009 11:47 ]
Asunto: 

jenesis escribió:
Repasando ese hilo, he encontrado esto:

Código:
void onEnterRoom ( Mobile b )
{
...
}


Eso genera que el psi reaccione cuando otra criatura entra en la habitación en la que él se encuentra.

Pero los informáticos tenéis la manía de hablar con variables en vez de hablar con ejemplos y no es lo más claro para el resto de los mortales. ;)

¿Qué tal si cambiamos esos puntos suspensivos por un ejemplo práctico? :)[/code]

Bueno, la única variable aquí es la que representa cuál es el la criatura con la que te has "encontrado". Pero va un ejemplo:

Código:
void onEnterRoom ( Mobile b )
{
       if ( !b.getRelationshipPropertyValueAsBoolean(self,"conoce") )
       {
       self.say("Hola, y bienvenido a mi tienda. Aquí puedes comprar las mejores espadas de la comarca.\n");
       }
       else
       {
       self.say("Bienvenido de vuelta, siempre es un placer verte de nuevo por aquí.\n");
       }
       b.setRelationshipProperty(self,"conoce",true);
}



jenesis escribió:
También me gustaría saber cómo hacer lo contrario, o sea, que el psi reaccione cuando entre a una habitación en la que se encuentra el protagonista.

Un saludo y gracias.


Puedes usar el mismo evento, que también se ejecuta para la misma criatura. Quiero decir que, cuando un PSI Manolito entra en una habitación, los otros PSI's que haya en la habitación ejecutan el onEnterRoom, pero Manolito también lo ejecuta (recibiéndose como parámetro a sí mismo). Luego, lo de si en la habitación está el protagonista, ya lo tendrías que comprobar con un if.

Código:
void onEnterRoom ( Mobile b )
{
       if ( self.equals(b) ) //me he movido yo
       {
          if ( self.getRoom().hasMobile(world.getMobile("jugador") )
          {
               //hemos entrado en la habitación donde está el jugador,
               //aquí haremos lo que haya que hacer. 
          }
       }
}

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