Yes, thanks to you both. I got it working now :3
I'm using this code from Mitori's script to draw the right-hand display, but there are a few parts I don't understand. What happens if a yield; is placed at the top ? And why doesn't the infinite loop freeze DMF ?
SetDefaultStatusVisible(false);
task PlayerOther{
let sys=csd~"img\SystemA.png";
LoadGraphic(sys);
yield;
let oLife0 = []; let oLife = [];
loop{
ascent(let p in 0..8){
oLife0 = oLife0 ~ [p];
oLife0[p] = Obj_Create(OBJ_EFFECT);
ObjEffect_SetPrimitiveType(oLife0[p], PRIMITIVE_TRIANGLESTRIP);
ObjEffect_CreateVertex(oLife0[p], 4);
ObjEffect_SetTexture(oLife0[p],sys);
ObjEffect_SetLayer(oLife0[p],8);
ObjEffect_SetVertexXY(oLife0[p], 0, -8, -8);
ObjEffect_SetVertexXY(oLife0[p], 1, -8, 8);
ObjEffect_SetVertexXY(oLife0[p], 2, 8, -8);
ObjEffect_SetVertexXY(oLife0[p], 3, 8, 8);
ObjEffect_SetVertexUV(oLife0[p], 0, 80, 2);
ObjEffect_SetVertexUV(oLife0[p], 1, 80, 18);
ObjEffect_SetVertexUV(oLife0[p], 2, 96,2);
ObjEffect_SetVertexUV(oLife0[p], 3, 96,18);
Obj_SetPosition(oLife0[p],x + p * 16,y);
}
ascent(let q in 0..GetPlayerLife){
oLife = oLife ~ [q];
}
ascent(let p in 0..length(oLife)-1) {
oLife[p] = Obj_Create(OBJ_EFFECT);
ObjEffect_SetPrimitiveType(oLife[p], PRIMITIVE_TRIANGLESTRIP);
ObjEffect_CreateVertex(oLife[p], 4);
ObjEffect_SetTexture(oLife[p],sys);
ObjEffect_SetLayer(oLife[p],8);
ObjEffect_SetVertexXY(oLife[p], 0, -8, -8);
ObjEffect_SetVertexXY(oLife[p], 1, -8, 8);
ObjEffect_SetVertexXY(oLife[p], 2, 8, -8);
ObjEffect_SetVertexXY(oLife[p], 3, 8, 8);
ObjEffect_SetVertexUV(oLife[p], 0, 0, 2);
ObjEffect_SetVertexUV(oLife[p], 1, 0, 18);
ObjEffect_SetVertexUV(oLife[p], 2, 16,2);
ObjEffect_SetVertexUV(oLife[p], 3, 16,18);
Obj_SetPosition(oLife[p],x + p * 16,y);
}
yield;
if (OnPlayerMissed) { Obj_Delete(oLife[length(oLife)-1]); }
ascent(let p in 0..length(oLife0)){
Obj_Delete(oLife0[p]);
}
ascent(let p in 0..length(oLife)){
Obj_Delete(oLife[p]);
}
}
}