Jump to content

Listen only owner in the same -channel


IA Nova
 Share

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

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

Recommended Posts

Hi, I have this listen script, I would like that when its owner says the keyword, only the effect of the owner is activated, and not that others also activate theirs.

default
{
    state_entry ()
    {
        
        llListen (-2222, "", "", "");
    }
    
    on_rez (integer message) {
     llResetScript ();
    }
    
    listen (integer channel, string name, key id, string message)
     {
      
if (llDetectedKey (0) == llGetOwner ()) {
}
       if (llToLower (message) == "active01")


the problem is that when I send the signal of "active01" my effect and that of others is activated, because they are in the same channel -2222

but I want that being on the same channel only activate the owner, and not everyone who is on that channel, but using it, is that possible?

is an item that is dressed in a particle effect, I want to activate my character, give it to my friends and they activate and deactivate when they want and not me who activates and deactivates their effects or they mine, without having to change the channel.

 

-----------------

the idea is that the "owner of the object" activates and deactivates the effect in the same channel only the owner of the object, and that this can not activate the others of other people. 

 

my script

 

player 1 : active effect -2222 = RUN EFFECT

player 2 : no active effect = -2222 RUN EFFECT.. 

 

i want 

 

player 1 : active effect -2222 = RUN EFFECT

player 2 : no acive effect = -2222 No run Effect

 

is possible? 

or maybe I should change the way to execute this function ...

Link to comment
Share on other sites

You've not posted the whole of your script, so it's impossible to tell what happening in the listen event,  and your test, 

if (llDetectedKey (0) == llGetOwner ())

is never going to return TRUE, since llDetectedKey doesn't work in the listen event.   However, that's not a problem because "id" in 

listen (integer channel, string name, key id, string message)

is the ID of whoever or whatever sent the message.

So, 

	listen(integer channel, string name, key id, string message)
	{
		if(id == llGetOwner()){
			//do this
		}
		else{
			//do something else
		}
	}

should do the trick.

  • Like 2
Link to comment
Share on other sites

This is the "menu" script

can be touched and used by anyone, I would like only the owner to use it ...

list list_one = ["Lights Off","Lights ON"];
string owner;
integer chan;
default
{
    on_rez(integer n)
    {
        llResetScript();
    }
    
    attach(key a)
    {
        llResetScript();
    }
    
    state_entry()
    {
        chan = 8000 + (integer)llFrand(8000);
        owner = llKey2Name(llGetOwner());
        llListen(chan,"","","");
        llListen(1,"",llGetOwner(),"");
    }

    touch_start(integer total_number)
    {
        llDialog(llDetectedKey(0),"Please make a selection from the menu below.",list_one,chan);
    }
    
    listen(integer c, string n, key i, string m)
    {
       
      if(m == "Lights ON")
        {
            llSay(-1212,"lights on");
        }
        if(m == "Lights Off")
        {
            llSay(-1212,"lights off");
        }                
    }
}

On the other hand, there is the listening script, it receives all the orders of everyone, including the owner, and also everything that the keyword says in the channel -1212

the option is ideal if I change channels, and I make both copies, the problem is solved, the problem is that if I want to give the same copy to two people, it can activate the light of the other and I want each one to activate its light own and not that of others 

 

I have tried the code, but it seems that the script ignores everything that has to do with llGetOwner

listen(integer channel, string name, key id, string message)
	{
		if(id == llGetOwner()){
			//do this
		}
		else{
			//do something else
		}
	}

ty for your help Innula Zenovka <3 

you are always attentive to the forum!

Link to comment
Share on other sites

If you want the lights to respond only to messages from their owner's HUD, and not anyone else's HUD, then in the listen event in in the lights, you need to say

    listen(integer channel, string name, key id, string msg)
    {
        if(llGetOwnerKey(id)==llGetOwner()){
            //if the uuid of the object that sent the message is the same as the uuid of the owner of the object containing this script
            //do stuff
        }
    }

I did not realise that you wanted to use a HUD -- the HUD's uuid is not the same as the UUID of its owner.   This is the test to use.

Edited by Innula Zenovka
  • Like 1
Link to comment
Share on other sites

my alt character, I can still control the light of my main character 

 

;C

the script : 

 

default
{
    state_entry()
    {
        llListen(-1212,"","","");
    }
    
    on_rez(integer message) {
     llResetScript();   
    }
    
    listen(integer channel, string name, key id, string msg)
    {
        if(llGetOwnerKey(id)==llGetOwner()){
            //if the uuid of the object that sent the message is the same as the uuid of the owner of the object containing this script
            //do stuff
        }
       if(llToLower(msg) == "lights on")
      {
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, 
    <255,255,255> , 1, 4.5, 0.-3754 ]);;
        }

       if(llToLower(msg) == "lights off")
      {
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, 
    ZERO_VECTOR , 0.0, 0.0, 0.0 ]); 
        }
    }
}

