Marzo 21, 2010, 06:49:34 PM Ultima modificación: Marzo 31, 2010, 02:35:36 AM por Wadk
Nombre del creador: Wadk
Breve descripci?n de su funci?n: Dibuja "electricidad" generada en el momento a base de l?neas rectas.
Versi?n GM utilizada: :GM5: :GM6: :GM7: :GM8:
C?digo del Script:
var x1,y1,x2,y2,xx,yy,xa,ya,i,j;
x1=argument0;
y1=argument1;
x2=argument2;
y2=argument3;
dis=point_distance(x1,y1,x2,y2);
dir=point_direction(x1,y1,x2,y2);

for(i=1;i<=argument4;i+=1){
   xx=x1;
   yy=y1;
   for(j=0;j<argument5-1;j+=1){
       xa=lengthdir_x(dis/argument5,dir+(random(argument6)-argument6/2));
       ya=lengthdir_y(dis/argument5,dir+(random(argument6)-argument6/2));
       draw_line(xx,yy,xx+xa,yy+ya);
       xx+=xa;
       yy+=ya;
   }
   draw_line(xx,yy,x2,y2);
   xx=x1;
   yy=y1;
   x1=x2;
   y1=y2;
   x2=xx;
   y2=yy;
   dir+=180;
}

Argumentos: dibujar_electricidad(x1,y1,x2,y2,densidad,fraccionado,distorsi?n);
x1, y1, x2 e y2 son para determinar la posici?n de la electricidad.
densidad es el n?mero de "rayos". Lo mejor es usar un n?mero par.
fraccionado indica el n?mero de veces que cada "rayo" se fracciona.
distorsi?n es lo m?ximo que puede "doblarse" cada rayo cada vez que es fraccionado.
Ejemplo: dibujar_electricidad(0,0,300,300,4,10,30);


Modificaci?n por Ciberman para modificar el color y el grosor de los "rayos":
//dibujar_electricidad_ext(x1,y1,x2,y2,densidad,fraccionado,distorsi?n,col1,col2,col3,widthMin,widthMax);
var x1,y1,x2,y2,xx,yy,xa,ya,i,j,col_init,alp_init,wl;
col_init=draw_get_color();
alp_init=draw_get_alpha();
x1=argument0;
y1=argument1;
x2=argument2;
y2=argument3;
dis=point_distance(x1,y1,x2,y2);
dir=point_direction(x1,y1,x2,y2);

for(i=1;i<=argument4;i+=1){
    xx=x1;
    yy=y1;
    wl=round(random(argument11-argument10)+argument11);;
    for(j=0;j<argument5-1;j+=1){
        xa=lengthdir_x(dis/argument5,dir+(random(argument6)-argument6/2));
        ya=lengthdir_y(dis/argument5,dir+(random(argument6)-argument6/2));
        draw_set_color(argument[choose(7,8,9)]);
        draw_set_alpha(random(.5)+.5)
        draw_line_width(xx,yy,xx+xa,yy+ya,wl);
        xx+=xa;
        yy+=ya;
    }
    draw_line_width(xx,yy,x2,y2,wl);
    xx=x1;
    yy=y1;
    x1=x2;
    y1=y2;
    x2=xx;
    y2=yy;
    dir+=180;
}

draw_set_color(col_init);
draw_set_color(alp_init);

Se agregan 5 argumentos: col1, col2 y col3 que son 3 colores para los rayos, y widthMax y widthMin que son el grosor m?ximo y m?nimo respectivamente de los rayos.
El script modificado podr?a no funcionar en todas las versiones de GM.
Vim.

Pues en gm5 anda perfecto, muy buen aporte Wadk  XD XD XD
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

Gracias, Soccer. Actualizo el primer post...
Vim.

?Es posible que si funciona bien en :GM8: y :GM5: no funcione bien en las versiones entre ellas (:GM6: y :GM7:)?
       

Muy buen script...algo que haria yo(y hare si lo uso XD )seria cambiar el color y alpha de los rayos,es decir que se vean rayos blancos,azule y diversos colores que tenga la electricidad XD


Asi!!!, lo probe tambien en :GM7: y si funciona.

