Difference between revisions of "Avatar Radar (NewAge)"

From Second Life Wiki
Jump to navigation Jump to search
(Created page with '== Avatar Radar (NewAge) == Just copy and paste this script into an object that will be your hud! <lsl> ///////////////////////////////// // New Age Radar Script // By Asia Sno...')
 
m (<lsl> tag to <source>)
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
== Avatar Radar (NewAge) ==
NewAge Avatar Radar Project
Version 1.2
No longer need to spend to in making a hud, just copy and past script into a prim and click yes to allow script permission to attach to your UI, Set on Center 2.


Just copy and paste this script into an object that will be your hud!
<source lang="lsl2">
 
<lsl>
/////////////////////////////////
/////////////////////////////////
// New Age Radar Script
// NewAge Radar Project Script
// By Asia Snowfall
// By Asia Snowfall
// Version 1.0
// Version 1.2
/////////////////////////////////
// v1.2;
// ------
// (Added) HUD Maker Feature, When you save script, click Yes
// (Added) Power Feature, Turn Radar on and Off
// (Added) HUD Menu, Allowing you to control Power Feature, Change from Avatar Radar to Land Information and back again
// Easier to now Modify script varibles
/////////////////////////////////
// v1.1;
// ------
// (Added) - Agent Count in Region when no agents in sensor range
// (Added) - Lag Status when no agents in sensor range
/////////////////////////////////
// v1.0
// ------
// (Initial Release)
/////////////////////////////////
/////////////////////////////////


// Configure;
float scan_range = 100;
float scan_range = 100;
float speed = 2;
float speed = 2;
integer channel = 1;
integer channel = 1;
integer menu_channel = 666;
integer show_total_agents_in_chat_range = TRUE;
integer show_total_agents_in_chat_range = TRUE;
integer show_total_agents_in_region = TRUE;
integer show_total_agents_in_region = TRUE;
integer show_lag_status = TRUE;
integer show_lag_status = TRUE;
integer max_people = 7;
integer parcel_description_max_characters = 50;
string menu_text = "***\nAvatar Radar Project\n***\nby Asia Snowfall";
string hud_texture = "ec122289-1239-74fd-708f-ab4b949b7cdb";
vector hud_size = <0.1,0.1,0.1>;


// Core Varibles;


// Integer Varibles
integer setting = FALSE;
integer handler;
integer handler;
integer radar_power = TRUE;
integer positioning;
integer positioning_handler;
integer scan_type = TRUE;


// String Varibles
string people;
string people;
string lag_status;
// List Varibles
list people_in_sensor_range;
list people_in_sensor_range;
list people_in_sensor_vectors;
list people_in_sensor_vectors;
list chat_range;
list chat_range;
list hud_position;
list main_menu;
// Float Varibles
float position_by = 0.01;
// Vector Varibles
vector text_color;
// Premade Functions


integer max_people = 7;
asSetPosMenu() //Might wonder why i make the script empty the hud position and fill it again with same options, but it optimizes script memory! every little helps
{
    setting = TRUE;
    hud_position = [];
    llListenRemove(positioning_handler);
    @retry;
    positioning = llRound(llFrand(999999));
    if(positioning <= 2000)
    {
        jump retry;
    }
    positioning_handler = llListen(positioning, "", "", "");
    hud_position = ["-", "Down", "+", "Left", "===", "Right", "===", "Up", "Done"];
    llSetText("Setup the hud using position control\nClick Done when your finished", <1.0, 1.0, 1.0>, 1.0);
    llSetTimerEvent(30);
}


string lag_status;
asSetMainMenu()
vector text_color;
{
    main_menu = ["Avatars", "Land Info"];
    if(radar_power == FALSE)
    {
        main_menu += "Power On";
    }
    else
    {
        main_menu += "Power Off";
    }
}


llLagStatus()
llLagStatus()
Line 54: Line 126:
     }
     }
}
}
all_status()
{
    if(show_total_agents_in_region == TRUE)
    {
        people += "Region Agent Count = "+(string)llGetRegionAgentCount()+"\n";
    }
    if(show_total_agents_in_chat_range == TRUE)
    {
        people += "Agents in Range = "+(string)llGetListLength(chat_range)+"\n";
    }
    if(show_lag_status == TRUE)
    {
        people += "Lag Status = "+lag_status;
    }
}
finish()
{
    llOwnerSay("Starting radar system\nClick HUD for Menu");
    setting = FALSE;
    llSetTimerEvent(speed);
    llListenRemove(positioning_handler);
}
           


