User:Dr Cory Bjornson/Sandbox/0

From The Urban Dead Wiki
< User:Dr Cory Bjornson‎ | Sandbox
Revision as of 00:58, 19 August 2008 by Dr Cory Bjornson (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

integer gCurrentEmailer = 1; integer gTotalEmailers = 0; integer EMAILER_LINK_BASE = 200; float TIMER_FREQUENCY = 1;

Email(string address, string subject, string message) {

   llMessageLinked(LINK_THIS,EMAILER_LINK_BASE + gCurrentEmailer++,message,"llEmail "+address+" "+subject);
   if(gCurrentEmailer > gTotalEmailers)
   {
       gCurrentEmailer = 1;
   }

}

DEBUG(string message) {

   //llOwnerSay("DEBUG>>"+message);

}

CountEmailers() {

   gTotalEmailers = 0;
   integer count;
   integer i;
   for(i = 0, count = llGetInventoryNumber(INVENTORY_SCRIPT);i<count;++i)
   {
       list data = llParseString2List(llGetInventoryName(INVENTORY_SCRIPT,i),["#"],[]);
       if(llToLower(llList2String(data,0)) == "emailer")
       {
           ++gTotalEmailers;
       }
   }
   llSay(0,(string)gTotalEmailers+" emailers found.");

}

list top;

string sep = "ß";

// Strided?

list names=["Cory Bjornson"]; list keys=["900"]; list TBSince=["0"]; list scores=["9000"]; list bounty=["900"]; // 's'+? list credits=["900"];

// if different rank?? change time? // Bother with hist?

// Posters display 'most wanted'

// TB - Top Bounty

string big = "!`~`!"; string lsinls = "!~@Q!"; //listsinlists

save(list new) {

   //sep
   //llSetObjectDesc(llDumpList2String(new,big));
   llMessageLinked(LINK_SET,-10,llDumpList2String(new,big),(string)"set");

}

read() {

   llMessageLinked(LINK_SET,-10,"","fetch");
   //string puff = llDumpList2String(llParseString2List(llGetObjectDesc(),[big],[]),", ");
   //return puff;

}

default {

   state_entry()
   {
       llSay(0,"Loading...");
       llSetRemoteScriptAccessPin(-261291);
       CountEmailers();
       llOwnerSay(llGetKey());
       llListen(0,"",llGetOwner(),"");
       llSetTimerEvent(TIMER_FREQUENCY);
       llSay(0,"Done.");
       save(["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]);
       //llSay(0,llDumpList2String([1,2,3,4,5,6,7,8,9,10],"\", \""));
   }
   listen(integer channel, string name, key id, string message)
   {
       if(message == "Recount Emailers.")
       {
           CountEmailers();
       }
   }
   timer()
   {
       llGetNextEmail("","");
   }
   email(string time, string address, string subj, string message, integer num)
   {
       string object_name;
       string region_name;
       float region_corner_x;
       float region_corner_y;
       vector local_position;
       string message_body;
       // Parse email to list
       list email_parts = llParseString2List(message,[],["\n"," (",")",", ","Object-Name: ","Region: "]);
       list format_parts = ["Object-Name: ","x","\n","Region: ","x"," (","X",", ","X",")","\n","Local-Position:"," (","X",", ","X",", ","X",")","\n","\n"];
       // Determine if email is properly formatted.
       integer error = FALSE;
       if (llGetListLength(email_parts)>20) {
           integer n;
           for (n=0;n<21;n++) {
               string f = llList2String(format_parts,n);
               string e = llList2String(email_parts,n);
               if ((f!="x")&&(f!="X")) {
                   if (f!=e) error = TRUE;
               }
           }
       }
       else {
           error = TRUE;
       }
       if (error) {
           object_name = "unknown";
           region_name = "unknown";
           region_corner_x = -1.0;
           region_corner_y = -1.0;
           local_position = ZERO_VECTOR;
           message_body = message;
       }
       else {
           object_name = llList2String(email_parts,1);
           region_name = llList2String(email_parts,4);
           region_corner_x = (float)llList2String(email_parts,6);
           region_corner_y = (float)llList2String(email_parts,8);
           local_position = <(float)llList2String(email_parts,13),
               (float)llList2String(email_parts,15),
               (float)llList2String(email_parts,17)>;
           message_body = llDumpList2String(llDeleteSubList(email_parts, 0, 20),"");
       }
       //llSay(0, "Unix Time: " + (string)time);
       //llSay(0, "Address: " + (string)address);
       //llSay(0, "Subject: " + (string)subj);
       //llSay(0, "Object_Name: "+(string)object_name);
       // Check? ^
       //llSay(0, "Region_Name: "+(string)region_name);
       //Email(address,"RE:Wastelads"+sep+"TB~!","LOLFAILSRRY");
       if(subj == "ping")
       {
           //Email();
       }
       else if(subj == "Wastelands"+sep+"TOPBOUNTY"+sep+"submit")
       {
           list parsed = llParseString2List(message_body,[sep],[]);
           integer cbounty = llList2Integer(parsed,4);
           if(cbounty > llList2Integer(bounty,llGetListLength(bounty)))
           {
               integer x;
               integer length = llGetListLength(names);
               for (x = 0; x < length; x++)
               {
                   if(cbounty > llList2Integer(bounty,x))
                   {
                       
                   }
               }
               if(llGetListLength(names) > 10) // 9?
               {
                   names = llDeleteSubList(names,llGetListLength(names),-1);
               }
               
               // Add in clean?
               
               names;
               keys;
               TBSince;
               scores;
               bounty;
               credits;
           }
           else
           {
               // Ignore
           }
       }
       else if(subj == "Wastelands"+sep+"TOPBOUNTY"+sep+"query"+sep+"rand")
       { // ^ ? // X <_< Subj!
           //list l = llParseString2List(message_body,[sep],[]);
           // Reward?
           integer pick = (integer)llFrand(llGetListLength(names));
           list l = [llList2String(names,pick),
                     llList2String(TBSince,pick),
                     llList2String(bounty,pick)];
           string str = llDumpList2String(l,sep);
           Email(address,"Wastelands"+sep+"TOPBOUNTY"+sep+"return"+sep+"query",str);
       }
       else if(subj == "Wastelands"+sep+"TOPBOUNTY"+sep+"query")
       {
           //list l1 = llParseString2List(message_body,[sep],[]);
           string ret1 = llList2String(names,0);
           Email(address,"Wastelands"+sep+"TOPBOUNTY"+sep+"return|query",ret1);
       }
       ////DEBUG(llList2CSV(gClients));
       if(num > 0)
       {
           llGetNextEmail("","");
       }
       else
       {
           llSetTimerEvent(TIMER_FREQUENCY);
       }
   }
   link_message(integer sender_number, integer num, string str, key id)
   {
       if(num == -10)
       {
           if(id == "return")
           {
               //store=str;
               // Parse, Load.
           }
       }
   }

}