Change font size
It is currently Sat Feb 16, 2019 9:12 am

Forum rules


{L_IMAGE}



Post a new topicPost a reply Page 1 of 1   [ 4 posts ]
Author Message
 Post subject: linked prim dropbox
PostPosted: Wed Feb 06, 2013 5:54 am 

Joined: Tue Dec 18, 2012 12:02 pm
Posts: 8
Hello i try to make a mailbox for my sim with 5 linked prim in one of them that is not the root i put the script for drop a notecard but seems dont works with the drag&drop from invetory can someone tell me why?


Top
 Profile  
 
 Post subject: Re: linked prim dropbox
PostPosted: Wed Feb 06, 2013 6:57 am 
OSG Elite
User avatar

Joined: Thu Dec 11, 2008 7:51 am
Posts: 392
Location: England UK
As far as I know you need to hold CTRL key down when you drag and drop inventory to a prim. Try that, if it doesn't work can you please post the script here.

_________________
"Nothing lasts forever; It's scientific"
~David Byrne (Talking Heads)


Top
 Profile  
 
 Post subject: Re: linked prim dropbox
PostPosted: Fri Feb 08, 2013 11:33 am 

Joined: Tue Dec 18, 2012 12:02 pm
Posts: 8
here is:

{L_CODE}:
// --------------------------------------//
// This script transform a prim to a Mail Box.
// Folks can drop notecard to the box.
// Read/unread information is displayed as hovering text.
// You can copy/modify this script, it's totally free.
// --------------------------------------//
// Modified by dakar Muliaina, converted to The king's English
// and a few other enhancements.
//-------------------------------------------//

list lMail = [];
// column 1 = notecard name, column 2 = read by user
integer     MAIL_UNREADED = 0;
integer     MAIL_READED = 1;
integer     DIALOG_CHANNEL = 49383;
list        DIALOG_CHOICE =
                ["Unread",
                 "Read",
                 "Delete"];
integer nLastCardCount = 0;
integer nLastItemCount = 0;

TxtRefresh()
{
    // show the unreadable notecard
    integer nTotalCard = 0;
    integer nNotReaded = 0;
    integer nCount = 0;
    for (nCount = 0; nCount < llGetListLength(lMail); nCount += 2)
    {
        if (llList2Integer(lMail, nCount + 1) == MAIL_UNREADED)
            nNotReaded += 1;
        nTotalCard += 1;
    }

    // total string
    string cPost = (string)nTotalCard + " card";
    if (nTotalCard > 1) cPost += "s";
    cPost += " posted";

       // unreaded string
    string cUnreaded = (string)nNotReaded + " unread";
    llSetText("Suggestion Box!\n" + cPost + "\n" + cUnreaded, <.95, .75, 0>, 1);
}

