Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: Wadk en Marzo 21, 2010, 06:49:34 PM

Título: Dibujar "electricidad"
Publicado por: Wadk en Marzo 21, 2010, 06:49:34 PM
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.
Título: Re: Dibujar "electricidad"
Publicado por: soccer2008 en Marzo 22, 2010, 05:28:44 AM
Pues en gm5 anda perfecto, muy buen aporte Wadk  XD XD XD
Título: Re: Dibujar "electricidad"
Publicado por: Wadk en Marzo 23, 2010, 01:10:48 AM
Gracias, Soccer. Actualizo el primer post...
Título: Re: Dibujar "electricidad"
Publicado por: Hackware en Marzo 23, 2010, 03:53:44 AM
?Es posible que si funciona bien en :GM8: y :GM5: no funcione bien en las versiones entre ellas (:GM6: y :GM7:)?
Título: Re: Dibujar "electricidad"
Publicado por: kakashigna en Marzo 23, 2010, 05:53:40 PM
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.
Título: Re: Dibujar "electricidad"
Publicado por: Killer en Marzo 23, 2010, 08:48:47 PM
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:.
Título: Re: Dibujar "electricidad"
Publicado por: Wadk en Marzo 25, 2010, 05:11:41 PM
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.
Título: Re: Dibujar "electricidad"
Publicado por: Ciberman en Marzo 26, 2010, 03:17:41 PM

//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...
Título: Re: Dibujar "electricidad"
Publicado por: Hackware en Marzo 30, 2010, 09:47:39 PM
Pero al agregarle grosores, deja de funcionar en versiones viejas.
Título: Re: Dibujar "electricidad"
Publicado por: Ciberman en Marzo 31, 2010, 12:44:28 AM
en la 5 no hay grosores? no sab?a, gracias hackware...
igual debe de funcionar en 6, no?
igualmente, wadlk se merece un aplauso
Título: Re: Dibujar "electricidad"
Publicado por: Wadk en Marzo 31, 2010, 02:36:23 AM
Gracias Ciberman XD. Agrego el script modificado al primer post.
Título: Re: Dibujar "electricidad"
Publicado por: elviskelley en Abril 15, 2010, 06:12:56 PM
muy util para Fx.
Título: Re: Dibujar "electricidad"
Publicado por: 006 Time en Abril 15, 2010, 08:23:43 PM
Intente usarlo pero...  :-[ no se como... si alguien subiera una demo de como se utiliza... le estaria muy agradecido... XD
Título: Re: Dibujar "electricidad"
Publicado por: Silver_light en Abril 15, 2010, 08:37:08 PM
Aqu? hago uso del Script de Wadk, no el modificado.
Es simple, solo coloque el script y lo llam? desde el evento Draw.
Título: Re: Dibujar "electricidad"
Publicado por: eerickd en Agosto 17, 2010, 11:28:16 AM
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?
Título: Re: Dibujar "electricidad"
Publicado por: Wadk en Agosto 18, 2010, 08:12:47 PM
S?lo agregar el script no hace nada, ten?s que llamarlo desde alg?n objeto o algo. Fijate en el archivo que puso Silver Light (ahora no puedo checar si es lo que necesit?s porque estoy en Ubuntu, pero seguramente lo es).

Los argumentos son valores que se le dan al script para que se comporte de una forma u otra.
Título: Re: Dibujar "electricidad"
Publicado por: soyyo en Agosto 28, 2010, 03:20:56 PM
Cita de: eerickd en Agosto 17, 2010, 11:28:16 AM
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?


Cre? un objeto.
Agreg? el draw event.
Llam? el script en el draw event (pesta?a control->Paginita con la flechita verde).
Los argumentos son los par?metros que se le pasan al script para que haga algo.
No se llaman argumentos porque "Justifican algo" como yo, en un ingenuo principio, pens? XD .