new articles on the wiki

Started by handsource-dyko, March 16, 2012, 03:08:22 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

Quote from: DCelso on July 31, 2012, 07:18:07 PM
Exactisimo todo lo que dijiste SplinterGU. Es justo lo que puse en mi post en inglés, quizás en un inglés paupérrimo como indicas, pero mi intención era la de aclarar las cosas para tener la documentación lo más fiel posible. Quizás no te haya gustado que puse la palabra cheat a lo de hacer el null, y no es la adecuada, quería simplemente decir eso mismo que dices tu, que ponerla a justo después del end es un "truco" para hacer que no vuelva a llamarse a fil_end con el id anterior y así la función fli_end no intente volver a liberar el recurso y puse un ejemplo de como resolver el error sin necesidad de hacer null, por lo que reitero que todo lo que dijiste es cierto, quien va a saber más de esto que tú :D.

por favor, faltaba mas... no me ha disgustado, simplemente que me parecio que en castellano nos ibamos a entender mejor.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: DoctorN on July 31, 2012, 08:41:52 PM
Gee, I dont understand english, and this is the english board.

don't worry about it, sure kloppix will explain it in the wiki...

please, you don't need remember us that this forum is an english forum... if we need change language for a better understanding of this stuff, then we'll do... or you prefer learn a bad understanding of this stuff because our bad english?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Kloppix

 
Quote from: SplinterGU on July 31, 2012, 05:18:18 PM
Quote from: Kloppix on July 31, 2012, 05:14:02 PMCreo que para evitar futuros dolores de cabeza, debería ser costumbre resetear el identificador tras Fli_end(). Lo puse como recomendación en la Wiki.
no solo con fli, con toda variable donde guardamos id de mapas, archivos, identificadores de procesos, etc.
Me da mucha verguenza, pero nunca llegué a resetear un handle. Probablemente porque núnca tuve un error similar. Como no creo ser el único novato en Bennu, voy a dejar la recomendación hasta que nos lo des "todo mascado" en la futura versión :)


Quote from: DoctorN on July 31, 2012, 08:41:52 PMGee, I dont understand english, and this is the english board.

Sorry dude. I had a crash using something like this inside a loop:


if(key(_1))   
    fli_end(iAnimation1); 
end


The problem was fli_end(iAnimation); doesn't reset iAnimation, only frees it. That means iAnimation still contains a memory address (now invalid). Beeing inside a loop, fli_end(iAnimation) was executed for a second time and caused the program to crash. Therefore DCelso suggested addind  while (key(_1))  frame;  end; to prevent it...


if(key(_1))
        while (key(_1)) frame; end;    
        fli_end(iAnimation1); 
end


...and Splinter suggested reseting it by adding iAnimation1=null;


if(key(_1))
    fli_end(iAnimation1); 
    iAnimation1=null;
end


Although DCelso's solution works, the danger is still there. Therefore I recomended in the Wiki to reset the Fli_ID after using Fli_end.


And then Splinter said he wanted to make a new and safer internal system. Probably when the x64 version get released.

SplinterGU

Really your right code must be...

if(iAnimation1 and key(_1))
    fli_end(iAnimation1);
    iAnimation1=null;
end
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Kloppix

#49
Quote from: SplinterGU on August 01, 2012, 01:07:44 PM
Really your right code must be...

if(iAnimation1 and key(_1))
    fli_end(iAnimation1);
    iAnimation1=null;
end

I was just explaining the mistake  :P In the wiki I used something like that.  1 starts/stops one animation and 2 starts/stops the another one. So this is what I done:

    if(key(_1))
      //Do nothing until the key is released
      while(key(_1))frame; end
      if(iAnimation1!=null)    //If the animation wasn't terminated...
        fli_end(iAnimation1);  //...stop only the simple animation...
        iAnimation1=null;      //...and reset the handle
      else
        iAnimation1=fli_start("animation.fli",50,80);
      end
    end

The complete code is in http://wiki.bennugd.org/index.php?title=Fli_end Please take a look, as I'm using the same example for 4 functions.

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2