Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //"043e4cec-eb70-4700-a8ca-f514c11ed625" = FailedScience Resident
- list keys_to_ignore = ["043e4cec-eb70-4700-a8ca-f514c11ed625"];
- vector project3D(vector pos) {
- //Help from Mikkel Mercy
- vector between = (pos - llGetCameraPos()) * (<0.0f, 0.0f, 0.0f, 1.0f> / llGetCameraRot());
- between = <-between.y, between.z, between.x>;
- float c = llTan(1.047198f / 2.0f);
- vector local_pos = <(between.x * (1.0f / c)) / between.z,
- (between.y * (1.0f / c)) / between.z,
- (between.z - 2.0) / between.z>;
- vector ret = (<0.0f, -local_pos.x, local_pos.y> / 2.0f)+<0,0.7901,0.2886>;
- if(local_pos.z < -1.0f || local_pos.z > 1.0f){
- return <0.0f, 0.0f, -2.0f>;
- }
- return ret;
- }
- test(){
- integer x = 0;
- vector local;
- vector target;
- list keys = llGetAgentList(AGENT_LIST_REGION, []);
- integer point = llListFindList(keys,[llGetOwner()]);
- keys = llDeleteSubList(keys,point,point);
- integer s = llGetListLength(keys);
- for(;x<s;++x) {
- key ck = llList2Key(keys,x);
- if(llListFindList(keys_to_ignore,[(string)ck]) != -1){
- jump end;
- }else{
- vector dp = (vector)((string)llGetObjectDetails(ck,[OBJECT_POS]));
- string dn = llKey2Name(ck);
- if(dn == "")jump end;
- if(ck == "" || ck == NULL_KEY)jump end;
- vector pos = project3D(dp);
- string out_text = dn + " (" + (string)llFloor(llVecDist(llGetPos(),dp))+"m)"+ llList2String(llGetObjectDetails(llList2Key(keys,x),[OBJECT_TOTAL_SCRIPT_COUNT]),0);
- if(!llSameGroup(ck)){
- llSetLinkPrimitiveParamsFast(17 + x,[PRIM_TEXT, out_text, <0.75f, 0.0f, 0.0f>, 0.75f,PRIM_POSITION, pos,PRIM_COLOR,-1,<0.75f, 0.0f, 0.0f>,1.0,PRIM_NAME,"target,"+dn,PRIM_DESC,(string)ck]);
- }
- else{
- llSetLinkPrimitiveParamsFast(17 + x,[PRIM_TEXT, out_text, <0.0f, 0.75f, 0.0f>, 0.75f,PRIM_POSITION, pos,PRIM_COLOR,-1,<0.0f,0.75f,0.0f>,1.0,PRIM_NAME,"target,"+dn,PRIM_DESC,(string)ck]);
- }
- }
- @end;
- }
- for(;x<llGetNumberOfPrims()+1;++x){
- llSetLinkPrimitiveParamsFast(17 + x,[PRIM_POSITION,<-2,-2,-2>,PRIM_NAME,"Object",PRIM_DESC,"NULL"]);
- }
- }
- clear_prims(){
- integer x = 17;
- for(;x<llGetNumberOfPrims()+1;++x){
- llSetLinkPrimitiveParamsFast(x, [PRIM_TEXT,"", <0.75f, 0.0f, 0.0f>, 0.75f,PRIM_SIZE, <0.03f, 0.03f, 0.03f>,PRIM_POSITION,<-2,-2,-2>,PRIM_COLOR,-1,<0.75f, 0.0f, 0.0f>,1.0,PRIM_NAME,"Object",PRIM_DESC,"NULL"]);
- }
- llSetText("",<1,1,1>,1);
- }
- list in_sim(){
- list out;
- list keys = llGetAgentList(AGENT_LIST_REGION, []);
- integer numberOfKeys = llGetListLength(keys);
- vector currentPos = llGetPos();
- list newkeys;
- key thisAvKey;
- integer i;
- for (i = 0; i < numberOfKeys; ++i) {
- thisAvKey = llList2Key(keys,i);
- newkeys += [llRound(llVecDist(currentPos,llList2Vector(llGetObjectDetails(thisAvKey, [OBJECT_POS]), 0))),thisAvKey];
- }
- newkeys = llListSort(newkeys, 2, TRUE);
- for (i = 0; i < (numberOfKeys * 2); i += 2) {
- if(llList2Key(newkeys, i+1)!=llGetOwner() && llList2Key(newkeys, i+1)!= NULL_KEY){
- out+=llGetSubString(llKey2Name(llList2Key(newkeys, i+1)),0,5)+" ("+ (string) llList2Integer(newkeys, i) + "m)" + llList2String(llGetObjectDetails(llList2Key(newkeys,i+1),[OBJECT_TOTAL_SCRIPT_COUNT]),0);
- }
- }
- return out;
- }
- say(string m){
- llMessageLinked(-1,-560,m,llGetOwner());
- }
- integer display = 1;
- integer on = 1;
- default{
- on_rez(integer r) {
- llResetScript();
- }
- changed(integer c){
- if(c & CHANGED_REGION){
- clear_prims();
- test();
- }if(c & CHANGED_TELEPORT){
- clear_prims();
- test();
- }
- }
- state_entry(){
- if(llGetAttached()){
- clear_prims();
- llSetPos(<0,-0.7901,-0.2886>);
- llRequestPermissions(llGetOwner(), PERMISSION_TRACK_CAMERA);
- }
- }
- run_time_permissions(integer p){
- if(p & PERMISSION_TRACK_CAMERA){
- llSetTimerEvent(0.0000001f);
- }
- else{
- llResetScript();
- }
- }link_message(integer s,integer n,string msg,key i){
- if(n == -420){
- string m = llToLower(msg);
- if(m == "target off"){
- on = 0;
- clear_prims();
- say("Targeting system turned off.");
- }
- if(m == "target on"){
- on = 1;
- if(llGetPermissions() & PERMISSION_TRACK_CAMERA){
- test();
- llSetTimerEvent(0.0000001f);
- }else{
- llResetScript();
- }
- say("Targeting system turned on.");
- }
- if(m == "text on"){
- display = 1;
- say("Display text is now turned on.");
- }
- if(m == "text off"){
- display = 0;
- say("Display text is now turned off");
- llSetText("",<1,1,1>,1);
- }
- }
- }
- timer(){
- if(display){
- llSetText(llDumpList2String(in_sim(),"\n"),<1,1,1>,1);
- }
- if(!display){
- llSetText("",<1,1,1>,1);
- }
- if(on){
- test();
- }
- if(!on){
- llSetTimerEvent(0.0);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement