sensor(integer n) {
integer f =0; key id = NULL_KEY; // go through all detected avs do{
id = llDetectedKey(f); // if actually over owner's land and not on exclude list... if(llOverMyLand(id)&& llListFindList(gExcludeKeys,[id])==-1){ // add them to the list of keys to check
gCheckList += id; } }while(++f < n); list parsedDate = llParseString2List(llGetDate(),["-"],[]);
gThisYear =(integer)llList2String(parsedDate,0);
gThisMonth =(integer)llList2String(parsedDate,1);
gThisDay =(integer)llList2String(parsedDate,2);
check_name(); }
dataserver(key queryid, string data) { // Check age based on month, for simplicity list parsedDate = llParseString2List(data,["-"],[]);
integer year =(integer)llList2String(parsedDate,0);
integer month =(integer)llList2String(parsedDate,1);
integer day =(integer)llList2String(parsedDate,2);
integer ageInMonths =(gThisMonth - month)+(gThisYear - year)*12; if(day > gThisDay) ageInMonths--; if(ageInMonths < gAgeLimit){ key id = llList2Key(gCheckList,0); // inform owner
llOwnerSay("Banning and ejecting "+ llKey2Name(id));
llAddToLandBanList(id,24);// don't permanently ban them // boot them
llEjectFromLand(id); // tell them why they have been booted
llInstantMessage(id,"You are under the age limit of "+(string)gAgeLimit +" months and have been ejected from this parcel."); }
gCheckList = llDeleteSubList(gCheckList,0,0);
check_name(); } }