Jump to content

Rolig Loon

Resident
  • Posts

    46,465
  • Joined

  • Days Won

    5

Posts posted by Rolig Loon

  1. If you want to unpack a box, you will need to be in an area where you are allowed to rez objects.  Look at the center of the  very top of your screen for a tiny icon that looks like a cube.  It will be there if you are in a place where rezzing is permitted. Otherwise, the cube will have a red circle/slash attached, telling you that rezzing is forbidden. Use your Search function (upper right corner of the screen if you are using the V2 viewer) to look for a "sandbox" where rezzing is allowed.

  2.  


    Drews Aulder wrote:

    And the weird thing is... The price is set to 10 but i got nine. Where did the 1 go? Taxes? ehehe

    Seller Sales Commissions

    We charge SL Marketplace merchants a Commission for each sale that the seller makes (“Commission”). Commission rates are five (5) percent of the listed price, rounded to the nearest Linden Dollar (L$).

    That's the way Marketplace works.........  :smileyhappy:

     

  3. If there are other objects in MObject's contents, then you'll want a way to ignore them as you rez each no-copy "kelp".  One way to do that might be to write

     

    	no_sensor()	{		integer Num = llGetInventoryNumber(INVENTORY_OBJECT);		integer count = 0;		while(Num-count)		{			if (llToLower(llGetSubString(llGetInventoryName(INVENTORY_OBJECT,count),0,3)) == "kelp")			{				llRezObject(llGetInventoryName(INVENTORY_OBJECT, count), llGetPos() + <0, 0,.5>, ZERO_VECTOR, ZERO_ROTATION, 42);				return;			}			++count;		}	}

     

     

  4. I assume that you mean that you're trying to match colors.  You'll never get it perfect, because colors change with the amount and angle of ambient light in SL.  Also, despite many upgrades to SL software over the years, colors on the avatar body are never perfectly matched to colors on prim objects. Try this, though.... Use your Advanced menu (CTRL-Alt-D) and select UI >> Show Color Under Cursor.  That will create (in the lower RH corner of the screen) a dynamic display of RGB color values for whatever your cursor is sitting on.  Playing with that for even a few frustrating moments will show you why it is nearly impossible to get a perfect match, but it will get you as close as you will ever get.

    BTW, screaming won't give you a better match, but it makes you feel a lot better.  I do it a lot.

  5. The next obvious step is to change to a different skin and see what happens. It's beginning to look as if that skin has been corrupted somehow. If you have removed every single thing that shows up as WORN in inventory and the problem hasn't gone away, the skin is about all that's left. (You did try removing prim hair, right?)

  6. My guess is that the person has unchecked the box in Preferences that makes his/her name visible in Search. It's also possible , of course, that you are looking for a Display Name instead of the person's real (i.e., login) name.

    • Like 1
  7. It's all a matter of how the designer has set the flexi parameters.  I'd suggest that you do some experiments.  Make a copy of one of your skirts (assuming that you have mod/copy perms), wear it, and hop up on a pose stand.  Then select the skirt, and open the "Features" tab in Edit.  Click the "Edit Linked Parts" box and choose one prim in your skirt.  Then try changing the Drag and Tension parameters.  Making them smaller will make the prim less bouncy and more flyaway. Repeat the operation with each prim in the skirt.  Then hop off the pose stand and see what it looks like.  Play with the skirt, changing various numbers until you get a combination you like, then remember what you did so that you can do the same thing next time you buy a skirt and want to shange its bounciness.

  8. Leliel's answer is right on target.  In addition, if you are using a public WiFi connection you will be competing for bandwidth with everyone else in the vicinity.  SL demands a lot of bandwidth and tends to slow way down, freeze, or crash if it doesn't get what it needs, so WiFi is a poor choice compared to a hard-wired connection.

    • Like 1
  9. From what I can see from a quick Google search, it appears to be a bug introduced in a recent Safari upgrade.  From Apple user's forum, for example ....

    "This appears to be a bug/feature of Safari or one of the recent security updates. I am working on a web site where users download files and Safari is giving me this error. My production site also gives me this error and I would have noticed that earlier. It must be from the recent security update.

    The cause is when a web site broadcasts a "fake" link to a file. You click on the link and a script, behind the scenes, generates the appropriate HTTP headers for the file you can and sends said file back to the user. I guess technically the frame load is being interrupted."


  10. See the demo script I posted in the Scripting Library.  It builds a menu of user options and an associated list of numbered button labels from information on a notecard, but you could build the list of options (in your case, avatar names) in any other way you like.  The list of options is displayed in the dialog text and the button labels are the option numbers.

    BTW, you can get an avatar's first name from the login name by looking for the blank space between first and last names, as in ....

    integer idx = llSubStringIndex(llDetectedName(0)," ");

    string First_Name = llGetSubString(llDetectedName(0),0,idx-1);

  11. The 12-character limit on button labels in LSL dialogs can be frustrating for scripters. One way around it is to generate a numbered menu in the dialog text and then simply use the numbers as button labels. This script does just that, building on Void Singer's Multipage Dialog Pagination script, which displays 10 menu choices at a time in successive dialog pages. 

    As written, this demo script reads a list of web site names and associated URLs from a notecard and then displays them as menu choices when the script is activated by touch.  Each line on the notecard starts with a site name, followed by a "=" sign and then a URL. The script could obviously be used for any application where you want users to choose an action from a numbered list of options.

     

    //URL Chooser -- Rolig Loon -- February 2011
    
    // Reads web site information from a notecard in the format   Site name = http://www.a_great_URL.com
    // and presents result in a URL prompt.
    
    // Multipage dialog function uDlgBtnLst by Void Singer ( http://community.secondlife.com/t5/LSL-Scripting-Library/Dynamic-Multi-page-Dialog-AKA-Pagination/m-p/708119#M6
    
    list uDlgBtnLst( integer vIntPag )
    {
        integer vIdxBeg = 10 * (~-vIntPag);          //-- 10 * (vIntPag - 1), enclose "~-X" in parens to avoid LSL bug
        integer vIdxMax = -~(~([] != gLstMnu) / 10); //-- (llGetListLength( gLstMnu ) - 1) / 10 + 1
        list vLstRtn =
          llListInsertList(
            llList2List( gLstMnu, vIdxBeg, vIdxBeg + 9 ), //-- grab 10 dialog buttons
            (list)("  <<---(" + (string)(vIntPag + (-(vIntPag > 1) | vIdxMax - vIntPag)) + ")"), //-- back button
            -1 ) + //-- inserts back button at index 9, pushing the last menu item to index 10
          (list)("  (" + (string)(-~((vIntPag < vIdxMax) * vIntPag)) + ")--->>"); //-- add fwd button at index 11
       
        return //-- fix the order to L2R/T2B
          llList2List( vLstRtn, -3, -1 ) + llList2List( vLstRtn, -6, -4 ) +
          llList2List( vLstRtn, -9, -7 ) + llList2List( vLstRtn, -12, -10 );
    }
    
    //--                       Anti-License Text                         --//*/
    //     Contributed Freely to the Public Domain without limitation.     //*/
    //   2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ]   //*/
    //  Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ]  //*/
    //--
    
    list gLstMnu;
    integer gLine;
    string gCard;
    integer gDChan;
    integer gDLisn;
    key gQuery;
    integer gCount;
    list Sites;
    list URLs;
    list gDlabels;
    
    default
    {
        state_entry()
        {
            if (llGetInventoryNumber(INVENTORY_NOTECARD) > 0)
            {
                gCard = llGetInventoryName(INVENTORY_NOTECARD,0);
                gQuery =llGetNotecardLine(gCard,0);
                gCount = 1;
            }
            else
            {
                llOwnerSay("No URL notecard detected.");
            }
        }
        
        changed (integer change)
        {
            if (change & CHANGED_INVENTORY)
            {
                llResetScript();
            }
        }
        
        dataserver(key qID, string data)
        {
            if (qID == gQuery)
            {
                if (data != EOF)
                {
                    integer idx = llSubStringIndex(data,"=");
                    if (~idx)
                    {
                        Sites += [llStringTrim(llGetSubString(data,0,idx-1),STRING_TRIM)];  //Site names from NC
                        URLs += [llStringTrim(llGetSubString(data,idx+1,-1),STRING_TRIM)];  //URLs from NC
                        gDlabels += [(string)gCount + ". " +llStringTrim(llGetSubString(data,0,idx-1),STRING_TRIM) + " \n"]; //Dialog text
                        gLstMnu += [(string)gCount]; // Button labels
                        ++gCount;
                    }
                    gQuery = llGetNotecardLine(gCard,++gLine);
                }
                else
                {
                    llSay(0,"Initialized.");
                    state running;
                }
            }
        }
    }
                    
    state running
    {
        changed (integer change)
        {
            if (change & CHANGED_INVENTORY)
            {
                llResetScript();
            }
        }
        
        touch_start(integer num)
        {
            llSetTimerEvent(10.0);
            gDChan = (integer)("0xF" + llGetSubString(llDetectedKey(0),0,6));
            gDLisn = llListen(gDChan,"","","");
            string temp = "";
            integer i;
            //Display the first 10 sites in dialog
            for (i=0;i<10;++i)
            {
                temp += llList2String(gDlabels,i);
            }
            llDialog(llDetectedKey(0),"Which site do you want to visit? \n"+ temp, uDlgBtnLst(1) ,gDChan);
        }
        
        listen (integer channel, string name, key id, string msg)
        {
            llSetTimerEvent(0.0);
            llListenRemove(gDLisn);
            // Has the user clicked either the ">>" or "<<" button?
            if (!llSubStringIndex( msg, "  " ))  //-- detects 2 (hidden) leading spaces
            {
                llSetTimerEvent(10.0);
                gDLisn = llListen(gDChan,"","","");
                string temp = "";
                integer menu =  (integer)llGetSubString( msg, -~llSubStringIndex( msg, "(" ), -1 );
                integer i;
                for (i=(10*(menu-1));i<(10*menu);++i)
                {
                    temp += llList2String(gDlabels,i);
                }
                llDialog( id, "Which site do you want to visit? \n"+ temp, uDlgBtnLst(menu), gDChan );
            }
            else // If user has clicked a numbered button
            {
                integer Choice = (integer) msg -1;
                llLoadURL(id,llList2String(Sites,Choice),llList2String(URLs,Choice));
            }
        }
        
        timer()
        {
            llSetTimerEvent(0.0);
            llWhisper(0,"Timeout. Please close the dialog box on your screen.");
            llListenRemove(gDLisn);
        }      
    }

     EDIT:  Repaired indexing error in the listen event.

     

  12. Avoid making the object physical unless you really have to. It will add load on the sim's physics engine, and may be harder to manage than if you made it non-physical. If the object really has to be physical, I'd suggest not linking the parts to each other.  Then, script the rotating part with llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y,FALSE) to make it rotate only around its Z-axis.  Align its Z-axis with the hole in a torus (or anything with a hole), and be sure that your script is written to keep it aligned with that local axis if you turn the object. 

    • Like 1
  13. As a recent post to the Scripting forum pointed out, unpacker scripts scatter no-copy items all over your inventory. This can mean that you get a lot of IMs from frustrated and confused SL newbies who open one of your gift boxes and then can't find where everything went.  There's no new magic to this short script -- you still have to give no-copy items individually, after all -- but it does send the new owner a friendly message that tells where to look for each unpacked item.

     

    list gItems;
    list gNocopy;
    list gList_types = [INVENTORY_NONE,INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_LANDMARK,INVENTORY_CLOTHING, INVENTORY_OBJECT, INVENTORY_NOTECARD, INVENTORY_SCRIPT,INVENTORY_BODYPART, INVENTORY_ANIMATION, INVENTORY_GESTURE];
    list gList_names = ["None", "Texture", "Sound", "Landmark", "Clothing", "Object", "Notecard", "Script", "Body Part", "Animation", "Gesture"];
    
    default
    {
        state_entry()
        {
            integer All = llGetInventoryNumber(INVENTORY_ALL);
            while (All)
            {
                string name = llGetInventoryName(INVENTORY_ALL, All - 1);
                if (name != llGetScriptName())
                {
                    if(llGetInventoryPermMask(name, MASK_OWNER) & PERM_COPY)
                    {
                        gItems += [name]; //Copy perm items
                    }
                    else
                    {
                        gNocopy += [name];  //No-copy perm items
                    }
                }
                --All;
            }
        }
        
        changed (integer change)
        {
            if ((change & CHANGED_INVENTORY) || (change & CHANGED_OWNER))
            {
                llResetScript();
            }
        }
    
        touch_start(integer num)
        {
            llOwnerSay("Look for unpacked items in a folder named " + llGetObjectName() + " in your inventory.");
            llGiveInventoryList(llGetOwner(), llGetObjectName(), gItems);
            integer len = llGetListLength(gNocopy);
            if (len) 
            {
                llOwnerSay("Also, look for the following one-of-a-kind items:");
                while (len) 
                {
                    // Determine what kind of inventory this is, and find that type in the gList_types list
                    integer idx = llListFindList(gList_types,[llGetInventoryType(llList2String(gNocopy,len-1))]);
                    // Then use idx to find the name of that type in the gList_names list and say it
                    if (~idx)
                    {
                        llOwnerSay(llList2String(gNocopy,len-1) + " will be in your " + llList2String(gList_names,idx) + " folder.");
                        llGiveInventory(llDetectedKey(0),llList2String(gNocopy,len-1));
                    }
                    --len;
                }
            }
        }
    }

     

     

    • Like 1
  14. PosJump is working fine for me this morning and I haven't had any trouble recently.  What does "not working properly" mean?  It lands you at a strange destination? It doesn't TP you at all?   PosJump will give you trouble if you have to pass through a No Entry parcel on the way to your destination, so you should use the safe version to at least prevent you from being thrown off world.

  15. The Scripting forum is meant as a place for scripters to learn from each other. It's not really a place to look for scripts. If you are looking for someone to write a script for you, the best place to ask is in the Inworld Employment section of the Commerce Forums (http://community.secondlife.com/t5/Inworld-Employment/bd-p/InworldEmployment). If you are looking for a script that already exists, try Marketplace or the LSL Scripting Library (http://community.secondlife.com/t5/LSL-Scripting-Library/bd-p/LSLScriptingLibrary) or the Wanted section of the Commerce forums (http://community.secondlife.com/t5/Wanted/bd-p/Wanted). You will have much better luck.

×
×
  • Create New...