Days in Month

From Second Life Wiki
Revision as of 00:46, 20 October 2008 by Intlibber BnT (talk | contribs)
Jump to navigation Jump to search

The following script is adaptable for use in any calendrical system, particularly pertaining to tier collection systems that need to do actual monthly billings, not just 28 day or 30 day billing cycles.

<lsl> string date = ""; list date_info; integer month; integer day; string days; float year; list thirtydays = [4,6,9,11]; list thirtyonedays = [1,3,5,7,8,10,12]; integer index;


dayspeak()

           {
               llSay(0,days);
               index += 1;
           }

thirtytest()

           {
              do
       
                   if (month = llList2Integer(thirtydays,index))
           {
               days = "30";
               dayspeak();
           }
               while (index < 4);
           } 
           

thirtyonetest()

           {
               do
                   if (month = llList2Integer(thirtyonedays,index))
           {
               days = "31";
               dayspeak();
           }
               while (index < 9);
           }
           

leapyeartest()

           {
              if (month = 2)
              {
                if ((integer)year / 4 == TYPE_INTEGER)
               {
                   days = "29";
                   dayspeak();
               }
               else 
               {
                   days = "28";
                   dayspeak();
               }
               }
               else
               {
                   llSay(0,"I'm sorry you are on the wrong planet.");
               }
                   
       }
               

default {

   state_entry()
   {
       llSay(0, "Touch to confirm the number of days in the current month!");
   }
   touch_start(integer total_number)
   {
       date = llGetDate();
       date_info = llParseString2List(date,["-"],[" "]);
       year = llList2Float(date_info,0);
       month = llList2Integer(date_info,1);
       day = llList2Integer(date_info,2);
       integer index = 0;
       thirtytest();
       thirtyonetest();
       leapyeartest();
       
   }

} </lsl>