IsabellaRose Fallen Posted December 14, 2015 Share Posted December 14, 2015 I do believe that channel settings are my problem, I just don't know how to fix it...The script I have (a sippy cup menu) works beautifully -- the person who clicks on the cup chooses a drink, and it posts a short message in local chat ('so-and-so has filled so-and-so's cup with yummy milk', for example). The problem is that if anyone ELSE nearby is holding ANOTHER cup with the same script inside, it will also change THEIR drink, with the same message. Since I'm wanting to release a new line of cups where the 'liquid' inside is actually visible and will change depending on the drink, I would really like to figure out this problem...like I said, I'm fairly certain it's something to do with channels? Here is the script in question, for reference:integer channel; string FirstName( string name ) { list name_part = llParseString2List( name, [" "], [] ); return llList2String( name_part, 0 ); } integer listen_handle; default { state_entry() { channel = 65536 + (integer)llFrand( 10000000 ); listen_handle = llListen(channel,"",NULL_KEY,""); } touch_start(integer total_number) { string my_name = llKey2Name( llGetOwner() ); string my_first_name = FirstName( my_name ); llDialog(llDetectedKey(0),"What would you like to fill "+ my_first_name +"'s cup with? There is:" ,["Grape Juice","Apple Juice","Orange Juice","Lemonade","Milk", "Choc Milk","Soda","Ask Mommy","Ask Daddy"],channel); } listen(integer channel,string name, key id, string msg) { string my_name = llKey2Name( llGetOwner() ); string my_first_name = FirstName( my_name ); string toucher_name = name; string toucher_first_name = FirstName( toucher_name ); string old_object_name = llGetObjectName(); llSetObjectName( toucher_first_name ); if (msg=="Apple Juice"){ llSay(0, "/me goes to fill "+my_first_name+"'s sippy cup with apple juice. "+my_first_name+" looks excited and thanks you. ");} if (msg=="Grape Juice"){ llSay(0, "/me pulls off the top and pours in some grape juice for "+my_first_name+". Once finished they place the lid back on and smile ");} if (msg=="Orange Juice"){ llSay(0, "/me gets fresh orange juice for "+my_first_name+". "+my_first_name+" thanks you. ");} if (msg=="Lemonade"){ llSay(0, "/me nods and fills "+my_first_name+"'s cup up to the brim with lemonade. Then asks, 'Do you want anything more?' ");} if (msg=="Soda"){ llSay(0, "/me takes "+my_first_name+"'s cup and fills it with soda. "+my_first_name+"'s smiles in gratitude. ");} if (msg=="Milk"){ llSay(0, "/me filles "+my_first_name+"'s with just the right amount of milk. "+my_first_name+" takes a sip and thanks you with a sweet smile. ");} if (msg=="Choc Milk"){ llSay(0, "/me mixes up some chocolate milk and fills "+my_first_name+"'s cup...yummy! ");} if (msg=="Ask Mommy"){ llSay(0, ""+my_first_name+" holds up their sippy cup, asking Mommy if she would please fill it up with something yummy! ");} if (msg=="Ask Daddy"){ llSay(0, ""+my_first_name+" holds up their sippy cup, asking Daddy if he would please fill it up with something yummy! ");} llSetObjectName( old_object_name ); } }I'll be making quite a few simple little additions with the new line that I have coming out, and I can handle them on my own. But that one little issue is probably the most important, in my opinion, and I'd REALLY appreciate any help with figuring it out! Thank you all in advance =) Link to comment Share on other sites More sharing options...
steph Arnott Posted December 14, 2015 Share Posted December 14, 2015 you need to message to the UUID of the object. Link to comment Share on other sites More sharing options...
IsabellaRose Fallen Posted December 14, 2015 Author Share Posted December 14, 2015 Ah, okay! How do I do that? I'm sorry, I know it's probably really easy, but I'm still learning scripts... Link to comment Share on other sites More sharing options...
steph Arnott Posted December 14, 2015 Share Posted December 14, 2015 You need to capture the "cup" UUID "object key. You could just paste and copy it into the script above for now, the cup transmits it UUID and what to idk add milk then the main script transmits but only the the matching UUID will do what ever. cup fill me up "object key", main transmits message, all cups with diferent uuid ignore the message. Link to comment Share on other sites More sharing options...
steph Arnott Posted December 14, 2015 Share Posted December 14, 2015 llRegionSayTo Link to comment Share on other sites More sharing options...
steph Arnott Posted December 14, 2015 Share Posted December 14, 2015 you can capture the id from the listen event Link to comment Share on other sites More sharing options...
Rolig Loon Posted December 15, 2015 Share Posted December 15, 2015 You're actually doing it correctly. The channel is assigned a random integer value when the script resets, so you should never have two instances of the same cup listening to each other. Each one should be sending and receiving dialog chat on its own private channel. If you do have crosstalk problems, the only reason that occurs to me is that you are drag/copying the cups and never resetting the script of the new copy. That shouldn't be possible, but it is. You can approach this in several ways. You could move the stuff that is now in the state_entry event into the touch_start event instead, so that the channel is redefined every time someone touches the cup. If you do that, you'll want to start the event with a line that says llListenRemove(listen_handle), so that you don't leave previous channels open. Another possibility, unless you expect one owner to have several cups, is to force the script to reset if the cup changes ownership. Use a changed event and look for if (change & CHANGED_OWNER). Of course, you could also simply put the llResetScript() statement into an on_rez event and then force the owner to rez a new copy by destroying any previously rezzed one if the owner leaves the region. ( Try using a test like if (llGetAgentSize(llGetOwner()) == ZERO_VECTOR) {llDie();} ) So many possibilities ..... 1 Link to comment Share on other sites More sharing options...
steph Arnott Posted December 15, 2015 Share Posted December 15, 2015 meybe i should go back to sleep, i clearly misunderstood what the op was on about. Link to comment Share on other sites More sharing options...
IsabellaRose Fallen Posted December 15, 2015 Author Share Posted December 15, 2015 You were right, all I had to do was reset the scripts! I can't believe that was what was causing it...I was driving myself nuts over this! Thank you both so much for your help! Chalk this up to one of those times I just plain did a stupid...LOL Link to comment Share on other sites More sharing options...
Qie Niangao Posted December 15, 2015 Share Posted December 15, 2015 Rolig Loon wrote: If you do have crosstalk problems, the only reason that occurs to me is that you are drag/copying the cups and never resetting the script of the new copy. That shouldn't be possible, but it is. In fact, it would never have occurred to me that it could happen -- I could have had the very same bug -- so now I'm curious: Do we have any idea of the circumstances under which a copy can be made without scripts being reset? Link to comment Share on other sites More sharing options...
Rolig Loon Posted December 15, 2015 Share Posted December 15, 2015 I wish I did. I have never had it happen to me, but I have had this conversation with a couple of other scripters in the past who swear that they have had a drag/copy fail to reset. I remember looking for a JIRA once but not finding anything. A script is supposed to reset when a new copy is created. 1 Link to comment Share on other sites More sharing options...
steph Arnott Posted December 15, 2015 Share Posted December 15, 2015 That is not strictly true, it is always best to do a manual reset on copied scripts. Sometimes even working on a script in world and finding one has added an error, removing the error compile it still will not work ever after doing a reset. End up having to do a copy and paste as a new script. Link to comment Share on other sites More sharing options...
Rolig Loon Posted December 15, 2015 Share Posted December 15, 2015 steph Arnott wrote: That is not strictly true, it is always best to do a manual reset on copied scripts. [ .... ] That's probably a good precaution, if only to be sure that you have copied it correctly, but you're describing a somewhat different situation than the one that Qie and I are concerned about. We are talking about what happens when you hold down the Shift key and drag to copy an object that has a script in it. The script is supposed to reset in the new, copied object. It has always worked that way for me, and Qie is saying the same thing. I have talked with one or two scripters in the past, however, who say that they have had a script fail to reset. I consider that unlikely, but stranger things have happened in Second Life so I can't swear that it is impossible. Link to comment Share on other sites More sharing options...
steph Arnott Posted December 15, 2015 Share Posted December 15, 2015 Yes i know, problem is if the original was heavily worked on it seems to also have bits in it that cause the copy to not function as a clean script. I have no idea why, but i have had the problem as well, as soon as thet finished script is copy and pasted as a new script the intermitant or reset problems do not happen. Its as if info is still there but you can not see it. Link to comment Share on other sites More sharing options...
NaomiLocket Posted December 18, 2015 Share Posted December 18, 2015 Sometimes, Rolig, when I've copied an object, I have forgotten which I still have selected. The original or the copy. Do you suppose these other scripters you remember, forgot that they had the original still selected and that the original is what moves when you shift copy? The copy might have still reset. Link to comment Share on other sites More sharing options...
Rolig Loon Posted December 18, 2015 Share Posted December 18, 2015 Yes, I think that's quite possible. Link to comment Share on other sites More sharing options...
Recommended Posts
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