Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by MSTRPLN

  1. Right thank you once again, i've read that the OBJECT_REZZER_KEY was equal to 32 on the wiki yes. I'm familiar with the touch_end (saw it somewhere on the forum while searching) to switch states but i didn't know that listeners wouldnt work anymore, i'll keep that in mind
  2. Thank you, i've been experiencing with state so that once the item is rezzed it goes to state 2 and becomes unclickable to avoid multiple instaces and switched back to default state after the message to make the child die has been sent. The logic well, I'm just trying to do my best to get it to work really, the reason behind the id = kRezzer instead of == is because == gave me an error and didnt with just one. Im going to try to understand all you said and try it out on a copy and see how far i get.
  3. Thank you. will look up and learn about what you both suggested. With temporarily i meant that it will be rezzed for a limited time (for example 60 seconds) before the rezzed object destroys itself. To make my 2nd question clear: The string "object" has to have a name that is the same as in the script. I was wondering if i could use something like llGetInventory with a filter so it doesnt take the script but the object (just to be safe). This way i can just put a random object inside the sytsem and it won't give an debug error like "[V] Demo could not be found". Maybe that's possible with "llGetInventoryType" i'll have to look into that I also need to create a safety feature so only 1 item cn be rezzed at the time which i forget & you mentioned. Edit: Im starting with one problem at a time, i tried the OBJECT_REZZER_KEY but i must be doing something wrong because A still removes B's rezzed object // Script for texture changer receiverinteger rChannel =-5001;// Channel is the integer for reception (number mus the same as a transmission channel otherwise script will not work)integer Rezzer;default{ state_entry() { llListen(rChannel, "", NULL_KEY, ""); llScaleByFactor(0.3); list Rezzer = llGetObjectDetails(llGetKey(), [OBJECT_REZZER_KEY]); } listen(integer channel, string name, key id, string msg) { // Checks if same channel if (rChannel == channel) { if (Rezzer = OBJECT_REZZER_KEY) { llDie();; } else {} } else { llDie(); } llListenRemove(rChannel);//close listener }}
  4. Hello. I;ve thought of a way to demo rez objects in world. Concept: A vendor on the wall with a demo button under it. When "Demo" is clicked it will rez a sized down demo in front of it which wil die with a timer, so it only rezzes temporarily. (the demo object is in the content along with the transmittor script) Problem: It works but if i have 2 or more of the same inworld System A will delete system B's rezzed object before it's timer has ran out, this is because it's on the same channel. I've tried multiple options to make the channels unique ie. integer rChannel = 0x80000000 | (integer) ( "0x" + (string) llGetOwner() ); // and integer rChannel = (integer)(llFrand(-999999999.0) - 10000000.0);But now 2 problems occur: 1. I get an error saying "Cannot use llRegionSay(); on channel 0. 2. The receiver doesn't work anymore. Below my codes. Transmittor: string object = "[V] Demo"; // Name of object in inventory vector relativePosOffset = <2.0, 0.0, 0.0>; // "Forward" and a little "above" this prim vector relativeVel = <1.0, 0.0, 0.0>; // Traveling in this prim's "forward" direction at 1m/s rotation relativeRot = <0.0, 0.0, 1.0, 1.0>; // Rotated 90 degrees on the x-axis compared to this prim integer startParam = 10; // Channel integer rChannel =-5001; integer count; default { touch_start(integer tn) { // 1 minute llSetTimerEvent (60.0); llInstantMessage(llDetectedKey(0), "This is a demo! It will delete itself in 1 minute."); // Rezzes item vector myPos = llGetPos(); rotation myRot = llGetRot(); vector rezPos = myPos+relativePosOffset*myRot; vector rezVel = relativeVel*myRot; rotation rezRot = relativeRot*myRot; llRezAtRoot(object, rezPos, rezVel, rezRot, startParam); } on_rez(integer p) { llResetScript(); } timer () { llOwnerSay("Sorry your demo is over."); llSetTimerEvent (0.0); llRegionSay(rChannel, "RezDemo"); } }Receiver: integer rChannel =-5001; // Channel is the integer for reception (number mus the same as a transmission channel otherwise script will not work) default { state_entry() { llListen(rChannel, "", NULL_KEY, ""); } listen(integer channel, string name, key id, string msg) { // Checks if same channel if (rChannel == channel) { llDie(); } else { llDie(); } llListenRemove(rChannel);//close listener } }What i would nee jhelp with exactly is: - How to set a unique channel that the rezzer & rezzed object still listens to eachother but don't interfere with others. - How to detect prim in it's inventory without the need to renaming to "[V] Demo". - Send the message in the timer "Sorry your demo is over." to the person that started it so it doesn't spam the public channel. (if possible, cause llInstantMessage with DetectedKey(0) didn't work). Optional/Additional: I would like to know (yes i've searched) if there is a way to detect when someone uses "Pay" on right click > pay and play a sound or any other action. Thanks in advance. Sincerely, Chris.
  5. Thank you once again, I've learned a lot from all this
  6. That's interesting, so in this case "message" after the (key) makes all the difference. i wish the wiki was more explained to avoid these senarios. One more last question, is there a way to make the channels random? Since if you would have 2 backdrops on a land with the same script in it it woudl change the texture on both of them (i know i can just manually change them but i'd rather it to be automated) i've tried a few including http://wiki.secondlife.com/wiki/LlDialog#Tips but it gives this error, not sure why since it's o the wiki.
  7. i've read it and it gives me a "Name not defined within scope" unless i put at the top "key uuid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; In that case it works, but it would only allow "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" any other UUID's will render as: else { llInstantMessage( llGetOwner(),"Not a valid UUID"); } Just so there will not be any misscomunicatio this is the code so far: integer iMenuChannel = 123;integer iTextBoxChannel = 486;integer iListener;key uuid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";default{ state_entry() { } touch_start(integer total_number) { integer face = llDetectedTouchFace(0);; if ( face == 4 ) { llListenRemove(iListener);//close any stray listeners key toucher = llDetectedKey(0); llListen(iMenuChannel,"",toucher,""); llDialog(toucher,"Please choose an option",["Texture","Reset"], iMenuChannel); } else { } } listen(integer channel, string name, key id, string message) { llListenRemove(iListener); if (iMenuChannel == channel){ if("Texture" == message){ llListenRemove(iListener);//close any stray listeners key toucher = llDetectedKey(0); llListen(iTextBoxChannel,"",toucher,""); llTextBox(id, "Please enter a message and click Submit", iTextBoxChannel); //open listener on iTextBoxChannel and do stuff to make a text box appear } else if ("Reset" == message){ llSetTexture("792477f4-e765-e9ec-6bd8-dc228951b7e2", 4); } } else if (iTextBoxChannel == channel){ if(uuid){ llSetTexture(message,4); } else { llInstantMessage( llGetOwner(),"Not a valid UUID"); } //message from the text box. //verify that the message is a key and, if it is, apply it to face 4 } }} Unless im doing something wrong maybe i can put a few filters that check if, the entered text contains 36 characters (UUID has 36) and maybe even some other thigns but i'll have to dig deeper for that. i really appreciate you all helping me in the right direction while still letting me figure things out.
  8. oh! now i get it. i thought i had to execute the llTextBox' message within the same structure but it's actually outside of it. Thank you very much, this gives me a clear answer to script any further. I'll also try to see if i can valiudate if it has a valid UUID (not sure if it lets me use "if(uuid)" now or not.
  9. Okay so i've rearranged the messages to show me werther it works or not if (message == "A") { llTextBox(id, "Please enter a message and click Submit", -165); //do something else here if(channel == -165) { llSay(0, "It works "); //llSetTexture(message,4); } else { llSay(0, "It didnt work ");} } what i now get is: When i click button A it imidiately says "It didnt work " Im not sure if i could tell the "It works/It didnt work" to wait until it receives a new message from the channel -165
  10. Wrong place, but the ":textbox" has to appear when the first button is clicked so it has to be within "if (message == "A") i guess
  11. It already uses an if and else if to detect what button is pressed. if i put another one it doesn't do anything i can;t figure out why listen (integer channel, string name, key id, string message) { if (message == "A") { llTextBox(id, "Please enter a message and click Submit", -165); //do something else here if(channel == -165) { llSetTexture(message,4); } } else if (message == "B") { llSetTexture("792477f4-e765-e9ec-6bd8-dc228951b7e2", 4); //do something else here } // simpleMenu(id); refresh menu } Right now im trying to filter the message on a valid uuid but it's very confusing. if(uuid) gived me an error "name not defined within scope" and this doesn't work either: listen (integer channel, string name, key id, string message) { if (message == "A") { llTextBox(id, "Please enter a message and click Submit", -165); //do something else here message = (key)message; if(message) { llSetTexture(message,4); } else { llSay(0, "You didn't enter a valid UUID");} } else if (message == "B") { llSetTexture("792477f4-e765-e9ec-6bd8-dc228951b7e2", 4); //do something else here } // simpleMenu(id); refresh menu }
  12. Alright, thnak you very much I took a different approach. // Example made by Kahiro Watanabe, visit modernclix.info for lsl and php/mysql tutorials// You can share this script with anyoneinteger listener; // Listener for handling different channelsinteger simpleMenuChannel; // The channel used for the menu// Function that returns a random number (used for generating a random channel)integer randomNumber(){ return((integer)(llFrand(99999.0)*-1));}menu(key id, integer channel, string title, list buttons) // Generic menu creator{ llListenRemove(listener); listener = llListen(channel,"",id,""); llDialog(id,title,buttons,channel); llSetTimerEvent(10.0); // if no menu button is pressed in 20 seconds the timer is triggered to kill the listener}simpleMenu(key id) // This function calls the menu creator{ simpleMenuChannel = randomNumber(); menu(id,simpleMenuChannel,"Select an option",["A","B"]);}default{ touch_start(integer num) { simpleMenu(llDetectedKey(0)); } listen (integer channel, string name, key id, string message) { if (message == "A") { llTextBox(id, "Please enter a message and click Submit", -165); //do something else here llSetTexture(message,4); } else if (message == "B") { llSetTexture("792477f4-e765-e9ec-6bd8-dc228951b7e2", 4); //do something else here } // simpleMenu(id); refresh menu } timer() { llListenRemove(listener); // kill the listener llSetTimerEvent(0.0); // stop the timer } changed(integer mask) { //Triggered when the object containing this script changes owner. if(mask & CHANGED_OWNER) { llResetScript(); // This will ensure the script listens to the new owner, and doesn't continue listening to the creator. } }} It's working so far the only problem is: The llSetTexture takes the message of the llDialog which is "A" so i get an error saying "Texture A cannot be found" i have absolutely no clue how to seperate the conflicts. I've tried: llTextBox(id, "Please enter a message and click Submit", -165); //do something else here if( channel == -165) { llSetTexture(message,4); } But unforunately nothing happend
  13. Every time someone touches the object, it opens a new listen handler. How am I going to keep from opening so many that the script stalls? (The maximum allowed is 64.) Haven't really thought about that, any insights about how to avoid this? Although the script only works for the owner (Detect owner) What if the owner types something other than a valid UUID in the text box? Hmm i havent thought about that i'll try this with an if/else What if the owner opens a text box but doesn't type anything in it? Im gonna implement this somehow Should I put a default texture UUID in the script? When would I want the default to appear, if I did? Good one! i think i can do this with a reset that changes the script back idk What if the user wanted to change the color as well as the texture? Im not allowing that only texture else it'll get too complex i could do this with an dialog menu with a few color options & texture option Dop I really care what happens if the owner touches some other face? No/yes i want it also to have an resize script im going to script later on but i could also make a prim text that when clicked would activate that seperate script
  14. I think i have it, it works atleast if the code is valid enough i don't know. integer vListener;default{ touch_start(integer num_detected) { integer face = llDetectedTouchFace(0);; if ( llDetectedKey(0) == llGetOwner()) { if ( face == 4) { integer channel = -13572468; vListener = llListen( channel, "", "", ""); llTextBox(llDetectedKey(0), "Please enter the UUID of the texture you want as background.", channel); } else { } } else { llSay(0, "You're not the owner, you can't change the texture."); } } listen (integer channel, string name, key id, string message) { llSetTexture(message,4); }}
  15. Actually i haven't done anything the image is a example i apreciate your answer
  16. Hi there! I've been looking around but havent really found what i was lookign for. I have this backdrop that i made and i want people to be able to change the texture on one face by pasting a UUID or somehow since the product is no-mod backdrop: (wan to be able to let customers change the green face) What i'm lookign for: Could anyone be kind to give me a push in the right direction or help me with this? Thanks in advance! Sincerely, Chris
  17. Hello, so i have some issues with voicechat 1. I have crank up my volume really high almost maximum in order to hear people. Eventhough "Master" & "voice" are turned up. So whenever i get a notification on windows i'm instantly deaf. 2. "Allow voice equally from everyone" doesn't work, it still gets quieter when there is a greater distance. (it doesnt work like voice call) My settings:
  18. Thank you! Somehow i kne wit was going to be this simple, i've tried "face 2" "face2" and "face_2" but didn't know you only need to place the number
  19. Hello, i'm cofused about this one. I'm making a wall lamp which i would want to be ablle to turn on/off when clicked (anywhere) but since this is one mesh/prim with 3 textures i want it to only change the "glow" settings of one face, and additionally the light toggle which i think would only be able to emmit on the whole mesh. Ingame mesh:  Inside 3ds max:  i know that the face off the glass that i want to change is 2 and i know of the "PRIM_GLOW" existence but i dont know how exactly to change "ALL_SIDES" to just one side, any help would be really appreciated. Sincerely

    beta grid access

    Had the same issue, been able to login previously and now i can't i changed my password 3 days ago still nothing. so i filed a ticket.
  21. I've previously made my own export to use in vray and baked my textures that way, example:  Diffuse (not only substance, some things are editted myelf or rebaked (like the reflection):  I believe my export was this:  To edit these go to: File > Export textures (Ctrl + Shift + E) > Configuration and make you own, then i imported these textures into 3DS Max Vray, made a scene and baked it.
  22. Omg haha i forgot about that! its how textures were named for a different game.. Thank you, i'll try it out
  23. hmm i wouldnt know how, maybe in cloud, i have emailed you the files.
  24. Hmm, got any recommendations on how to send the file then?
  • Create New...