Jump to content

Ruthven Ravenhurst

Resident
  • Posts

    491
  • Joined

  • Last visited

Everything posted by Ruthven Ravenhurst

  1. You could pass it through link messages, but depending on how many textures, it could take just as long. A notecard could work, but if Script B gets reset, and the notecard isn't present, it wouldn't be able to load them.
  2. I think I see what you're saying. Object A is the mesh that you are applying the textures to. Object B is the HUD or other object that communicates the textures to Object A Script A is in Object A to receive the textures Script B is in Object B to communicate the textures to Script A You want the channel hidden in both scripts, so you need to pass the textures to Script B from a third Script C which the next user will edit to plug in the textures. You can have Script C send an email to itself, and Script B can receive it to get the textures After Script C send the email, you can send a link message to Script B to tell it to look for an email, or when saving Script C, the changed inventory event will trigger in Script B, so it knows that way to look for an email as well
  3. HAHA, *facepalms" It was a silly parenthesis in place of a bracket after Else
  4. I'm writing a quiz script, and I keep getting a Syntax Error in this snippet, and I can't figure out why. I wrote in read where it's saying the error is timer() { questions = llDeleteSubList(questions, questionidx, questionidx); integer len = llGetListLength(questions); if(len) { llRegionSayTo(user,0,"Time is up, asking next question."); dialog(user,chan); } else ( string ERROR str = "Time is up, no more possible questions for number " + (string)question + " Resetting Quiz"; llRegionSayTo(user,0,str); llResetScript(); } }
  5. I'm looking for rows of bottles to use on a shelf. Ideally with a separate face for each bottle. Different shapes and sizes within the same mesh. I would like it to be well balanced with as low LI and good detail as possible, and the textures to be easily modified for the end user so they can change the content/label of each bottle
  6. **Edit to add** After posting my reply, I see that you already posted there I don't speak French, but using Google Translate, I can see this is a post asking for a scripter for hire. The forum you need is the InWorld Employment
  7. Thanks, that works perfectly. I knew mine was a bit jumbled, was going to work on organizing it after getting it to work. Guess I didn't think about it rounding when casting a division to an integer, or dividing integers
  8. i also changed some of the tests to >= instead of just >, as it was returning 0 if it was equal to I also noticed they had some level errors, and added in tests for those as well integer getnextxp(){ integer num; if((exp < 5000)&&(exp >= 250)) { integer subtr = (exp + 500) % 500; num = (exp + 500) - subtr; } if((exp < 250)&&(exp >= 120)){return 250;} if((exp < 120) && (exp >= 60)){return 120;} if((exp < 60)&&(exp >= 20)){return 60;} if(exp < 20){return 20;} if(exp > 50000) { integer subtr = (exp + 10000) % 10000; num = (exp + 10000) - subtr; } if((exp >= 5000)&&(exp < 14000)) { integer subtr = (exp + 1000) % 1000; num = (exp + 1000) - subtr; } if((exp >= 14000)&&(exp < 50000)) { integer subtr = (exp + 2000) % 2000; num = (exp + 2000) - subtr; } if((exp < 37000)&&(exp >= 36000)){return 37000;} if((exp < 40000)&&(exp >= 37000)){return 40000;} return num;}
  9. nevermind, i figured it out. instead of having the return function in each of the if statements, i moved it to the end, and had each if statement calculate it integer getnextxp(){ integer num; if((exp < 5000)&&(exp > 250)) { integer subtr = (exp + 500) % 500; num = (exp + 500) - subtr; } if((exp < 250)&&(exp > 120)){return 250;} if((exp < 120) && (exp > 60)){return 120;} if((exp < 60)&&(exp > 20)){return 60;} if(exp < 20){return 20;} if(exp > 50000) { integer subtr = (exp + 10000) % 10000; num = (exp + 10000) - subtr; } if((exp > 5000)&&(exp < 14000)) { integer subtr = (exp + 1000) % 1000; num = (exp + 1000) - subtr; } if((exp > 14000)&&(exp < 50000)) { integer subtr = (exp + 2000) % 2000; num = (exp + 2000) - subtr; } return num;}
  10. So i'm writing a script for a hud, and I think I got the right understanding of how the % sign works as an operator integer num = 1200; integer remainder = num % 1000;//would return 200, right? I have this snippet that I'm trying to calculate the next experience level based on different differences between levels after certain experience levels, if that makes sense look at http://www.7seasfishing.com/stats.html so you can see what experience levels I mean you can see that the difference between the first few levels is 40, 60 and 130, not too complicated after 500, the level raises every 500 until 5000, then it's every 1000 until 14000, then every 2000 up to 40000 (was told it's every 10000 after that) On the following snippet, I'm getting an error that reads "Not all code paths return a value", but I can see what I need to fix integer getnextxp() { if((exp < 5000)&&(exp > 250)) { integer subtr = (exp + 500) % 500; integer num = (exp + 500) - subtr; return num; } if((exp < 250)&&(exp > 120)){return 250;} if((exp < 120) && (exp > 60)){return 120;} if((exp < 60)&&(exp > 20)){return 60;} if(exp < 20){return 20;} if(exp > 50000) { integer subtr = (exp + 10000) % 10000; integer num = (exp + 10000) - subtr; return num; } if((exp > 5000)&&(exp < 14000)) { integer subtr = (exp + 1000) % 1000; integer num = (exp + 1000) - subtr; return num; } if((exp > 14000)&&(exp < 50000)) { integer subtr = (exp + 2000) % 2000; integer num = (exp + 2000) - subtr; return num; } }
  11. You can also use paid bot systems that host them for you on their server. Here are a few links for some of those: http://www.mysmartbots.com/docs/Personal_Bots http://www.mysmartbots.com/docs/Prices http://slbot.thoys.nl/?page=home https://bitbucket.org/METAbolt/metabolt.bitbucket.org/overview (soon won't work with Casper Tech, if that's something you use) http://www.pikkubot.de/dokuwiki/doku.php?id= (self hosted version) http://corrade.grimore.org/ (self hosted for more advanced users)
  12. It's pretty normal for mesh door creators to add a single triangle in order to move the pivot point to the door edge. You can make it a tiny triangle and either be a separate face that you later make transparent, or work it into the texture for one of the faces so that it falls in an area that is transparent. Try googling Rotate Prim On Edge. There was a script, I think posted in the library, that does just that. I'm not in world to look it up in my inventory
  13. Oh yeah, of course. I only meant the comments on the list to know what's going on where it may not be clearly visible. Something that says: "Jfjsjjdjjsjsggh7373773hdhh", Wouldn't be understandable so I'd put: "Jfjsjjdjjsjsggh7373773hdhh",//bubbles Not something for the end user to see, just for my own sanity when writing/updating the script
  14. You don't have to have the entire list on one line. You can put the different items and their offsets on a different line like: list items = [ "Item 1", pos, rot, "Item 2", pos, rot, etc... ]; You can even put comments at the end of each line. That's how I keep track of hard coded texture uuid list textures = ["some uuid",//texture 1 "some uuid2",//texture 2
  15. Right, as Rolig mentioned. There's no LSL function s to shrink an avatar. Even scaling down in the sliders for a shape won't get you very far if say you want to scale an avatar down to fit inside a dollhouse. The best thing I can think of is some way of simulating it by teleporting them to a skybox that simulates them being teleported and shrank to fit inside the cube. However if you want it to look like the avatars outside the cube are still there and full size, that won't be possible
  16. right. the only reason i've used llRegionSayTo on channel 0 is directly to an avatar in place of llInstantMessage I wrote a quiz script, and sometimes the text can be too long for the llDialog's 512 byte limit llRegionSayTo has a 1024 limit. and doesn't have the 2 second delay that llInstantMessage has. so using llRegionSayTo(AVid, 0, "some message") to send say, 5 messages for quiz answer choices is faster than llInstantMessage(AVid, "some message"); 5 times, which would take around 10 seconds for those 5 to send
  17. try this. I only tried it with about 150 textures. it doesn't take into account for no copy items, so you would need to add a check for that, or make sure you don't have any no copy items in the object drop the script into the object. drop in the items, and it will show you a number in green of how many there are. touch it, and it will run a loop within a loop to create a list of 100 items each time and give you a numbered folder for each 100 items. It will show in red text where it is in the process text(integer loops, integer loop, integer idx, integer total){ string floattext = "Loop " + (string)loop + " of " + (string)loops + "\n Item Number " + (string)(idx+1) + " of " + (string)total; llSetText(floattext,<1.0,0,0>,1.0);}default{ state_entry() { integer count = llGetInventoryNumber(INVENTORY_ALL); llSetText((string)count + " Items",<0,1,0>,1.0); } touch_start(integer total_number) { key id = llDetectedKey(0); if(id == llGetOwner()) { string myname = llGetScriptName(); integer count = llGetInventoryNumber(INVENTORY_ALL); integer loops = llRound(count/100.0);//used a float version of 100 and rounded up to make sure it gets the last section that is less than 100 integer loop = loops; do { list items; integer start = loop*100; integer end = start + 100; if(end > count){end = count;} for(start; start < end; start++) { text(loops,loop,start,count); string name = llGetInventoryName(INVENTORY_ALL,start); if(name != myname) { items += [name]; } } llGiveInventoryList(id,llGetObjectName()+" "+(string)loop,items); loop--; } while(loop > -1); llResetScript(); } } changed(integer change) { if(change & CHANGED_INVENTORY) { llResetScript(); } }}
  18. Take aook here. Looks like it suggests the limit is 512 Maybe get an inventory count, divide by 512, then run a loop that many times Http://wiki.secondlife.com/wiki/Talk:LlGiveInventoryList
  19. I'm looking for 2 fullperm or copy&trans. 1st one is someone striking the ground in front of them with a staff/sceptor 2nd is waving it horizontally in front of them in a half circle. Can be 1or 2 handed
  20. and on a side note. if you already have the particle effect, you can have the money event trigger the particle effect. remember to have it turn if off too, either with a llSleep, or a short llSetTimerEvent
  21. I don't really understand what you're asking for. Perhaps with more info we can point you in the right direction
  22. I don't really understand what you're asking for. Perhaps with more information we might be able to help you write a script. If you're looking for someone to write a script for you, the Wanted forum is where you would need to post. https://community.secondlife.com/t5/Wanted/bd-p/Wanted
  23. The changed event gets triggered in the original copy when someone buys a copy. I'm using that to llDie. I also have a timer start on rez for it to die if someone doesn't buy it within a certain amount of time ETA: I've already got it figured out with the snippet I posted above I wish there was a CHANGED_BUY or an object_buy(key id, integer ant)
  24. I still need the changed event to trigger when someone buys it. it will trigger regardless of what I do in the on_rez event To get around it I did this: key gOwner: default { state_entry() { gOwner = llGetOwner(); } changed(integer change) { if(change & CHANGED_OWNER) { if(gOwner != llGetOwner())//it was triggered by the new owner rezzing it(or via their rezzer) { gOwner = llGetOwner(); } else//it was triggered by someone buying it { //do something else } } } }
  25. Sure, but the changed owner event was the only way I could find to detect when someone buys an object (at least for L$0) I didn't try it with L$1 to see if it would trigger a money event, but as far as I know that changes buy to pay, at least it did when I had the click action set to buy for L$0 ETA: Unless you're talking about in the changed event I already established. I want the initial changed event in rez to not make the beam die. But still want it to die on the second time it's triggered, which is why I save and update the owner
×
×
  • Create New...