I hope I put it in the correct position O.o

 

fa23659347.png 

 

the green box is the hud in my alt character

 

the ball white is the listen script, is active for my alt xD 

It would be difficult to give a hud with a different channel to each friend. X_x

Edited by HzFox
Link to comment
Share on other sites

You are almost there.   You only want the script to respond to commands coming from objects owned by the avatar who owns the object that contains the script.

In this case, turning the lights on and off is the "stuff" you want the script to do, if it hears the message.   So you need to move 

       if(llToLower(msg) == "lights on")
      {
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, 
    <255,255,255> , 1, 4.5, 0.-3754 ]);;
        }

       if(llToLower(msg) == "lights off")
      {
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, 
    ZERO_VECTOR , 0.0, 0.0, 0.0 ]); 
        }

up inside  the braces following the test if(llGetOwnerKey(id)==llGetOwner())

listen(integer channel, string name, key id, string message){
	if(llGetOwnerKey(id)==llGetOwner()){
	//if the uuid of the object that sent the message is the same as the uuid of the owner of the object containing this script
		if("lights on" == message){
			//turn on the lights
		}
		else if ("lights off" == message){
			//turn off the lights
		}
	}
}

 

  • Like 1
Link to comment
Share on other sites

I do not know how to put together the script if I do not see it complete, my level of script is very basic

may be the right data, but I do not know how to implement them X_x 

 

default
{
    state_entry()
    {
        llListen(-1212,"","","");
    }
    
    on_rez(integer message) {
     llResetScript();   
    }
    
listen(integer channel, string name, key id, string message){
    if(llGetOwnerKey(id)==llGetOwner()){

        if("lights on" == message){
          
        }
       
        else if ("lights off" == message){
           
        }
    }
       if(llToLower(message) == "lights on")
      {
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, 
    <255,255,255> , 1, 4.5, 0.0 ]);;
        }

       if(llToLower(message) == "lights off")
      {
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, 
    ZERO_VECTOR , 0.0, 0.0, 0.0 ]); 
        }
    }
}

 

Link to comment
Share on other sites

Like this

listen(integer channel, string name, key id, string message){
	if(llGetOwnerKey(id)==llGetOwner()){
	//if the uuid of the object that sent the message is the same as the uuid of the owner of the object containing this script
		if("lights on" == message){
			//turn on the lights
			llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, 
                <1.0,1.0,1.0> , 1, 4.5, 0.0 ])
		}
		else if ("lights off" == message){
			//turn off the lights
			llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, 
    		ZERO_VECTOR , 0.0, 0.0, 0.0 ]); 
		}
	}
}

 

Edited by Innula Zenovka
  • Like 1
Link to comment
Share on other sites

I do not know where the error is, I added ";" because it was missing, but it still is bug.

 

default
{
    state_entry()
    {
        llListen(-1212,"","","");
    }
    
    on_rez(integer message) {
     llResetScript();   
    }
    
listen(integer channel, string name, key id, string message){
    if(llGetOwnerKey(id)==llGetOwner()){
    //if the uuid of the object that sent the message is the same as the uuid of the owner of the object containing this script
        if("lights on" == message){
            //turn on the lights
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, 
                <1.0,1.0,1.0> , 1, 4.5, 0.0 ]);
        else if ("lights off" == message){
            //turn off the lights
            llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, 
            ZERO_VECTOR , 0.0, 0.0, 0.0 ]); 
        }
    }
}

 

Link to comment
Share on other sites

Neatness counts.  When in doubt, indent all of your work carefully and start counting brackets to be sure that they all match properly.

