I don't think it is fully what you are looking for, especially if the player character moves, but there might be an alternative solution to this. It would be using the widget system.
Create a Widget, call it "dialogue". Use these settings specifically for the widget:
Width: 27 (Or a little more or less if you would like)
Grid Height: 4
Initial position: Top Center
Mouse Input Passthrough: On
Show Frame: Off
Show Close Button: Off.
Then add a text label to the widget that is the full size of the widget.
This will be Element 0001.
Save it.
Now create this function in your global script:
function disText($text) begin
widget["dialogue"].element["0001"].text = $text;
wait(3.5);
widget["dialogue"].element["0001"].text = "";
end;
In your startup script, call this function:
show_widget("dialogue");
Then when you want, you can call up disText($text) whenever you want a message to display. Unfortunately, you cant really move the UI so it appears above the characters head since the coordinates for Widgets dont work that way. And unfortunately, colors for the text are limited to the themes. But this is a step in the right direction as a temporary use though, perhaps.