CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 22 Oct 2017 16:22

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 9 mensajes ] 
Autor Mensaje
 Asunto: Duda en Paws
NotaPublicado: 25 Dic 2014 15:30 
Desconectado
Yiepp
Yiepp

Registrado: 26 Feb 2007 01:46
Mensajes: 86
Buenas!!!

Estoy terminando una aventurilla con Paws,y uno de los problemas que tengo es:
Cómo se hace que al llegar a cierta localidad,tras hacer varios inputs,aparezca un personaje(está creado como un objeto),te diga una frase,hagas varios inputs más,y si no haces lo correcto,te elimine?
Lo he estado probando,pero solo me sale el personaje cuando describo la localidad,y usando el condacto CHANCE,pero lo que quiero es que aparezca al hacer varios inputs.Y que por supuesto,desaparezca cuando haga lo correcto,por ejemplo darle algo.

Entiendo que por inputs es escribir cualquier cosa.

Gracias


Arriba
 Perfil  
 
NotaPublicado: 25 Dic 2014 20:29 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
Asumiendo que esa localidad es la 10, que el objeto/personaje es el 20, y que tenemos el flag 200y 201 libres:

En el proceso 1:

Código:
* *
 AT 10
 CLEAR 200


En el proceso 2:

Código:
* *
 AT 10
 PLUS 10 1

* *
 AT 10
 EQ 10 3
 CREATE 20             
 MESSAGE x            (el primer mensaje, "aparece fulano y dice que bla bla bla")

* *
 AT 10
 EQ 10 6
 MESSAGE y              ( el segundo mensaje, "fulano dice que tal y cual")

* *
 AT 10
 EQ 10 7
 ZERO 201
 MESSAGE z                 (el último mensaje "fulano te fulmina")
 END



En la tabla de respuestas:

Código:
DAR LOQUESEA            (lo que sea que haya que hacer para no morir)
 PREP A
 NOUN2 FULANO
 AT 10
 PRESENT 20
 ZERO 201
 SET 201           
 MESSAGE a                     ("das lo que sea a fulano y se queda tranquilo")
 DONE



Explicado:

1) Usamos el flag 200 como una especie de contador de turnos, y el flag 201 para marcar cuando el jugador ha hecho ya lo que sea que haya que hacer para no morir.

2) Cuando entramos en la localidad se ejecuta el proceso 1, ponemos el contador del flag 200 a 0. Si no quieres que el contador se reinicie cada vez que el jugador entra, te puedes ahorrar esa parte.

3) En el proceso 2 (que se ejecuta a cada turno, o dicho de otro modo, a cada input) sumamos uno al flag 200, siempre. Luego comprobamos el valor cada vez y dependiendo del valor ponemos uno u otro mensaje. El último (el de la muerte) solo ocurre si llegamos al turno 7, y además no hemos hecho lo que sea que haya que hacer para evitar dicha muerte (y por tanto el flag 201 a 0). Si no quiere que ningún mensaje se muestre si el jugador ya ha hecho lo que sea que haya que hacer, añade el "ZERO 201" a todas las demás entradas de ese proceso 2 que comprueban el flag 200.

En el fondo lo importante es comprender bien como funcionan proceso 1 (ejecutado una vez después de cada descripción de localidad) y proceso 2 (ejecutado una vez por turno)

Espero que sea de ayuda.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 25 Dic 2014 22:12 
Desconectado
Yiepp
Yiepp

Registrado: 26 Feb 2007 01:46
Mensajes: 86
Muchas gracias,Uto :D


Arriba
 Perfil  
 
NotaPublicado: 05 Oct 2016 07:47 
Desconectado
Elfito
Elfito

Registrado: 17 Ago 2010 18:27
Mensajes: 24
Perdon por retomar un hilo antiguo pero hay una solución más eficaz.

Usad las banderas de la 5 a la 8. Esas banderas decrementan 1 con cada turno aunque inicialmente esten a 0. Esto quiere decir que si la bandera 5 tuviese por ejemplo un valor de 20, con cada input (o timeout) decrementaria en 1 hasta quedarse en 0.

