default { state_entry() { } touch_start(integer num_detected) { integer prims = llGetNumberOfPrims(); vector MyPos = llGetLocalPos(); llMessageLinked(LINK_ALL_OTHERS, (integer)(MyPos.z*100), "Set", ""); } link_message(integer sender_num, integer num, string msg, key id) { integer leftneighbour; integer rightneighbour; vector myPos = llGetLocalPos(); // work out the neighbour if (sender_num < 3) { leftneighbour = llGetNumberOfPrims(); } else { leftneighbour = sender_num - 1; } if (sender_num == llGetNumberOfPrims()) { rightneighbour = 2; } else { rightneighbour = sender_num + 1; } // debug // llOwnerSay("i am: " + (string)llGetLinkNumber() + " he sender is " + (string)sender_num + " left neighbour: " + (string)leftneighbour + " right neighbour: " + (string)rightneighbour); // if I'm the next one down if (llGetLinkNumber() == leftneighbour) { llSetPos(); llOwnerSay("i am: " + (string)llGetLinkNumber() + " and I'm moving DOWN to " + (string)((num/100) - 1)); } if (llGetLinkNumber() == rightneighbour) { llSetPos(); llOwnerSay("i am: " + (string)llGetLinkNumber() + " and I'm moving UP to " + (string)((num/100) + 1)); } } }