^That's exactly the part I need to know
...You never said which of the three you needed help with. You also haven't posted anything you've already done, so I'm literally going on nothing here dude, come on. I don't want to have to spoonfeed if I can help it.
From the beginning then; a basic rectangle effect object looks like this:
let obj = Obj_Create(OBJ_EFFECT);
Obj_SetPosition(obj, x, y);
ObjEffect_SetTexture(obj, texture);
ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
ObjEffect_CreateVertex(obj, 4);
ObjEffect_SetVertexUV(obj, i, bla, bla); //set four texture vertices
ObjEffect_SetVertexXY(obj, i, bla, bla); //set four render vertices
Generally you're going to plop this in a function to return or a task. If you haven't read it already, please go read (and understand) the intermediate tutorial. Actually, might be an idea to read it again anyways.
task effectbla{
//initializing effect object goes here
loop(60){
Obj_SetX(obj, Obj_GetX(obj) + 4);
yield;
}
ascent(i in 0..9){ CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 4, i*15, RED01, 12); }
loop(60){
Obj_SetX(obj, Obj_GetX(obj) + 4);
yield;
}
Obj_Delete(obj);
}
Really, nothing special is going on here, it's just standard task handling. Effect is created, 60 frames of moving, fires bullets, another 60 frames of moving and it's deleted.
The condition for the player hitting the object is just "when the player gets to a certain distance from the object's center", depending on your effect, I guess. High school trig.
if(((GetPlayerY - Obj_GetY(obj))^2 + (GetPlayerX - Obj_GetX(obj))^2)^0.5 > distance) is the condition. You would just plop it into your task.
This is kind of why I don't know what your actual problem is. If you know how to make effect objects and you've read the intermediate tutorial, this should be easy, so I'm a bit confused.