OK heres something I put together for you, let me know if it is suitable for what you need.
This function lets you do everything at run-time too, it can be used with any entity, with or without actions.
Usage is simple, :-
1> The first parameter is "Parent" which in your case is the Human Model to hover over.
2> The second parameter is "FloaterFilename" which is the bmp/pcx/etc OR MDL you want to use as a Sprite.
3a> Also read the included comments to help understand how it works.
Give it a try (Ive already tested it) and if you need to tweak it height above its parent,
adjust BOTH the "me.z += Parent.max_z + my.max_z;" lines.
If you need it to do more, or it aint what you can use, let me know and I'll mod it accordingly.
//
function CreateFloater( ENTITY* Parent, STRING* FloaterFilename )
{
if(Parent==NULL) return; //nothing to attach to
//
me = ent_create( FloaterFilename, Parent.x, NULL); //create Floater object
me.z += Parent.max_z + my.max_z; //position Floater roughly ABOVE Parent Collision Box Center
while(Parent!=NULL)
{
vec_set( me.x, Parent.x ); //These TWO lines are only needed to make Floater "follow"
me.z += Parent.max_z + my.max_z; // the Parent model if it is ever moving / moved
wait(1); //keep function alive as long as Parent exists
}
ptr_remove( me ); //automatically delete Floater once Parent no longer exists
}