Jump to content

mySky Phenomena

Resident
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

4 Neutral

About mySky Phenomena

  • Rank
    Member
  1. Thank you! The only video for doing this that we could find didn't explain it very well.
  2. Hello All, I have a linked prim that I am trying to rotate about an axis that is not through its origin. I wanted this to happen as smoothly as possible, but I want to make sure that the way I am attempting to accomplish this is actually not possible versus me just doing something wrong. I tried llSetKeyframedMotion, but then realized you can only use this on the root prim. I was then experimenting with llTargetOmega, but couldn't figure out how to move the axis such that it doesn't originate at the origin. My wife (the creator of this linked object) has also tried moving the o
  3. Thank you! That helped explain a lot, and gave me some other options too!
  4. Hello All, I have a little bit of experience scripting using LSL, but I think I'm not understanding either how the timer event works or how to properly remove listeners. When trying to learn how to build a dialog menu, I read many resources that said removing open listeners is very important. In all of my scripts up until now, I've been using a timer event in case the user doesn't click on the menu, like this: open_menu(variables) { //Do stuff with variables to open a dialog menu llSetTimerEvent(30.0); } close_menu() { //remove listeners llSetTimerEvent(0.0); } default { //Code
  5. Just to make sure I understand: If I did it this way, all I would need in the listen is: if(message == C1) { //Use stored B# to search for the position B#C1 in the "master" data list } else if()... instead of the nested if-checks I had in my original code snippet?
  6. Each B and C have a separate button. For example, if you chose button B2, you'd get another menu with buttons C1, C2, C3,..., C14, C15 (of course this would be broken up into two separate menus). With the result, I grab the list associated with the B button (which contains all the values for each C associated with that B button) and then find the C value in that list. For example, if someone chose B3 then C9, I would go into the B3 list and grab the value inside the C9 index (so index 8). The C9 value is a UUID for a texture that I'm applying to an object. Let me know if I'm not explaini
  7. Thank you, that will definitely cut down on the number of separate lists I have!
  8. Yes, it's 150 different Cs. Right now, I have all of the C options stored in 10 separate lists (one for each B) because, like Wulfie Reanimator said, I discovered there are no lists within lists allowed. I then store which B# they chose in a variable (call it "numB"). Inside listen I say: if(message == C1) { if(numB == B1) { //get necessary info from B1 list associated with option C1 } else if(numB == B2) . . . } else if(message == C2)... So, as you can see it's getting a little ridiculous, because inside listen there are 15 C if/else if statements, each with 10 B if/else if st
  9. Yes, there are fifteen distinct C options. Originally, I was going to build each menu and store it in a list beforehand. Then, I realized I should just build them only when they're needed because there are sooooo many of them. The control flow for the listen and the dataserver (or whatever the server event is called) events are really really really long. I'm hoping there's some smart way of cutting down on it that I'm not thinking of because I'm a novice, but all of the dialog menu example scripts I'm looking at are short (in terms of the amount of options for each menu) because (obviously) th
  10. Hello, I am fairly new to lsl scripting, but have some programming experience. I am currently working on a project that includes some dialog menus, which are more complicated than any I have previously worked on. Functionally, the code is working (as far as I can tell), but I'm wondering if there is any way to streamline or simplify what I've written. The attached diagram is supposed to show how the menus are organized, sorry if it's confusing. Basically, the part that gets really really long is the control flows associated with levels B and C. For each choice in level B (B1 - B10) t
  11. What if I need to combine those two methods? Would this work?: integer iLine; key MyQuery; key queryA; key queryB; list lAllData; integer A; integer B; integer someNumber; //Whatever line on which the stuff I need ends default { state_entry() { // Check the notecard exists, and has been saved if (llGetInventoryKey(notecardName) == NULL_KEY) { llOwnerSay( "Notecard '" + notecardName + "' missing or unwritten"); } else { queryA = llGetNotecardLine("My Notecard", 2); } } dataserver(key query
  12. I see. Thank you so much for all of your help. I understand that a lot better now!
  13. Ohhhhhh ok, that makes sense. I actually have a bunch of info I need to grab from that notecard. Is there a more elegant way of doing that, or is the only way to setup the event the way you've done with queryA and queryB? Like if I had to fill A - F, would I need to just keep doing what you've done above, just for each variable?
×
×
  • Create New...