Jump to content

Marvin Benelli

Resident
  • Posts

    132
  • Joined

  • Last visited

Reputation

77 Excellent

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  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.
×
×
  • Create New...