De DigiWiki.
// One Vote by Day v0.2 by dj phil (Fixed for OpenSim) (BY-NC-SA)
// One Vote by Day v0.1 by Cardinia & Senior Helper
string g_THANKS_MSG = "Merci pour ton vote";
string g_ALERT_MSG = "Un vote par jour";
string g_HOVER_TEXT = "[Cliquez pour Voter]";
string g_VOTES_TEXT = "votes";
integer g_VOTES = 0;
list g_VOTERS;
list gTimes;
update()
{
integer too_old = llGetUnixTime() - 86400;
integer i;
for(i = llGetListLength(gTimes); i >= 0; --i)
{
if (llList2Integer(gTimes,i) < too_old)
{
g_VOTERS = llDeleteSubList(g_VOTERS,i,i);
gTimes = llDeleteSubList(gTimes,i,i);
}
else llSay(PUBLIC_CHANNEL, g_ALERT_MSG);
}
}
integer addVote(key id)
{
if (llGetFreeMemory() < 1000)
{
g_VOTERS = [];
}
update();
if (llListFindList(g_VOTERS, [id]) == -1)
{
g_VOTES++;
g_VOTERS = [];
g_VOTERS += [id];
gTimes += [llGetUnixTime()];
llSetText(g_HOVER_TEXT + "\n(" + g_ALERT_MSG + ")\n" + (string)g_VOTES + " " + g_VOTES_TEXT, <1.0, 1.0, 1.0>, 1.0);
return TRUE;
}
return FALSE;
}
default
{
state_entry()
{
llSetText(g_HOVER_TEXT, <1.0, 1.0, 1.0>, 1.0);
update();
}
touch_start(integer total_number)
{
integer i;
for( i = 0; i < total_number; i++ ) {
if( addVote( llDetectedKey(i))) {
if( g_THANKS_MSG != "" ) {
// llInstantMessage(llDetectedKey(i), g_THANKS_MSG);
llSay(PUBLIC_CHANNEL, g_THANKS_MSG);
}
}
}
}
}