Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Futu-block on November 28, 2010, 10:12:01 AM

Title: problemas de 'z' con procesos?
Post by: Futu-block on November 28, 2010, 10:12:01 AM
quiero cambiar la 'z' de algunos procesos para que no mueran, solo desaparezcan y estoy teniendo problemas...

¿hay que ponerles la 'z' predefinida antes de modificar nada?
si no se las pones que usa por 'z'??
Title: Re: problemas de 'z' con procesos?
Post by: BoMbErLiNk on November 28, 2010, 10:18:39 AM
En lugar de Z puedes usar alpha=0; si quieres que desaparezcan, es decir, con Z solo vas a hacer que pinte por delante o detrás de otro proceso  ;)
Title: Re: problemas de 'z' con procesos?
Post by: Yawin on November 28, 2010, 10:31:24 AM
Otra opción es quitarle el gráfico:
graph=0;
Title: Re: problemas de 'z' con procesos?
Post by: DCelso on November 28, 2010, 10:37:30 AM
tienes que jugar con alpha (es una variable que tienen todos los procesos, tipo x, y,z) para hacerlos desaparecer, z solo sirve para dibujarlos antes o despues a otros procesos y así parecer que están mas lejos o cerca, pero collision seguirá colisionando con ellos.
Así que si pones alpha = 0 , desaparecerá el proceso independientemente de la z que tenga, y para volver a hacerlo aparecer alpha = 255;

Aún así los procesos siguien colisionando con collision, porque en verdad esta función sigue comprobando los colores de los píxeles aunque no se vean, así que antes de hacer collision tendrás que comprobar si alpha vale 0 para saltarte las colisiones.

Otra forma un poco más drástica pero que sirve para no tener que estar comprobando si alfa vale 0 antes de usar collision es tener una imagen adicional al proceso transparente y cambar el graph a esa imagen cuando quieras que tu proceso sea transparente y no choquen contra él, por ejemplo:

process miproceso()
private
    imagen_transparente;
public
    transparente;
begin
   imagen_transparente = new_map(2,2,16);
   map_clear(0,imagen_transparente,0);
   loop
       if (key(_t))
          transparente = 1;
      else
          transparente = 0;
      end
       if (transparente == 1)
          graph = imagen_transparente;
       else
          graph = imagendelproceso;
       end  
       ....
       frame;
   end
   unload_map(0,imagen_transparente);
end
// desde el exterior podríamos hacer.
id_miproceso = miproceso().
id_miproceso = 1;
....
id_miproceso = 0;

Title: Re: problemas de 'z' con procesos?
Post by: DCelso on November 28, 2010, 10:39:01 AM
umn, la de quitarle el gráfico está bien :D, puedes hacer lo que puse en el ejemplo pero sin crear la imagen transparente, es decir asignando directamente 0 en vez de imagen_transparente.
:D
Title: Re: problemas de 'z' con procesos?
Post by: Yawin on November 28, 2010, 10:48:44 AM
Quote from: DCelso on November 28, 2010, 10:39:01 AM
umn, la de quitarle el gráfico está bien :D, puedes hacer lo que puse en el ejemplo pero sin crear la imagen transparente, es decir asignando directamente 0 en vez de imagen_transparente.
:D

Al fin y al cabo, si no hay gráfico, no hay colisión xD
Title: Re: problemas de 'z' con procesos?
Post by: BoMbErLiNk on November 28, 2010, 11:06:18 AM
Y ya para rematar, si no es necesario que se ejecute la logica se le puede dar también un signal S_SLEEP  ;D
Title: Re: problemas de 'z' con procesos?
Post by: SplinterGU on November 28, 2010, 04:33:42 PM
Quote from: BoMbErLiNk on November 28, 2010, 11:06:18 AM
Y ya para rematar, si no es necesario que se ejecute la logica se le puede dar también un signal S_SLEEP  ;D

esto iba a responder yo... gracias bomber.
Title: Re: problemas de 'z' con procesos?
Post by: DCelso on November 28, 2010, 06:16:30 PM
Uff, pero eso complicaría un poco la lógica, no mucho pero algo sí, tendrías que crear otro proceso para controlar cuando dormirlo y cuando despertarlo o hacerlo desde el proceso main, por tanto no sería él mismo quien controlase cuando se pone transparente o no, sería un proceso externo necesitando de variables globales y tal. :D.
Title: Re: problemas de 'z' con procesos?
Post by: Futu-block on November 28, 2010, 06:50:50 PM
vamos a ir por partes y dividamos el tema...
los procesos a ocultar bajo el fondo estan libres de colisiones, lo que quiero es ocultarlos mismamente, que tambien se pueden hacer desaparecer con:[code language="bennu" options="singleline"]alpha = 0;[/code]

por otro lado, puede que me interese esa funcion de dormirlos ya que le he quitao el alfa...
¿como seria?

