User:Auryn Beorn/GiveScriptForMLPv2
< User:Auryn Beorn
Jump to navigation
Jump to search
Revision as of 05:15, 31 May 2012 by Auryn Beorn (talk | contribs) (Created page with "My very own modification to the ~give script that we may use in MLPv2. <br />Starting point: The script from Chaz Longstff. <lsl> // Add-on by Chaz Longstff for MLPV2 by Lear Cal…")
My very own modification to the ~give script that we may use in MLPv2.
Starting point: The script from Chaz Longstff.
<lsl>
// Add-on by Chaz Longstff for MLPV2 by Lear Cale. June 2008.
// Function: gives object to someone on an MLPV2 ball
// MLP button: LINKMSG MyButtonName | 1,-4,987789,NamesOfObjectToOffer##MsgToPerson##FolderName
/*
- Few memory optimizations - Sending item or folder depending upon the total of items to send - Checks if the item is copy AND transfer for next owner, not raising a runtime error in the rare event of a server hiccups not acknowledging the item in inventory
Auryn Beorn, 2012-03-27
- /
/*
In a menu card, format a menu button like this, for example:
LINKMSG TieMeUp | 1,-4,987789,Cuff1#Cuff2#Cuff3#Cuff4##Wear these four cuffs##Cuffs
In this example, TieMeUp is the button name 1 means whether to make the MLPV2 menu go away or not. Generally set it to 1 as per the example, as otherwise the user might not see the accept prompt for the inventory being given. -4 is the value of LINK_THIS, meaning, send this message to this prim only. (Use -1 if the ~give script is in a different prim.) 987789 -- don't change this, this is the link message number
Cuff1#Cuff2#Cuff3#Cuff4##Wear these four cuffs##Cuffs
The items separated by # are the items to give, Cuff1, Cuff2, Cuff3, Cuff4 followed by a message to be instant messaged to the recipient of the object. Wear these four cuffs
It's good to include a msg, so that they don't think it's a griefer trying to hand them something. Notice that the list of objects to give and the accompanying msg are separated by ##
Then finally, the name of a folder to create in inventory, Cuffs in case we're sending more than one item
- /
default {
state_entry() { llSetMemoryLimit(8192); }
link_message(integer from, integer num, string str, key id) { if(num == 987789) { list TempList = llParseStringKeepNulls(str, ["##"], []); string FolderName = llStringTrim(llList2String(TempList, 2), STRING_TRIM); string message = llStringTrim(llList2String(TempList, 1), STRING_TRIM); string Objects = llStringTrim(llList2String(TempList, 0), STRING_TRIM); list ObjectsToGive = llParseStringKeepNulls(Objects, ["#"], []); integer GiveLength = (ObjectsToGive != []);
if(GiveLength) // If there are objects to give { if(message != "") { llInstantMessage(id, message + " - " + FolderName); }
if(GiveLength > 1) { integer x; list ItemsToGive = [];
for(x = 0; x < GiveLength; ++x) { string ObjectToGive = llStringTrim(llList2String(ObjectsToGive, x), STRING_TRIM); if(~llGetInventoryType(ObjectToGive)) // Same as asking if != INVENTORY_NONE { if ( (llGetInventoryPermMask(ObjectToGive, MASK_NEXT) & PERM_COPY) && (llGetInventoryPermMask(ObjectToGive, MASK_NEXT) & PERM_TRANSFER) ) { ItemsToGive += [ObjectToGive]; } } }
if(ItemsToGive != []) { llGiveInventoryList(id, FolderName, ItemsToGive); } } else { string ObjectToGive = llStringTrim(llList2String(ObjectsToGive, 0), STRING_TRIM); if(~llGetInventoryType(ObjectToGive)) // Same as asking if != INVENTORY_NONE { if ( (llGetInventoryPermMask(ObjectToGive, MASK_NEXT) & PERM_COPY) && (llGetInventoryPermMask(ObjectToGive, MASK_NEXT) & PERM_TRANSFER) ) { llGiveInventory(id, ObjectToGive); } } } // if(GiveLength > 1) } // if(GiveLength) } // if(num == 987789) } // link_message
} </lsl>