Saludos.


Arriba
 Perfil  
 
NotaPublicado: 05 Oct 2016 10:42 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 889
miguel escribió:
Perdon por retomar un hilo antiguo pero hay una solución más eficaz.

Usad las banderas de la 5 a la 8. Esas banderas decrementan 1 con cada turno aunque inicialmente esten a 0. Esto quiere decir que si la bandera 5 tuviese por ejemplo un valor de 20, con cada input (o timeout) decrementaria en 1 hasta quedarse en 0.

Saludos.


Pero en la solución de Uto el cambio del contador es dependiente de que el jugador esté en una localización dada.


Arriba
 Perfil  
 
NotaPublicado: 05 Oct 2016 17:51 
Desconectado
Elfito
Elfito

Registrado: 17 Ago 2010 18:27
Mensajes: 24
Sip, pero se puede ahorrar 1 bandera si usa una autodecreciente. Tambien ahorramos 'codigo' que si usas PAW en 8Bits esos ahorros de memoria son muy ricos. De hecho ahora que leo bien el codigo de Uto (que creo que es una buena manera de hacerlo ojo), ha errado al usar la bandera 10 en vez de la 200 que es la que lleva el contador, en teoria.

Saludos.


Arriba
 Perfil  
 
NotaPublicado: 05 Oct 2016 17:57 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
miguel escribió:
Sip, pero se puede ahorrar 1 bandera si usa una autodecreciente. Tambien ahorramos 'codigo' que si usas PAW en 8Bits esos ahorros de memoria son muy ricos. De hecho ahora que leo bien el codigo de Uto (que creo que es una buena manera de hacerlo ojo), ha errado al usar la bandera 10 en vez de la 200 que es la que lleva el contador, en teoria.

Saludos.


No se puede. Se podría si no se hubiera puesto el requisito de que los inputs tuvieran que ser en una localidad concreta. Los flags 5-8 se decrementan solos esté donde esté el jugador, por lo cual no cumplen con lo que pedía Toni. Si no se hubiera puesto esa restricción tu solución sería correcta y como bien dices ahorraría memoria.

Respecto a las comprobaciones se hacen sobre 10 en lugar de 200, tienes toda la razón, lo modifico :-)

Edito: Pues no me deja modificarlo, así que lo pego aquí modificado:


En el proceso 1:


Código:
* *
 AT 10
 CLEAR 200



En el proceso 2:


Código:
* *
 AT 10
 PLUS 200 1

* *
 AT 10
 EQ 200 3
 CREATE 20             
 MESSAGE x            (el primer mensaje, "aparece fulano y dice que bla bla bla")

* *
 AT 10
 EQ 200 6
 MESSAGE y              ( el segundo mensaje, "fulano dice que tal y cual")

* *
 AT 10
 EQ 200 7
 ZERO 201
 MESSAGE z                 (el último mensaje "fulano te fulmina")
 END



En la tabla de respuestas:


Código:
DAR LOQUESEA            (lo que sea que haya que hacer para no morir)
 PREP A
 NOUN2 FULANO
 AT 10
 PRESENT 20
 ZERO 201
 SET 201           
 MESSAGE a                     ("das lo que sea a fulano y se queda tranquilo")
 DONE

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 06 Oct 2016 16:30 
Desconectado
Elfito
Elfito

Registrado: 17 Ago 2010 18:27
Mensajes: 24
Pues mil perdones porque no me fije en lo de solo 1 localidad especifica, tonto de mi por leer a la carrera. Disculpad mi torpeza.


Arriba
 Perfil  
 
NotaPublicado: 06 Oct 2016 17:25 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
miguel escribió:
Pues mil perdones porque no me fije en lo de solo 1 localidad especifica, tonto de mi por leer a la carrera. Disculpad mi torpeza.


No hay problema hombre, aprendemos todos, y si no es por ti el código erróneo que puse se queda en el hilo para siempre :-)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 9 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:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM