Hey, been working on a frankenscript to generate a menu, read the objects, and then rez the selected object right above. Problem I'm running into is I have some items that arent mod, so I can't reduce their names to less than 24 characters. I would be greatly appreciative if someone could help me with the llgetsubstring, or how to truncate the names so I can use this script. list MENU1 = []; list MENU2 = []; integer listener; integer MENU_CHANNEL = 1000; Dialog(key id, list menu) { llListenRemove(listener); listener = llListen(MENU_CHANNEL, "", NULL_KEY, ""); llDialog(id, "Select one object below: ", menu, MENU_CHANNEL); } default { on_rez(integer num) { llResetScript(); } touch_start(integer total_number) { integer i = 0; MENU1 = []; MENU2 = []; integer c = llGetInventoryNumber(INVENTORY_OBJECT); if (c <= 12) { for (; i < c; ++i) MENU1 += llGetInventoryName(INVENTORY_OBJECT, i); } else { for (; i < 11; ++i) MENU1 += llGetInventoryName(INVENTORY_OBJECT, i); if(c > 22) c = 22; for (; i < c; ++i) MENU2 += llGetInventoryName(INVENTORY_OBJECT, i); MENU1 += ">>"; MENU2 += "<<"; } Dialog(llDetectedKey(0), MENU1); } listen(integer channel, string name, key id, string message) { if (channel == MENU_CHANNEL) { llListenRemove(listener); if (message == ">>") { Dialog(id, MENU2); } else if (message == "<<") { Dialog(id, MENU1); } else { // todo add offsets so box sites perfect on rezzer llRezAtRoot(message, llGetPos() + <0.0, 0.0, 0.5> , ZERO_VECTOR, llGetRot(), 0); } } } } The script itself works fine now, but anytime I try to add something so I can truncate the buttons, I get all flustered trying to figure this out. If you can help, Id be appreciative.