CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 24 Sep 2018 22:58

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 5 mensajes ] 
Autor Mensaje
NotaPublicado: 14 Ago 2018 20:53 
Desconectado
Archivero
Archivero

Registrado: 05 Abr 2014 17:40
Mensajes: 271
Saludos aventureros. Espero que todo vaya bien.
Estoy por aquí de nuevo en mis andanzas. Al fin tengo nuevamente red fija en casa.


Si bien he avanzado en mis proyectos, también he estado muy mal físicamente, hasta el grado de permanecer en cama días enteros y utilizando collarín.
Lo que me da gusto, es que estoy casi seguro de que para diciembre a mas tardar, podré enviar algo para que todos puedan jugar, disfrutar y opinar.


En esta oportunidad necesito ayuda acerca de llevar un control de cantidades. Tengo esta entrada que me permite recargar el arma.
Comprueba que tenemos el arma, que el arma esta equipada, que tenemos balas y que el arma esta descargada.


; Tabla de Respuestas
RECARGAR _
NOTEQ fArmaEquipada 255
COPYFF fArmaEquipada fArma
PROCESS 14
DONE


; Proceso 14
_ _
CARRIED objPistola
EQ fArma 2
EQ fArmaEquipada objPistola
NOTZERO fPistolaBalas
ZERO fPistolaCargada
WRITELN "Introduces un cargador con 15 balas en la pistola."
MINUS fPistolaBalas 15
LET fPistolaCargada 15
DONE


Como se puede ver, la entrada permite recargar el arma con un número predefinido de balas, en este caso, 15.
Ahora bien, sería interesante que el jugador pueda recargar el arma independientemente de cuántas balas le quedan al arma.


Es decir, que el jugador va disparando y digamos que le quedan 3 balas en el arma, pues bien, sería genial que al enviar la orden de RECARGAR, el sistema le rellene el arma tomando en cuenta de cuántas balas tiene de espacio el arma.
En este caso, que rellene tan solo 12 balas así quedando MAS + las 3 que quedan, el arma llena con sus 15 balas. Obviamente, habrá que hacer una comprobación para que el arma no se recargue indefinidamente pudiendo tener 20, 48, 79 balas.


De igual manera, si dispara tan solo una vez quedando 14 balas en el arma, al enviar la orden RECARGAR el sistema le recargue solo 1 bala para que se llene de nuevo a 15.
Por otra parte, también se debe hacer eso con la bandera que contiene las balas para dar coherencia. Si el jugador tiene 44 balas, al recargar el arma que recte x unidades sean 3, 15 o 1. Sobre todo cuidar que si apenas se tiene 1 bala en el total, cuando recargue el arma recte esa única bala y no se vea la bandera luego con MENOS -9 balas.


Me despido esperando que tengan un buen día tarde noche


Arriba
 Perfil  
 
NotaPublicado: 15 Ago 2018 12:05 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4626
Hola!

Si he entendido bien el flag fPistolaBalas contiene el número de balas "sueltas" que tienes para recargar, mientras que fPistolaCargada contiene el número de balas en el cargador de la pistola.

en ese caso:

Código:
_ _
CARRIED objPistola
EQ fArma 2
EQ fArmaEquipada objPistola
NOTZERO fPistolaBalas
ZERO fPistolaCargada
WRITELN "Introduces un cargador con 15 balas en la pistola."
MINUS fPistolaBalas 15
PLUS fPistolaBalas @fPistolaCargada
LET fPistolaCargada 15
DONE


Es casi lo mismo que tenías, solo que le restamos 15 a las balas sueltas, pero luego le sumamos el numero de balas que aun quedaban en el cargador.

En cualquier caso esta operación no es correcta en todos los casos, porque tanto antes como ahora, si el total de balas en el cargador mas las sueltas no llega a 15, este sistema no funciona bien.

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


Arriba
 Perfil  
 
NotaPublicado: 15 Ago 2018 12:19 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4626
Así creo que lo hará bien en todos los casos. Es un poco enrevesado porque Superglús no soporta colon/sharp condacts como ngPAWs, pero creo funciona:

Código:
_ _
COPYFF fPistolaBalas fAux         ; Copio el numero de balas que tengo en flag auxiliar
PLUS fAux @fPistolaCargada  ; le sumo el número de balas en la pistola
GT fAux 15
LET fAux 15                            ; Calculo cuantas balas habrá al final en el cargador, como máximo 15

_ _
COPYFF fAux fAux2               ; Copio el dato final de balas en otro flag auxiliar
MINUS fAux2 @fPistolaCargada ; Calculo cuantas balas voy a cargar realmente

