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);
}