integer gIntOriginalPrimCount; integer gIntPrimCount; string strPrimInfo; string strMemInfo; list gLstPrimOwners; key gKyPersonWithMostPrims; fnWhoWearsTheScripts() { } fnWhoOwnsTheObjects() { gLstPrimOwners = llGetParcelPrimOwners(<128,128,25>); gLstPrimOwners = llListSort(gLstPrimOwners,2,FALSE); gKyPersonWithMostPrims = llList2Key(gLstPrimOwners,0); if (gKyPersonWithMostPrims == llGetOwner()) { if (osIsUUID(llList2String(gLstPrimOwners,1)) == 1) { gKyPersonWithMostPrims = llList2Key(gLstPrimOwners,1); } } fnBanTheGreifer(gKyPersonWithMostPrims); } fnBanTheGreifer(key gKyPersonWithMostPrims) { llInstantMessage(gKyPersonWithMostPrims, "You have been banned for too many prims!"); if (llGetOwner() == gKyPersonWithMostPrims) { return; } osKickAvatar(gKyPersonWithMostPrims,"Goodbye Turkey!"); llAddToLandBanList(gKyPersonWithMostPrims,0); string strCommand = "change region SandBox"; integer intResult = osConsoleCommand(strCommand); if (intResult == TRUE) { integer intResult2 = osConsoleCommand("stop scripts"); if (intResult2 == TRUE) { llInstantMessage(llGetOwner(),"**EMERGENCY** \n Scripts stopped in sandbox!"); } } fnDeleteTheObjects(gKyPersonWithMostPrims); } fnDeleteTheObjects(key gKyPersonWithMostPrims) { string strCommand = "change region SandBox"; integer intResult = osConsoleCommand(strCommand); if (intResult == TRUE) { string strCommand = "change region SandBox"; integer intResult = osConsoleCommand(strCommand); if (intResult == TRUE) { strCommand = "delete object creator " + gKyPersonWithMostPrims; integer intResult2 = osConsoleCommand(strCommand); llOwnerSay("Deleted all objects owned by jerk."); } } } default { state_entry() { llSetTimerEvent(1); gIntOriginalPrimCount = llGetParcelPrimCount(llGetPos(),PARCEL_COUNT_TOTAL,TRUE); } timer() { string strInfo = ""; gIntPrimCount = llGetParcelPrimCount(llGetPos(),PARCEL_COUNT_TOTAL,TRUE); if (gIntPrimCount != gIntOriginalPrimCount) { llInstantMessage(llGetOwner(),"Original Prim Count of: " + (string)gIntOriginalPrimCount+ " has changed to: " + (string)gIntPrimCount); strPrimInfo = "Original Prim Count: " + (string) gIntOriginalPrimCount + "\nPrim Count Now: " + (string) gIntPrimCount; if ((gIntOriginalPrimCount-gIntPrimCount) > 100) { fnWhoOwnsTheObjects(); // fnDeleteTheObjects(); } gIntOriginalPrimCount = gIntPrimCount; } float TotMemUsed = osGetSimulatorMemoryKB(); if (TotMemUsed > (1024*1024)) { TotMemUsed = TotMemUsed / (1024 * 1024); strInfo = strPrimInfo +"\n~" + (string)TotMemUsed + " GB"; llSetText(strInfo,<1,1,1>,1.0); } else if (TotMemUsed > 500000) { TotMemUsed = TotMemUsed / 1024; strInfo = strPrimInfo + "\n~" + (string)TotMemUsed + " MB"; llSetText(strInfo,<1,1,1>,1.0); llSay(0,"Too much memory used! " + TotMemUsed * 1024); fnWhoOwnsTheObjects(); } else if (TotMemUsed < 1024) { strInfo = strPrimInfo + "\n~" + (string)TotMemUsed + " KB"; llSetText(strInfo,<1,1,1>,1.0); } float fltRegionFPS = llGetRegionFPS(); float fltRegionTimeDilation = llGetRegionTimeDilation(); if ((fltRegionFPS < 50) || (fltRegionTimeDilation < .95)) { list Avatars = osGetAvatarList(); integer lstAvatarLen = llGetListLength(Avatars); for (integer q=0;q< lstAvatarLen-2;q=q+2) { key kyThisAgent = llList2Key(Avatars,q); list lstAgentData = llGetObjectDetails(kyThisAgent,[OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_TOTAL_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY,OBJECT_SCRIPT_TIME,OBJECT_PRIM_EQUIVALENCE]); if ((llList2Float(lstAgentData,0)) > 50) { fnBanTheGreifer(kyThisAgent); } if ((llList2Float(lstAgentData,1)) > 150){ fnBanTheGreifer(kyThisAgent); } if ((llList2Float(lstAgentData,2)) > 500000) { fnBanTheGreifer(kyThisAgent); } if ((llList2Float(lstAgentData,3)) > 5) { fnBanTheGreifer(kyThisAgent); } if ((llList2Float(lstAgentData,4)) > 50) { fnBanTheGreifer(kyThisAgent);} } } } }