default
default
Line 59: Line 156:
     state_entry()
     state_entry()
     {
     {
         llSensor("", "", AGENT, scan_range, PI);
         llListen(menu_channel, "", "", "");
         llSetTimerEvent(speed);
         if(llGetAttached() != 0)
    }
    attach(key id)
    {
        if(id == llGetOwner())
         {
         {
            llSetScale(hud_size);
            llSetTexture(hud_texture, ALL_SIDES);
             handler = llListen(channel, "", "", "");
             handler = llListen(channel, "", "", "");
             llOwnerSay("Find location of avatar within sensor range by typing either their full or partial name on channel "+(string)channel + ", example; /"+(string)channel+" Mark");
             llOwnerSay("Find location of avatar within sensor range by typing either their full or partial name on channel "+(string)channel + ", example; /"+(string)channel+" Mark");
            asSetPosMenu();
            llDialog(llGetOwner(), menu_text, hud_position, positioning);
         }
         }
         else if(id == NULL_KEY)
         else if(llGetAttached() == 0)
         {
         {
            llSensor("", "", AGENT, scan_range, PI);
            setting = FALSE;
             llListenRemove(handler);
             llListenRemove(handler);
            llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
        }
    }
    touch_start(integer x)
    {
        if(llDetectedKey(0) == llGetOwner())
        {
            if(setting == FALSE)
            {
                if(llGetAttached() != 0)
                {
                    asSetMainMenu();
                    llDialog(llGetOwner(), menu_text, main_menu, menu_channel);
                }
                else
                {
                    llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
                }
            }
            else
            {
                llDialog(llGetOwner(), menu_text, hud_position, positioning);
            }
         }
         }
     }
     }
     listen(integer channel, string name, key id, string str)
    run_time_permissions(integer perm)
    {
        if(perm & PERMISSION_ATTACH)
        {
            llAttachToAvatar(ATTACH_HUD_CENTER_2);
        }
        else
        {
            llOwnerSay("Some features disabled when not attached");
            llSetTimerEvent(speed);
        }
    }
    attach(key id)
    {
        llResetScript();
    }
     listen(integer chan, string name, key id, string str)
     {
     {
         if(id == llGetOwner())
         if(id == llGetOwner())
         {
         {
             str = llToLower(str);
             str = llToLower(str);
            integer index = llListFindList(people_in_sensor_range, [str]);
             if(chan == channel)
             if(index != -1)
             {
             {
                 llOwnerSay(llList2String(people_in_sensor_range, index)+" is located at "+llList2String(people_in_sensor_vectors, index));
                 integer index = llListFindList(people_in_sensor_range, [str]);
            }
                if(index != -1)
            else if(index == -1)
                {
            {
                    llOwnerSay(llList2String(people_in_sensor_range, index)+" is located at "+llList2String(people_in_sensor_vectors, index));
                integer i = 0;
                }
                integer length = llGetListLength(people_in_sensor_range);
                else if(index == -1)
                integer ind;
                do
                 {
                 {
                     if(llStringLength(llList2String(people_in_sensor_range, i)) > 0)
                     integer i = 0;
                    integer length = llGetListLength(people_in_sensor_range);
                    integer ind;
                    do
                     {
                     {
                         ind = llSubStringIndex(llList2String(people_in_sensor_range, i), str);
                         if(llStringLength(llList2String(people_in_sensor_range, i)) > 0)
                        if(ind != -1)
                         {
                         {
                             llOwnerSay(llList2String(people_in_sensor_range, i) + " is located at "+llList2String(people_in_sensor_vectors, i));
                             ind = llSubStringIndex(llList2String(people_in_sensor_range, i), str);
                            return;
                            if(ind != -1)
                            {
                                llOwnerSay(llList2String(people_in_sensor_range, i) + " is located at "+llList2String(people_in_sensor_vectors, i));
                                return;
                            }
                         }
                         }
                     }
                     }while(i++<length);
                }while(i++<length);
                    llOwnerSay("No Avatars Found by the name or partial name of "+str);
                llOwnerSay("No Avatars Found by the name or partial name of "+str);
                }
            }
            else if(chan == menu_channel)
            {
                if(str == "avatars")
                {
                    scan_type = 1;
                    llOwnerSay("Radar will scan all avatars within "+(string)scan_range+" meters");
                }
                else if(str == "land info")
                {
                    scan_type = 2;
                    llOwnerSay("Radar will show land information");
                }
                else if(str == "power on")
                {
                    radar_power = TRUE;
                    llSetTimerEvent(speed);
                }
                else if(str == "power off")
                {
                    radar_power = FALSE;
                    llSetTimerEvent(0);
                    llSetText("Power Off", <1.0,1.0,1.0>, 1.0);
                }
             }
             }
             else
             else if(chan == positioning)
             {
             {
                 llOwnerSay("No Avatars Found by the name or partial name of "+str);
                 if(str == "+")
                {
                    if(position_by < 0.1)
                    {
                        position_by += 0.01;
                    }
                    llOwnerSay("Positioning will move by "+(string)position_by+" meters");
                }
                else if(str == "-")
                {
                    if(position_by > 0.01)
                    {
                        position_by -= 0.01;
                    }
                    llOwnerSay("Positioning will move by "+(string)position_by+" meters");
                }
                else if(str == "down")
                {
                    llSetPos(llGetLocalPos()+<0.0,0.0,-position_by>*llGetRot());
                }
                else if(str == "left")
                {
                    llSetPos(llGetLocalPos()+<0.0,position_by,0.0>*llGetRot());
                }
                else if(str == "right")
                {
                    llSetPos(llGetLocalPos()+<0.0,-position_by,0.0>*llGetRot());
                }
                else if(str == "up")
                {
                    llSetPos(llGetLocalPos()+<0.0,0.0,position_by>*llGetRot());
                }
                else if(str == "done")
                {
                    finish();
                }
                if(setting == TRUE)
                {
                    llSetTimerEvent(30);
                    llDialog(llGetOwner(), menu_text, hud_position, positioning);
                }
             }
             }
        }
    }
    on_rez(integer g)
    {
        if(g & CHANGED_OWNER)
        {
            llResetScript();
         }
         }
     }
     }
