Okay, so let's try to an example on how to turn a square path into a circular path. A similar idea is used for ellipses and rectangles, but I'll use a circle and square here to make it more simple.
In the picture below, the blue line is the rectangular path that you have. This goes through points ABCD. Let's say C = (0,0), B = (0,2), A = (1,2) and D = (1,0). Note that I'm not using GM's inverted coordinate system here.
In the picture, I have completed this into a rectangle BCFE by making the green line. To make a rectangle, all sides need to be of length 2, which makes E = (2,2) and F = (2,0).
Now, the diameter of the orange circle needs to be 2, since all the sides of the square are 2, which makes the radius 1. (With an ellipse, we get two values from the width and the height of rectangle.) It's also easy to see that the center point of the circle is (1,1). For rectangles and squares, the center point is given by (rectX + rectWidth/2, rectY + rectHeight/2), where rectX and rectY are the coordinates of the lower-left corner of the rectangle. In this case, we get (0 + 2/2, 0 + 2/2) = (1,1). In the inverted coordinate system, (rectX, rectY) would be the upper-left corner.
After we know the center point and the radius of the circle, it's fairly easy to make the character travel the path set by the circle. I'd prefer using polar coordinates:
In character's step event (when the circle path needs to be used):
//the angle value is the current angle from the center point to the character's location in the circle
x = centerPointX + radius*cos(angle)
y = centerPointY - radius*sin(angle)
angle += amount // amount is how fast you want the character to move, for example pi/60, pi/30 ,...
Note that since GM's coordinate system is reversed, I added a minus sign in front of sin to make it act like the sin of traditional coordinate system.
Of course, you will have to make this fit in your code to make it work, but this is the general idea. Like I said, there may be easier ways like using "step avoiding", but it all depends on your game.
If you find this method too hard to understand, then I suggest you'd try a simpler movement that is easier to make. I encourage you to try this though, because trying to make new things is what makes you develop as a programmer