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.

Code:
//
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
}



"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial