Orden de muerte al matar con S_KILL_TREE

Started by Windgate, September 30, 2009, 05:49:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Bueno, no hay que comerse mucho el coco, he quitado el wakeup, o sea, tenia que quedarse congelado para siempe y no lo hace...

DjSonyk

Free solo te digo que el case 18 lo cambies por case 18000 ,por ejemplo,para que puedas ver si realmente se congela el proceso o tienes algun error por ahi,si ves que se congela ,vamos que funciona correctamente todo ajustes el case al tiempo que quieres que este congelado, o cambie el case por un temporizador y le congelas en milisegundos,no te digo que cambies el tiempo para que lo dejes cambiado sino para ver si realmente se congela...

DjSonyk

Ok,pues hay algo que anda mal..voy a mirartelo..

FreeYourMind

Si te he dicho que le he quitado el wakeup, olvidate del valor del case, porque lo congelo al case 0 y así deberia quedarse eternamente :D

DjSonyk

Esos case les falta el end, ¿eso es aqui en el codigo que as puesto de ejemplo o tambien les falta en tu codigo?

DjSonyk

Ains.... Free te digo porque no se congela,o mejor te dejo que lo veas.... es un fallo tonto.... :P
pon t++ antes del frame o despues del case 0 o CASE 1: signal(type anima, s_freeze); // No funciona, la animación random sigue ocurriendo!

  te explico el porque , ¬¬

FreeYourMind

#51
Joer, te lo juro estaba pensando que el case 0 igual no ocurria, he puesto case 1 y se ha arreglado :)
Grácias  :-*

Funciona de maravilla, se congela sólo el tiempo que quiero  ;)

DjSonyk

Te lo explico entoces:Case 0 funciona se puede usar,pero haces un preincremento de "t" antes del swicth con lo que t valdra como minimo 1 ,y nunca se cumplira el case 0 ... lo dicho un fallo tonto que puede volver loco a cualquiera hasta el programador mas experto... Me alegro que te funcione de maravilla...

FreeYourMind

No necesitabas decirmelo heheheh, si lo he visto, un fallo super tonto :)
Curiosamente las cosas que hacia en case 0 era matar procesos que la mayoria podria no existir todavia, por eso no me habia fijado que no funcionaba, ya que lo de freeze sólo lo puse en los ultimos cambios del procedimiento.

DjSonyk

Quote from: FreeYourMind on July 25, 2010, 11:52:28 PM
Joer, te lo juro estaba pensando que el case 0 igual no ocurria, he puesto case 1 y se ha arreglado :)
Grácias  :-*

Funciona de maravilla, se congela sólo el tiempo que quiero  ;)

Entoces no entendi lo que querias decir...bueno animo con el proyecto que tengo ganas de jugar con el... :P

SplinterGU

Quote from: DjSonyk on July 25, 2010, 08:35:40 PM
La función SIGNAL puede cambiar en cualquier momento el estado de un proceso o de sus hijos. Los cambios no afectan al proceso actual hasta que su ejecución termine por llegar a la sentencia FRAME. De la misma manera, el proceso padre (y el resto de antecesores) no se verán afectados por los cambios hasta la sentencia FRAME.

Cambios en BennuGD con respecto a tu cita Drumpi:
En BennuGd la sentencia SIGNAL se ejecuta al instante no al llegar al siguiente FRAME,acausa de eso,es lo que mas me a tocado corregir al hacer las portaciones de mis "juegos"de DIV a Bennu,para que nadie se confunda con la cita :P.
Quote from: FreeYourMind on July 25, 2010, 10:41:53 PM
Ya que estamos tengo un error con freeze, no me congela el proceso que quiero, este proceso hace una animacion y coloca el gráfico en distintas posiciones durante un tiempo, pues bien, si llamo el proceso espera(), quiero que este congele el proceso anim() durante otro cierto tiempo, pero no esta funcionando, pongo el ejemplo:


PROCESS espera()
PRIVATE
t = 0;

BEGIN

  LOOP
 
    t++;

    SWITCH (t)
  CASE 0:
     
             signal(type anima, s_freeze); // No funciona, la animación random sigue ocurriendo!

          CASE 18:
     
     signal(type anima, s_wakeup);
      END
END
  FRAME;
  END
END


PROCESS anima()
PRIVATE
Vel;

BEGIN

  graph = 350;
  x = 91;
  y = 182;
  z = -1;

LOOP

FROM Vel = 1 TO 100;

  // Random
  IF (1 == rand(1, 3))
      graph = 350;
      x = 91;
      y = 182;
 
  ELSE
     IF (1 == rand(1, 3))
         graph = 351;
         x = 132;
         y = 182;

     ELSE
         graph = 353;
         x = 132;
         y = 194;

     END
END

FRAME(Vel);
END
 
FRAME;
END

END


ay muchacho, lo tuyo es mortal! el t++ antes del switch hace que nunca la funcion entre en el "case 0:" ya que 0++ = 1
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

ya veo que en la pagina 4 te dijeron cual era el error...

esto no es un fallo tonto que le pasa a cualquier programador experto, hay que usar el debug y/o el comando say, si hubieses puesto un say dentro del case hubieses visto que nunca entra, y si hubieses puesto un say antes del switch de la variable t, te hubieses dado cuenta.

se que te reto constantemente, pero no quiero que se mal interprete, es para que te mejores a ti mismo.

tenemos que tener cuidado cuando decimos, tengo un error en tal funcion, sin hacer un analisis correcto, con debug, says y todo lo posible para confirmar que el error se encuentra ahi.

con 2 simples say, tu problema se hubiese resuelto.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Lo que has dicho sobraba, hehehehehehehh  ;D

SplinterGU

si, lo se, pero es que tambien me siento incomodo corrigiendote todo el tiempo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Pues yo creo que no sobra, de hecho, es el mejor consejo sobre debug que existe, al que añado, además de "show" (debug) y "say" el comando "write_int" y un proceso que cambie los FPS usando F1 para "slow motion" y F2 para "normal motion".
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)