I’m not sure how to write this for 2.5, and it would only work with a bitmap text object, but this is what I use for something similar to what you’re describing.
I have 2 scenes, the Main scene with the objects, and the HUD scene with text and info.
In HUD you have a text object (in 2.5) or some bitmap text that will be displaying the text you assign to it.
In Main scene, you have objects that have a String property named “info”. Each property can describe the object how ever you want it to.
The Camera in Main scene overlays the HUD scene, and uses this script below to get the ‘info’ property from the object you mouse over, and apply that text to the Display text object in the HUD scene.
from bge import logic as l
##########[ Main Function ]##########
def main():
c = l.getCurrentController()
o = c.owner
# Get display text object from HUD scene
dt = obs('hud')['displaytext']
over = c.sensors['over']
hit = over.hitObject
if over.positive:
# Check if hit object has 'info' property
if 'info' in hit:
info = hit['info']
dt.text = info
else:
dt.text = ""
else:
dt.text = ""
##########[ Internal Functions ]##########
# Get scene:
# s() = current scene
# s('name') = specific scene
def s(var=None):
sce = None
if var != None:
sl = l.getSceneList()
sce = None
for i in sl:
if i.name == var:
sce = i
else:
sce = l.getCurrentScene()
return sce
# Get object list
def obs(var=None):
sce = s(var)
if sce != None:
return sce.objects
Tested and works in 2.5
If you have a look at the code (just the Main Functions section), you can see where it gets the ‘info’ property from the object. After that, it just does what ever I wanted it to do. You don’t need to assign it to a text object, you could store it somewhere else or where ever you need it.
You can have the .blend here if you want to try it in 2.5. Apologies for not making it in 2.49 but I don’t have that version on file anymore, but I would also suggest learning Python in Blender 2.5 instead of 2.49. Will save you many headaches in the future 
hitobject hud info.blend (90.7 KB)