explication for dummie plis
Title: Re: problemas de 'z' con procesos?
Post by: DjSonyk on November 28, 2010, 07:00:06 PM
Basicamente : signal (codigo identificador del proceso a dormir,s_sleep); lo puedes dormir dentro del mismo proceso con :
signal (id,s_sleep); pero para despertarlo tendria que ser desde otro lado ya que el proceso al estar dormido no ejecuta codigo del el mismo,que esto es lo que se referia DCelso.
Title: Re: problemas de 'z' con procesos?
Post by: SplinterGU on November 28, 2010, 07:08:46 PM
Quote from: DCelso on November 28, 2010, 06:16:30 PM
Uff, pero eso complicaría un poco la lógica, no mucho pero algo sí, tendrías que crear otro proceso para controlar cuando dormirlo y cuando despertarlo o hacerlo desde el proceso main, por tanto no sería él mismo quien controlase cuando se pone transparente o no, sería un proceso externo necesitando de variables globales y tal. :D.

nunca dijo que necesitaba que los procesos ejecuten su logica o que colisionen, por eso todos los consejos son validos segun necesite, puede que solo necesite tener los procesos ahi, pero sin que interactuen con el sistema, o tener procesos que no tengan logica pero si sirvan para colisionar, segun el caso se les puede poner alpha a 0, poner size a 0, poner graph a 0, mandarlos a dormir o frezarlos, o combinacion de algunos de estos metodos.

el problema es que si no se es especifico con lo que se pregunta, las opciones pueden ser muchas y las respuestas muchas veces no seran las mejores.
Title: Re: problemas de 'z' con procesos?
Post by: DjSonyk on November 28, 2010, 07:31:17 PM
Humm ,pero con alpha a 0 ,aun se detecta las colisiones al menos con el ratón...
Lo se porque ,acabo de tener una idea para el editor,si ahora hay una nueva tecla "V" que oculta/muestra todos los objetos...
Bueno el caso esque si que colisionan,hago click derecho sobre ellos y me aparece la ventana de edición del objeto en cuestion.
Lo digo en modo de aclaración para que la gente lo tenga en mente...
Title: Re: problemas de 'z' con procesos?
Post by: Futu-block on November 28, 2010, 09:37:42 PM
no, estoy viendo mejor que es mejor eliminarlos, tambien es con signal???
Title: Re: problemas de 'z' con procesos?
Post by: Yawin on November 28, 2010, 09:57:59 PM
sip:
signal(IDdelproceso, s_kill);
Title: Re: problemas de 'z' con procesos?
Post by: SplinterGU on November 29, 2010, 12:05:08 AM
Quote from: DjSonyk on November 28, 2010, 07:31:17 PM
Humm ,pero con alpha a 0 ,aun se detecta las colisiones al menos con el ratón...
Lo se porque ,acabo de tener una idea para el editor,si ahora hay una nueva tecla "V" que oculta/muestra todos los objetos...
Bueno el caso esque si que colisionan,hago click derecho sobre ellos y me aparece la ventana de edición del objeto en cuestion.
Lo digo en modo de aclaración para que la gente lo tenga en mente...

si...

Quote from: Futublock on November 28, 2010, 09:37:42 PM
no, estoy viendo mejor que es mejor eliminarlos, tambien es con signal???

si...
Title: Re: problemas de 'z' con procesos?
Post by: DjSonyk on November 29, 2010, 12:07:00 AM
Quote from: SplinterGU on November 29, 2010, 12:05:08 AM
Quote from: DjSonyk on November 28, 2010, 07:31:17 PM
Humm ,pero con alpha a 0 ,aun se detecta las colisiones al menos con el ratón...
Lo se porque ,acabo de tener una idea para el editor,si ahora hay una nueva tecla "V" que oculta/muestra todos los objetos...
Bueno el caso esque si que colisionan,hago click derecho sobre ellos y me aparece la ventana de edición del objeto en cuestion.
Lo digo en modo de aclaración para que la gente lo tenga en mente...

si...
Ya era una afirmación....  :P
Title: Re: problemas de 'z' con procesos?
Post by: FreeYourMind on November 29, 2010, 02:23:57 PM
no....
Title: Re: problemas de 'z' con procesos?
Post by: DCelso on November 29, 2010, 02:39:25 PM
 :o,  ;D
Title: Re: problemas de 'z' con procesos?
Post by: Futu-block on November 29, 2010, 07:31:23 PM
tambien hay que identificar al proceso??
k+
Title: Re: problemas de 'z' con procesos?
Post by: Drumpi on December 01, 2010, 01:42:05 AM
Quote from: Futublock on November 29, 2010, 07:31:23 PM
tambien hay que identificar al proceso??
k+

Obviamente, necesitas su ID para mandarle una señal, de lo contrario ¿a quién se la mandas? :)
Title: Re: problemas de 'z' con procesos?
Post by: Futu-block on December 01, 2010, 06:06:32 PM
fuuuuuu, eso de identificar...
complicaciones que despues no lo son
Title: Re: problemas de 'z' con procesos?
Post by: Drumpi on December 01, 2010, 06:38:03 PM
Tienes para ello:
GET_ID (puedes definir un tipo de proceso por su nombre).
El valor que devuelve al invocar al proceso.
COLLISION.
ID, FATHER, SON, BIGBRO...

Vamos, que hay forma de identificar los procesos. Almacenar los ID es lo más complejo, pero nada que no hayas visto ya con los FPG.