Difference between revisions of "Give InvItem every n hours"
Jump to navigation
Jump to search
Criz Collins (talk | contribs) |
m (language tags to <source>) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
This script will give an inventory item on touch only every n hours, even if somebody touches the object more than once. | This script will give an inventory item on touch only every n hours, even if somebody touches the object more than once. | ||
< | <source lang="lsl2"> | ||
// Idea and written by Criz Collins | // Idea and written by Criz Collins | ||
// Don't sell this FREE script!!! | // Don't sell this FREE script!!! | ||
Line 34: | Line 34: | ||
for (n=0; n<total_number; n++) | for (n=0; n<total_number; n++) | ||
{ | { | ||
integer giveallowed = | integer giveallowed = FALSE; | ||
integer index = llListFindList( visitors, [ llDetectedKey(n) ] ); | integer index = llListFindList( visitors, [ llDetectedKey(n) ] ); | ||
if (index == -1) | if (index == -1) | ||
Line 40: | Line 40: | ||
visitors = visitors + [ llDetectedKey(n) ]; | visitors = visitors + [ llDetectedKey(n) ]; | ||
lastsent = lastsent + [(integer)llGetUnixTime()]; | lastsent = lastsent + [(integer)llGetUnixTime()]; | ||
giveallowed = | giveallowed = TRUE; | ||
} | } | ||
else | else | ||
Line 50: | Line 50: | ||
lastsent = []; | lastsent = []; | ||
lastsent = newlastsent; | lastsent = newlastsent; | ||
giveallowed = | giveallowed = TRUE; | ||
} | } | ||
// else giveallowed = FALSE; | |||
} | } | ||
if (giveallowed == | if (giveallowed)// == TRUE | ||
{ | { | ||
llGiveInventory(llDetectedKey(n), giveitem); | llGiveInventory(llDetectedKey(n), giveitem); | ||
Line 64: | Line 61: | ||
} | } | ||
} | } | ||
</ | </source> | ||
[[User:Criz Collins|Criz Collins]] 11:14, 11 June 2008 (PDT) | [[User:Criz Collins|Criz Collins]] 11:14, 11 June 2008 (PDT) | ||
{{LSLC|Library|Give InvItem every n hours}} | {{LSLC|Library|Give InvItem every n hours}} |
Latest revision as of 20:02, 24 January 2015
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
This script will give an inventory item on touch only every n hours, even if somebody touches the object more than once.
// Idea and written by Criz Collins
// Don't sell this FREE script!!!
string giveitem = "name of item in objects inventory";
float giveevery = 24; // hours!
/////////////////////////////////////////////
list visitors;
list lastsent;
integer n;
default
{
on_rez( integer param )
{
llResetScript();
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
{
llResetScript();
}
}
touch_start(integer total_number)
{
for (n=0; n<total_number; n++)
{
integer giveallowed = FALSE;
integer index = llListFindList( visitors, [ llDetectedKey(n) ] );
if (index == -1)
{
visitors = visitors + [ llDetectedKey(n) ];
lastsent = lastsent + [(integer)llGetUnixTime()];
giveallowed = TRUE;
}
else
{
if (llList2Integer(lastsent, index) <= ((integer)llGetUnixTime() - (giveevery * 60 * 60)))
{
list replacer = [(integer)llGetUnixTime()];
list newlastsent = llListReplaceList(lastsent, replacer, index, index);
lastsent = [];
lastsent = newlastsent;
giveallowed = TRUE;
}
// else giveallowed = FALSE;
}
if (giveallowed)// == TRUE
{
llGiveInventory(llDetectedKey(n), giveitem);
}
}
}
}
Criz Collins 11:14, 11 June 2008 (PDT)