key gKyToucher; key gKyOwner; list gLstSubscribers; integer gIntMenuIdx; integer gIntListenHandle; integer gIntListenHandle2; integer gIntSubscriberListLen; string gStrMessage; list buttons = ["Enter Msg", "Send Msg", "Quit"]; string fnStringTrim(string src) { string myTrimmedText; myTrimmedText = llDumpList2String(llParseString2List(src, [" "], []), " "); return myTrimmedText; } fnPopulateListKeys() { if (llGetInventoryType("listkeys") == -1) { osMakeNotecard("listkeys", gLstSubscribers); } gLstSubscribers = []; integer intInvNum; intInvNum = llGetInventoryNumber(INVENTORY_NOTECARD); if (intInvNum != 0) { integer intCount; for (intCount = 0; intCount < intInvNum;intCount++) { if (llGetInventoryName(INVENTORY_NOTECARD, intCount) == "listkeys") { string notecard; notecard = "listkeys"; integer intNCLength; intNCLength=osGetNumberOfNotecardLines(notecard); integer q; for ( q=0;q12) { list lbut = buttons; list Nbuttons = []; if(CurMenu == -1) { CurMenu = 0; gIntMenuIdx = 0; } if((Nbuttons = (llList2List(buttons, (CurMenu * 10), ((CurMenu * 10) + 9)) + ["Back", "Next"])) == ["Back", "Next"]) { gFnDialogPlus(avatar, message, lbut, channel, gIntMenuIdx); } else { llDialog(avatar, message, gFnOrderButtons(Nbuttons), channel); } } else { llDialog(avatar, message, gFnOrderButtons(buttons), channel); } } default { on_rez(integer c) { llResetScript(); } state_entry() { gKyOwner = llGetOwner(); fnPopulateListKeys(); } listen(integer channel, string name, key id, string message) { if (channel == 16000) { gStrMessage = message; llListenRemove(gIntListenHandle2); } if (message == "Enter Msg") { gIntListenHandle = llListen(16000, "", gKyOwner, ""); llTextBox(gKyOwner,"Enter the message to send.",16000); } if (message == "Send Msg") { gIntSubscriberListLen = llGetListLength(gLstSubscribers); integer q; for (q=0;q