Thanks again for your help and explaining why to me.
I can get the object decription name now to appear (using llOwnerSay as a test from temp list) but the dialog buttons do not generate. Please can i throw myself on your mercy again and be a total pain to you and ask how to do this?
My aim is that there will be any number of unlinked prims up to about 8 i think, it is the decription of these that such be the different dialog buttons.
I am trying to read the wiki and other scripts to help me understand what I am doing but this is the first time I have played with lists and i cant find a description / wiki page yet on this that i understand properly.
My script currently looks like this after implementing your suggested changes. I totally agree on the mylists so i have changed these to be different names, it was way too confusing!
Fingers crossed it is ok and that you will be able to help me........
list dmain = ["do this", "or"];list dsub = [];list my_buttons = [];string dmsg;integer channel = -10110101;integer listener;key ToucherID;integer menu; default{ on_rez(integer start_param) { llResetScript(); } state_entry() { } touch_start(integer x) { menu = 0; //show main menu, called Main ToucherID = llDetectedKey(0); llDialog(ToucherID, "What do you want to do?", dmain,-10110101 ); llRegionSay(-000001,"give me your uuid"); listener = llListen(channel,"", NULL_KEY, ""); } listen(integer channel, string name, key id, string choice) { list prims = llParseString2List(choice, [""], [""]); string uuid = llList2String(prims, 0); // llOwnerSay (uuid); // list dsub = llGetObjectDetails(id,([OBJECT_DESC])); list dsub = llGetObjectDetails((key)uuid,[OBJECT_DESC]); string temp = llList2String(dsub,0); llOwnerSay (temp); list my_buttons = llParseString2List(temp,[","],[]); // Assuming that you are using commas as delimiters in the Object Desc if (menu == 0) { if (choice == "do this") { menu = 1; llDialog(ToucherID, "Please Select ?", my_buttons, -10110101); }} else if (menu == 1) { // I will program later { // I will program later llSetTimerEvent(60.0); //HERE WE SET A TIME LIMIT llListenRemove(); //HERE WE ARE BEING RESPONSIBLE } }} timer() { //TIME’S UP! // llListenRemove(); llWhisper(0, "Sorry, you did not make your selection in time"); llSetTimerEvent(0.0); //Stop the timer from being called repeatedly }}