CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 12 Dic 2017 20:51

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 3 mensajes ] 
Autor Mensaje
 Asunto: Camino Cerrado
NotaPublicado: 20 Mar 2014 07:47 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
Buenas, suelto aquí la duda que comenté ayer noche por IRC. Se me hizo un poco tarde y tuve que marchar.

Tengo dos habitaciones (A y B), donde sólo se puede pasar de una otra "entrando", y sólo en un sentido, de A->>B.
En Puck he creado una relación estructural de A a B, y con los campos: Dirección estándar <nada> y en comandos personalizados "dentro".

En el código beforeExit de la habítación A:

Código:
void beforeExit ( Mobile aCreature , Path path )
{
    //no puedes entrar hasta que paso cerrado sea false
    if ( path.equals( path.matchExitCommand("dentro") ) ) {
        mobile("jugador").write("\n\nAQUI\n\n");
        if ( get(self, "pasoCerrado" ) ) {
                mobile("jugador").writeDenial("Las llamas te impiden ir por ese camino.\n");
                end();
               } 
     }
   
}


Cuando tecleo el comando ">>entrar", pasa de la habitación A a la B, estando la propiedad pasoCerrado a true.
Como se ve en el código inserté una línea de control: mobile("jugador").write("\n\nAQUI\n\n"); que nunca se me llega a imprimir.

He estado usando el mismo código, pero con más caminos, en otras estancias y funciona perfecto, por ejemplo, en otra estancia tengo;

Código:
void beforeExit ( Mobile aCreature , Path path )
{
    //no puedes salir de la habitación hasta que pasoCerrado==false
    if ( path.equals( self.getExit ( true , Path.WEST ) ) ||  path.matchExitCommand("dentro") ) {
        if ( get(self, "pasoCerrado" ) ) {
                mobile("jugador").write("Te impiden el paso.\n");
                end();
               } 
     }
   
}


Que funciona perfectamente. La única diferencia con la otra estancia es el campo dirección estándar en puck, que una habitación está relleno con "Oeste" (dónde funciona), y en la otra estancia "<nada>" (dónde no funciona).

He probado y colocando en dirección estándar un camino "sur", funciona. Pero el tema es que sólo quiero que funcione entrar. Debo capturar en el parseCommand de la habitación "A", "sur" y caparlo;

Código:
//EN EL parseCommando de la habitación A
if (equals(verb, "ir") && args.contains("sur")) {
         mobile("jugador").writeDenial("Las llamas te impiden ir por ese camino.\n");
         end();
}


No sé si esta será la solución más elegante, pero es lo único que se me ha ocurrido.

_________________
Te quiero... lo siento Yoda sólo tenemos café.


Arriba
 Perfil  
 
NotaPublicado: 20 Mar 2014 17:08 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5274
Ubicación: Coruña
Es que el primer código tiene un despiste.

Pones:

Código:
path.equals( path.matchExitCommand("dentro") )


donde supongo que quieres decir simplemente

Código:
path.matchExitCommand("dentro")


ya que lo primero sería comparar un Path con un booleano (lo cual siempre va a dar false, claro).

Compara con el segundo código que pones donde usas el matchExitCommand directamente como una de las condiciones del if, no lo comparas mediante equals.

_________________
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: 20 Mar 2014 22:13 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
Buff, menudo despiste el mío... sorry.

Ya me funciona como quería, Gracias!

_________________
Te quiero... lo siento Yoda sólo tenemos café.


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 3 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