Orgulloso veterano de CGM
El poder de hacer un buen juego esta en tus manos.

Bueno, considerando que el script utiliza la funcion basica de linea, se puede simplemente utilizar draw_set_alpha y draw_set_color antes de utilizarlo. De esa manera el script permanece simple y funcional.

No creo que sea realmente posible que un juego que funciona en  :GM8: y  :GM5: no funcione en  :GM6: y  :GM7:, pero podria equivocarme. Sea como sea puedo confirmarte que funciona en  :GM6:.

No s? si es posible lo que comenta Hackware, pero lo dej? as? por las dudas. Igual ya est? confirmado que funciona en las 4, as? que actualc? el primer post.
Y claro, pod?s hacer lo que dijo Killer para cambiar el color y alpha de las l?neas, a menos que quieras que se dibujen varias l?neas de distinto color/alpha en el mismo step, en ese caso tendr?as que modificar el script.
Gracias a todos por sus comentarios.
Vim.


//dibujar_electricidad_ext(x1,y1,x2,y2,densidad,fraccionado,distorsi?n,col1,col2,col3,widthMin,widthMax);
var x1,y1,x2,y2,xx,yy,xa,ya,i,j,col_init,alp_init,wl;
col_init=draw_get_color();
alp_init=draw_get_alpha();
x1=argument0;
y1=argument1;
x2=argument2;
y2=argument3;
dis=point_distance(x1,y1,x2,y2);
dir=point_direction(x1,y1,x2,y2);

for(i=1;i<=argument4;i+=1){
    xx=x1;
    yy=y1;
    wl=round(random(argument11-argument10)+argument11);;
    for(j=0;j<argument5-1;j+=1){
        xa=lengthdir_x(dis/argument5,dir+(random(argument6)-argument6/2));
        ya=lengthdir_y(dis/argument5,dir+(random(argument6)-argument6/2));
        draw_set_color(argument[choose(7,8,9)]);
        draw_set_alpha(random(.5)+.5)
        draw_line_width(xx,yy,xx+xa,yy+ya,wl);
        xx+=xa;
        yy+=ya;
    }
    draw_line_width(xx,yy,x2,y2,wl);
    xx=x1;
    yy=y1;
    x1=x2;
    y1=y2;
    x2=xx;
    y2=yy;
    dir+=180;
}

draw_set_color(col_init);
draw_set_color(alp_init);


exelente script, dejo una lijera modificacion simplemente de lo que se comentaba de a?adirle alpha, colores y grosores...
Cita de: CGM 2008CGM: Un poco mas serios, mejores Juegos.
Bienvenid@ a CGM. Recomenzamos desde cero, con un reglamento mas estricto, mejor definido y con mas ganas que nunca de hacer juegos con calidad comercial. El que avisa no es traidor: Leete las reglas si no quieres llevarte un capon makero.
Mercilessly!!
Plug-In para animaciones: http://ciberman.net/tweenline/

Pero al agregarle grosores, deja de funcionar en versiones viejas.
       

en la 5 no hay grosores? no sab?a, gracias hackware...
igual debe de funcionar en 6, no?
igualmente, wadlk se merece un aplauso
Cita de: CGM 2008CGM: Un poco mas serios, mejores Juegos.
Bienvenid@ a CGM. Recomenzamos desde cero, con un reglamento mas estricto, mejor definido y con mas ganas que nunca de hacer juegos con calidad comercial. El que avisa no es traidor: Leete las reglas si no quieres llevarte un capon makero.
Mercilessly!!
Plug-In para animaciones: http://ciberman.net/tweenline/

Gracias Ciberman XD. Agrego el script modificado al primer post.
Vim.


Intente usarlo pero...  :-[ no se como... si alguien subiera una demo de como se utiliza... le estaria muy agradecido... XD

Aqu? hago uso del Script de Wadk, no el modificado.
Es simple, solo coloque el script y lo llam? desde el evento Draw.

qe son los argumentos
am
en game maker 8 pro
aniadi un scrip
bueno este scrip
y cree una room
y no paso nada
tengo qe crear un objeto
o algo asi?