Line 154: Line 366:
         }while(i++<x);
         }while(i++<x);
         llLagStatus();
         llLagStatus();
         if(show_total_agents_in_region == TRUE)
        all_status();
         if(scan_type == 2)
         {
         {
             people += "Region Agent Count = "+(string)llGetRegionAgentCount()+"\n";
            list details = llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_NAME, PARCEL_DETAILS_DESC, PARCEL_DETAILS_OWNER, PARCEL_DETAILS_AREA]);
        }
             people = "Region = "+llGetRegionName();
        if(show_total_agents_in_chat_range == TRUE)
            people += "\nParcel Name = "+llList2String(details, 0);
        {
            people += "\nParcel Description = "+llGetSubString(llList2String(details, 1), 0, parcel_description_max_characters);
            people += "Agents in Range = "+(string)llGetListLength(chat_range)+"\n";
            if(llStringLength(llKey2Name((key)llList2String(details, 2))) > 0)
        }
            {
        if(show_lag_status == TRUE)
                people += "\nParcel Owner = "+llKey2Name((key)llList2String(details, 2));
        {
            }
             people += "Lag Status = "+lag_status;
            else
            {
                people += "\nParcel Owner = Group Owned";
            }
            people += "\nParcel Area = "+llList2String(details, 3);
            people += "\nRegion FPS = "+(string)llGetRegionFPS();
             people += "\nRegion Time Dilation = "+(string)llGetRegionTimeDilation();
         }
         }
         llSetText(people, text_color, 1.0);
         llSetText(people, text_color, 1.0);
