/44 scripts on will show script count and memory if the region supports it.

First you will need to create a suitable HUD object. Use this first script to do that. It will ask for link permission, grant it.

build script

/**************************************************
This is the script that creates the radar object.
1. Rez a cube and take it to your inventory.
2. Drag the cube from your inventory back on to the ground.
3. Go back to your inventory, this time ctrl+drag the same cube to inside the one you just rezzed.
4. Edit the first cube, create a new script, paste in this code, and save.
5. Touch to create the object.
6. Edit the radar object again, create a new script, paste in the second script (the actual radar), and save.
7. Take the result to your inventory, it should be ready.
To use, attach it to your HUD. By default it expects to be worn on the bottom. If you want to
wear it near the top of the screen, it will be good to flip the object 180 degrees.
The text spacing could be too big or small, resize the object with the editor
until it looks how you want.
**************************************************/string gWorkPrim;
integer gNewChild;
float gCubeSize = .02;
default{state_entry(){llSetText("Rez a generic cube, take it to your inventory,\n"+"ctrl+drag it to inside this prim, then touch to begin", <1., 1., 1.>, 1.);
}touch_start(integer num){if(llDetectedKey(0)!=llGetOwner())return;
gWorkPrim =llGetInventoryName(INVENTORY_OBJECT, 0);
if(gWorkPrim ==""){llSetText("No object found in object inventory. Rez a generic cube, take it to your\n"+"inventory, ctrl+drag it to inside this prim, then touch to try again.", <1., 1., 0.>, 1.);
return;
}llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
}run_time_permissions(integer perm){if(perm & PERMISSION_CHANGE_LINKS){llSetText("Working...", <1., 1., 0.>, 1.);
llSetLinkPrimitiveParamsFast(LINK_THIS, [
PRIM_NAME,
"display names radar",
PRIM_ROTATION,
ZERO_ROTATION,
PRIM_SIZE,
<gCubeSize, gCubeSize, gCubeSize>,
PRIM_TEXTURE,
ALL_SIDES,
TEXTURE_BLANK,
<1., 1., 0.>,
ZERO_VECTOR,
.5,
PRIM_COLOR,
ALL_SIDES,
ZERO_VECTOR,
.5
]);
gNewChild =0;
llRezObject(gWorkPrim, llGetPos()+ <.5, 0., 0.>, ZERO_VECTOR, ZERO_ROTATION, 0);
}}object_rez(key id){llCreateLink(id, LINK_ROOT);
llSetLinkPrimitiveParamsFast(2, [PRIM_POSITION,
<0., 0., gCubeSize *(gNewChild +1)>,
PRIM_ROTATION,
ZERO_ROTATION,
PRIM_SIZE,
<gCubeSize, gCubeSize, gCubeSize>,
PRIM_TEXTURE,
ALL_SIDES,
TEXTURE_BLANK,
<1., 1., 0.>,
ZERO_VECTOR,
0.,
PRIM_COLOR,
ALL_SIDES,
ZERO_VECTOR,
0.,
PRIM_DESC,
(string)gNewChild
]);
gNewChild++;
if(gNewChild < 16){llRezObject(gWorkPrim, llGetPos()+ <.5, 0., 0.>, ZERO_VECTOR, ZERO_ROTATION, 0);
}else{llRemoveInventory(gWorkPrim);
llSetText("Object created, you can drag in the radar script now.", <0., 1., 0.>, 1.);
llRemoveInventory(llGetScriptName());
}}}

When the object is created, here is the radar script that will do the real work.

To use, attach it to your HUD. By default it expects to be worn on the bottom. If you want to wear it near the top of the screen, it will be good to flip the object 180 degrees.

The text spacing could be too big or small, resize the object with the editor until it looks how you want.