// Default text string TEXT = "HELLO HOW ARE YOU "; // Interface between letters float LETTER_INTERVAL = 1.2; // Modified values integer IS_ON = TRUE; string CUR_TEXT = ""; integer LISTEN_HANDLE; // Characters list CHARACTERS = [ // A - Z "05fb8c9a-2ace-8c64-6688-9a08f535e87b", "c68b3416-1b02-76f4-8295-5170f2a430fc", "ab55d18b-f220-7dad-2036-9dbe6d9d24ae", "bb14e17f-48e2-b0de-2d3a-f3fc919d3455", "81d319dc-08a1-70ff-7d08-d2d5e8521d90", "993b9e32-77cd-17c6-b9d5-aa0950eeeedc", "4bbbec6c-26c7-b28c-8e2b-b95fd6b4c73e", "5c52c7da-7443-8d03-1493-94a167981f74", "7bfad861-8374-84fb-f71f-2a58fb6dd64a", "e79f9242-17d9-1377-f8b1-59812df58def", "6121cbf7-45dd-81d1-5983-bb4da8bb6cbd", "b9c2b4f6-2dd2-f05e-2ebe-8291a1c8208c", "e4c16f2e-5589-4dab-d658-2d8f8e78e212", "3dd9c930-88cb-80cd-04df-a146429166ba", "aa61ecc4-59c6-d390-b0e2-770abd463037", "702072b1-a14a-c1c2-7e96-ec69044989ef", "ed6b8c52-2540-df1e-2fb1-5c2d74d52951", "50ceb1e2-bf65-43d1-14b9-f7c6baab856f", "d1684b98-25c3-6d6d-9517-cc5b15264a5d", "d2daf814-6aa7-7a59-54b2-3110bf0d9dee", "367def79-30ef-5de7-cade-55fb1973dec4", "02e99a90-31c8-b50b-8b16-2c182d67a2d4", "722b77a3-8513-9537-c0cb-00978c85745e", "ea2aa90d-4a98-8d3b-3815-4505113a5a90", "ebe59dea-4a23-d415-1503-9c789c68d0f5", "9fbdeb14-7814-2c21-ab27-ee1867e349a3", // Special characters "701917a8-d614-471f-13dd-5f4644e36e3c", // Space "d3f39664-ec05-92f0-1b45-db3acfe276e3", // Period "3ff82ed4-c521-dc69-b1ad-5d70f4b89da1", // Question "eaa3ec1a-d071-285e-7058-14ce838e8e25", // Semicolon "c0eeefcc-fa2c-0ff9-c9b9-babc365643ea", // Exclamation "8ccd81a4-ac36-7618-d7b4-b40fc2a548f0", // Comma "f81176b3-32b8-86bf-3613-a9f89895c1ad", // Colon // Numbers "1494e996-a91b-f770-bd10-ad788642d859", "f545e486-2a2e-730d-845a-cbe9d4bcb9fd", "16a84092-421f-3225-bb36-4071b55fab2d", "4b0a62c4-65f4-932e-d440-7fe3cf5a1540", "e0e7eacd-e956-14e6-df65-3bc3b7d4e679", "6f579c89-bf1f-71d7-854d-b08341edf51e", "a5063c9b-377c-1244-62b4-7ce5d1dbfafe", "b055ba6a-d2ff-d67d-066c-ccb8a9e8300d", "42b58e86-e83c-bc1b-4d73-ab3603d00d98", "872560f2-d964-ab22-d558-1607366666c1", // Zara's "fcdac14d-6128-ce47-66bc-a3d0d27f6d3d", // Hearts // ADD yours here. // Note that if you add more you need to put a comma in // but leave the last line with out a comma "" ]; string CHARACTER_INDEX = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .?;!,:0123456789@"; letter(string char) { string TEXTURE = llList2Key(CHARACTERS, llSubStringIndex(CHARACTER_INDEX, llToUpper(char))); llParticleSystem([ PSYS_PART_FLAGS, 0 | PSYS_PART_EMISSIVE_MASK | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK, PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_ANGLE_CONE, // Texture / Size / Alpha / Color PSYS_SRC_TEXTURE, TEXTURE, PSYS_PART_START_SCALE,<0.2000, 0.2000, 0.0000>, PSYS_PART_END_SCALE,<0.3000, 0.3000, 0.0000>, PSYS_PART_START_ALPHA,0.000000, PSYS_PART_END_ALPHA,1.000000, PSYS_PART_START_COLOR, <1.0,1.0,1.0>, PSYS_PART_END_COLOR, <1.0,1.0,1.0>, // Flow PSYS_PART_MAX_AGE,10.0, PSYS_SRC_BURST_RATE,1.200000, PSYS_SRC_BURST_PART_COUNT,1, PSYS_SRC_MAX_AGE,0.000000, // Rez position PSYS_SRC_BURST_RADIUS,0.0, PSYS_SRC_INNERANGLE,0.0000, PSYS_SRC_OUTERANGLE,0.0000, PSYS_SRC_OMEGA,<0.00000, 0.00000, 0.00000>, PSYS_SRC_ACCEL, <0,0,0.0>, PSYS_SRC_BURST_SPEED_MIN,0.250000, PSYS_SRC_BURST_SPEED_MAX,0.250000 ]); } stop() { llParticleSystem([]); } default { state_entry() { if(IS_ON) { llSetTimerEvent(LETTER_INTERVAL); LISTEN_HANDLE = llListen(99, "", llGetOwner(), ""); } } touch_start(integer num_detected) { if(IS_ON) { stop(); llSetTimerEvent(0.0); //llListenControl(LISTEN_HANDLE, FALSE); llWhisper(0, "Signboard has stopped"); } else { llWhisper(0, "Signboard has started"); //LISTEN_HANDLE = llListen(99, "", llGetOwner(), ""); llSetTimerEvent(LETTER_INTERVAL); } IS_ON = !IS_ON; } listen( integer channel, string name, key id, string message) { TEXT = message; CUR_TEXT = message; llOwnerSay("Setting text:" + message); } timer() { if(CUR_TEXT == "") { CUR_TEXT = TEXT; } string char = llGetSubString(CUR_TEXT, 0, 0); letter(char); if(llStringLength(CUR_TEXT) == 1) { if(CUR_TEXT != " ") { CUR_TEXT = " "; } else { CUR_TEXT = ""; } } else { CUR_TEXT = llGetSubString(CUR_TEXT, 1, -1); } } }