Eu4orick Posted December 9, 2021 Share Posted December 9, 2021 Hello there, I'm looking for a quote on a script which does: Something like a one press button/touch hud or object which opens a command menu Can change body shape through RLV or other means? My best guess is RLV is the only method for this? It's how hot swapping clothes/accessories through clicking something on someone with wardrobes. Or how someone can have dynamic pregnancy or weight changes to the body over time. Usually from what I know is having a group of folders which have all the shapes and links to all these various parts for these types of scripts to pull from? Has a manual timer I can adjust or set to being instant or take ages in real-time. E.g. 1-1000000 +secs Can attach or detach clothing and objects to my av through these folders. perhaps on a separate timer to the shape changes. I've found all these similar things in market products just never one I could set a timer to my own preference. Hopefully this makes sense to someone. I can perhaps try explain it in more detail. Link to comment Share on other sites More sharing options...
Quistess Alpha Posted December 9, 2021 Share Posted December 9, 2021 (edited) Making something that attaches a series of folders in sequence isn't too hard, but making something that would change your shape in a nice way would be rather difficult without a lot of tedious fiddling on the part of the user. // configurable variables: string folderName = "RlvSequencer"; integer indexFolderMax = 5; // the highest numbered folder. // with these defaults you would need 6 folders: '#RLV/RlvSequencer/0' . . . '#RLV/RlvSequencer/5' float timeStep = 300.0; // change to next folder ever 5 minutes. // script-managed variables. integer indexFolder = 0; default { state_entry() { llSetTimerEvent(timeStep); llOwnerSay("@attach:"+folderName+"/"+(string)indexFolder+"=force"); } timer() { llOwnerSay("@detach:"+folderName+"/"+(string)indexFolder+"=force,"+ "attach:"+folderName+"/"+(string)(indexFolder+1)+"=force"); // Note: inline ++ operations are evaluated right to left; using ++indexFolder above would not have the expected result. ++indexFolder; if(indexFolder==indexFolderMax) { llSetTimerEvent(0); } } } (untested) If the shapes are to be 'locked on', that can actually lead to cloud-inducing bugs in RLV viewers (I have not tested RLVa viewers) if you attempt to switch from a locked on shape to another one. (https://bitbucket.org/marinekelley/rlv/issues/154/attempting-to-change-shape-while-addoutfit) Edited December 10, 2021 by Quistess Alpha 1 Link to comment Share on other sites More sharing options...
Eu4orick Posted December 9, 2021 Author Share Posted December 9, 2021 Thank you for this help, Urm I don't understand scripting all that well. I figured I would copy and paste what you put. It has a syntax error on line 7 where it says: integer indexFolder = 0; Sorry I wouldn't know how to resolve this. Link to comment Share on other sites More sharing options...
Quistess Alpha Posted December 10, 2021 Share Posted December 10, 2021 2 hours ago, Eu4orick said: syntax error The error was a few lines above where I forgot a ';'. I edited the above post to fix that issue specifically. Link to comment Share on other sites More sharing options...
Eu4orick Posted December 12, 2021 Author Share Posted December 12, 2021 (edited) Is there a way to make this script run in reverse at last folder please? Like touch a button to go one way then touch either same button or another to reverse backwards? Or just click button or menu option to enable a reverse? Edited December 12, 2021 by Eu4orick Link to comment Share on other sites More sharing options...
Quistess Alpha Posted December 12, 2021 Share Posted December 12, 2021 21 minutes ago, Eu4orick said: Is there a way to make this script run in reverse at last folder please? Like touch a button to go one way then touch either same button or another to reverse backwards? Or just click button or menu option to enable a reverse? Making it do xyz when you touch button abc is easy enough, but I'm a bit busy with other projects to turn the above 'proof-of-concept' into a viable product. 1 Link to comment Share on other sites More sharing options...
Eu4orick Posted December 18, 2021 Author Share Posted December 18, 2021 So my next questions to you is this :). Are too busy to get back to or till when roughly? Or would you like to be paid a fee if this has now become something in those realms? I ask because I don't know honestly where I can ask to get a job like this done on SL. My hunt for scripters seems to go nowhere most times I've tried looking about. Or I don't have the right group channels to ask in. Link to comment Share on other sites More sharing options...
Quistess Alpha Posted December 18, 2021 Share Posted December 18, 2021 (edited) 2 hours ago, Eu4orick said: So my next questions to you is this :). Are too busy to get back to or till when roughly? Or would you like to be paid a fee if this has now become something in those realms? I ask because I don't know honestly where I can ask to get a job like this done on SL. My hunt for scripters seems to go nowhere most times I've tried looking about. Or I don't have the right group channels to ask in. // configurable variables: string folderName = "RlvSequencer"; integer indexFolderMax = 5; // the highest numbered folder. // with these defaults you would need 6 folders: '#RLV/RlvSequencer/0' . . . '#RLV/RlvSequencer/5' float timeStep = 300.0; // change to next folder ever 5 minutes. list directionButtons = // Add child prims with exactly these names to the HUD. [ "Reverse", // "Pause", "Forward" ]; list stepButtons = [ "Previous", "Next" ]; integer loop = FALSE; // if TRUE, then the folders will 'wrap around' instead of stopping when you hit the first or last. // script-managed variables. integer indexFolder = 0; integer indexFolderDelta = 1; default { state_entry() { llSetTimerEvent(timeStep); llOwnerSay("@attach:"+folderName+"/"+(string)indexFolder+"=force"); } timer() { llSetTimerEvent(timeStep); // required by instant "previous" and "next" functionality. // alternatively could move most of this event to a function. integer nextFolder = indexFolder+indexFolderDelta; if(loop) { nextFolder = (indexFolder%(indexFolderMax+1))+(indexFolderMax+1); // % in LSL does not convert negative integers to positive ones. } llOwnerSay("@detach:"+folderName+"/"+(string)indexFolder+"=force,"+ "attach:"+folderName+"/"+(string)(indexFolder+indexFolderDelta)+"=force"); // Note: inline ++ operations are evaluated right to left; using ++indexFolder above would not have the expected result. indexFolder=indexFolder+indexFolderDelta; if(!loop) { if(indexFolder==indexFolderMax&&indexFolderDelta>0) { llSetTimerEvent(0); }else if(indexFolder==0&&indexFolderDelta<0) { llSetTimerEvent(0); } } } touch_start(integer i) { string name = llGetLinkName(llDetectedLink(0)); if(name=="Loop") { loop=!loop; }else { // yeah, ugly formatting on purpose. integer index = llListFindList(directionButtons,name); if(index!=-1) { indexFolderDelta = --index; // ugly logic, I could probably clean if I felt like it. . if( (index==0) || (!loop && ((index<0 && indexFolder==0 )||( index>0 && indexFolder==indexFolderMax )))) { llSetTimerEvent(0); }else { llSetTimerEvent(timeStep); } }else { index = llListFindList(stepButtons,name) if(index!=-1) { index=(index*2)-1; // 0->-1, 1->1 indexFolderDelta = index; // same ugly logic. if( (!loop && ((index<0 && indexFolder==0 )||( index>0 && indexFolder==indexFolderMax )))) { llSetTimerEvent(0); }else { llSetTimerEvent(0.1); } }}} } } Merry xmas. Decent inworld groups to ask are "Scripts" and "SL Scripter's Market". Builder's brewery might also be worth an ask, but they generally encourage do-it-yourself over hiring someone. Two people who seem to be answering a lot of posts in the inworld-employment section lately are @Biran Gould and @LoafBr3ad Edited December 18, 2021 by Quistess Alpha mutually exclusive branches all being tested irked me so I added a hacky fix. Link to comment Share on other sites More sharing options...
LoafBr3ad Posted December 19, 2021 Share Posted December 19, 2021 Thanks for remembering me @Quistess Alpha lol, @Eu4orick I've been a little busy lately, but i can help you if you need to 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