так ты что, два дня молчал что ли?
Типа псевдокода, но ты выбрал первый вариант. Я же НАСТОЯТЕЛЬНО советую делать по второму, т.е. именно если МЕНЬШЕ
if (entitydistance(hero,NPC)<MAX_RANGE)
;берем проекцию объекта на камеру
;выводим текст в полученных координатах
;это 2д
;для 3д
;showentity sprite_name_npc или
;entityvisible sprite_name_npc
;масштабируем спрайт в зависимости от расстояния до камеры (чтобы он
;не получился слишком маленьким либо слишком большим)
endif