One way to position text above the character is to make a plain above their head and texture it with the message. It means the messages get smaller as players move away. I don't know if you want this or not.
`Text to be displayed
a$="Any text would work here"
print a$
get image 1,0,0,text width(a$),text height(a$)
cls
make object sphere 1,10
make object plain 2,text width(a$)/2,text height(a$)/2
texture object 2,1
set object transparency 2,1
yrotate object 1,180
w=0
autocam off
do
move object 1,upkey()-downkey()
move object right 1,rightkey()-leftkey()
yrotate object 1,object angle y(1)+shiftkey()-controlkey()
position object 2,object position x(1),object position y(1)+8,object position z(1)
yrotate object 2,object angle y(1)
if spacekey()=1 and w=0
w=1
delete object 2
ink 0,0
box 0,0,screen width(),screen height()
ink -1,0
a$="The message can change"
set cursor 1,1
print a$
get image 1,0,0,text width(a$),text height(a$)
make object plain 2,text width(a$)/2,text height(a$)/2
texture object 2,1
set object transparency 2,1
endif
loop
Insanity is just a state of mind