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.
Pues en gm5 anda perfecto, muy buen aporte Wadk XD XD XD
Gracias, Soccer. Actualizo el primer post...
?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.
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.
//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...
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
Gracias Ciberman XD. Agrego el script modificado al primer post.
muy util para Fx.
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?
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.
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 .