Line 171: Line 390:
     no_sensor()
     no_sensor()
     {
     {
         if(llGetListLength(chat_range) < 0)
         if(llGetListLength(chat_range) > 0)
         {
         {
             chat_range = [];
             chat_range = [];
         }
         }
         people += "Region Agent Count = "+(string)llGetRegionAgentCount()+"\nAgents in Range = "+(string)llGetListLength(chat_range)+"\n";
         people += "Region Agent Count = "+(string)llGetRegionAgentCount()+"\nAgents in Range = "+(string)llGetListLength(chat_range)+"\n";
         people = "No People In Range";
         people = "No People In Range\n";
         llLagStatus();
         llLagStatus();
        all_status();
         llSetText(people, text_color, 1.0);
         llSetText(people, text_color, 1.0);
         people = "";
         people = "";
Line 183: Line 403:
     timer()
     timer()
     {
     {
         llSensor("", "", AGENT, scan_range, PI);
         if(setting == FALSE)
        {
            llSensor("", "", AGENT, scan_range, PI);
        }
        else
        {
            finish();
        }
     }
     }
}</lsl>
}
</source>

Latest revision as of 19:22, 24 January 2015

NewAge Avatar Radar Project Version 1.2 No longer need to spend to in making a hud, just copy and past script into a prim and click yes to allow script permission to attach to your UI, Set on Center 2.

/////////////////////////////////
// NewAge Radar Project Script
// By Asia Snowfall
// Version 1.2
/////////////////////////////////
// v1.2;
// ------
// (Added) HUD Maker Feature, When you save script, click Yes
// (Added) Power Feature, Turn Radar on and Off
// (Added) HUD Menu, Allowing you to control Power Feature, Change from Avatar Radar to Land Information and back again
// Easier to now Modify script varibles
/////////////////////////////////
// v1.1;
// ------
// (Added) - Agent Count in Region when no agents in sensor range
// (Added) - Lag Status when no agents in sensor range
/////////////////////////////////
// v1.0
// ------
// (Initial Release)
/////////////////////////////////

// Configure;
float scan_range = 100;
float speed = 2;

integer channel = 1;
integer menu_channel = 666;
integer show_total_agents_in_chat_range = TRUE;
integer show_total_agents_in_region = TRUE;
integer show_lag_status = TRUE;
integer max_people = 7;
integer parcel_description_max_characters = 50;

string menu_text = "***\nAvatar Radar Project\n***\nby Asia Snowfall";
string hud_texture = "ec122289-1239-74fd-708f-ab4b949b7cdb";

vector hud_size = <0.1,0.1,0.1>;

// Core Varibles;

// Integer Varibles
integer setting = FALSE;
integer handler;
integer radar_power = TRUE;
integer positioning;
integer positioning_handler;
integer scan_type = TRUE;

// String Varibles
string people;
string lag_status;

// List Varibles
list people_in_sensor_range;
list people_in_sensor_vectors;
list chat_range;
list hud_position;
list main_menu;

// Float Varibles
float position_by = 0.01;
 
// Vector Varibles
vector text_color;

// Premade Functions

asSetPosMenu() //Might wonder why i make the script empty the hud position and fill it again with same options, but it optimizes script memory! every little helps
{
    setting = TRUE;
    hud_position = [];
    llListenRemove(positioning_handler);
    @retry;
    positioning = llRound(llFrand(999999));
    if(positioning <= 2000)
    {
        jump retry;
    }
    positioning_handler = llListen(positioning, "", "", "");
    hud_position = ["-", "Down", "+", "Left", "===", "Right", "===", "Up", "Done"];
    llSetText("Setup the hud using position control\nClick Done when your finished", <1.0, 1.0, 1.0>, 1.0);
    llSetTimerEvent(30);
}

asSetMainMenu()
{
    main_menu = ["Avatars", "Land Info"];
    if(radar_power == FALSE)
    {
        main_menu += "Power On";
    }
    else
    {
        main_menu += "Power Off";
    }
}

llLagStatus()
{
    float time_dilation = llGetRegionTimeDilation();
    if(time_dilation <= 0.3)
    {
        lag_status = "Laggy";
        text_color = <1.0,0.0,0.0>;
    }
    else if(time_dilation > 0.3 && time_dilation <= 0.5)
    {
        lag_status = "Not Bad";
        text_color = <1.0,1.0,0.0>;
    }
    else if(time_dilation > 0.5 && time_dilation <= 0.8)
    {
        lag_status = "Good";
        text_color = <0.0,1.0,0.0>;
    }
    else if(time_dilation > 0.8 && time_dilation <= 1.0)
    {
        lag_status = "Excellent";
        text_color = <0.0,1.0,1.0>;
    }
}

