Jump to content

Marvin Benelli

Resident
  • Posts

    132
  • Joined

  • Last visited

Everything posted by Marvin Benelli

  1. The ears can be skinned with a separate tattoo, so don't worry about that. Focus on skin first!
  2. Yes, see previous post, especially the Golden Years reference by Stephanie
  3. Great reference, but provides only standard body solution for males. The shop does sell EVOX skins for females so owner knows how to do what you need! You could ask her whether she's willing to make you an EVOX skin that she can sell in her shop. When she's not willing or just doesn't have the time let me know and we can make a deal.
  4. Forget about the shape, what you need is a good skin (lowest layer) with some wrinkels/marks tattoos on top of that. As long as you’re not sure what exactly you want it to look, you can start with the system avatar and its uv, named SLUV Once you know and want to go detailed, you can get a mesh head from akeruka (cheap or even free) or lelutka(market leader but expensive) and use the EVOX uv allowing for more skin details. Another option is to use a full solution, mesh body plus head, like piggu and get head and body skin for it from forexample Vinyls Destination on MP Good Old looking skins are rare but I can help you with that. Contact me inworld for that.
  5. Another solution is to use selection numbers on the buttons and give the long options in text, like: Select an option from: 1) long descriptive message for option 1 2) same for option 2 etc
  6. Thanks! Great suggestion for when that requirement comes up. The op is currently happy but I will discuss your idea with him
  7. integer MY_NUM = 99; integer gTotalScore; integer gBestScore; string gPlayerName; string gBestPlayerName; default{ link_message(integer sender_num, integer num, string score, key id){ if(num != MY_NUM)return; string name = llKey2Name(id); if(name==gPlayerName){ gTotalScore +=(integer)score; if(gTotalScore>gBestScore){ gBestScore=gTotalScore; gBestPlayerName=name; llSetText("TOP SCORE "+gBestPlayerName+" with "+(string)gBestScore+" points", <1.0, 1.0, 1.0>, 1.0); llSay(0,"You have just taken the lead with high score! "); } }else{ gTotalScore = (integer)score; llSetText("TOP SCORE "+gBestPlayerName+" with "+(string)gBestScore+" points\n" +name+" your score is "+(string)gTotalScore+" points", <1.0, 1.0, 1.0>, 1.0); } } }
  8. My three cents: string PREV = "<<"; string NEXT = ">>"; key gOwner; integer gChannel; integer gListener; list gTextures; integer gNrofTextures; integer gNrofPages; integer gPage; list gMenu; integer gNrofButtonsLastPage; load_textures(){ gNrofTextures = llGetInventoryNumber(INVENTORY_TEXTURE); gTextures = []; integer i; for (i=0; i < gNrofTextures;i++){ string name = llGetInventoryName(INVENTORY_TEXTURE,i); if(llStringLength(name)<=12) gTextures += [name]; else llOwnerSay("WARNING: texture names must shorter than 13!"); } if(gNrofTextures>12){ gNrofPages = 1+gNrofTextures/10; gNrofButtonsLastPage = gNrofTextures%10; }else{ gNrofPages = 1; gNrofButtonsLastPage = gNrofTextures; } } menu(){ gMenu = []; integer i; if(gNrofPages==1) gMenu = llList2List(gTextures,0,gNrofButtonsLastPage); else if(gPage==gNrofPages-1){ integer index = 10*gPage; gMenu = [PREV,NEXT]; gMenu += llList2List(gTextures,index,index+gNrofButtonsLastPage); }else{ gMenu = [PREV,NEXT]; gMenu += llList2List(gTextures,0,9); } llDialog(gOwner, "Select texture: ",gMenu,gChannel); } default{ on_rez(integer num){ // reset scripts on rez llResetScript(); } state_entry(){ gOwner = llGetOwner(); gChannel = (integer) ("0x" + llGetSubString ((string)gOwner, -8, -1)) | 0x80000000; load_textures(); if(gTextures==[]) llOwnerSay("WARNING: No textures in inventory!"); } touch_start(integer total_number){ if(llDetectedKey(0)!=gOwner)return; gPage = 0; llListenRemove(gListener); gListener = llListen(gChannel, "",gOwner, ""); // display the menu menu(); } listen(integer channel, string name, key id, string message){ if (channel == gChannel){ if(message == PREV){ if(gPage>0) gPage--; menu(); }else if (message == NEXT){ if(gPage<gNrofPages-1) gPage++; menu(); }else { // apply the texture from the selected button llSetTexture(message, ALL_SIDES); } } } changed(integer change){ if(change & CHANGED_INVENTORY) llResetScript(); } }
  9. Make a tapered box and flatten it, that will give you 5 detectable faces using llDetectedFace. You can contact me inworld for an example script.
  10. switcher(){ Integer i; if(on){ for(i=1;:i<=llGetNumberOfPrims();i++){ llSetLinkPrimitiveParamsFast(i,[PRIM_COLOR,ALL_SIDES ,<llFrand(1),llFrand(1),llFrand(1),1); } }else{ for(i=1;i<=llGetNumberOfPrims();i++){ llSetLinkPrimitiveParamsFast(i,[PRIM_COLOR,f, <1,1,1>1]); } on = !on; }
  11. Yes ofcourse it can be adapted!Just put a request with all requirements in the Inworld Employment section. That’s were you can commission scripters to work for you.
  12. Animations require a skeleton: a collection of bones. So when you want to animate a chair you need to give it a skeleton and that combination is called animesh. So you can make an animesh chair that moves with its own animation. Syncing that animation with the avatar animation is the same situation as having two avatars syncing their own animation. an avatar can sit on an animesh chair and it’s also possible to attach an animesh chair to an avatar
  13. Just Great!!! keep up the good work. Do you have a gallery somewhere? Marvin
  14. A body is always an attachment, so you can use llGetAttachedList to obtain a list of attachment uuid’s. For each uuid you can obtain its attachment name via llKey2Name. Then you can try to match the attachment name with the names of the relevant bodytypes to find the worn body type.
  15. Imagine you are looking for a job in rl. Do you think it’s a good idea to go to a crowded public place and shout something like this: “I am open to any kind of job that pays at least 0,30 usd. We can discuss work and schedule in private” Do you think you will receive any serious job offers?
  16. PlayingAanimations[i] ??? We don’t have arrays in LSL so I am surprised this even compiles!
  17. wow, that reminds first lsl project: a flying wooden shoe that made a guided tour across a few connected regions. I will check whether that still works but it was pre -vehicle times Also: the balloon of the particle lab might be a candidate, so you could try it’s owner.
  18. o o checkout the wiki page on search api at: Work-around for LSL It should be noted that LSL scripts using llHTTPRequest method can not query against the Google appliance directly. Linden Lab has blocked all access due to security reasons of requests from machines on the local network. To work around this, many people use proxy services. One popular service is offered by Google. It is originally intended to make content available for mobile phones. For an example, see the Proxy Search Form. Example of proxy search URL http://www.google.com/gwt/n?u=http%3A%2F%2Fsearch.secondlife.com%2Fclient_search.php%3Fq%3Dhippo&_gwt_noimg=1 Seems like the "https://search.secondlife.com" can't be called directly from LSL but the workaround is an indirect call via a proxy. GWT is end of life by now but I tried another web proxy which delivered "https://p2.hosteagle.club/?__cpo=aHR0cHM6Ly9zZWFyY2guc2Vjb25kbGlmZS5jb20". Alas, calling that one with llHTTPRequest resulted in a 400 error, so this workaround is no longer valid. Is there maybe another workaround for the block of requests from machines on the local network?
  19. The wiki page on the search API is old indeed and it mentions that it’s not a LL supported one, so the Ops real question is: is there a LL supported API that allows to search events? If not, who is able and willing to provide support on this unofficial API?
  20. I tried the curl command and it shows me two things: - the redirect maximum is a curl property that can be set on the command line using "--max-redirs" - the redirection is an endless loop: everything below between the ===== markings is repeated forever until max_redirs gets hit Command: % curl --http1.1 -v -L -o /dev/null ‘https://search.secondlife.com?query_term=Galadriel%27s&search_type=standard&collection_chosen=events&maturity=gma' Output: > GET /?query_term=Galadriel%27s&search_type=standard&collection_chosen=events&maturity=gma HTTP/1.1 > GET /_auth/start?anonOK=true HTTP/1.1 > GET /openid/checklogin?language=en&return_to=https%3A%2F%2Fsearch.secondlife.com%2F_auth%2Fcheck%3FanonOK%3Dtrue HTTP/1.1 > GET /openid/openidserver?openid.claimed_id=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.identity=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.mode=checkid_immediate&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.realm=https%3A%2F%2Fsearch.secondlife.com%2F&openid.return_to=https%3A%2F%2Fsearch.secondlife.com%2F_auth%2Fcomplete%3FanonOK%3Dtrue%26janrain_nonce%3D2024-02-15T21%253A29%253A46Zlitl4E&openid.sreg.required=fullname HTTP/1.1 > GET /_auth/complete?anonOK=true&janrain_nonce=2024-02-15T21%3A29%3A46Zlitl4E&openid.assoc_handle=%7BHMAC-SHA1%7D%7B65ce824a%7D%7BWoJ8%2FQ%3D%3D%7D&openid.claimed_id=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.identity=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.mode=id_res&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.op_endpoint=https%3A%2F%2Fid.secondlife.com%2Fopenid%2Fopenidserver&openid.response_nonce=2024-02-15T21%3A29%3A46ZeJKBUV&openid.return_to=https%3A%2F%2Fsearch.secondlife.com%2F_auth%2Fcomplete%3FanonOK%3Dtrue%26janrain_nonce%3D2024-02-15T21%253A29%253A46Zlitl4E&openid.sig=cGlc9wsouE5MK1EFctA5XCSbCtI%3D&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cns.sreg%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned%2Csreg.fullname&openid.sreg.fullname=00000000-0000-0000-0000-000000000000%2F0%2F1 HTTP/1.1 ===== > GET / HTTP/1.1 > GET /_auth/start?anonOK=true HTTP/1.1 > GET /openid/checklogin?language=en&return_to=https%3A%2F%2Fsearch.secondlife.com%2F_auth%2Fcheck%3FanonOK%3Dtrue HTTP/1.1 > GET /_auth/check?anonOK=true&openid_identifier=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous HTTP/1.1 > GET /openid/openidserver?openid.claimed_id=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.identity=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.mode=checkid_immediate&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.realm=https%3A%2F%2Fsearch.secondlife.com%2F&openid.return_to=https%3A%2F%2Fsearch.secondlife.com%2F_auth%2Fcomplete%3FanonOK%3Dtrue%26janrain_nonce%3D2024-02-15T21%253A29%253A47ZED7Xxy&openid.sreg.required=fullname HTTP/1.1 > GET /_auth/complete?anonOK=true&janrain_nonce=2024-02-15T21%3A29%3A48Z0vfcju&openid.assoc_handle=%7BHMAC-SHA1%7D%7B65ce824c%7D%7BNjuMbQ%3D%3D%7D&openid.claimed_id=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.identity=https%3A%2F%2Fid.secondlife.com%2Fid%2Fanonymous&openid.mode=id_res&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.op_endpoint=https%3A%2F%2Fid.secondlife.com%2Fopenid%2Fopenidserver&openid.response_nonce=2024-02-15T21%3A29%3A48ZmX32wp&openid.return_to=https%3A%2F%2Fsearch.secondlife.com%2F_auth%2Fcomplete%3FanonOK%3Dtrue%26janrain_nonce%3D2024-02-15T21%253A29%253A48Z0vfcju&openid.sig=YyODVK0M%2FfYbtUmw%2BgU81t7RKxA%3D&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cns.sreg%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned%2Csreg.fullname&openid.sreg.fullname=00000000-0000-0000-0000-000000000000%2F0%2F1 HTTP/1.1 =====
  21. In the lighter script findBongName: llListen(channel,””,bongKey,””) needs a valid value in bongKey but it is not set your attempt to set it in on_rez is not correct, try bongKey = llList2Key(llGetObjectDetails(llGetKey(),[OBJECT__REZZER_KEY]),0); dont make bongKey a local variable by prepending it with “key “ Good luck!
×
×
  • Create New...