_ _
CARRIED objPistola
EQ fArma 2
EQ fArmaEquipada objPistola
NOTZERO fPistolaBalas
ZERO fPistolaCargada
WRITE "Introduces  "
PRINT fAux2
WRITELN " balas en la pistola."
MINUS fPistolaBalas @fAux2
LET fPistolaCargada @fAux
DONE

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


Arriba
 Perfil  
 
NotaPublicado: 16 Ago 2018 21:05 
Desconectado
Archivero
Archivero

Registrado: 05 Abr 2014 17:40
Mensajes: 271
Saludos amigo Uto. Muchas gracias por las entradas.
En efecto, la bandera "fPistolaBalas" actúa como si fuera una caja o riñonera donde meto todas las balas sueltas que vaya consiguiendo:


REGISTRAR CUERPO
AT locEntrada; En la entrada del complejo
PRESENT objSoldadoMuerto; Comprobar que el soldado ya no representa ninguna amenaza
NOTZERO fBalasSoldado; Vemos que aún no se ha cogido la munición
WRITELN "Registras el cuerpo del soldado consiguiendo 70 balas."
PLUS fPistolaBalas 70; Sumamos +70 balas a la cuenta total que contiene la bandera "fPistolaBalas"
SET fBalasSoldado; Marcamos que ya se ha cogido la munición
DONE


Y la bandera "fPistolaCargada" hace las veces del cargador del arma pudiendo contener un máximo de 15 balas
Al momento de disparar, simplemente se le resta 1 a la bandera que se supone es el cargador del arma:


DISPARAR _
(...); Todas las comprobaciones necesarias de que el arma está cargada, de que está equipada ETC
WRITELN "Disparas la pistola desperdiciando munición."
MINUS fPistolaCargada 1
DONE


Ahora bien, tu código a buenas y primeras sirvió. Al momento de coger el arma y dar RECARGAR, se imprimió el mensaje:
Introduces 15 balas en el cargador de la pistola.

Pero... (Que baile que nunca falta un pero...) cuando disparo el arma restando su cantidad de munición y doy nuevamente RECARGAR, no sucede nada.
Falta alguna línea o algo que compruebe que sin importar que el arma tenga las balas que sea, sean 1 o 14, se pueda recargar las balas necesarias para sumar de nuevo el total de 15 balas en el cargador.


_ _
COPYFF fPistolaBalas fAux; Copio el numero de balas que tengo en flag auxiliar
PLUS fAux @fPistolaCargada; Le sumo el número de balas en la pistola
GT fAux 15
LET fAux 15; Calculo cuantas balas habrá al final en el cargador, como máximo 15

_ _
COPYFF fAux fAux2; Copio el dato final de balas en otro flag auxiliar
MINUS fAux2 @fPistolaCargada; Calculo cuantas balas voy a cargar realmente

_ _
CARRIED objPistola
EQ fArma 2
EQ fArmaEquipada objPistola
NOTZERO fPistolaBalas
ZERO fPistolaCargada
WRITE "Introduces "
PRINT fAux2
WRITELN " balas en el cargador de la pistola."
MINUS fPistolaBalas @fAux2
LET fPistolaCargada @fAux
DONE


Y pues eso, cargo las 15 primeras balas en el arma, disparo las que sea (sin llegar a 0), doy de nuevo RECARGAR pero nada, no sucede nada de nada. Te obliga a que el arma esté vacía.


Arriba
 Perfil  
 
NotaPublicado: 20 Ago 2018 02:17 
Desconectado
Archivero
Archivero

Registrado: 05 Abr 2014 17:40
Mensajes: 271
Saludos espero que estén bien. :)
Solucionado el fallo (que ni fallo era, sino descuido por mi parte). :(


Hasta hoy me pude poner a revisar las entradas y se me cae la cara de vergüenza de ver que el detalle estaba en la línea seis de la tercera entrada. (Ciego tenía que estar para no verla).
La línea que comprueba de que el arma está completamente descargada (0 balas en su interior): ZERO fPistolaCargada


No había caído en cuenta puesto que copié el código entero y lo pegué íntegramente en mi proyecto y pues eso, se coló esa comprobación.
Pero lo dicho, hoy que me pude meter en ello, y viendo que en el juego el arma solo se puede recargar cuando está su carga a 0. Abrí código, eliminé esa línea y bien! todo funciona bien.


Muchísimas gracias amigo Uto por tu ayuda.
Me despido esperando que tengan buen día tarde noche.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 5 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 0 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