all_status()
{
    if(show_total_agents_in_region == TRUE)
    {
        people += "Region Agent Count = "+(string)llGetRegionAgentCount()+"\n";
    }
    if(show_total_agents_in_chat_range == TRUE)
    {
        people += "Agents in Range = "+(string)llGetListLength(chat_range)+"\n";
    }
    if(show_lag_status == TRUE)
    {
        people += "Lag Status = "+lag_status;
    }
}

finish()
{
    llOwnerSay("Starting radar system\nClick HUD for Menu");
    setting = FALSE;
    llSetTimerEvent(speed);
    llListenRemove(positioning_handler);
}
            

default
{
    state_entry()
    {
        llListen(menu_channel, "", "", "");
        if(llGetAttached() != 0)
        {
            llSetScale(hud_size);
            llSetTexture(hud_texture, ALL_SIDES);
            handler = llListen(channel, "", "", "");
            llOwnerSay("Find location of avatar within sensor range by typing either their full or partial name on channel "+(string)channel + ", example; /"+(string)channel+" Mark");
            asSetPosMenu();
            llDialog(llGetOwner(), menu_text, hud_position, positioning);
        }
        else if(llGetAttached() == 0)
        {
            llSensor("", "", AGENT, scan_range, PI);
            setting = FALSE;
            llListenRemove(handler);
            llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
        }
    }
    touch_start(integer x)
    {
        if(llDetectedKey(0) == llGetOwner())
        {
            if(setting == FALSE)
            {
                if(llGetAttached() != 0)
                {
                    asSetMainMenu();
                    llDialog(llGetOwner(), menu_text, main_menu, menu_channel);
                }
                else
                {
                    llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
                }
            }
            else
            {
                llDialog(llGetOwner(), menu_text, hud_position, positioning);
            }
        }
    }
    run_time_permissions(integer perm)
    {
        if(perm & PERMISSION_ATTACH)
        {
            llAttachToAvatar(ATTACH_HUD_CENTER_2);
        }
        else
        {
            llOwnerSay("Some features disabled when not attached");
            llSetTimerEvent(speed);
        }
    }
    attach(key id)
    {
        llResetScript();
    }
    listen(integer chan, string name, key id, string str)
    {
        if(id == llGetOwner())
        {
            str = llToLower(str);
            if(chan == channel)
            {
                integer index = llListFindList(people_in_sensor_range, [str]);
                if(index != -1)
                {
                    llOwnerSay(llList2String(people_in_sensor_range, index)+" is located at "+llList2String(people_in_sensor_vectors, index));
                }
                else if(index == -1)
                {
                    integer i = 0;
                    integer length = llGetListLength(people_in_sensor_range);
                    integer ind;
                    do
                    {
                        if(llStringLength(llList2String(people_in_sensor_range, i)) > 0)
                        {
                            ind = llSubStringIndex(llList2String(people_in_sensor_range, i), str);
                            if(ind != -1)
                            {
                                llOwnerSay(llList2String(people_in_sensor_range, i) + " is located at "+llList2String(people_in_sensor_vectors, i));
                                return;
                            }
                        }
                    }while(i++<length);
                    llOwnerSay("No Avatars Found by the name or partial name of "+str);
                }
            }
            else if(chan == menu_channel)
            {
                if(str == "avatars")
                {
                    scan_type = 1;
                    llOwnerSay("Radar will scan all avatars within "+(string)scan_range+" meters");
                }
                else if(str == "land info")
                {
                    scan_type = 2;
                    llOwnerSay("Radar will show land information");
                }
                else if(str == "power on")
                {
                    radar_power = TRUE;
                    llSetTimerEvent(speed);
                }
                else if(str == "power off")
                {
                    radar_power = FALSE;
                    llSetTimerEvent(0);
                    llSetText("Power Off", <1.0,1.0,1.0>, 1.0);
                }
            }
            else if(chan == positioning)
            {
                if(str == "+")
                {
                    if(position_by < 0.1)
                    {
                        position_by += 0.01;
                    }
                    llOwnerSay("Positioning will move by "+(string)position_by+" meters");
                }
                else if(str == "-")
                {
                    if(position_by > 0.01)
                    {
                        position_by -= 0.01;
                    }
                    llOwnerSay("Positioning will move by "+(string)position_by+" meters");
                }
                else if(str == "down")
                {
                    llSetPos(llGetLocalPos()+<0.0,0.0,-position_by>*llGetRot());
                }
                else if(str == "left")
                {
                    llSetPos(llGetLocalPos()+<0.0,position_by,0.0>*llGetRot());
                }
                else if(str == "right")
                {
                    llSetPos(llGetLocalPos()+<0.0,-position_by,0.0>*llGetRot());
                }
                else if(str == "up")
                {
                    llSetPos(llGetLocalPos()+<0.0,0.0,position_by>*llGetRot());
                }
                else if(str == "done")
                {
                    finish();
                }
                if(setting == TRUE)
                {
                    llSetTimerEvent(30);
                    llDialog(llGetOwner(), menu_text, hud_position, positioning);
                }
            }
        }
    }
    on_rez(integer g)
    {
        if(g & CHANGED_OWNER)
        {
            llResetScript();
        }
    }
    changed(integer h)
    {
        if(h & CHANGED_OWNER)
        {
            llResetScript();
        }
    }
    sensor(integer x)
    {
        people_in_sensor_range = [];
        people_in_sensor_vectors = [];
        integer i = 0;
        integer index;
        --x;
        if(x > max_people)
        {
            x = max_people-1;
        }
        do
        {
            index = llListFindList(chat_range, [llDetectedName(i)]);
            if(llStringLength(llDetectedName(i)) >! 0)
            {
                if(llVecDist(llDetectedPos(i), llGetPos()) <= 20)
                {
                    if(index == -1)
                    {
                        chat_range += llDetectedName(i);
                        llOwnerSay(llDetectedName(i) + " has entered chat range");
                    }
                }
                else
                {
                    if(index != -1)
                    {
                        llOwnerSay(llDetectedName(i) + " has left chat range");
                        chat_range = llDeleteSubList(chat_range, index, index);
                    }
                }
                people_in_sensor_range += llToLower(llDetectedName(i));
                people_in_sensor_vectors += llDetectedPos(i);
                people += llDetectedName(i) + " - " + llGetSubString((string)llVecDist(llDetectedPos(i), llGetPos()), 0, 4)+"m\n";
            }
        }while(i++<x);
        llLagStatus();
        all_status();
        if(scan_type == 2)
        {
            list details = llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_NAME, PARCEL_DETAILS_DESC, PARCEL_DETAILS_OWNER, PARCEL_DETAILS_AREA]);
            people = "Region = "+llGetRegionName();
            people += "\nParcel Name = "+llList2String(details, 0);
            people += "\nParcel Description = "+llGetSubString(llList2String(details, 1), 0, parcel_description_max_characters);
            if(llStringLength(llKey2Name((key)llList2String(details, 2))) > 0)
            {
                people += "\nParcel Owner = "+llKey2Name((key)llList2String(details, 2));
            }
            else
            {
                people += "\nParcel Owner = Group Owned";
            }
            people += "\nParcel Area = "+llList2String(details, 3);
            people += "\nRegion FPS = "+(string)llGetRegionFPS();
            people += "\nRegion Time Dilation = "+(string)llGetRegionTimeDilation();
        }
        llSetText(people, text_color, 1.0);
        people = "";
    }
    no_sensor()
    {
        if(llGetListLength(chat_range) > 0)
        {
            chat_range = [];
        }
        people += "Region Agent Count = "+(string)llGetRegionAgentCount()+"\nAgents in Range = "+(string)llGetListLength(chat_range)+"\n";
        people = "No People In Range\n";
        llLagStatus();
        all_status();
        llSetText(people, text_color, 1.0);
        people = "";
    }
    timer()
    {
        if(setting == FALSE)
        {
            llSensor("", "", AGENT, scan_range, PI);
        }
        else
        {
            finish();
        }
    }
}