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:
Código: [Seleccionar]
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":
Código: [Seleccionar]
//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
Código: [Seleccionar]
//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
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 .