rendered paste bodyinteger searchphase = 0;
list panels = [];
default
{
state_entry()
{
panels = [];
key MyGroup = llList2Key(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0);
if (llGetOwner() != MyGroup)
{
state UnDeeded;
}
else
{
state Deeded;
}
}
}
state UnDeeded
{
touch_start(integer total_number)
{
if ( llDetectedKey(0) == llGetOwner() )
{
state Scanning;
}
else
{
llSay(0, "Permission Denied.");
}
}
changed(integer change)
{
if (change & CHANGED_OWNER)
{
state default;
}
}
}
state Deeded
{
state_entry()
{
llSay(0, "Deeded Mode");
}
touch_start(integer total_number)
{
if ( llSameGroup(llDetectedKey(0)) )
{
state Scanning;
}
else
{
llSay(0, "Permission Denied.");
}
}
changed(integer change)
{
if (change & CHANGED_OWNER)
{
state default;
}
}
}
state Scanning
{
state_entry()
{
searchphase = 1;
llSensor("WakaTech Tube-O-Rama (Small)", NULL_KEY, PASSIVE | SCRIPTED, 20.0, PI);
}
sensor(integer num_detected)
{
integer i;
for (i = 0; i < num_detected; i++)
{
if ( llGetOwner() == llDetectedOwner(i) )
{
panels += [llDetectedKey(i)];
}
}
if (searchphase == 1)
{
searchphase = 2;
llSensor("WakaTech Tube-O-Rama (Large)", NULL_KEY, PASSIVE | SCRIPTED, 20.0, PI);
}
else
{
state PostScan;
}
}
no_sensor()
{
if (searchphase == 1)
{
searchphase = 2;
llSensor("WakaTech Tube-O-Rama (Large)", NULL_KEY, PASSIVE | SCRIPTED, 20.0, PI);
}
else
{
state PostScan;
}
}
state_exit()
{
searchphase = 0;
llSay(0, "Scan complete, found " + (string)llGetListLength(panels) + " panels to update.");
}
}
state PostScan
{
state_entry()
{
key panel;
if ( llGetListLength(panels) )
{
while ( llGetListLength(panels) )
{
panel = llList2Key(panels, 0);
panels = llDeleteSubList(panels, 0, 0);
llRemoteLoadScriptPin(panel, "Tube-O-Rama", REDACTED, TRUE, 0);
}
llSay(0, "Updates Complete!");
state default;
}
else
{
llSay(0, "No panels found, exiting.");
state default;
}
}
}