Zuerst musst du das TLcfgPlayer-Objekt des gewünschten Helden bekommen. Dazu nimmst du die Funktion GetActor (Hinweis: die Funktionsnamen hab ich erfunden), die ist an Adresse 0x4B4870 und erwartet in eax die Adresse des TCatalog der die TLcfgPlayer-Objekter aller Helden enthält (bekommst du durch zweimaliges Derefernzieren von 0x4CDDC8) und in edx die ID des Helden. In eax liegt dann der Pointer auf das TLcfgPlayer-Objekt.

Danach musst du den Heldennamen abfragen, dazu verwendest du die GetName-Methode die in der VTable des Objekts an Offset 0x24 zu finden ist. Diese erwartet in eax das Objekt selbst und in edx eine Speicheradresse an welche der Pointer zum String geschrieben wird. Am Ende musst du mit der Funktion LStrClr (Adresse 0x4044EC, erwartet den Pointer zum Stringpointer - also das was du auch in edx bei GetName schreibst - in eax) den String löschen.

Code:
; Pointer zum Helden-TCatalog auslesen
mov eax, [4cddc8]
mov eax, [eax]

; Helden-ID (hier z.B. 4)
mov edx, 4

; TLcfgPlayer-Objekt holen (wird in eax gespeichert)
call 4b4870

; Adresse zu einer Variable speichern die den Stringpointer aufnehmen soll
lea edx, [ebp-4] ; WICHTIG: ebp-4 ist nur ein Beispiel, davon ausgehend dass du z.B. Platz am Stack reserviert hast. Du musst da eine Speicheradresse hernehmen wo du deinen Stringpointer ablegen willst

; VTable-Adresse temporär in ecx speichern und die GetName-Methode (Offset 0x24) aufrufen
mov ecx, [eax]
call [ecx+24]

; Der Stringpointer vom Heldennamen ist nun in der Variable die du vorher angegeben hast, hier im Beispiel [ebp-4]
; Mach damit was du willst

; Am Ende: String löschen
lea eax, [ebp-4] ; Adresse deiner Variable!
call 4044ec
Ich bin mir allerdings grade nicht im Klaren drüber wie und wo du das einbauen willst bzw. was genau du damit wirklich bezwecken willst...