02-18-2013, 02:42 AM
PHP Code:
// Items that can be updated/changed for each vendor
//-----------------------------------------------------
string StartTime = "2012-7-14 12:58:00";
string EndTime = "2012-7-14 12:59:00";
integer Price = 50;
string Prefix = "Limited Time Sale Item!";
string Starting = "This Sale Starts In";
string Ending = "This Sale Expires In";
string Expired = "This Sale Has Expired";
//-----------------------------------------------------
integer start;
integer expires;
integer MakeUNIXTime( integer year, integer month, integer day, integer hour, integer minute, integer second, integer GMToffset, integer DST )
{
list month_days = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];
integer time = ( year - 1970 ) * 31536000;
time += ( day + llList2Integer( month_days, month - 1 ) - 1 ) * 86400;
time += ( hour - GMToffset ) * 3600 + minute * 60 + second;
if ( DST == TRUE )
{
time += -3600;
}
if ( year > 1972 )
{
integer past_leap_years = (integer)( ( year - 1969 ) / 4 );
time += past_leap_years * 86400;
}
if ( year % 4 == 0 && month > 2 )
{
time += 86400;
}
return time;
}
default
{
state_entry()
{
llSetText("Initilizing..\nWaiting for Debit Permissions from owner",<1.0,1.0,1.0>,1.0);
llSetPayPrice(PAY_HIDE, [PAY_HIDE ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);
llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
}
run_time_permissions(integer perm)
{
if(perm & PERMISSION_DEBIT)
state init;
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
llResetScript();
}
on_rez(integer startup_param)
{
llResetScript();
}
}
state init
{
state_entry()
{
if (llGetInventoryName(INVENTORY_TEXTURE,0) != "")
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE,0),ALL_SIDES);
llSetText("Initilized...",<1.0,1.0,1.0>,1.0);
list templist = llParseString2List(StartTime,["-"," ",":"],[]);
start = MakeUNIXTime(llList2Integer(templist,0), llList2Integer(templist,1), llList2Integer(templist,2), llList2Integer(templist,3), llList2Integer(templist,4),llList2Integer(templist,5), -8, TRUE );
templist = llParseString2List(EndTime,["-"," ",":"],[]);
expires = MakeUNIXTime(llList2Integer(templist,0), llList2Integer(templist,1), llList2Integer(templist,2), llList2Integer(templist,3), llList2Integer(templist,4),llList2Integer(templist,5), -8, TRUE );
llSetTimerEvent( 1.0 );
}
timer()
{
if (llGetUnixTime() >= start)
{
state started;
}
else
{
integer seconds = start - llGetUnixTime();
if( seconds > 0 )
{
integer days = seconds / 86400;
integer hours = ( seconds - ( days * 86400 ) ) / 3600;
integer minutes = ( seconds - ( days * 86400 ) - ( hours * 3600 ) ) / 60;
seconds = ( seconds - ( days * 86400 ) - ( hours * 3600 ) - ( minutes * 60 ) );
string s1 = " days, ";
if( days == 1 )
{
s1 = " day, ";
}
string s2 = " hours, ";
if ( hours == 1 )
{
s2 = " hour, ";
}
string s3 = " minutes, and ";
if ( minutes == 1 )
{
s3 = " minute, and ";
}
string s4 = " seconds left";
if ( seconds == 1 )
{
s4 = " second left";
}
llSetText(Prefix + "\n" + llGetInventoryName(INVENTORY_OBJECT,0) + " - $" + (string)Price + "L\n" + Starting + "\n" + (string)days + s1 + (string)hours + s2 + (string)minutes + s3 + (string)seconds + s4, <1.0,1.0,1.0>, 1.0 );
}
}
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
llResetScript();
}
on_rez(integer startup_param)
{
llResetScript();
}
}
state started
{
state_entry()
{
llSetPayPrice(PAY_HIDE, [Price ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);
llSetTimerEvent( 1.0 );
}
timer()
{
integer seconds = expires - llGetUnixTime();
if( seconds > 0 )
{
integer days = seconds / 86400;
integer hours = ( seconds - ( days * 86400 ) ) / 3600;
integer minutes = ( seconds - ( days * 86400 ) - ( hours * 3600 ) ) / 60;
seconds = ( seconds - ( days * 86400 ) - ( hours * 3600 ) - ( minutes * 60 ) );
string s1 = " days, ";
if( days == 1 )
{
s1 = " day, ";
}
string s2 = " hours, ";
if ( hours == 1 )
{
s2 = " hour, ";
}
string s3 = " minutes, and ";
if ( minutes == 1 )
{
s3 = " minute, and ";
}
string s4 = " seconds left";
if ( seconds == 1 )
{
s4 = " second left";
}
llSetText(Prefix + "\n" + llGetInventoryName(INVENTORY_OBJECT,0) + " - $" + (string)Price + "L\n" + Ending + "\n" + (string)days + s1 + (string)hours + s2 + (string)minutes + s3 + (string)seconds + s4, <1.0,1.0,1.0>, 1.0 );
}
else
{
state expired;
}
}
money(key id, integer amount)
{
if(amount != Price)
{
llGiveMoney(id, amount);
llInstantMessage(id, "The amount you paid: " + (string) amount + "L$ , The correct price: " + (string)Price);
}
else
{
llGiveInventory(id, llGetInventoryName(INVENTORY_OBJECT,0));
}
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
llResetScript();
}
on_rez(integer startup_param)
{
llResetScript();
}
}
state expired
{
state_entry()
{
llSetPayPrice(PAY_HIDE, [PAY_HIDE ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);
llSetText(Prefix + "\n" + llGetInventoryName(INVENTORY_OBJECT,0) + " - $" + (string)Price + "L\n" + Expired, <1.0,1.0,1.0>, 1.0 );
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
llResetScript();
}
on_rez(integer startup_param)
{
llResetScript();
}
}