diff options
Diffstat (limited to 'bin/assets/ScriptsAssetSet/GrafittiBoard.lsl')
-rw-r--r-- | bin/assets/ScriptsAssetSet/GrafittiBoard.lsl | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl b/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl new file mode 100644 index 0000000..d30e8f0 --- /dev/null +++ b/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl | |||
@@ -0,0 +1,74 @@ | |||
1 | // Grafitti board 0.0.2 for OpenSim | ||
2 | // By Justin Clark-Casey (justincc) | ||
3 | // http://justincc.wordpress.com | ||
4 | |||
5 | // This script is available under the BSD License | ||
6 | |||
7 | string text = ""; | ||
8 | |||
9 | int LISTENING_CHANNEL = 43; | ||
10 | |||
11 | // XXX Only putting this here as well to get around OpenSim's int -> string casting oddness | ||
12 | string LISTENING_CHANNEL_STRING = "43"; | ||
13 | |||
14 | // FIXME: Should be dynamic! | ||
15 | int CHARS_WIDTH = 42; | ||
16 | |||
17 | default | ||
18 | { | ||
19 | state_entry() | ||
20 | { | ||
21 | llSetText( | ||
22 | "Say /" + LISTENING_CHANNEL_STRING + " <message> to add text." | ||
23 | + " Say /" + LISTENING_CHANNEL_STRING | ||
24 | + " !clear to clear board", | ||
25 | <0.0, 1.0, 0.0>, 1.0); | ||
26 | |||
27 | llListen(LISTENING_CHANNEL, "", NULL_KEY, ""); | ||
28 | |||
29 | addGraffiti("justincc's graffiti board v0.0.2"); | ||
30 | addGraffiti("Now with primitive word wrap!"); | ||
31 | draw(); | ||
32 | } | ||
33 | |||
34 | listen(integer channel, string name, key id, string message) | ||
35 | { | ||
36 | if (message == "!clear") | ||
37 | { | ||
38 | clearGraffiti(); | ||
39 | } | ||
40 | else | ||
41 | { | ||
42 | addGraffiti(message); | ||
43 | } | ||
44 | |||
45 | draw(); | ||
46 | } | ||
47 | } | ||
48 | |||
49 | // Add some additional graffiti | ||
50 | void addGraffiti(string message) | ||
51 | { | ||
52 | while (llStringLength(message) > CHARS_WIDTH) | ||
53 | { | ||
54 | text += "\n\n" + llGetSubString(message, 0, CHARS_WIDTH - 1); | ||
55 | message = llDeleteSubString(message, 0, CHARS_WIDTH - 1); | ||
56 | } | ||
57 | |||
58 | text += "\n\n" + message; | ||
59 | } | ||
60 | |||
61 | // Clear the existing graffiti | ||
62 | void clearGraffiti() | ||
63 | { | ||
64 | text = ""; | ||
65 | } | ||
66 | |||
67 | // Actually fires the graffiti out to the dynamic texture module | ||
68 | void draw() | ||
69 | { | ||
70 | //llSay(0, text); | ||
71 | string drawList = "PenColour BLACK; MoveTo 40,220; FontSize 32; Text " + text + ";"; | ||
72 | |||
73 | osSetDynamicTextureData("", "vector", drawList, "1024", 0); | ||
74 | } | ||