default
{
    state_entry()
    {
        llListen(-1212,"","","");
    }
    
    on_rez(integer message) {
     llResetScript();   
    }
    
    listen(integer channel, string name, key id, string message){
        if(llGetOwnerKey(id)==llGetOwner()){
    //if the uuid of the object that sent the message is the same as the uuid of the owner of the object containing this script
            if("lights on" == message){
                //turn on the lights
                llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE,<1.0,1.0,1.0> , 1, 4.5, 0.0 ]);
            }
            else if ("lights off" == message){
                //turn off the lights
                llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, ZERO_VECTOR , 0.0, 0.0, 0.0 ]); 
            }
        }
    }
}

 

Edited by Rolig Loon
  • Thanks 1
Link to comment
Share on other sites

  • 3 years later...

Hai all-  I'm tweaking away at a color picker and thought I successfully added " if (llDetectedKey(0) == llGetOwner()) " as I would like this to be owner use only (its to be used rezzed, not as a HUD).  I got so many errors with the original touch_ (integer n) lines I decided to make it more specific with a touch_start and touch_end , and that seems resolved now, no errors.  I'm testing and I'm definitely missing something I'm not seeing as others are able to interact with it.  It's tricky for me as this is a (integer n) as oppose as to a listen script which IMO are easier, but not what I need, lol.  Anyways. I'm not sure if it's my bracket count?  I'd appreciate any feedback!

integer HS_PLANE_FACE = 2;
integer L_AXIS_FACE = 4;
integer CMD_CH  = -1024;
vector HSL = <0.0, 0.0, 0.5>;


//Set new color and (optionally) preview
new_hsl_color(vector color)
{
    //llSetColor(hsl_2_rgb(<color.x, color.y, 0.5>), L_AXIS_FACE);
    llSay(CMD_CH, (string)hsl_2_rgb(color));
    llSleep(0.1);
}

//Wrap value to between 0 and 1
float scale_f(float f)
{
    if (f < 0.0)
    {
        f += 1.0;
    }
    else if(f > 1.0)
    {
        f -= 1.0;
    }
    
    return f;
}

//Calculate RGB from (t, p, q)
float rgb_color(float c, float p, float q)
{
    if(c < 0.166667)
    {
        return p+(q-p)*6*c;
    }
    else if(c >= 0.166667 && c < 0.5)
    {
        return q;
    }
    else if(c >= 0.5 && c < 0.666667)
    {
        return p+(q-p)*6*(0.666667 - c);
    }
    else
    {
        return p;
    }
}

//Convert HSL color to RGB color
vector hsl_2_rgb(vector color)
{
    float p;
    float q;
    vector t = <scale_f(color.x + 0.333333), scale_f(color.x), scale_f(color.x - 0.333333)>;
    
    if (HSL.z < 0.5)
    {
        q = color.z * (1 + color.y);
    }
    else
    {
        q = color.z + color.y - (color.z * color.y);
    }
    
    p = 2*color.z - q;
    
    return <rgb_color(t.x, p, q), rgb_color(t.y, p, q), rgb_color(t.z, p, q)>;
}

integer touched;  
 
default
{
    state_entry()
    {   //Initial Color
        //new_hsl_color(HSL);
    }

    touch_start(integer n){
         if (llDetectedKey(0) == llGetOwner()){
          touched = FALSE;
         integer face = llDetectedTouchFace(0);
        if(face == HS_PLANE_FACE)
        {   //HS plane
            vector v = llDetectedTouchST(0);
            HSL = <v.y, 1.0 - v.x, HSL.z>;
            
            new_hsl_color(HSL);
        }
        else if(face == L_AXIS_FACE)
        {   //L axis
            vector v = llDetectedTouchST(0);
            HSL = <HSL.x, HSL.y, v.y>;
            
            new_hsl_color(HSL);
        }
    }
       
        llResetTime();
    }    
 
    touch_end(integer n)
    {
        integer face = llDetectedTouchFace(0);
        if(face == HS_PLANE_FACE)
        {   //HS plane
            vector v = llDetectedTouchST(0);
            HSL = <v.y, 1.0 - v.x, HSL.z>;
            
            new_hsl_color(HSL);
        }
        else if(face == L_AXIS_FACE)
        {   //L axis
            vector v = llDetectedTouchST(0);
            HSL = <HSL.x, HSL.y, v.x>;
            
            new_hsl_color(HSL);
        }
    }
}

 

Edited by Delmar Quintessa
added script to notepad
Link to comment
Share on other sites

 

 

