Difference between revisions of "Random Object Vendor"
Jump to navigation
Jump to search
Kireji Haiku (talk | contribs) m (improved readability) |
(Fixed syntax error in the script... how was this ever published like that...) |
||
Line 68: | Line 68: | ||
if (numberOfItems) | if (numberOfItems) | ||
{ | { | ||
string nameOfThisPrim = llGetObjectName(); | |||
llGiveInventoryList(id, nameOfThisPrim, [llList2String(listOfItems, randomIndex)]); | llGiveInventoryList(id, nameOfThisPrim, [llList2String(listOfItems, randomIndex)]); | ||
llInstantMessage(id, "Your item is in a folder named '" + nameOfThisPrim + "'. Thank you!"); | llInstantMessage(id, "Your item is in a folder named '" + nameOfThisPrim + "'. Thank you!"); |
Revision as of 07:03, 23 August 2013
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
This script is a simple object vendor that gives out random items when you pay the fixed price. Just drop it in a prim, add items, and change the prices list variable to whatever price you want to sell the items. It will give out the item in a folder named like the container prim.
<lsl> // Random object vendor by CodeBastard Redgrave // Drop items in the prim containing this script // Pay the set price amount and it will give you a random object
// Pieces stolen from: // Give inventory to whoever touches the prim, written by Sasun Steinbeck
integer price = 10;
list inventory_list()
{
string thisScript = llGetScriptName(); integer numberOfItems = llGetInventoryNumber(INVENTORY_ALL);
list listToBeReturned; string itemName;
integer index; do { itemName = llGetInventoryName(INVENTORY_ALL, index); if (itemName != thisScript) listToBeReturned += [itemName]; } while (++index < numberOfItems);
return listToBeReturned;
}
default {
on_rez(integer start_param) { llResetScript(); }
changed(integer change) { if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) llResetScript(); }
state_entry() { key owner = llGetOwner();
llRequestPermissions(owner, PERMISSION_DEBIT); llSetPayPrice(PAY_HIDE, [price, PAY_HIDE, PAY_HIDE, PAY_HIDE]); }
money(key id, integer amount) { if (amount == price) { list listOfItems = inventory_list();
integer numberOfItems = llGetListLength(listOfItems); integer randomIndex = (integer)llFrand(numberOfItems);
if (numberOfItems) { string nameOfThisPrim = llGetObjectName(); llGiveInventoryList(id, nameOfThisPrim, [llList2String(listOfItems, randomIndex)]); llInstantMessage(id, "Your item is in a folder named '" + nameOfThisPrim + "'. Thank you!"); } else { llInstantMessage(id, "No items to offer."); llGiveMoney(id, amount); } } else { llInstantMessage(id, "Sorry that is the wrong amount for this item."); llGiveMoney(id, amount); } }
} </lsl>