Creador: Yo
Version de GM utilizada: :GM8:
Descripcion:
Este script crea un sprite con la forma de otro. Mmm... dificil de explicar, pruebenlo y ver?n XD
sprite_create_form
Aqui para :GM7: modificado por NOKABURE
Dejo un ejemplo de su uso, espero que les guste :)
Version de GM utilizada: :GM8:
Descripcion:
Este script crea un sprite con la forma de otro. Mmm... dificil de explicar, pruebenlo y ver?n XD
sprite_create_form
Código [Seleccionar]
//argument0=sprite
//argument1=subimage
//argument2=sprite form
//argument3=subimage of form
//argument4=append to a existing sprite
fspr=-1
if argument1=all
{
if sprite_exists(fspr) {sprite_delete(fspr)}
for (i=0;i<=sprite_get_number(argument0)-1;i+=1)
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0.01)
draw_sprite(argument0,i,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
if !sprite_exists(fspr) {fspr=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0)}
else {temp=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0) sprite_merge(fspr,temp)}
}
return fspr
}
else
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0)
draw_sprite(argument0,argument1,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
return sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0)
}
Aqui para :GM7: modificado por NOKABURE
Código [Seleccionar]
//argument0=sprite
//argument1=subimage
//argument2=sprite form
//argument3=subimage of form
//argument4=append to a existing sprite
fspr=-1
if argument1=all
{
if sprite_exists(fspr) {sprite_delete(fspr)}
for (i=0;i<=sprite_get_number(argument0)-1;i+=1)
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0.01)
draw_sprite(argument0,i,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_rectangle(sprite_get_width(argument2),0,sprite_get_width(argument0),sprite_get_height(argument0),0)
draw_rectangle(0,sprite_get_height(argument2),sprite_get_width(argument2),sprite_get_height(argument0),0)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
if !sprite_exists(fspr) {fspr=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0,0,0)}
else {temp=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0,0,0) sprite_merge(fspr,temp)}
}
return fspr
}
else
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0)
draw_sprite(argument0,argument1,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
return sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0,0,0)
}
Dejo un ejemplo de su uso, espero que les guste :)