I can't see any real advantage to your splitting the code between touch_start and touch_end, I would suggest doing everything inside one event, probably touch_end. Unless you're expecting people to be clicking and holding the mouse for any length of time the two events are going to be occurring very close together.

Also, for debugging, it's a lot easier for you to be working on a single event.

Regarding bracket count, if it's compiling without errors there are a balanced number of braces, BUT

If you've put some things inside a brace they become local to that block. In your code, touch_start only does something if its the owner touching, but touch_end then does very much the same regardless of who it was that clicked.

So in your code, because the assignment of touched= false only happens inside a set of braces after testing for the owner having touched it, no change will take place to it's value when anybody else touches it. I know that touched is actually not used anywhere else in the code at present, but this is to illustrate a point about the braces. 

A quick way to debug this would be to alter the CMD_CH in new_hsl_colour to 0 so you would see in local chat exactly what was detected and how many times  how close together.

 

(others may mutter abut resurrecting an old thread and not actually following on from the topic but I'm wearing my nice face this month)

Edited by Profaitchikenz Haiku
Link to comment
Share on other sites

This is probably a good place to offer my normal advice about always using curly brackets to enclose the scope of an if test, even if they don't seem to be necessary.   It's way too easy to lose track of where a scope begins and ends if you don't develop a habit of using careful indentation and brackets.  As Prof points out, that's almost certainly where your problem lies in this script.

And yes,

19 minutes ago, Profaitchikenz Haiku said:

(others may mutter abut resurrecting an old thread and not actually following on from the topic but I'm wearing my nice face this month)

I will refrain from muttering, but I am really tempted.  ;) 

  • Haha 1
Link to comment
Share on other sites

My apologies, excuse my lack of forum decorum :) didn't mean to ruffle any feathers, feel free to mutter and thank you for not booting me! I have multiple ones up, including one from 2 years ago (the most recent I saw), and this one is the last one I was reading, and thought it was more closer to my specific issue.  Regarding the debugging in local chat, it returns the object name and the HSL of the color selected on the color picker prim.  

Attaching a clip of the original script

default
{
    state_entry()
    {   //Initial color
        //new_hsl_color(HSL);
    }

    touch_start(integer n)
    {
        integer face = llDetectedTouchFace(0);
        if(face == HS_PLANE_FACE)
        {   //HS plane
            vector v = llDetectedTouchST(0);
            HSL = <v.y, 1.0 - v.x, HSL.z>;
            
            new_hsl_color(HSL);
        }
        else if(face == L_AXIS_FACE)
        {   //L axis
            vector v = llDetectedTouchST(0);
            HSL = <HSL.x, HSL.y, v.y>;
            
            new_hsl_color(HSL);
        }
        else if(face == -1)
        {   //TOUCH_INVALID_FACE ~ outdated viewer
            llInstantMessage(llDetectedKey(0), "Please update your viewer to use this color picker :P");
        }
    }

    touch(integer n)
    {
        integer face = llDetectedTouchFace(0);
        if(face == HS_PLANE_FACE)
        {   //HS plane
            vector v = llDetectedTouchST(0);
            HSL = <v.y, 1.0 - v.x, HSL.z>;
            
            new_hsl_color(HSL);
        }
        else if(face == L_AXIS_FACE)
        {   //L axis
            vector v = llDetectedTouchST(0);
            HSL = <HSL.x, HSL.y, v.x>;
            
            new_hsl_color(HSL);
        }
    }
}

The numerous posts I've read said to simply add llDetectedKey and llGetOwner, as well as the wiki, (the videos I watched corresponded to Listen which aren't in the color picker script.)  However, when doing so I would receive an error regarding the touch (integer n).  Trying to find a fix I changed it to touch_end (integer n) which removed the error, but did nothing for restricting the script to owner only.  But, yeah I even tried it on the actual object receiving prim since that does have a listening but that didn't seem right either. That script with how I attempted to add the llGetOwner is below

integer CMD_CH = -1024;

default
{
    state_entry()
    {
        llListen(CMD_CH, "", "", "");
    }
    
    listen(integer ch, string name, key id, string msg)
    {
        if (llDetectedKey(0) == llGetOwner())
        {
        llSetColor((vector)msg, ALL_SIDES);
        }
    }
}

