Jump to content

can some one tell me how to make this owner only please


Flax Cuttita
 Share

You are about to reply to a thread that has been inactive for 2289 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

// Default is to make the entire object change color, even if multiple prims.
integer ChangeAllPrims = TRUE; // set this to FALSE for this prim only
//-----START COLORS-----------------------------
list grayscale =["black",<0,0,0>,"white",<1,1,1>,"gray",<0.5,0.5,0.5>,"silver",<0.75,0.75,0.75>,"darkgray",<0.4,0.4,0.4>,
    "lightgrey",<0.83,0.83,0.83>];
list reds = ["red",<1,0,0>,"darkred",<0.55,0,0>,"crimson",<0.86,0.08,0.24>,"indianred",<0.8,0.36,0.36>,
    "orangered",<1,0.27,0>];
list pinks = ["hotpink",<1,0.41,0.71>,"pink", <1,0.75,0.8>,"lightpink",<1,0.71,0.76>,"deeppink",<1,0.08,0.58>,
    "fuchsia",<1,0,1>,"orchid",<0.85,0.44,0.84>,"plum",<0.87,0.63,0.87>];
list violets = ["violet",<0.8,0.51,0.8>,"indigo",<0.29,0,0.51>,"lavender",<0.7,0.7,1>,"magenta",<1,0,1>,
    "purple",<0.5,0,0.5>,"darkmagenta",<0.55,0,0.55>,"darkviolet",<0.58,0,0.83>,"blueviolet",<0.54,0.17,0.89>];
list dk_blues = ["darkblue",<0,0,0.55>,"blue",<0,0,1>,"deepskyblue",<0,0.75,1>,"mediumblue",<0,0,0.8>,
    "midnightblue",<0.1,0.1,0.44>,"royalblue",<0.25,0.41,0.88>,"slateblue",<0.42,0.35,0.8>,"steelblue",<0.27,0.51,0.71>];
list lt_blues = ["teal",<0,0.5,0.5>,"turquoise",<0.25,0.88,0.82>,"darkcyan",<0,0.55,0.55>, "lightblue", <0.68,0.85,0.9>,
    "aquamarine",<0.5,1,0.83>,"azure",<0.8,1,1>,"cyan",<0,1,0.9>,"skyblue",<0.53,0.81,0.92>];
list yellows = ["yellow",<1,1,0>,"gold",<1,0.84,0>,"lightyellow",<1,1,0.88>,"goldenrod",<0.85,0.65,0.13>,
    "yellowgreen",<0.6,0.8,0.2>];
list dk_greens = ["darkgreen",<0,0.39,0>,"green",<0,0.5,0>,"forestgreen",<0.13,0.55,0.13>,"lawngreen",<0.49,0.99,0>,
    "springgreen",<0,1,0.5>];
list lt_greens = ["lightgreen",<0.56,0.93,0.56>,"chartreuse",<0.5,1,0>,"greenyellow",<0.68,1,0.18>,"honeydew",<0.94,1,0.94>,
    "limegreen",<0.2,0.8,0.2>,"mintcream",<0.96,1,0.98>,"seagreen",<0.18,0.55,0.34>];
list oranges = ["orange",<1,0.65,0>,"darkorange",<1,0.55,0>,"coral",<1,0.5,0.31>,"navajowhite",<1,0.87,0.68>,
    "salmon",<0.98,0.5,0.45>,"seashell",<1,0.96,0.93>,"brown",<.24,.17,.15>];
//-----END COLORS-----------------------------
key toucher = NULL_KEY;
list sub_menu;
list main_menu = ["grayscale", "reds", "pinks", "violets", "dk_blues", "lt_blues", "yellows", "dk_greens", "lt_greens", "oranges"];
 
