I put something together that should be more accurate with larger shapes, gives you more control and should be useful for other things as well. I present to you
draw_object_line(x1,x2,y1,y2, NumObjects, ObjectType)put this in a script called draw_object_line
x1 = argument0;
y1 = argument1;
x2 = argument2;
y2 = argument3;
NumObjects = argument4;
Object = argument5
if NumObjects < 2 {NumObjects = 2;}
if x1 == x2
{
if y2 < y1
{
xt = x1;
yt = y1;
x1 = x2;
y1 = y2;
x2 = xt;
y2 = yt;
}
XStep = (x2 - x1)/(NumObjects-1);
YStep = (y2 - y1)/(NumObjects-1);
tx = x1;
for (ty = y1; ty <= y2; ty += YStep)
{
a = instance_create(tx,ty,Object);
tx += XStep;
}
} else {
if x2 < x1
{
xt = x1;
yt = y1;
x1 = x2;
y1 = y2;
x2 = xt;
y2 = yt;
}
XStep = (x2 - x1)/(NumObjects-1);
YStep = (y2 - y1)/(NumObjects-1);
ty = y1;
for (tx = x1; tx <= x2; tx += XStep)
{
a = instance_create(tx,ty,Object);
ty += YStep;
}
}
Now your shape drawing code looks pretty much the same as your starting code.
//stepcounter coding beforehand and bla
xx=room_width/2;
yy=room_height/2;
dist=50;
num=4;
for(i=-num;i<=num;i+=1){
draw_object_line(xx,yy+i*dist,xx+(num-abs(i))*dist,yy,5,cherry);
draw_object_line(xx,yy+i*dist,xx-(num-abs(i))*dist,yy,5,cherry);
}
This should look familiar
//stepcounter coding beforehand and bla
xx=room_width/2;
yy=room_height/2;
dist=25;
num=10;
for(i=-num;i<=num;i+=1){
draw_object_line(xx,yy+i*dist,xx+(num-abs(i))*dist,yy,num * 10,bullet);
draw_object_line(xx,yy+i*dist,xx-(num-abs(i))*dist,yy,num * 10,bullet);
}