default
{
    state_entry()
    {
       // Allowing dropping of object
       llAllowInventoryDrop(TRUE);
       llListen(DIALOG_CHANNEL, "", NULL_KEY, "");
       nLastCardCount = llGetInventoryNumber(INVENTORY_ALL);
       nLastItemCount = llGetInventoryNumber(INVENTORY_NOTECARD);

       // Auto complete list
       integer nCardCount = llGetInventoryNumber(INVENTORY_NOTECARD);
       integer n_CurObj = 0;
       string c_Name = "NotEmpty";
       while (c_Name != "")
       {
            c_Name = llGetInventoryName(INVENTORY_NOTECARD, n_CurObj);
            n_CurObj += 1;
            if (c_Name != "")
            {
                lMail += [c_Name];
                lMail += MAIL_UNREADED;
            }
        }
        TxtRefresh();
    }

    touch_start(integer total_number)
    {
        llSay(0, "Drop a notecard to be sent to MY OWNER.");
//---- Change MY OWNER above to suit your likes and needs.   //
        // if owner
        key id = llDetectedKey(0);
        if (id == llGetOwner())
        {
            // Show a dialog
            llDialog(id, "What do you want to do ?", DIALOG_CHOICE,
              DIALOG_CHANNEL);
        }
    }

    listen(integer channel, string name, key id, string message)
    {
        if (llGetOwner() == id && llListFindList(DIALOG_CHOICE,
           [message]) != -1)
        {
            integer i;
            string cName;
            list lRemove;
            integer nStatus;
            for (i = 0; i < llGetListLength(lMail); i += 2)
            {
                cName = llList2String(lMail, i);
                nStatus = llList2Integer(lMail, i + 1);
                if (message == llList2String(DIALOG_CHOICE, 0)
                   && nStatus == MAIL_UNREADED)
                {
                    // open un-readed
                    llGiveInventory(id, cName);
                    // mark for readed
                    lMail = llListReplaceList(lMail, [MAIL_READED],
                        i + 1, i + 1);
                }
                if (message == llList2String(DIALOG_CHOICE, 1)
                   && nStatus == MAIL_READED)
                {
                    // open readed
                    llGiveInventory(id, cName);
                }
                if (message == llList2String(DIALOG_CHOICE, 2)
                   && nStatus == MAIL_READED)
                {
                    // delete readed
                    llSay(0, cName);
                    llRemoveInventory(cName);
                    lRemove += i;
                }
            }
            // remove from the list
            if (llGetListLength(lRemove) > 0)
            {
                integer k;
                for (k = 0; k < llGetListLength(lRemove); k++)
                {
                    i = llList2Integer(lRemove, k);
                    lMail = llDeleteSubList(lMail, i, i+1);
                }
            }
            TxtRefresh();
        }
    }

    changed(integer change)
    {
        // dont accept other than a notecard
        integer nItemCount = llGetInventoryNumber(INVENTORY_ALL);
        if (nItemCount < 2)
        {
            // clear the list
            lMail = [];
        }

        if (nItemCount != nLastItemCount)
        {
            // delete other item type than notecard
            string cName = "NotEmpty";
            integer nCurObj = 0;
            integer nObjType = INVENTORY_NONE;
            list lRemove = [];
            while (cName != "")
            {
                cName = llGetInventoryName(INVENTORY_ALL, nCurObj);
                nCurObj += 1;
                nObjType = llGetInventoryType(cName);
                if (nObjType != INVENTORY_NOTECARD)
                {
                    // add for deletion, its not a notecard
                    lRemove += cName;
                }
            }

            // delete other object than notecard
            integer nD = 0;
            for (nD = 0; nD < llGetListLength(lRemove); nD += 1)
            {
                // dont remove this script !
                cName = llList2String(lRemove, nD);
                if (cName != llGetScriptName() && cName != "")
                {
                    llSay(0, "Sorry but " + cName + " is not a notecard.");
                    llRemoveInventory(cName);
                }
            }

            // search for a new notecard
            integer n_CurObj = 0;
            string c_Name = "NotEmpty";
            while (c_Name != "")
            {
                c_Name = llGetInventoryName(INVENTORY_NOTECARD, n_CurObj);
                llSay(0, c_Name);
                n_CurObj += 1;
                // search for this card
                if (llListFindList(lMail, [c_Name]) == -1 && c_Name != "")
                {
                    // ok its a new card
                    lMail += [c_Name];
                    lMail += MAIL_UNREADED;
                    llSay(0, c_Name + " added to the mailbox.");
                }
            }
        }
        nLastItemCount = llGetInventoryNumber(INVENTORY_ALL);
        nLastCardCount = llGetInventoryNumber(INVENTORY_NOTECARD);
        // refresh the text
        TxtRefresh();
    }
}


Top
 Profile  
 
 Post subject: Re: linked prim dropbox
PostPosted: Sat Feb 09, 2013 6:06 am 
OSG Elite
User avatar

Joined: Sat Jun 14, 2008 12:28 am
Posts: 384
Location: Australia
The script needs to go into the root prim, I tested it and it works ok, just select the linked object and put the script in the object and it will go to the root prim.

This script works without needing to hold the ctrl key, should work as simple drag and drop, you'll know when it works.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post a new topicPost a reply Page 1 of 1   [ 4 posts ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
610nm Style by Daniel St. Jules of Gamexe.net