if (llDetectedKey(0) == llGetOwner()){
if (llDetectedKey(0) == llGetOwner())
    {
Link to comment
Share on other sites

Well you're here now, so might as well continue.

You've made a start in the touch_start with the check for llDetectedKey being llGetOwner,

make sure the braces after that check encloses all the actual code the follows down to the end of the touch_start event.

The do the same in the touch_end event if you plan on keeping it, the idea is the same, as soon as theres a touch, check the detected key against the owner, make sure that the braces then enclose all the stuff its meant to be doing.

 

touch_start() or touch_end()
{
if( llDetectedKey(0) == llGetOwner()
	{ // this brace matches up with 

	} // this brace to group all the coe between them together

}

 

Edited by Profaitchikenz Haiku
Link to comment
Share on other sites

31 minutes ago, Delmar Quintessa said:

If there is a better place for me to post, I'd be happy to remove my posts and take it there :)

Nah.  You might as well just stay here.   Next time, though, when you have a question, start your own thread instead of adding it to someone else's question.. ;)

ANYWAY .....   I was just playing for a few minutes.  This works.  I shut off the annoying chat because it was ... well, annoying.  I added your owner only filter and changed a few other things that you will discover as you mess with it.  Most importantly, I made it so that the most interesting stuff takes place in the new touch event.  As long as you keep the mouse click DOWN, you can move the cursor around on the face and see the color change.  When you let up on the mouse, the color freezes.

integer HS_PLANE_FACE = 2;
integer L_AXIS_FACE = 4;
integer CMD_CH  = 0;    //-1024;
vector HSL = <0.0, 0.0, 0.5>;

integer iTouched;

//Set new color and (optionally) preview
new_hsl_color(vector color)
{
    //llSetColor(hsl_2_rgb(<color.x, color.y, 0.5>), L_AXIS_FACE);
//    llSay(CMD_CH, (string)hsl_2_rgb(color));
    llSleep(0.1);
}

//Wrap value to between 0 and 1
float scale_f(float f)
{
    if (f < 0.0)
    {
        f += 1.0;
    }
    else if(f > 1.0)
    {
        f -= 1.0;
    }
    
    return f;
}

//Calculate RGB from (t, p, q)
float rgb_color(float c, float p, float q)
{
    if(c < 0.166667)
    {
        return p+(q-p)*6*c;
    }
    else if(c >= 0.166667 && c < 0.5)
    {
        return q;
    }
    else if(c >= 0.5 && c < 0.666667)
    {
        return p+(q-p)*6*(0.666667 - c);
    }
    else
    {
        return p;
    }
}

//Convert HSL color to RGB color
vector hsl_2_rgb(vector color)
{
    float p;
    float q;
    vector t = <scale_f(color.x + 0.333333), scale_f(color.x), scale_f(color.x - 0.333333)>;
    
    if (HSL.z < 0.5)
    {
        q = color.z * (1 + color.y);
    }
    else
    {
        q = color.z + color.y - (color.z * color.y);
    }
    
    p = 2*color.z - q;
    
    return <rgb_color(t.x, p, q), rgb_color(t.y, p, q), rgb_color(t.z, p, q)>;
}

integer touched;  
 
default
{
    state_entry()
    {   //Initial Color
        //new_hsl_color(HSL);
    }

    touch_start(integer n){
        if (llDetectedKey(0) == llGetOwner())
        {
            iTouched = TRUE;
            integer face = llDetectedTouchFace(0);
            if(face == HS_PLANE_FACE)
            {   //HS plane
                vector v = llDetectedTouchST(0);
                HSL = <v.y, 1.0 - v.x, HSL.z>;
                
                new_hsl_color(HSL);
            }
            else if(face == L_AXIS_FACE)
            {   //L axis
                vector v = llDetectedTouchST(0);
                HSL = <HSL.x, HSL.y, v.y>;
                
                new_hsl_color(HSL);
            }
        }
//        llResetTime();
    }    
 
    touch(integer n)
    {
        if (iTouched)
        {
            integer face = llDetectedTouchFace(0);
            vector v = llDetectedTouchST(0);
            if(face == HS_PLANE_FACE)
            {   //HS plane
                HSL = <v.y, 1.0 - v.x, HSL.z>;    
                new_hsl_color(HSL);
            }
            else if(face == L_AXIS_FACE)
            {   //L axis
                HSL = <HSL.x, HSL.y, v.x>;                
                new_hsl_color(HSL);
            }
            llSetColor(v, face);
        }
    }
    
    touch_end(integer n)
    {
        iTouched = FALSE;
    }
}

This is still messy, because you don't really need the touch_start event.  You can just put that owner only test in the touch event and it should work fine.  I just didn't do that, because I was playing.

Edited by Rolig Loon
Additional information
Link to comment
Share on other sites

2 minutes ago, Rolig Loon said:

added your owner only filter and changed a few other things that you will discover as you mess with it.  Most importantly, I made it so that the most interesting stuff takes place in the new touch event.  As long as you keep the mouse click DOWN, you can move the cursor around on the face and see the color change.  When you let up on the mouse, the color freezes.

I'll get me coat ...

 

It's very annoying having the machine on which I browse the forums not being the machine on which I log n, stops me from doing such explorattions. Sounds very very useful, though.

Link to comment
Share on other sites

1 minute ago, Profaitchikenz Haiku said:

I'll get me coat ...

Awww...   don't leave on my account.  I really was just playing to see what it did.  I wouldn't have logged in to do this little bit of coding myself, except that I wanted to see the colors.  ;) 

  • Haha 1
Link to comment
Share on other sites

Thank you Prof and Rolig for your replies, participation and even logging in.  Next time, I will make a new post, now that I know :) .  I didn't expect a deep dive, and sadly, I'm drowning 🥴 welp.  It's a lot of information, for sure.  The go to color picker I use I've had for years, surprisingly it's still on MP https://marketplace.secondlife.com/p/Bjorns-HSL-Color-Picker-1-prim/240995 a fp freebie.  There's a few parts to this which I didn't think relevant ("simply add the line of code proved to be not that simple" ha).  So one script sets primitive parameters cutting and texturing.  I was tempted to insert that script here as well but I seem to be taking up a lot of screen space but can do if requested/needed...  the other 2 scripts are the hsl picker that tells the listening script what to change to.  

Prof, I believe the reason for the 2 touch events (I think that's what you meant as far as multiple states earlier?) is because the color picker has the hsl picker on one face(has the sl color picker texture on it), and hue saturation on another face.  From what I'm understanding, I'd need to add the check detected key owner on both events, that was my original thought as well when attempting to add the owner only code. I'm realizing that when trying to "research" I was looking at aides that consisted of one state, duhr on me.  I'll try again, as that's what prompted the syntax errors pointing to the second touch event which led me down a rabbit hole of "tweaking the script" so back to the drawing board it is.

Rolig, thats pretty cool!  Sadly it doesnt match up with my current hsl and hue texture surely because I'm missing whichever texture you're using so on my end once clicking on it it gives me random sequences of color not corresponding to the current "sl color picker" and "hue" textures (c38e5a0b-fb82-a576-59fe-b885961e300c & 79e7df6f-92e2-1fca-5c86-e60fa132c071).  As far as the chat is concerned, I don't receive any chat except when I changed the channel to 0 as Prof suggested earlier to see what users were clicking and aid in debugging, once tested, I changed it back to channel 1024 (which was for the listening prim/s).

I also happened to notice I have another color picker that you helped put together as well! ha.  That one is way more advanced than this one, and I am absolutely in love with it!  Sadly, due to it's prim count I wasn't able to use it as I'm trying to have users color change on multiple channels.  So in theory, I'd need multiple color pickers rezzed increasing the land impact significantly.

Link to comment
Share on other sites

1 hour ago, Delmar Quintessa said:

Thank you Prof and Rolig for your replies, participation and even logging in.  Next time, I will make a new post, now that I know :) .  I didn't expect a deep dive, and sadly, I'm drowning 🥴 welp.  It's a lot of information, for sure.

I'd suggest you open a new post, this has the potential to be both interesting and useful. I wasn't able to play with the script and see what it could do, but Rolig spotted that very quickly.

There are other minds here as well that will see very quickly what might be the stumbling blocks or what is a better way to do something.

I'd suggest that before opening a new topic, add a comment block to your code explaining what it is you are trying to do in functional terms, such as the need for two distinct faces, and the need for it to be owner-only.

Rather than repeat what you have already posted ere, begin the new topic with your current state, what the code is, what errors or non-behaviours you are experiencing.

Edited by Profaitchikenz Haiku
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 981 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...