//FUNCTIONS
//owner menu
integer menu_handler;
integer menu_channel;
menu(key user,string title,list buttons)
{
    llListenRemove(menu_handler);
    menu_channel = (integer)(llFrand(99999.0) * -1);
    menu_handler = llListen(menu_channel,"","","");
    llDialog(user,title,buttons,menu_channel);
    llSetTimerEvent(60.0);
}
default
{
    on_rez( integer sparam )
    {
        llResetScript();
    }
   
    state_entry()
    {
        //
    }
   
    touch_start(integer total_number)
    {
        toucher = llDetectedKey(0);
        menu(toucher, "\n \nSelect a color category.", main_menu);
    }
    // use link message instead of touch in case you have more menu in another script.
    //link_message(integer sender_num, integer num, string str, key id)
    //{
        //if (str == "Colors") // from main script
        //{
            //toucher = id;
            //menu(toucher, "\n \nSelect a color category.", main_menu);
        //}
    //}
   
    timer()
    {
        llSetTimerEvent(0.0);
        llListenRemove(menu_handler);
        toucher = NULL_KEY;
    }
   
    listen(integer channel, string name, key is, string message)
    {
        if (channel == menu_channel)
        {
            llSetTimerEvent(0.0);
            llListenRemove(menu_handler);
           
            if (llListFindList(main_menu, [message]) != -1) {
            if (message == "grayscale") sub_menu = grayscale;
            else if (message == "reds") sub_menu = reds;
            else if (message == "pinks") sub_menu = pinks;
            else if (message == "violets") sub_menu = violets;
            else if (message == "dk_blues") sub_menu = dk_blues;
            else if (message == "lt_blues") sub_menu = lt_blues;
            else if (message == "yellows") sub_menu = yellows;
            else if (message == "dk_greens") sub_menu = dk_greens;
            else if (message == "lt_greens") sub_menu = lt_greens;
            else if (message == "oranges") sub_menu = oranges;
           
            menu(toucher, "\n \nSelect a color.", llList2ListStrided(sub_menu, 0, -1, 2));
            return; 
            }
       
            integer index = llListFindList(sub_menu, [message]);
            if (index != -1)
            {
                vector color_vector = llList2Vector(sub_menu, index+1);
                if (ChangeAllPrims == TRUE)
                {
                    llSetLinkColor(LINK_SET, color_vector, ALL_SIDES); //all prims
                }
                else
                {
                    llSetColor(color_vector, ALL_SIDES); //only prim script is in
                }
            }
        }
    }
}
 
 
i  know  {
        if (llDetectedOwner(0) == llGetOwner())
        {      is  usualy  one command  jsut  not sure   where and  if  it would work    on this  thanks  in advance  
Edited by Flax Cuttita
Link to comment
Share on other sites

Think about the script's logic.  You want it to respond only to the owner.   So the place to check is where the avatar first starts interacting with the object -- that is, in the touch_start event

	touch_start(integer total_number)
	{
		toucher = llDetectedKey(0);
		if(toucher == llGetOwner()){
			menu(toucher, "\n \nSelect a color category.", main_menu);
		}
		else {
			//the toucher is not the object's owner, so don't do anything.
		}
	}

 

Link to comment
Share on other sites

1 hour ago, Innula Zenovka said:

Think about the script's logic.  You want it to respond only to the owner.   So the place to check is where the avatar first starts interacting with the object -- that is, in the touch_start event


	touch_start(integer total_number)
	{
		toucher = llDetectedKey(0);
		if(toucher == llGetOwner()){
			menu(toucher, "\n \nSelect a color category.", main_menu);
		}
		else {
			//the toucher is not the object's owner, so don't do anything.
		}
	}

 

thank you  

 

Link to comment
Share on other sites

Innula's answer is perfectly fine, but I'd like to share my alternative method.

touch_start(integer n)
{
    if(llDetectedKey(0) != llGetOwner()) return;
    // code as normal
}

It's short, sweet, and self-contained on one line.

The reason why I prefer this method (using return which ends the current function), is simply because this way I do not need to insert brackets and indent my code.

And to explain that line a little more in-depth, here's an illustration of the "full length" code and how it becomes that short:

if(llDetectedKey(0) != llGetOwner())
{
    return;
}

// Which becomes:

if(llDetectedKey(0) != llGetOwner())
    return;

// Which becomes:

if(llDetectedKey(0) != llGetOwner()) return;

The curly braces of an IF statement can be left out if you only need to execute one statement when the check is successful.
Multiple statements can be on the same line, the only thing that matters is the semicolons at the end of each statement.
Whenever I leave out the braces, I put the one statement on the same line to avoid confusion that might come from putting it on the line below.

This is purely a stylistic choice.

Edited by Wulfie Reanimator
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 2289 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...