Remote prim morph control with menu
Object:
default { state_entry() { llSetStatus(STATUS_PHANTOM, TRUE); llListen(922, "", NULL_KEY, "" ); } on_rez(integer num) { llResetScript(); } listen(integer number, string name, key id, string message) { list mypar = llGetPrimitiveParams([PRIM_SIZE,PRIM_TYPE]); if(message=="box") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>]); } if(message=="cylinder") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_CYLINDER, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>]); } if(message=="sphere") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SPHERE, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>]); } if(message=="prism") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_PRISM, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <0.0, 0.0, 0.0>, <0.0, 0.0, 0.0>]); } if(message=="torus") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_TORUS, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 0.25, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]);; } if(message=="tube") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_TUBE, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 0.25, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]); } if(message=="ring") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_RING, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 0.25, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]); } if(message=="cone") { llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_CYLINDER, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <0.0, 0.0, 0.0>, <0.0, 0.0, 0.0>]); } } }
Remote:
integer menu_handler; integer menu_channel; menu(key user,string title,list buttons)//make dialog easy, pick a channel by itself and destroy it after 5 seconds { menu_channel = (integer)(llFrand(99999.0) * -1);//yup a different channel at each use menu_handler = llListen(menu_channel,"","",""); llDialog(user,title,buttons,menu_channel); llSetTimerEvent(5.0); } default {state_entry() { llSetTouchText("Remote!"); } touch_start(integer t) { menu(llDetectedKey(0),"ShapeShifter Control Panel \n \n Put this script in all prims you wish to control.",["box","cylinder","sphere","prism","torus","tube","ring","cone"]); } timer() //so the menu timeout and close its listener { llSetTimerEvent(0.0); llListenRemove(menu_handler); } listen(integer channel,string name,key id,string message) { if (channel == menu_channel) //in case you have others listeners { integer c_channel = 922;//-----THIS IS THE CHANNEL FOR COMMANDS---- if(message == "box") { llShout(c_channel, "box"); } else if(message == "cylinder") { llShout(c_channel, "cylinder"); } else if(message == "sphere") { llShout(c_channel, "sphere"); } else if(message == "prism") { llShout(c_channel, "prism"); } else if(message == "torus") { llShout(c_channel, "torus"); } else if(message == "tube") { llShout(c_channel, "tube"); } else if(message == "ring") { llShout(c_channel, "ring"); } else if(message == "cone") { llShout(c_channel, "cone"); } } } }