CAAD
http://foro.caad.es/

Superglús: Cómo remover el inventario
http://foro.caad.es/viewtopic.php?f=6&t=6159
Página 1 de 1

Autor:  El testigo [ 31 Ene 2017 20:40 ]
Asunto:  Superglús: Cómo remover el inventario

Saludos. Espero que todo vaya bien.
En el juego de Adán y Eva hay un momento que necesito vaciar el inventario independientemente de lo que el jugador haya cogido.

- Es decir, el jugador irá agarrando X objetos.
- Llegará a X pregunta que al contestarla será puesto en X sitio del mapa.
- Al ser un punto en el mapa completamente distinto a donde estaba, requiero que todos los objetos que tenga en su inventario (solo llevados 254) le sean removidos.

El problema es cómo saber qué y cuántos objetos puede estar cargando en ese justo momento para poder quitárselos.
Me despido agradeciendo de antemanos la ayuda.

Autor:  Uto [ 01 Feb 2017 09:56 ]
Asunto:  Re: Superglús: Cómo remover el inventario

El testigo escribió:
Saludos. Espero que todo vaya bien.
En el juego de Adán y Eva hay un momento que necesito vaciar el inventario independientemente de lo que el jugador haya cogido.

- Es decir, el jugador irá agarrando X objetos.
- Llegará a X pregunta que al contestarla será puesto en X sitio del mapa.
- Al ser un punto en el mapa completamente distinto a donde estaba, requiero que todos los objetos que tenga en su inventario (solo llevados 254) le sean removidos.

El problema es cómo saber qué y cuántos objetos puede estar cargando en ese justo momento para poder quitárselos.
Me despido agradeciendo de antemanos la ayuda.


Esto es algo que normalmente se hace con DOALL:

Código:
CONTESTAR PREGUNTA
  WRITELN "Eres transportado a..."
  DOALL 254
  DESTROY @54
  DONE


No estoy 100% seguro de ese código, pero debe ser algo parecido.

Autor:  erlope [ 02 Feb 2017 15:41 ]
Asunto:  Re: Superglús: Cómo remover el inventario

Quizás lo comentado en este hilo te pueda ayudar.

viewtopic.php?f=6&t=6026

Autor:  Uto [ 02 Feb 2017 18:23 ]
Asunto:  Re: Superglús: Cómo remover el inventario

erlope escribió:
Quizás lo comentado en este hilo te pueda ayudar.

viewtopic.php?f=6&t=6026



Hmm... creo que no, las soluciones aportadas en ese hilo utilizan funcionlidades de ngPAWS que Superglús al ser más antiguo no tiene.

Autor:  El testigo [ 03 Feb 2017 01:00 ]
Asunto:  Re: Superglús: Cómo remover el inventario

Saludos.

Gracias amigo erlope por la intención.
Amigo Uto, gracias por el dato. Lo he probado pero no hay manera.

Lo añadí tal cual al código de la última pregunta para cuando el jugador la responda, el personaje sea transferido a otro sitio con el GOTO
La intención hace lo que se espera. Es decir, al responder la última pregunta, el personaje es movido del mapa. Pero, al tomar el control del personaje y verificar el inventario, el mismo todavía conserva todos los objetos que tiene cogidos con anterioridad.

Por otra parte, siendo la última pregunta bastante apartada del inicio, para ahorrar tiempo y no tener que realizar el cuestionario una y otra vez para probar, he hecho un proyecto aparte con la siguiente entrada en la Tabla de Respuestas.
Código:
SALTAR _
AT 2
GOTO 10
DOALL 254; Como ves, esta línea y la de abajo son exactas las que me has dado
DESTROY @54
DESC

Así tal cual, sale raro puesto que lanza respuesta del salto tantas veces objetos posea en inventario en ese momento.
Si el personaje tiene 2 objetos, repite el mensaje de saltas 2 veces. Si tiene 5 objetos, pues repite el mensaje 5 veces ETC.
Ejemplo:
SALTAR

Saltas en el sitio sin conseguir nada.
Saltas en el sitio sin conseguir nada.
Saltas en el sitio sin conseguir nada.

Ahí se ve que en ese momento el personaje tiene 3 objetos en su poder.
Luego de repetir el mensaje tantas veces sean objetos, sí hace la transferencia de localidad con el fallo de que aún conserva los 3 objetos en el inventario.

¿Qué estaré haciendo mal?
¿Habrá alguna manera de usar un flag que copie los objetos y al momento de hacer la transferencia se destruya (DESTROY) el contenido de ese flag? O eso ya sería imposible.

¿No será que falta un no sé qué antes del DOALL?
Digo ya que vemos que el DOALL se utiliza anteponiendo la orden DEJAR TODO, COGER TODO. Tal cual, pareciera que se le estuviera diciendo: SALTAR TODO

Autor:  Uto [ 03 Feb 2017 10:26 ]
Asunto:  Re: Superglús: Cómo remover el inventario

El problema de tu rutina es el DESC, yo había puesto un DONE.

DOALL lo que hace es colocar en el flag 54 uno por uno todos los objetos que hay en la localidad indicada (254 en este caso) y después ejecuta los condactos o entradas que hay detrás de el DOALL. Cuando la tabla se termina con un DONE o un NOTDONE, vuelve otra vez al DOALL y pasa al siguiente objeto. Con mi ejemplo al salir con un DONE se van recorriendo y destruyendo todos los objetos, en el tuyo el DESC produce una salida del proceso con resultados difíciles de calcular (podría pasar cualquier cosa realmente).

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