Right now, I am having problems with getting the child portion of the wall pieces to change colors, and occasionally parts will not unlink.
Here is the corner script:
float xOffset = 0.5;
float yOffset = -0.5;
float delay = 0.1;
integer CHAN = 711;
list MENU = ["red", "blue", "green", "open", "close"];
vector color;
vector red = <9,0,0>;
vector green = <0,9,0>;
vector blue = <0,0,9>;
default
{
state_entry()
{
llSay(0, "Corner Active"

llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
llListen(CHAN, "", NULL_KEY, ""

}
touch_start(integer num_detected)
{
llDialog(llDetectedKey(0), "Menu", MENU, CHAN);
}
listen(integer channel, string name, key id, string message)
{
if(message == "open"

{
llRezObject("SlideY1", llGetPos() + <0, 1 * yOffset, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llRezObject("SlideX1", llGetPos() + <1 * xOffset, 0, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llSleep(delay);
llRezObject("SlideY2", llGetPos() + <0, 2 * yOffset, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llRezObject("SlideX2", llGetPos() + <2 * xOffset, 0, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llSleep(delay);
llRezObject("SlideY3", llGetPos() + <0, 3 * yOffset, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llRezObject("SlideX3", llGetPos() + <3 * xOffset, 0, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llSleep(delay);
llRezObject("SlideY3", llGetPos() + <0, 4 * yOffset, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llRezObject("SlideX3", llGetPos() + <4 * xOffset, 0, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llSleep(delay);
llRezObject("SlideY3", llGetPos() + <0, 5 * yOffset, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
llRezObject("SlideX3", llGetPos() + <5 * xOffset, 0, 0>, ZERO_VECTOR, ZERO_ROTATION, 711);
}
else if(message == "close"

{
integer i;
for(i=0; i<20; i++)
{
llBreakLink(2);
}
}
else if(message == "red"

{
llSetColor(red, 0);
llSetColor(red, 1);
llSetColor(red, 3);
llSetColor(red, 4);
llSetColor(red, 5);
llSetColor(red, 6);
}
else if(message == "green"

{
llSetColor(green, 0);
llSetColor(green, 1);
llSetColor(green, 3);
llSetColor(green, 4);
llSetColor(green, 5);
llSetColor(green, 6);
}
else if(message == "blue"

{
llSetColor(blue, 0);
llSetColor(blue, 1);
llSetColor(blue, 3);
llSetColor(blue, 4);
llSetColor(blue, 5);
llSetColor(blue, 6);
}
}
object_rez(key id) //link wall peices
{
if(llGetPermissions() & PERMISSION_CHANGE_LINKS)
{
llCreateLink(id, TRUE);
color = llGetColor(1);
if(color = red)
{
llSay(CHAN, "red"

}
else if(color = green)
{
llSay(CHAN, "green"

}
else if(color = blue)
{
llSay(CHAN, "blue"

}
}
}
}
And the wall pieces script (located in both prims)
integer CHAN = 711;
vector red = <9,0,0>;
vector green = <0,9,0>;
vector blue = <0,0,9>;
default
{
changed(integer change)
{
if (change & CHANGED_LINK) // linked/unlinked/sat on
{
if (llGetLinkNumber() == 0) // now i'm a single prim linked to nothing
{
llDie(); // so i die
}
else
{
llListen(CHAN, "", NULL_KEY, ""

}
}
}
listen(integer channel, string name, key id, string message)
{
if(message == "red"

{
llSetColor(red, 0);
llSetColor(red, 1);
llSetColor(red, 3);
llSetColor(red, 4);
llSetColor(red, 5);
llSetColor(red, 6);
}
else if(message == "green"

{
llSetColor(green, 0);
llSetColor(green, 1);
llSetColor(green, 3);
llSetColor(green, 4);
llSetColor(green, 5);
llSetColor(green, 6);
}
else if(message == "blue"

{
llSetColor(blue, 0);
llSetColor(blue, 1);
llSetColor(blue, 3);
llSetColor(blue, 4);
llSetColor(blue, 5);
llSetColor(blue, 6);
}
}
}
There is probably a lot of inefficiency in here, I'm still kind of new to scripting in general. Any help would be greatly appreciated.