aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/lsl_guide.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--linden/indra/newview/lsl_guide.html22078
1 files changed, 0 insertions, 22078 deletions
diff --git a/linden/indra/newview/lsl_guide.html b/linden/indra/newview/lsl_guide.html
deleted file mode 100644
index aa660b8..0000000
--- a/linden/indra/newview/lsl_guide.html
+++ /dev/null
@@ -1,22078 +0,0 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
2<HTML
3><HEAD
4><TITLE
5>Linden Scripting Language Guide</TITLE
6><META
7NAME="GENERATOR"
8CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
9><BODY
10CLASS="book"
11BGCOLOR="#FFFFFF"
12TEXT="#000000"
13LINK="#0000FF"
14VLINK="#840084"
15ALINK="#0000FF"
16><DIV
17CLASS="BOOK"
18><A
19NAME="AEN1"
20></A
21><DIV
22CLASS="TITLEPAGE"
23><H1
24CLASS="title"
25><A
26NAME="AEN2"
27>Linden Scripting Language Guide</A
28></H1
29><H3
30CLASS="author"
31><A
32NAME="AEN4"
33></A
34>Aaron Brashears</H3
35><H3
36CLASS="author"
37><A
38NAME="AEN7"
39></A
40>Andrew Meadows</H3
41><H3
42CLASS="author"
43><A
44NAME="AEN10"
45></A
46>Cory Ondrejka</H3
47><H3
48CLASS="author"
49><A
50NAME="AEN13"
51></A
52>Doug Soo</H3
53><H3
54CLASS="author"
55><A
56NAME="AEN16"
57></A
58>Donald Kjer</H3
59><P
60CLASS="copyright"
61>Copyright &copy; 2007 Linden Lab</P
62><DIV
63CLASS="legalnotice"
64><P
65></P
66><A
67NAME="AEN22"
68></A
69><P
70><SPAN
71CLASS="trademark"
72>Linden Lab</SPAN
73>&reg; and
74 <SPAN
75CLASS="trademark"
76>Second Life</SPAN
77>&reg; are registered
78 trademarks of Linden Research, Inc.</P
79><P
80></P
81></DIV
82><HR></DIV
83><DIV
84CLASS="TOC"
85><DL
86><DT
87><B
88>Table of Contents</B
89></DT
90><DT
91>1. <A
92HREF="#AEN27"
93>Introduction</A
94></DT
95><DT
96>2. <A
97HREF="#AEN33"
98>Getting Started</A
99></DT
100><DD
101><DL
102><DT
103>2.1. <A
104HREF="#AEN36"
105>Hello Avatar</A
106></DT
107><DD
108><DL
109><DT
110>2.1.1. <A
111HREF="#AEN50"
112>Creating the Script</A
113></DT
114><DT
115>2.1.2. <A
116HREF="#AEN56"
117>Default State</A
118></DT
119><DT
120>2.1.3. <A
121HREF="#AEN67"
122>Functions</A
123></DT
124><DT
125>2.1.4. <A
126HREF="#AEN82"
127>Touch Event</A
128></DT
129><DT
130>2.1.5. <A
131HREF="#AEN90"
132>Try it Out</A
133></DT
134></DL
135></DD
136><DT
137>2.2. <A
138HREF="#AEN103"
139>Using The Built-In Editor</A
140></DT
141><DT
142>2.3. <A
143HREF="#AEN106"
144>Using Alternative Editors</A
145></DT
146></DL
147></DD
148><DT
149>3. <A
150HREF="#AEN109"
151>Basics</A
152></DT
153><DD
154><DL
155><DT
156>3.1. <A
157HREF="#AEN112"
158>Comments</A
159></DT
160><DT
161>3.2. <A
162HREF="#AEN129"
163>Arithmetic Operations</A
164></DT
165><DD
166><DL
167><DT
168>3.2.1. <A
169HREF="#AEN132"
170>Assignment</A
171></DT
172><DT
173>3.2.2. <A
174HREF="#AEN139"
175>Hexadecimal Entry</A
176></DT
177><DT
178>3.2.3. <A
179HREF="#AEN145"
180>Binary Arithmetic Operators</A
181></DT
182><DT
183>3.2.4. <A
184HREF="#AEN185"
185>Boolean Operators</A
186></DT
187><DT
188>3.2.5. <A
189HREF="#AEN217"
190>Bitwise Operators</A
191></DT
192></DL
193></DD
194><DT
195>3.3. <A
196HREF="#AEN237"
197>Types</A
198></DT
199><DD
200><DL
201><DT
202>3.3.1. <A
203HREF="#AEN318"
204>Type Conversion</A
205></DT
206></DL
207></DD
208><DT
209>3.4. <A
210HREF="#AEN360"
211>Global Functions</A
212></DT
213><DT
214>3.5. <A
215HREF="#AEN365"
216>Global Variables</A
217></DT
218><DT
219>3.6. <A
220HREF="#AEN373"
221>Local Variables</A
222></DT
223></DL
224></DD
225><DT
226>4. <A
227HREF="#AEN378"
228>Flow Control</A
229></DT
230><DD
231><DL
232><DT
233>4.1. <A
234HREF="#AEN381"
235>Conditional Statements</A
236></DT
237><DT
238>4.2. <A
239HREF="#AEN394"
240>Loop Constructs</A
241></DT
242><DD
243><DL
244><DT
245>4.2.1. <A
246HREF="#AEN397"
247>for loop</A
248></DT
249><DT
250>4.2.2. <A
251HREF="#AEN403"
252>do-while loop</A
253></DT
254><DT
255>4.2.3. <A
256HREF="#AEN409"
257>while loop</A
258></DT
259></DL
260></DD
261><DT
262>4.3. <A
263HREF="#AEN415"
264>Jumps</A
265></DT
266><DT
267>4.4. <A
268HREF="#AEN421"
269>State Change</A
270></DT
271></DL
272></DD
273><DT
274>5. <A
275HREF="#AEN427"
276>States</A
277></DT
278><DD
279><DL
280><DT
281>5.1. <A
282HREF="#AEN431"
283>state_entry()</A
284></DT
285><DT
286>5.2. <A
287HREF="#AEN440"
288>state_exit()</A
289></DT
290><DT
291>5.3. <A
292HREF="#AEN449"
293>States vs. Global variables</A
294></DT
295></DL
296></DD
297><DT
298>6. <A
299HREF="#AEN452"
300>Math</A
301></DT
302><DD
303><DL
304><DT
305>6.1. <A
306HREF="#AEN454"
307>Tables of Functions</A
308></DT
309></DL
310></DD
311><DT
312>7. <A
313HREF="#AEN561"
314>Strings</A
315></DT
316><DD
317><DL
318><DT
319>7.1. <A
320HREF="#AEN563"
321>Tables of Functions</A
322></DT
323></DL
324></DD
325><DT
326>8. <A
327HREF="#AEN605"
328>Lists</A
329></DT
330><DD
331><DL
332><DT
333>8.1. <A
334HREF="#AEN607"
335>Tables of Functions</A
336></DT
337></DL
338></DD
339><DT
340>9. <A
341HREF="#AEN670"
342>Communication</A
343></DT
344><DD
345><DL
346><DT
347>9.1. <A
348HREF="#AEN672"
349>Tables of Functions</A
350></DT
351></DL
352></DD
353><DT
354>10. <A
355HREF="#AEN715"
356>Inventory</A
357></DT
358><DD
359><DL
360><DT
361>10.1. <A
362HREF="#AEN717"
363>Tables of Functions</A
364></DT
365></DL
366></DD
367><DT
368>11. <A
369HREF="#AEN768"
370>Vehicles</A
371></DT
372><DD
373><DL
374><DT
375>11.1. <A
376HREF="#AEN790"
377>Overview</A
378></DT
379><DT
380>11.2. <A
381HREF="#AEN801"
382>Warnings</A
383></DT
384><DT
385>11.3. <A
386HREF="#AEN815"
387>Definitions</A
388></DT
389><DT
390>11.4. <A
391HREF="#AEN826"
392>Setting the Vehicle Type</A
393></DT
394><DT
395>11.5. <A
396HREF="#AEN837"
397>Linear and Angular Deflection</A
398></DT
399><DT
400>11.6. <A
401HREF="#AEN853"
402>Moving and Steering the Vehicle</A
403></DT
404><DT
405>11.7. <A
406HREF="#AEN866"
407>The Linear Motor</A
408></DT
409><DT
410>11.8. <A
411HREF="#AEN898"
412>The Angular Motor</A
413></DT
414><DT
415>11.9. <A
416HREF="#AEN921"
417>Using the Camera to Steer</A
418></DT
419><DT
420>11.10. <A
421HREF="#AEN938"
422>The Vertical Attractor</A
423></DT
424><DT
425>11.11. <A
426HREF="#AEN949"
427>Banking</A
428></DT
429><DT
430>11.12. <A
431HREF="#AEN956"
432>Friction Timescales</A
433></DT
434><DT
435>11.13. <A
436HREF="#AEN972"
437>Buoyancy</A
438></DT
439><DT
440>11.14. <A
441HREF="#AEN979"
442>Hover</A
443></DT
444><DT
445>11.15. <A
446HREF="#AEN990"
447>Reference Frame</A
448></DT
449></DL
450></DD
451><DT
452>A. <A
453HREF="#AEN999"
454>Linden Library Functions</A
455></DT
456><DD
457><DL
458><DT
459>A.1. <A
460HREF="#AEN1002"
461>llAbs</A
462></DT
463><DT
464>A.2. <A
465HREF="#AEN1012"
466>llAcos</A
467></DT
468><DT
469>A.3. <A
470HREF="#AEN1022"
471>llAddToLandPassList</A
472></DT
473><DT
474>A.4. <A
475HREF="#AEN1035"
476>llAdjustSoundVolume</A
477></DT
478><DT
479>A.5. <A
480HREF="#AEN1047"
481>llAllowInventoryDrop</A
482></DT
483><DT
484>A.6. <A
485HREF="#AEN1057"
486>llAngleBetween</A
487></DT
488><DT
489>A.7. <A
490HREF="#AEN1070"
491>llApplyImpulse</A
492></DT
493><DT
494>A.8. <A
495HREF="#AEN1083"
496>llApplyRotationalImpulse</A
497></DT
498><DT
499>A.9. <A
500HREF="#AEN1096"
501>llAsin</A
502></DT
503><DT
504>A.10. <A
505HREF="#AEN1106"
506>llAtan2</A
507></DT
508><DT
509>A.11. <A
510HREF="#AEN1119"
511>llAttachToAvatar</A
512></DT
513><DT
514>A.12. <A
515HREF="#AEN1134"
516>llAvatarOnSitTarget</A
517></DT
518><DT
519>A.13. <A
520HREF="#AEN1144"
521>llAxes2Rot</A
522></DT
523><DT
524>A.14. <A
525HREF="#AEN1160"
526>llAxisAngle2Rot</A
527></DT
528><DT
529>A.15. <A
530HREF="#AEN1173"
531>llBase64ToString</A
532></DT
533><DT
534>A.16. <A
535HREF="#AEN1182"
536>llBreakAllLinks</A
537></DT
538><DT
539>A.17. <A
540HREF="#AEN1191"
541>llBreakLink</A
542></DT
543><DT
544>A.18. <A
545HREF="#AEN1202"
546>llCSV2List</A
547></DT
548><DT
549>A.19. <A
550HREF="#AEN1212"
551>llCeil</A
552></DT
553><DT
554>A.20. <A
555HREF="#AEN1222"
556>llCloseRemoteDataChannel</A
557></DT
558><DT
559>A.21. <A
560HREF="#AEN1231"
561>llCloud</A
562></DT
563><DT
564>A.22. <A
565HREF="#AEN1241"
566>llCollisionFilter</A
567></DT
568><DT
569>A.23. <A
570HREF="#AEN1260"
571>llCollisionSound</A
572></DT
573><DT
574>A.24. <A
575HREF="#AEN1272"
576>llCollisionSprite</A
577></DT
578><DT
579>A.25. <A
580HREF="#AEN1282"
581>llCos</A
582></DT
583><DT
584>A.26. <A
585HREF="#AEN1292"
586>llCreateLink</A
587></DT
588><DT
589>A.27. <A
590HREF="#AEN1306"
591>llDeleteSubList</A
592></DT
593><DT
594>A.28. <A
595HREF="#AEN1326"
596>llDeleteSubString</A
597></DT
598><DT
599>A.29. <A
600HREF="#AEN1345"
601>llDetachFromAvatar</A
602></DT
603><DT
604>A.30. <A
605HREF="#lib_lldetected"
606>llDetectedGrab</A
607></DT
608><DT
609>A.31. <A
610HREF="#AEN1365"
611>llDetectedGroup</A
612></DT
613><DT
614>A.32. <A
615HREF="#AEN1375"
616>llDetectedKey</A
617></DT
618><DT
619>A.33. <A
620HREF="#AEN1386"
621>llDetectedLinkNumber</A
622></DT
623><DT
624>A.34. <A
625HREF="#AEN1395"
626>llDetectedName</A
627></DT
628><DT
629>A.35. <A
630HREF="#AEN1406"
631>llDetectedOwner</A
632></DT
633><DT
634>A.36. <A
635HREF="#AEN1417"
636>llDetectedPos</A
637></DT
638><DT
639>A.37. <A
640HREF="#AEN1428"
641>llDetectedRot</A
642></DT
643><DT
644>A.38. <A
645HREF="#AEN1439"
646>llDetectedType</A
647></DT
648><DT
649>A.39. <A
650HREF="#AEN1453"
651>llDetectedVel</A
652></DT
653><DT
654>A.40. <A
655HREF="#AEN1464"
656>llDialog</A
657></DT
658><DT
659>A.41. <A
660HREF="#AEN1481"
661>llDie</A
662></DT
663><DT
664>A.42. <A
665HREF="#AEN1489"
666>llDumpList2String</A
667></DT
668><DT
669>A.43. <A
670HREF="#AEN1500"
671>llEscapeURL</A
672></DT
673><DT
674>A.44. <A
675HREF="#AEN1510"
676>llEdgeOfWorld</A
677></DT
678><DT
679>A.45. <A
680HREF="#AEN1523"
681>llEjectFromLand</A
682></DT
683><DT
684>A.46. <A
685HREF="#AEN1533"
686>llEmail</A
687></DT
688><DT
689>A.47. <A
690HREF="#AEN1549"
691>llEuler2Rot</A
692></DT
693><DT
694>A.48. <A
695HREF="#AEN1559"
696>llFabs</A
697></DT
698><DT
699>A.49. <A
700HREF="#AEN1569"
701>llFloor</A
702></DT
703><DT
704>A.50. <A
705HREF="#AEN1579"
706>llFrand</A
707></DT
708><DT
709>A.51. <A
710HREF="#AEN1589"
711>llGetAccel</A
712></DT
713><DT
714>A.52. <A
715HREF="#AEN1597"
716>llGetAttached</A
717></DT
718><DT
719>A.53. <A
720HREF="#AEN1605"
721>llGetAgentInfo</A
722></DT
723><DT
724>A.54. <A
725HREF="#AEN1616"
726>llGetAgentSize</A
727></DT
728><DT
729>A.55. <A
730HREF="#AEN1626"
731>llGetAlpha</A
732></DT
733><DT
734>A.56. <A
735HREF="#AEN1638"
736>llGetAndResetTime</A
737></DT
738><DT
739>A.57. <A
740HREF="#AEN1648"
741>llGetAnimation</A
742></DT
743><DT
744>A.58. <A
745HREF="#AEN1658"
746>llGetAnimationList</A
747></DT
748><DT
749>A.59. <A
750HREF="#AEN1668"
751>llGetBoundingBox</A
752></DT
753><DT
754>A.60. <A
755HREF="#AEN1678"
756>llGetCenterOfMass</A
757></DT
758><DT
759>A.61. <A
760HREF="#AEN1686"
761>llGetColor</A
762></DT
763><DT
764>A.62. <A
765HREF="#AEN1698"
766>llGetCreator</A
767></DT
768><DT
769>A.63. <A
770HREF="#AEN1706"
771>llGetDate</A
772></DT
773><DT
774>A.64. <A
775HREF="#AEN1714"
776>llGetEnergy</A
777></DT
778><DT
779>A.65. <A
780HREF="#AEN1722"
781>llGetForce</A
782></DT
783><DT
784>A.66. <A
785HREF="#AEN1730"
786>llGetFreeMemory</A
787></DT
788><DT
789>A.67. <A
790HREF="#AEN1738"
791>llGetGeometricCenter</A
792></DT
793><DT
794>A.68. <A
795HREF="#AEN1746"
796>llGetGMTclock</A
797></DT
798><DT
799>A.69. <A
800HREF="#AEN1754"
801>llGetInventoryCreator</A
802></DT
803><DT
804>A.70. <A
805HREF="#AEN1764"
806>llGetInventoryKey</A
807></DT
808><DT
809>A.71. <A
810HREF="#AEN1774"
811>llGetInventoryName</A
812></DT
813><DT
814>A.72. <A
815HREF="#AEN1789"
816>llGetInventoryNumber</A
817></DT
818><DT
819>A.73. <A
820HREF="#AEN1801"
821>llGetInventoryPermMask</A
822></DT
823><DT
824>A.74. <A
825HREF="#AEN1816"
826>llGetInventoryType</A
827></DT
828><DT
829>A.75. <A
830HREF="#AEN1828"
831>llGetKey</A
832></DT
833><DT
834>A.76. <A
835HREF="#AEN1836"
836>llGetLandOwnerAt</A
837></DT
838><DT
839>A.77. <A
840HREF="#AEN1847"
841>llGetLinkKey</A
842></DT
843><DT
844>A.78. <A
845HREF="#AEN1857"
846>llGetLinkName</A
847></DT
848><DT
849>A.79. <A
850HREF="#AEN1867"
851>llGetLinkNumber</A
852></DT
853><DT
854>A.80. <A
855HREF="#AEN1875"
856>llGetListEntryType</A
857></DT
858><DT
859>A.81. <A
860HREF="#AEN1889"
861>llGetListLength</A
862></DT
863><DT
864>A.82. <A
865HREF="#AEN1899"
866>llGetLocalPos</A
867></DT
868><DT
869>A.83. <A
870HREF="#AEN1907"
871>llGetLocalRot</A
872></DT
873><DT
874>A.84. <A
875HREF="#AEN1915"
876>llGetMass</A
877></DT
878><DT
879>A.85. <A
880HREF="#AEN1923"
881>llGetObjectMass</A
882></DT
883><DT
884>A.86. <A
885HREF="#AEN1933"
886>llGetNextEmail</A
887></DT
888><DT
889>A.87. <A
890HREF="#AEN1946"
891>llGetNotecardLine</A
892></DT
893><DT
894>A.88. <A
895HREF="#AEN1964"
896>llGetNumberOfNotecardLines</A
897></DT
898><DT
899>A.89. <A
900HREF="#AEN1977"
901>llGetNumberOfPrims</A
902></DT
903><DT
904>A.90. <A
905HREF="#AEN1985"
906>llGetNumberOfSides</A
907></DT
908><DT
909>A.91. <A
910HREF="#AEN1993"
911>llGetObjectDesc</A
912></DT
913><DT
914>A.92. <A
915HREF="#AEN2001"
916>llGetObjectName</A
917></DT
918><DT
919>A.93. <A
920HREF="#AEN2009"
921>llGetObjectPermMask</A
922></DT
923><DT
924>A.94. <A
925HREF="#AEN2022"
926>llGetOmega</A
927></DT
928><DT
929>A.95. <A
930HREF="#AEN2030"
931>llGetOwner</A
932></DT
933><DT
934>A.96. <A
935HREF="#AEN2038"
936>llGetOwnerKey</A
937></DT
938><DT
939>A.97. <A
940HREF="#AEN2048"
941>llGetPermissions</A
942></DT
943><DT
944>A.98. <A
945HREF="#AEN2058"
946>llGetPermissionsKey</A
947></DT
948><DT
949>A.99. <A
950HREF="#AEN2067"
951>llGetPos</A
952></DT
953><DT
954>A.100. <A
955HREF="#AEN2075"
956>llGetPrimitiveParams</A
957></DT
958><DT
959>A.101. <A
960HREF="#AEN2092"
961>llGetRegionCorner</A
962></DT
963><DT
964>A.102. <A
965HREF="#AEN2100"
966>llGetRegionFPS</A
967></DT
968><DT
969>A.103. <A
970HREF="#AEN2108"
971>llGetRegionName</A
972></DT
973><DT
974>A.104. <A
975HREF="#AEN2116"
976>llGetRegionTimeDilation</A
977></DT
978><DT
979>A.105. <A
980HREF="#AEN2124"
981>llGetRootPosition</A
982></DT
983><DT
984>A.106. <A
985HREF="#AEN2132"
986>llGetRootRotation</A
987></DT
988><DT
989>A.107. <A
990HREF="#AEN2140"
991>llGetRot</A
992></DT
993><DT
994>A.108. <A
995HREF="#AEN2148"
996>llGetScale</A
997></DT
998><DT
999>A.109. <A
1000HREF="#AEN2156"
1001>llGetScriptName</A
1002></DT
1003><DT
1004>A.110. <A
1005HREF="#AEN2164"
1006>llGetStartParameter</A
1007></DT
1008><DT
1009>A.111. <A
1010HREF="#AEN2174"
1011>llGetScriptState</A
1012></DT
1013><DT
1014>A.112. <A
1015HREF="#AEN2184"
1016>llGetStatus</A
1017></DT
1018><DT
1019>A.113. <A
1020HREF="#AEN2195"
1021>llGetSubString</A
1022></DT
1023><DT
1024>A.114. <A
1025HREF="#AEN2214"
1026>llGetSunDirection</A
1027></DT
1028><DT
1029>A.115. <A
1030HREF="#AEN2222"
1031>llGetTexture</A
1032></DT
1033><DT
1034>A.116. <A
1035HREF="#AEN2232"
1036>llGetTextureOffset</A
1037></DT
1038><DT
1039>A.117. <A
1040HREF="#AEN2242"
1041>llGetTextureRot</A
1042></DT
1043><DT
1044>A.118. <A
1045HREF="#AEN2252"
1046>llGetTextureScale</A
1047></DT
1048><DT
1049>A.119. <A
1050HREF="#AEN2262"
1051>llGetTime</A
1052></DT
1053><DT
1054>A.120. <A
1055HREF="#AEN2273"
1056>llGetTimeOfDay</A
1057></DT
1058><DT
1059>A.121. <A
1060HREF="#AEN2281"
1061>llGetTimestamp</A
1062></DT
1063><DT
1064>A.122. <A
1065HREF="#AEN2289"
1066>llGetTorque</A
1067></DT
1068><DT
1069>A.123. <A
1070HREF="#AEN2297"
1071>llGetVel</A
1072></DT
1073><DT
1074>A.124. <A
1075HREF="#AEN2306"
1076>llGetWallclock</A
1077></DT
1078><DT
1079>A.125. <A
1080HREF="#AEN2314"
1081>llGiveInventory</A
1082></DT
1083><DT
1084>A.126. <A
1085HREF="#AEN2326"
1086>llGiveInventoryList</A
1087></DT
1088><DT
1089>A.127. <A
1090HREF="#AEN2342"
1091>llGiveMoney</A
1092></DT
1093><DT
1094>A.128. <A
1095HREF="#AEN2356"
1096>llGround</A
1097></DT
1098><DT
1099>A.129. <A
1100HREF="#AEN2366"
1101>llGroundContour</A
1102></DT
1103><DT
1104>A.130. <A
1105HREF="#AEN2376"
1106>llGroundNormal</A
1107></DT
1108><DT
1109>A.131. <A
1110HREF="#AEN2386"
1111>llGroundRepel</A
1112></DT
1113><DT
1114>A.132. <A
1115HREF="#AEN2405"
1116>llGroundSlope</A
1117></DT
1118><DT
1119>A.133. <A
1120HREF="#AEN2415"
1121>llInsertString</A
1122></DT
1123><DT
1124>A.134. <A
1125HREF="#AEN2431"
1126>llInstantMessage</A
1127></DT
1128><DT
1129>A.135. <A
1130HREF="#AEN2444"
1131>llKey2Name</A
1132></DT
1133><DT
1134>A.136. <A
1135HREF="#AEN2454"
1136>llList2CSV</A
1137></DT
1138><DT
1139>A.137. <A
1140HREF="#AEN2464"
1141>llList2Float</A
1142></DT
1143><DT
1144>A.138. <A
1145HREF="#AEN2477"
1146>llList2Integer</A
1147></DT
1148><DT
1149>A.139. <A
1150HREF="#AEN2490"
1151>llList2Key</A
1152></DT
1153><DT
1154>A.140. <A
1155HREF="#AEN2503"
1156>llList2List</A
1157></DT
1158><DT
1159>A.141. <A
1160HREF="#AEN2526"
1161>llList2ListStrided</A
1162></DT
1163><DT
1164>A.142. <A
1165HREF="#AEN2544"
1166>llList2Rot</A
1167></DT
1168><DT
1169>A.143. <A
1170HREF="#AEN2557"
1171>llList2String</A
1172></DT
1173><DT
1174>A.144. <A
1175HREF="#AEN2570"
1176>llList2Vector</A
1177></DT
1178><DT
1179>A.145. <A
1180HREF="#AEN2583"
1181>llListFindList</A
1182></DT
1183><DT
1184>A.146. <A
1185HREF="#AEN2598"
1186>llListInsertList</A
1187></DT
1188><DT
1189>A.147. <A
1190HREF="#AEN2614"
1191>llListRandomize</A
1192></DT
1193><DT
1194>A.148. <A
1195HREF="#AEN2629"
1196>llListReplaceList</A
1197></DT
1198><DT
1199>A.149. <A
1200HREF="#AEN2648"
1201>llListSort</A
1202></DT
1203><DT
1204>A.150. <A
1205HREF="#AEN2665"
1206>llListen</A
1207></DT
1208><DT
1209>A.151. <A
1210HREF="#AEN2686"
1211>llListenControl</A
1212></DT
1213><DT
1214>A.152. <A
1215HREF="#AEN2701"
1216>llListenRemove</A
1217></DT
1218><DT
1219>A.153. <A
1220HREF="#AEN2712"
1221>llLoadURL</A
1222></DT
1223><DT
1224>A.154. <A
1225HREF="#AEN2731"
1226>llLog</A
1227></DT
1228><DT
1229>A.155. <A
1230HREF="#AEN2742"
1231>llLog10</A
1232></DT
1233><DT
1234>A.156. <A
1235HREF="#AEN2753"
1236>llLookAt</A
1237></DT
1238><DT
1239>A.157. <A
1240HREF="#AEN2773"
1241>llLoopSound</A
1242></DT
1243><DT
1244>A.158. <A
1245HREF="#AEN2790"
1246>llLoopSoundMaster</A
1247></DT
1248><DT
1249>A.159. <A
1250HREF="#AEN2802"
1251>llLoopSoundSlave</A
1252></DT
1253><DT
1254>A.160. <A
1255HREF="#AEN2814"
1256>llMakeExplosion</A
1257></DT
1258><DT
1259>A.161. <A
1260HREF="#AEN2836"
1261>llMakeFire</A
1262></DT
1263><DT
1264>A.162. <A
1265HREF="#AEN2858"
1266>llMakeFountain</A
1267></DT
1268><DT
1269>A.163. <A
1270HREF="#AEN2880"
1271>llMakeSmoke</A
1272></DT
1273><DT
1274>A.164. <A
1275HREF="#AEN2902"
1276>llMD5String</A
1277></DT
1278><DT
1279>A.165. <A
1280HREF="#AEN2919"
1281>llMessageLinked</A
1282></DT
1283><DT
1284>A.166. <A
1285HREF="#AEN2940"
1286>llMinEventDelay</A
1287></DT
1288><DT
1289>A.167. <A
1290HREF="#AEN2949"
1291>llModifyLand</A
1292></DT
1293><DT
1294>A.168. <A
1295HREF="#AEN2963"
1296>llModPow</A
1297></DT
1298><DT
1299>A.169. <A
1300HREF="#AEN2980"
1301>llMoveToTarget</A
1302></DT
1303><DT
1304>A.170. <A
1305HREF="#AEN2995"
1306>llOffsetTexture</A
1307></DT
1308><DT
1309>A.171. <A
1310HREF="#AEN3011"
1311>llOpenRemoteDataChannel</A
1312></DT
1313><DT
1314>A.172. <A
1315HREF="#AEN3019"
1316>llOverMyLand</A
1317></DT
1318><DT
1319>A.173. <A
1320HREF="#AEN3031"
1321>llParcelMediaCommandList</A
1322></DT
1323><DT
1324>A.174. <A
1325HREF="#AEN3091"
1326>llParcelMediaQuery</A
1327></DT
1328><DT
1329>A.175. <A
1330HREF="#AEN3105"
1331>llParseString2List</A
1332></DT
1333><DT
1334>A.176. <A
1335HREF="#AEN3127"
1336>llParseStringKeepNulls</A
1337></DT
1338><DT
1339>A.177. <A
1340HREF="#AEN3149"
1341>llParticleSystem</A
1342></DT
1343><DT
1344>A.178. <A
1345HREF="#AEN3162"
1346>llPassCollisions</A
1347></DT
1348><DT
1349>A.179. <A
1350HREF="#AEN3173"
1351>llPassTouches</A
1352></DT
1353><DT
1354>A.180. <A
1355HREF="#AEN3184"
1356>llPlaySound</A
1357></DT
1358><DT
1359>A.181. <A
1360HREF="#AEN3198"
1361>llPlaySoundSlave</A
1362></DT
1363><DT
1364>A.182. <A
1365HREF="#AEN3210"
1366>llPointAt</A
1367></DT
1368><DT
1369>A.183. <A
1370HREF="#AEN3220"
1371>llPow</A
1372></DT
1373><DT
1374>A.184. <A
1375HREF="#AEN3233"
1376>llPreloadSound</A
1377></DT
1378><DT
1379>A.185. <A
1380HREF="#AEN3243"
1381>llPushObject</A
1382></DT
1383><DT
1384>A.186. <A
1385HREF="#AEN3261"
1386>llReleaseControls</A
1387></DT
1388><DT
1389>A.187. <A
1390HREF="#AEN3271"
1391>llRemoteDataReply</A
1392></DT
1393><DT
1394>A.188. <A
1395HREF="#AEN3284"
1396>llRemoteDataSetRegion</A
1397></DT
1398><DT
1399>A.189. <A
1400HREF="#AEN3292"
1401>llRemoteLoadScript</A
1402></DT
1403><DT
1404>A.190. <A
1405HREF="#AEN3300"
1406>llRemoteLoadScriptPin</A
1407></DT
1408><DT
1409>A.191. <A
1410HREF="#AEN3325"
1411>llRemoveInventory</A
1412></DT
1413><DT
1414>A.192. <A
1415HREF="#AEN3335"
1416>llRemoveVehicleFlags</A
1417></DT
1418><DT
1419>A.193. <A
1420HREF="#AEN3346"
1421>llRequestAgentData</A
1422></DT
1423><DT
1424>A.194. <A
1425HREF="#AEN3363"
1426>llRequestInventoryData</A
1427></DT
1428><DT
1429>A.195. <A
1430HREF="#AEN3375"
1431>llRequestPermissions</A
1432></DT
1433><DT
1434>A.196. <A
1435HREF="#AEN3391"
1436>llRequestSimulatorData</A
1437></DT
1438><DT
1439>A.197. <A
1440HREF="#AEN3408"
1441>llResetScript</A
1442></DT
1443><DT
1444>A.198. <A
1445HREF="#AEN3416"
1446>llResetOtherScript</A
1447></DT
1448><DT
1449>A.199. <A
1450HREF="#AEN3426"
1451>llResetTime</A
1452></DT
1453><DT
1454>A.200. <A
1455HREF="#AEN3434"
1456>llRezAtRoot</A
1457></DT
1458><DT
1459>A.201. <A
1460HREF="#AEN3461"
1461>llRezObject</A
1462></DT
1463><DT
1464>A.202. <A
1465HREF="#AEN3486"
1466>llRot2Angle</A
1467></DT
1468><DT
1469>A.203. <A
1470HREF="#AEN3496"
1471>llRot2Axis</A
1472></DT
1473><DT
1474>A.204. <A
1475HREF="#AEN3506"
1476>llRot2Euler</A
1477></DT
1478><DT
1479>A.205. <A
1480HREF="#AEN3516"
1481>llRot2Fwd</A
1482></DT
1483><DT
1484>A.206. <A
1485HREF="#AEN3526"
1486>llRot2Left</A
1487></DT
1488><DT
1489>A.207. <A
1490HREF="#AEN3536"
1491>llRot2Up</A
1492></DT
1493><DT
1494>A.208. <A
1495HREF="#AEN3546"
1496>llRotBetween</A
1497></DT
1498><DT
1499>A.209. <A
1500HREF="#AEN3559"
1501>llRotLookAt</A
1502></DT
1503><DT
1504>A.210. <A
1505HREF="#AEN3579"
1506>llRotTarget</A
1507></DT
1508><DT
1509>A.211. <A
1510HREF="#AEN3593"
1511>llRotTargetRemove</A
1512></DT
1513><DT
1514>A.212. <A
1515HREF="#AEN3603"
1516>llRotateTexture</A
1517></DT
1518><DT
1519>A.213. <A
1520HREF="#AEN3618"
1521>llRound</A
1522></DT
1523><DT
1524>A.214. <A
1525HREF="#AEN3628"
1526>llSameGroup</A
1527></DT
1528><DT
1529>A.215. <A
1530HREF="#AEN3640"
1531>llSay</A
1532></DT
1533><DT
1534>A.216. <A
1535HREF="#AEN3654"
1536>llScaleTexture</A
1537></DT
1538><DT
1539>A.217. <A
1540HREF="#AEN3671"
1541>llScriptDanger</A
1542></DT
1543><DT
1544>A.218. <A
1545HREF="#AEN3680"
1546>llSendRemoteData</A
1547></DT
1548><DT
1549>A.219. <A
1550HREF="#AEN3693"
1551>llSensor</A
1552></DT
1553><DT
1554>A.220. <A
1555HREF="#AEN3720"
1556>llSensorRemove</A
1557></DT
1558><DT
1559>A.221. <A
1560HREF="#AEN3728"
1561>llSensorRepeat</A
1562></DT
1563><DT
1564>A.222. <A
1565HREF="#AEN3758"
1566>llSetAlpha</A
1567></DT
1568><DT
1569>A.223. <A
1570HREF="#AEN3773"
1571>llSetBuoyancy</A
1572></DT
1573><DT
1574>A.224. <A
1575HREF="#AEN3782"
1576>llSetCameraAtOffset</A
1577></DT
1578><DT
1579>A.225. <A
1580HREF="#AEN3791"
1581>llSetClickAction</A
1582></DT
1583><DT
1584>A.226. <A
1585HREF="#AEN3800"
1586>llForceMouselook</A
1587></DT
1588><DT
1589>A.227. <A
1590HREF="#AEN3809"
1591>llSetCameraEyeOffset</A
1592></DT
1593><DT
1594>A.228. <A
1595HREF="#AEN3818"
1596>llSetColor</A
1597></DT
1598><DT
1599>A.229. <A
1600HREF="#AEN3832"
1601>llSetDamage</A
1602></DT
1603><DT
1604>A.230. <A
1605HREF="#AEN3841"
1606>llSetForce</A
1607></DT
1608><DT
1609>A.231. <A
1610HREF="#AEN3855"
1611>llSetForceAndTorque</A
1612></DT
1613><DT
1614>A.232. <A
1615HREF="#AEN3872"
1616>llSetHoverHeight</A
1617></DT
1618><DT
1619>A.233. <A
1620HREF="#AEN3887"
1621>llSetLinkAlpha</A
1622></DT
1623><DT
1624>A.234. <A
1625HREF="#AEN3906"
1626>llSetLinkColor</A
1627></DT
1628><DT
1629>A.235. <A
1630HREF="#AEN3925"
1631>llSetLinkPrimitiveParams</A
1632></DT
1633><DT
1634>A.236. <A
1635HREF="#AEN3941"
1636>llSetLinkTexture</A
1637></DT
1638><DT
1639>A.237. <A
1640HREF="#AEN3960"
1641>llSetLocalRot</A
1642></DT
1643><DT
1644>A.238. <A
1645HREF="#AEN3969"
1646>llSetObjectDesc</A
1647></DT
1648><DT
1649>A.239. <A
1650HREF="#AEN3979"
1651>llSetObjectName</A
1652></DT
1653><DT
1654>A.240. <A
1655HREF="#AEN3989"
1656>llSetParcelMusicURL</A
1657></DT
1658><DT
1659>A.241. <A
1660HREF="#AEN3999"
1661>llSetPayPrice</A
1662></DT
1663><DT
1664>A.242. <A
1665HREF="#AEN4011"
1666>llSetPos</A
1667></DT
1668><DT
1669>A.243. <A
1670HREF="#AEN4020"
1671>llSetPrimitiveParams</A
1672></DT
1673><DT
1674>A.244. <A
1675HREF="#AEN4034"
1676>llSetRemoteScriptAccessPin</A
1677></DT
1678><DT
1679>A.245. <A
1680HREF="#AEN4043"
1681>llSetRot</A
1682></DT
1683><DT
1684>A.246. <A
1685HREF="#AEN4052"
1686>llSetScale</A
1687></DT
1688><DT
1689>A.247. <A
1690HREF="#AEN4061"
1691>llSetScriptState</A
1692></DT
1693><DT
1694>A.248. <A
1695HREF="#AEN4072"
1696>llSetSitText</A
1697></DT
1698><DT
1699>A.249. <A
1700HREF="#AEN4082"
1701>llSetSoundQueueing</A
1702></DT
1703><DT
1704>A.250. <A
1705HREF="#AEN4095"
1706>llSetStatus</A
1707></DT
1708><DT
1709>A.251. <A
1710HREF="#AEN4110"
1711>llSetText</A
1712></DT
1713><DT
1714>A.252. <A
1715HREF="#AEN4126"
1716>llSetTexture</A
1717></DT
1718><DT
1719>A.253. <A
1720HREF="#AEN4140"
1721>llSetTextureAnim</A
1722></DT
1723><DT
1724>A.254. <A
1725HREF="#AEN4188"
1726>llSetTimerEvent</A
1727></DT
1728><DT
1729>A.255. <A
1730HREF="#AEN4200"
1731>llSetTorque</A
1732></DT
1733><DT
1734>A.256. <A
1735HREF="#AEN4214"
1736>llSetTouchText</A
1737></DT
1738><DT
1739>A.257. <A
1740HREF="#AEN4224"
1741>llSetVehicleFlags</A
1742></DT
1743><DT
1744>A.258. <A
1745HREF="#AEN4235"
1746>llSetVehicleFloatParam</A
1747></DT
1748><DT
1749>A.259. <A
1750HREF="#AEN4249"
1751>llSetVehicleType</A
1752></DT
1753><DT
1754>A.260. <A
1755HREF="#AEN4260"
1756>llSetVehicleRotationParam</A
1757></DT
1758><DT
1759>A.261. <A
1760HREF="#AEN4274"
1761>llSetVehicleVectorParam</A
1762></DT
1763><DT
1764>A.262. <A
1765HREF="#AEN4288"
1766>llShout</A
1767></DT
1768><DT
1769>A.263. <A
1770HREF="#AEN4302"
1771>llSin</A
1772></DT
1773><DT
1774>A.264. <A
1775HREF="#AEN4312"
1776>llSitTarget</A
1777></DT
1778><DT
1779>A.265. <A
1780HREF="#AEN4325"
1781>llSleep</A
1782></DT
1783><DT
1784>A.266. <A
1785HREF="#AEN4335"
1786>llSqrt</A
1787></DT
1788><DT
1789>A.267. <A
1790HREF="#AEN4346"
1791>llStartAnimation</A
1792></DT
1793><DT
1794>A.268. <A
1795HREF="#AEN4578"
1796>llStopAnimation</A
1797></DT
1798><DT
1799>A.269. <A
1800HREF="#AEN4588"
1801>llStopHover</A
1802></DT
1803><DT
1804>A.270. <A
1805HREF="#AEN4596"
1806>llStopLookAt</A
1807></DT
1808><DT
1809>A.271. <A
1810HREF="#AEN4604"
1811>llStopMoveToTarget</A
1812></DT
1813><DT
1814>A.272. <A
1815HREF="#AEN4612"
1816>llStopPointAt</A
1817></DT
1818><DT
1819>A.273. <A
1820HREF="#AEN4620"
1821>llStopSound</A
1822></DT
1823><DT
1824>A.274. <A
1825HREF="#AEN4631"
1826>llStringLength</A
1827></DT
1828><DT
1829>A.275. <A
1830HREF="#AEN4641"
1831>llSubStringIndex</A
1832></DT
1833><DT
1834>A.276. <A
1835HREF="#AEN4652"
1836>llStringToBase64</A
1837></DT
1838><DT
1839>A.277. <A
1840HREF="#AEN4661"
1841>llTakeControls</A
1842></DT
1843><DT
1844>A.278. <A
1845HREF="#AEN4678"
1846>llTan</A
1847></DT
1848><DT
1849>A.279. <A
1850HREF="#AEN4688"
1851>llTarget</A
1852></DT
1853><DT
1854>A.280. <A
1855HREF="#AEN4701"
1856>llTargetOmega</A
1857></DT
1858><DT
1859>A.281. <A
1860HREF="#AEN4718"
1861>llTargetRemove</A
1862></DT
1863><DT
1864>A.282. <A
1865HREF="#AEN4728"
1866>llTeleportAgentHome</A
1867></DT
1868><DT
1869>A.283. <A
1870HREF="#AEN4737"
1871>llToLower</A
1872></DT
1873><DT
1874>A.284. <A
1875HREF="#AEN4746"
1876>llToUpper</A
1877></DT
1878><DT
1879>A.285. <A
1880HREF="#AEN4756"
1881>llTriggerSound</A
1882></DT
1883><DT
1884>A.286. <A
1885HREF="#AEN4770"
1886>llTriggerSoundLimited</A
1887></DT
1888><DT
1889>A.287. <A
1890HREF="#AEN4790"
1891>llUnescapeURL</A
1892></DT
1893><DT
1894>A.288. <A
1895HREF="#AEN4800"
1896>llUnSit</A
1897></DT
1898><DT
1899>A.289. <A
1900HREF="#AEN4810"
1901>llVecDist</A
1902></DT
1903><DT
1904>A.290. <A
1905HREF="#AEN4823"
1906>llVecMag</A
1907></DT
1908><DT
1909>A.291. <A
1910HREF="#AEN4833"
1911>llVecNorm</A
1912></DT
1913><DT
1914>A.292. <A
1915HREF="#AEN4843"
1916>llVolumeDetect</A
1917></DT
1918><DT
1919>A.293. <A
1920HREF="#AEN4852"
1921>llWater</A
1922></DT
1923><DT
1924>A.294. <A
1925HREF="#AEN4862"
1926>llWhisper</A
1927></DT
1928><DT
1929>A.295. <A
1930HREF="#AEN4876"
1931>llWind</A
1932></DT
1933><DT
1934>A.296. <A
1935HREF="#AEN4886"
1936>llXorBase64Strings</A
1937></DT
1938></DL
1939></DD
1940><DT
1941>B. <A
1942HREF="#AEN4899"
1943>Events</A
1944></DT
1945><DD
1946><DL
1947><DT
1948>B.1. <A
1949HREF="#AEN4902"
1950>at_rot_target</A
1951></DT
1952><DT
1953>B.2. <A
1954HREF="#AEN4916"
1955>at_target</A
1956></DT
1957><DT
1958>B.3. <A
1959HREF="#AEN4930"
1960>attach</A
1961></DT
1962><DT
1963>B.4. <A
1964HREF="#AEN4940"
1965>changed</A
1966></DT
1967><DT
1968>B.5. <A
1969HREF="#AEN4951"
1970>collision</A
1971></DT
1972><DT
1973>B.6. <A
1974HREF="#AEN4961"
1975>collision_end</A
1976></DT
1977><DT
1978>B.7. <A
1979HREF="#AEN4971"
1980>collision_start</A
1981></DT
1982><DT
1983>B.8. <A
1984HREF="#AEN4981"
1985>control</A
1986></DT
1987><DT
1988>B.9. <A
1989HREF="#AEN4997"
1990>dataserver</A
1991></DT
1992><DT
1993>B.10. <A
1994HREF="#AEN5012"
1995>email</A
1996></DT
1997><DT
1998>B.11. <A
1999HREF="#AEN5030"
2000>land_collision</A
2001></DT
2002><DT
2003>B.12. <A
2004HREF="#AEN5039"
2005>land_collision_end</A
2006></DT
2007><DT
2008>B.13. <A
2009HREF="#AEN5048"
2010>land_collision_start</A
2011></DT
2012><DT
2013>B.14. <A
2014HREF="#AEN5057"
2015>link_message</A
2016></DT
2017><DT
2018>B.15. <A
2019HREF="#AEN5073"
2020>listen</A
2021></DT
2022><DT
2023>B.16. <A
2024HREF="#AEN5092"
2025>money</A
2026></DT
2027><DT
2028>B.17. <A
2029HREF="#AEN5105"
2030>moving_end</A
2031></DT
2032><DT
2033>B.18. <A
2034HREF="#AEN5113"
2035>moving_start</A
2036></DT
2037><DT
2038>B.19. <A
2039HREF="#AEN5121"
2040>no_sensor</A
2041></DT
2042><DT
2043>B.20. <A
2044HREF="#AEN5130"
2045>not_at_rot_target</A
2046></DT
2047><DT
2048>B.21. <A
2049HREF="#AEN5139"
2050>not_at_target</A
2051></DT
2052><DT
2053>B.22. <A
2054HREF="#AEN5148"
2055>object_rez</A
2056></DT
2057><DT
2058>B.23. <A
2059HREF="#AEN5159"
2060>on_rez</A
2061></DT
2062><DT
2063>B.24. <A
2064HREF="#AEN5171"
2065>run_time_permissions</A
2066></DT
2067><DT
2068>B.25. <A
2069HREF="#AEN5183"
2070>sensor</A
2071></DT
2072><DT
2073>B.26. <A
2074HREF="#AEN5195"
2075>state_entry</A
2076></DT
2077><DT
2078>B.27. <A
2079HREF="#AEN5203"
2080>state_exit</A
2081></DT
2082><DT
2083>B.28. <A
2084HREF="#AEN5211"
2085>timer</A
2086></DT
2087><DT
2088>B.29. <A
2089HREF="#AEN5220"
2090>touch</A
2091></DT
2092><DT
2093>B.30. <A
2094HREF="#AEN5231"
2095>touch_end</A
2096></DT
2097><DT
2098>B.31. <A
2099HREF="#AEN5242"
2100>touch_start</A
2101></DT
2102><DT
2103>B.32. <A
2104HREF="#AEN5253"
2105>remote_data</A
2106></DT
2107></DL
2108></DD
2109><DT
2110>C. <A
2111HREF="#AEN5292"
2112>Constants</A
2113></DT
2114><DD
2115><DL
2116><DT
2117>C.1. <A
2118HREF="#AEN5295"
2119>Boolean Constants</A
2120></DT
2121><DT
2122>C.2. <A
2123HREF="#AEN5304"
2124>Status Constants</A
2125></DT
2126><DT
2127>C.3. <A
2128HREF="#AEN5338"
2129>Object Type Constants</A
2130></DT
2131><DT
2132>C.4. <A
2133HREF="#AEN5360"
2134>Permission Constants</A
2135></DT
2136><DT
2137>C.5. <A
2138HREF="#AEN5411"
2139>Inventory Constants</A
2140></DT
2141><DT
2142>C.6. <A
2143HREF="#AEN5434"
2144>Pay Price Constants</A
2145></DT
2146><DT
2147>C.7. <A
2148HREF="#AEN5448"
2149>Attachment Constants</A
2150></DT
2151><DT
2152>C.8. <A
2153HREF="#AEN5574"
2154>Land Constants</A
2155></DT
2156><DT
2157>C.9. <A
2158HREF="#AEN5616"
2159>Link Constants</A
2160></DT
2161><DT
2162>C.10. <A
2163HREF="#AEN5643"
2164>Control Constants</A
2165></DT
2166><DT
2167>C.11. <A
2168HREF="#AEN5690"
2169>Change Constants</A
2170></DT
2171><DT
2172>C.12. <A
2173HREF="#AEN5733"
2174>Type Constants</A
2175></DT
2176><DT
2177>C.13. <A
2178HREF="#AEN5767"
2179>Agent Info Constants</A
2180></DT
2181><DT
2182>C.14. <A
2183HREF="#AEN5817"
2184>Texture Animation
2185 Constants</A
2186></DT
2187><DT
2188>C.15. <A
2189HREF="#AEN5851"
2190>Particle System Constants</A
2191></DT
2192><DT
2193>C.16. <A
2194HREF="#AEN6005"
2195>Agent Data Constants</A
2196></DT
2197><DT
2198>C.17. <A
2199HREF="#AEN6041"
2200>Float Constants</A
2201></DT
2202><DT
2203>C.18. <A
2204HREF="#AEN6070"
2205>Key Constant</A
2206></DT
2207><DT
2208>C.19. <A
2209HREF="#AEN6073"
2210>Miscellaneous Integer Constants</A
2211></DT
2212><DT
2213>C.20. <A
2214HREF="#AEN6076"
2215>Miscellaneous String
2216 Constants</A
2217></DT
2218><DT
2219>C.21. <A
2220HREF="#AEN6080"
2221>Vector Constant</A
2222></DT
2223><DT
2224>C.22. <A
2225HREF="#AEN6083"
2226>Rotation Constant</A
2227></DT
2228><DT
2229>C.23. <A
2230HREF="#AEN6086"
2231>Simulator Data Constants</A
2232></DT
2233><DT
2234>C.24. <A
2235HREF="#AEN6112"
2236>Vehicle Parameters</A
2237></DT
2238><DT
2239>C.25. <A
2240HREF="#AEN6231"
2241>Vehicle Flags</A
2242></DT
2243><DT
2244>C.26. <A
2245HREF="#AEN6288"
2246>Vehicle Types</A
2247></DT
2248><DT
2249>C.27. <A
2250HREF="#AEN6323"
2251>Primitive Constants</A
2252></DT
2253><DT
2254>C.28. <A
2255HREF="#AEN6409"
2256>XML-RPC Constants</A
2257></DT
2258><DT
2259>C.29. <A
2260HREF="#AEN6412"
2261>Permission Mask Constants</A
2262></DT
2263><DT
2264>C.30. <A
2265HREF="#AEN6459"
2266>Parcel Media Constants</A
2267></DT
2268><DT
2269>C.31. <A
2270HREF="#AEN6521"
2271>Click Action Constants</A
2272></DT
2273></DL
2274></DD
2275></DL
2276></DIV
2277><DIV
2278CLASS="LOT"
2279><DL
2280CLASS="LOT"
2281><DT
2282><B
2283>List of Tables</B
2284></DT
2285><DT
2286>3-1. <A
2287HREF="#AEN148"
2288>Binary Arithmetic Operators</A
2289></DT
2290><DT
2291>3-2. <A
2292HREF="#AEN188"
2293>Boolean Operators</A
2294></DT
2295><DT
2296>3-3. <A
2297HREF="#AEN220"
2298>Bitwise Operators</A
2299></DT
2300><DT
2301>3-4. <A
2302HREF="#AEN258"
2303>Vector Arithmetic Operators</A
2304></DT
2305><DT
2306>3-5. <A
2307HREF="#AEN282"
2308>Rotation Arithmetic Operators</A
2309></DT
2310><DT
2311>6-1. <A
2312HREF="#AEN456"
2313>Trigonometry Functions</A
2314></DT
2315><DT
2316>6-2. <A
2317HREF="#AEN505"
2318>Vector Functions</A
2319></DT
2320><DT
2321>6-3. <A
2322HREF="#AEN521"
2323>Rotation Functions</A
2324></DT
2325><DT
2326>7-1. <A
2327HREF="#AEN565"
2328>String Functions</A
2329></DT
2330><DT
2331>8-1. <A
2332HREF="#AEN609"
2333>List Functions</A
2334></DT
2335><DT
2336>9-1. <A
2337HREF="#AEN674"
2338>In World Functions</A
2339></DT
2340><DT
2341>9-2. <A
2342HREF="#AEN699"
2343>Messaging Functions</A
2344></DT
2345><DT
2346>10-1. <A
2347HREF="#AEN719"
2348>Inventory Functions</A
2349></DT
2350></DL
2351></DIV
2352><DIV
2353CLASS="chapter"
2354><HR><H1
2355><A
2356NAME="AEN27"
2357></A
2358>Chapter 1. Introduction</H1
2359><P
2360>The Linden Scripting Language (LSL) is a simple, powerful
2361 language used to attach behaviors to the objects found in Second
2362 Life. It follows the familiar syntax of a c/Java style language,
2363 with an implicit state machine for every script.</P
2364><P
2365>Multiple scripts may also be attached to the same object,
2366 allowing a style of small, single-function scripts to evolve. This
2367 leads to scripts that perform specific functions ("hover", "follow",
2368 etc.) and allows them to be combined to form new behaviors.</P
2369><P
2370>The text of the script is compiled into an executable byte
2371 code, much like Java. This byte code is then run within a virtual
2372 machine on the simulator. Each script receives a time slice of the
2373 total simulator time allocated to scripts, so a simulator with many
2374 scripts would allow each individual script less time rather than
2375 degrading its own performance. In addition, each script executes
2376 within its own chunk of memory, preventing scripts from writing into
2377 protected simulator memory or into other scripts, making it much
2378 harder for scripts to crash the simulator.</P
2379><P
2380>This tutorial introduces the reader to the basic features of
2381 LSL, how to edit and apply your scripts, and a complete reference
2382 for standard linden constants, events, and library functions.</P
2383></DIV
2384><DIV
2385CLASS="chapter"
2386><HR><H1
2387><A
2388NAME="AEN33"
2389></A
2390>Chapter 2. Getting Started</H1
2391><P
2392>You're probably wondering what you can do with LSL, and how
2393 quickly you can do it. We'll start with some simple examples, dissect
2394 them, and introduce you the script development process while
2395 we're at it.</P
2396><DIV
2397CLASS="section"
2398><HR><H2
2399CLASS="section"
2400><A
2401NAME="AEN36"
2402>2.1. Hello Avatar</A
2403></H2
2404><P
2405>Continuing a long tradition of getting started by looking at
2406 a script that says "Hello", we'll do just that. Though obviously
2407 not a particularly useful example on it's own, this example will
2408 introduce us to:</P
2409><P
2410></P
2411><UL
2412><LI
2413><P
2414>Creating a basic script</P
2415></LI
2416><LI
2417><P
2418>Script states</P
2419></LI
2420><LI
2421><P
2422>Calling functions</P
2423></LI
2424><LI
2425><P
2426>Script events</P
2427></LI
2428><LI
2429><P
2430>Applying a script to an object</P
2431></LI
2432></UL
2433><DIV
2434CLASS="section"
2435><HR><H3
2436CLASS="section"
2437><A
2438NAME="AEN50"
2439>2.1.1. Creating the Script</A
2440></H3
2441><P
2442>Start by opening your inventory and selecting 'Create|New
2443 Script' from the inventory pull down menu. This will create an
2444 empty script called 'New Script' in your 'Scripts'
2445 folder. Double click on the text or icon of the script to open
2446 the script in the built in editor. When you open the script, the
2447 viewer will automatically insert a basic skeleton for lsl. It
2448 should look like:</P
2449><P
2450><PRE
2451CLASS="programlisting"
2452>&#13;default
2453{
2454 state_entry()
2455 {
2456 llSay(0, "Hello, Avatar!");
2457 }
2458
2459 touch_start(integer total_number)
2460 {
2461 llSay(0, "Touched.");
2462 }
2463}
2464 </PRE
2465></P
2466><P
2467>A casual inspection of this script reveals that this script
2468 probably says 'Hello, Avatar!' when it enters some state, and it
2469 says 'Touched.' when it is touched. But since this is also
2470 probably the first time you have seen a script we'll dissect this
2471 short listing, explaining each segment individually.</P
2472></DIV
2473><DIV
2474CLASS="section"
2475><HR><H3
2476CLASS="section"
2477><A
2478NAME="AEN56"
2479>2.1.2. Default State</A
2480></H3
2481><P
2482><DIV
2483CLASS="informalexample"
2484><P
2485></P
2486><A
2487NAME="AEN59"
2488></A
2489><PRE
2490CLASS="programlisting"
2491>&#13;default
2492{
2493...
2494}
2495 </PRE
2496><P
2497></P
2498></DIV
2499></P
2500><P
2501>All LSL scripts have a simple implicit state machine with
2502 one or more states. All scripts must have a default state, so
2503 if there is only one state, it will be the 'default'
2504 state. When a script is first started or reset, it will start
2505 out in the default state.</P
2506><P
2507>The default state is declared by placing the default at
2508 the root level of the document, and marking the beginning with
2509 an open brace '{' and ending with a close brace '}'. Because of
2510 it's privileged status, you do not declare that it is fact a
2511 state like you normally would with other states.</P
2512><P
2513>Every time you enter a state, the script engine will
2514 automatically call the state_entry() event and execute the code
2515 found there. On state exit, the script engine will automatically
2516 call the state_exit() event before calling the next state's
2517 state_entry handler. In our example, we call the
2518 <A
2519HREF="#AEN3640"
2520>llSay()</A
2521>
2522 function in state_entry() and do not bother to define a
2523 state_exit() handler. the state entry and exit handlers are a
2524 convenient place to initialize state data and clean up state
2525 specific data such as listen event callback.</P
2526><P
2527>You can read more about the default state, and how to
2528 create and utilize other states in the <A
2529HREF="#AEN427"
2530>states chapter</A
2531>.</P
2532></DIV
2533><DIV
2534CLASS="section"
2535><HR><H3
2536CLASS="section"
2537><A
2538NAME="AEN67"
2539>2.1.3. Functions</A
2540></H3
2541><P
2542>The language comes with well over 200 <A
2543HREF="#AEN999"
2544>built in functions</A
2545> which allow scripts and
2546 objects to interact with their environment. All of the built in
2547 functions start with 'll'.</P
2548><P
2549>The example calls the <A
2550HREF="#AEN3640"
2551>llSay()</A
2552>
2553 function twice, which is used to emit text on the specified channel.
2554 </P
2555><DIV
2556CLASS="funcsynopsis"
2557><P
2558></P
2559><A
2560NAME="AEN73"
2561></A
2562><P
2563><CODE
2564><CODE
2565CLASS="FUNCDEF"
2566>llSay</CODE
2567>(
2568 integer channel
2569 string text
2570 );</CODE
2571></P
2572><P
2573></P
2574></DIV
2575><P
2576>Say text on channel. Channel 0 is the public chat channel
2577 that all avatars see as chat text. Channels 1 to 2,147,483,648
2578 are private channels that aren't sent to avatars but other
2579 scripts can listen for.</P
2580><P
2581>You can define your own functions as long as the name does
2582 not conflict with a reserved word, built in constant, or built
2583 in function.</P
2584></DIV
2585><DIV
2586CLASS="section"
2587><HR><H3
2588CLASS="section"
2589><A
2590NAME="AEN82"
2591>2.1.4. Touch Event</A
2592></H3
2593><P
2594><DIV
2595CLASS="informalexample"
2596><P
2597></P
2598><A
2599NAME="AEN85"
2600></A
2601><PRE
2602CLASS="programlisting"
2603>&#13;touch_start(integer total_number)
2604{
2605 llSay(0, "Touched.");
2606}
2607 </PRE
2608><P
2609></P
2610></DIV
2611></P
2612><P
2613>There are many <A
2614HREF="#AEN4899"
2615>events</A
2616> that can
2617 be detected in your scripts by declaring a handler. The
2618 <A
2619HREF="#AEN5242"
2620> touch_start()</A
2621>
2622 event is raised when a
2623 user touches the object through the user interface.</P
2624></DIV
2625><DIV
2626CLASS="section"
2627><HR><H3
2628CLASS="section"
2629><A
2630NAME="AEN90"
2631>2.1.5. Try it Out</A
2632></H3
2633><P
2634>Now that we have seen the default script, and examined it
2635 in some detail, it is time to see the script in action. Save
2636 the script by clicking on <SPAN
2637CLASS="guibutton"
2638>Save</SPAN
2639>. During
2640 the save process, the editor will save the text of the script
2641 and compile the script into bytecode and then save that. When
2642 you see message 'Compile successful!' in the preview window, you
2643 know the compile and save is done.</P
2644><P
2645>To test the script you will have to apply it to an object
2646 in the world. Create a new object in the world by
2647 <SPAN
2648CLASS="mousebutton"
2649>context clicking</SPAN
2650> in the main world
2651 view and selecting <SPAN
2652CLASS="guimenu"
2653>Create</SPAN
2654>. When the wand
2655 appears, you can create a simple primitive by
2656 <SPAN
2657CLASS="mousebutton"
2658>clicking</SPAN
2659> in the world. Once the
2660 object appears, you can drag your newly created script onto the
2661 object to start the script.</P
2662><P
2663>Soon after dragging the script onto the object, you will
2664 see the message <SAMP
2665CLASS="computeroutput"
2666>Object: Hello
2667 Avatar!</SAMP
2668></P
2669><P
2670>Make sure the touch event is working by
2671 <SPAN
2672CLASS="mousebutton"
2673>clicking</SPAN
2674> on the object. You should
2675 see the message <SAMP
2676CLASS="computeroutput"
2677>Touched printed into the chat
2678 history.</SAMP
2679></P
2680></DIV
2681></DIV
2682><DIV
2683CLASS="section"
2684><HR><H2
2685CLASS="section"
2686><A
2687NAME="AEN103"
2688>2.2. Using The Built-In Editor</A
2689></H2
2690><P
2691>The built in editor comes with most of the typical features
2692 you would expect from a basic text editor. Highlight text with the
2693 mouse, or by holding down the shift key while using the arrow
2694 keys. You can cut, copy, paste, and delete your selection using
2695 the 'Edit' pull down menu or by pressing the usual shortcut
2696 key.</P
2697></DIV
2698><DIV
2699CLASS="section"
2700><HR><H2
2701CLASS="section"
2702><A
2703NAME="AEN106"
2704>2.3. Using Alternative Editors</A
2705></H2
2706><P
2707>Since the built-in editor supports pasting text from the
2708 clipboard, you can employ a different editor to edit your scripts,
2709 copying them into Second Life when you're ready to save them.</P
2710></DIV
2711></DIV
2712><DIV
2713CLASS="chapter"
2714><HR><H1
2715><A
2716NAME="AEN109"
2717></A
2718>Chapter 3. Basics</H1
2719><P
2720>Now that we have seen a very simple script in action, we need
2721 to look at the our toolchest for writing scripts. The next set of
2722 tools we will consider are the basic building blocks for programming
2723 a script, and will be used in every non-trivial script you write.</P
2724><DIV
2725CLASS="section"
2726><HR><H2
2727CLASS="section"
2728><A
2729NAME="AEN112"
2730>3.1. Comments</A
2731></H2
2732><P
2733>Commenting your scripts is a good idea, and will help when
2734 you update and modify the script, or when you adapt parts of it
2735 into other scripts. Unless the meaning is obvious, you should add
2736 comments:</P
2737><P
2738><P
2739></P
2740><UL
2741><LI
2742><P
2743>at the start of the script to explain the
2744 purpose of the script</P
2745></LI
2746><LI
2747><P
2748>before every global variable to describe what
2749 it holds</P
2750></LI
2751><LI
2752><P
2753>before every global function to describe what
2754 it does</P
2755></LI
2756><LI
2757><P
2758>sprinkled through your script wherever the code
2759 solves a problem that took you more than a few minutes to
2760 figure out.</P
2761></LI
2762></UL
2763></P
2764><P
2765>LSL uses Java/C++ style single line comments.</P
2766><P
2767><DIV
2768CLASS="informalexample"
2769><P
2770></P
2771><A
2772NAME="AEN127"
2773></A
2774><PRE
2775CLASS="programlisting"
2776>&#13;// This script toggles a the rotation of an object
2777
2778// g_is_rotating stores the current state of the rotation. TRUE is
2779// rotating, FALSE otherwise.
2780integer g_is_rotating = FALSE;
2781default
2782{
2783 // toggle state during the touch handler
2784 touch(integer num)
2785 {
2786 if(g_is_rotating)
2787 {
2788 // turn off rotation
2789 llTargetOmega(&#60;0,0,1&#62;, 0, 0);
2790 g_is_rotating = FALSE;
2791 }
2792 else
2793 {
2794 // rotate around the positive z axis - up.
2795 llTargetOmega(&#60;0,0,1&#62;, 4, 1);
2796 g_is_rotating = TRUE;
2797 }
2798 }
2799}
2800 </PRE
2801><P
2802></P
2803></DIV
2804></P
2805></DIV
2806><DIV
2807CLASS="section"
2808><HR><H2
2809CLASS="section"
2810><A
2811NAME="AEN129"
2812>3.2. Arithmetic Operations</A
2813></H2
2814><P
2815>Most of the common arithmetic operations are supported in
2816 lsl, and follow the C/Java syntax.</P
2817><DIV
2818CLASS="section"
2819><HR><H3
2820CLASS="section"
2821><A
2822NAME="AEN132"
2823>3.2.1. Assignment</A
2824></H3
2825><P
2826>The most common arithmetic operation is assignment,
2827 denoted with the '=' sign. Loosely translated, it means, take
2828 what you find on the right hand side of the equal sign and
2829 assign it to the left hand side. Any expression that evaluates
2830 to a basic type can be used as the right hand side of an
2831 assignment, but the left hand side must be a normal
2832 variable.</P
2833><P
2834>All basic types support assignment '=', equality '==' and
2835 inequality '!=' operators.</P
2836><P
2837><DIV
2838CLASS="informalexample"
2839><P
2840></P
2841><A
2842NAME="AEN137"
2843></A
2844><PRE
2845CLASS="programlisting"
2846>&#13;// variables to hold a information about the target
2847key g_target;
2848vector g_target_postion;
2849float g_target_distance;
2850
2851// function that demonstrates assignment
2852set_globals(key target, vector pos)
2853{
2854 g_target = target;
2855 g_target_position = pos;
2856
2857 // assignment from the return value of a function
2858 vector my_pos = llGetPos();
2859 g_target_distance = llVecDist(g_target_position, my_pos);
2860}
2861 </PRE
2862><P
2863></P
2864></DIV
2865></P
2866></DIV
2867><DIV
2868CLASS="section"
2869><HR><H3
2870CLASS="section"
2871><A
2872NAME="AEN139"
2873>3.2.2. Hexadecimal Entry</A
2874></H3
2875><P
2876>Integers may be entered in hex form (e.g. 0xffff). For example:</P
2877><P
2878><DIV
2879CLASS="informalexample"
2880><P
2881></P
2882><A
2883NAME="AEN143"
2884></A
2885><PRE
2886CLASS="programlisting"
2887>&#13;integer Mask = 0xff; // Equivalent to integer Mask = 255;
2888integer Bit = 0x0100 // Equivalent to integer Mask = 256;
2889 </PRE
2890><P
2891></P
2892></DIV
2893></P
2894></DIV
2895><DIV
2896CLASS="section"
2897><HR><H3
2898CLASS="section"
2899><A
2900NAME="AEN145"
2901>3.2.3. Binary Arithmetic Operators</A
2902></H3
2903><P
2904>Binary arithmetic operators behave like a function call
2905 that accepts two parameters of the same type, and then return
2906 that type; however, the syntax is slightly different.</P
2907><DIV
2908CLASS="table"
2909><A
2910NAME="AEN148"
2911></A
2912><P
2913><B
2914>Table 3-1. Binary Arithmetic Operators</B
2915></P
2916><TABLE
2917BORDER="1"
2918CLASS="CALSTABLE"
2919><COL><COL><THEAD
2920><TR
2921><TH
2922>Operator</TH
2923><TH
2924>Meaning</TH
2925></TR
2926></THEAD
2927><TBODY
2928><TR
2929><TD
2930>+</TD
2931><TD
2932>Addition</TD
2933></TR
2934><TR
2935><TD
2936>-</TD
2937><TD
2938>Subtraction</TD
2939></TR
2940><TR
2941><TD
2942>*</TD
2943><TD
2944>Multiplication</TD
2945></TR
2946><TR
2947><TD
2948>/</TD
2949><TD
2950>Division</TD
2951></TR
2952><TR
2953><TD
2954>%</TD
2955><TD
2956>Modulo (remainder)</TD
2957></TR
2958><TR
2959><TD
2960>^</TD
2961><TD
2962>Exclusive OR</TD
2963></TR
2964><TR
2965><TD
2966>&#60;&#60;</TD
2967><TD
2968>Shift Left</TD
2969></TR
2970><TR
2971><TD
2972>&#62;&#62;</TD
2973><TD
2974>Shift Right</TD
2975></TR
2976></TBODY
2977></TABLE
2978></DIV
2979><P
2980>Where noted, each type may have a special interpretation
2981 of a binary arithmetic operator. See the <A
2982HREF="#AEN237"
2983>lsl types</A
2984> section for more
2985 details.</P
2986><P
2987><DIV
2988CLASS="informalexample"
2989><P
2990></P
2991><A
2992NAME="AEN183"
2993></A
2994><PRE
2995CLASS="programlisting"
2996>&#13; </PRE
2997><P
2998></P
2999></DIV
3000></P
3001></DIV
3002><DIV
3003CLASS="section"
3004><HR><H3
3005CLASS="section"
3006><A
3007NAME="AEN185"
3008>3.2.4. Boolean Operators</A
3009></H3
3010><P
3011></P
3012><DIV
3013CLASS="table"
3014><A
3015NAME="AEN188"
3016></A
3017><P
3018><B
3019>Table 3-2. Boolean Operators</B
3020></P
3021><TABLE
3022BORDER="1"
3023CLASS="CALSTABLE"
3024><COL><COL><THEAD
3025><TR
3026><TH
3027>Operator</TH
3028><TH
3029>Meaning</TH
3030></TR
3031></THEAD
3032><TBODY
3033><TR
3034><TD
3035>&#60;</TD
3036><TD
3037>Operator returns TRUE if the left hand side is less
3038 than the right hand side.</TD
3039></TR
3040><TR
3041><TD
3042>&#62;</TD
3043><TD
3044>Operator returns TRUE if the left hand side is greater
3045 than the right hand side.</TD
3046></TR
3047><TR
3048><TD
3049>&#60;=</TD
3050><TD
3051>Operator returns TRUE if the left hand side is less
3052 than or equal to the right hand side.</TD
3053></TR
3054><TR
3055><TD
3056>&#62;=</TD
3057><TD
3058>Operator returns TRUE if the left hand side is greater
3059 than or equal to the right hand side.</TD
3060></TR
3061><TR
3062><TD
3063>&#38;&#38;</TD
3064><TD
3065>Operator returns TRUE if the left hand side and right
3066 hand side are both true.</TD
3067></TR
3068><TR
3069><TD
3070>||</TD
3071><TD
3072>Operator returns TRUE if either the left hand or right
3073 hand side are true.</TD
3074></TR
3075><TR
3076><TD
3077>!</TD
3078><TD
3079>Unary operator returns the logical negation of the
3080 expression to the right.</TD
3081></TR
3082></TBODY
3083></TABLE
3084></DIV
3085></DIV
3086><DIV
3087CLASS="section"
3088><HR><H3
3089CLASS="section"
3090><A
3091NAME="AEN217"
3092>3.2.5. Bitwise Operators</A
3093></H3
3094><P
3095></P
3096><DIV
3097CLASS="table"
3098><A
3099NAME="AEN220"
3100></A
3101><P
3102><B
3103>Table 3-3. Bitwise Operators</B
3104></P
3105><TABLE
3106BORDER="1"
3107CLASS="CALSTABLE"
3108><COL><COL><THEAD
3109><TR
3110><TH
3111>Operator</TH
3112><TH
3113>Meaning</TH
3114></TR
3115></THEAD
3116><TBODY
3117><TR
3118><TD
3119>&#38;</TD
3120><TD
3121>Returns the bitwise and of the left and right hand
3122 side.</TD
3123></TR
3124><TR
3125><TD
3126>|</TD
3127><TD
3128>Returns the bitwise or of the left and right hand
3129 side.</TD
3130></TR
3131><TR
3132><TD
3133>~</TD
3134><TD
3135>Unary operator returns the bitwise complement of the
3136 expression to the right.</TD
3137></TR
3138></TBODY
3139></TABLE
3140></DIV
3141></DIV
3142></DIV
3143><DIV
3144CLASS="section"
3145><HR><H2
3146CLASS="section"
3147><A
3148NAME="AEN237"
3149>3.3. Types</A
3150></H2
3151><P
3152>Variables, return values, and parameters have type
3153 information. LSL provides a small set of basic types that are used
3154 throughout the language.</P
3155><P
3156></P
3157><DIV
3158CLASS="variablelist"
3159><P
3160><B
3161>LSL Types</B
3162></P
3163><DL
3164><DT
3165>integer</DT
3166><DD
3167><P
3168>A signed, 32-bit integer value with valid range from
3169 -2147483648 to 2147483647.</P
3170></DD
3171><DT
3172>float</DT
3173><DD
3174><P
3175>An IEEE 32-bit floating point value with
3176 values ranging from 1.175494351E-38 to
3177 3.402823466E+38.</P
3178></DD
3179><DT
3180>key</DT
3181><DD
3182><P
3183>A unique identifier that can be used to
3184 reference objects and agents in Second Life.</P
3185></DD
3186><DT
3187>vector</DT
3188><DD
3189><P
3190>3 floats that are used together as a single
3191 item. A vector can be used to represent a 3 dimensional
3192 position, direction, velocity, force, impulse, or a
3193 color. Each component can be accessed via '.x', '.y', and
3194 '.z'.</P
3195><DIV
3196CLASS="table"
3197><A
3198NAME="AEN258"
3199></A
3200><P
3201><B
3202>Table 3-4. Vector Arithmetic Operators</B
3203></P
3204><TABLE
3205BORDER="1"
3206CLASS="CALSTABLE"
3207><COL><COL><THEAD
3208><TR
3209><TH
3210>Operator</TH
3211><TH
3212>Meaning</TH
3213></TR
3214></THEAD
3215><TBODY
3216><TR
3217><TD
3218>+</TD
3219><TD
3220>Add two vectors together</TD
3221></TR
3222><TR
3223><TD
3224>-</TD
3225><TD
3226>Subtract one vector from another</TD
3227></TR
3228><TR
3229><TD
3230>*</TD
3231><TD
3232>Vector dot product</TD
3233></TR
3234><TR
3235><TD
3236>%</TD
3237><TD
3238>Vector cross product</TD
3239></TR
3240></TBODY
3241></TABLE
3242></DIV
3243></DD
3244><DT
3245>rotation</DT
3246><DD
3247><P
3248>4 floats that are used together as a single
3249 item to represent a rotation. This data is interpreted as a
3250 quaternion. Each component can be accessed via '.x', '.y',
3251 '.z', and '.s'.</P
3252><DIV
3253CLASS="table"
3254><A
3255NAME="AEN282"
3256></A
3257><P
3258><B
3259>Table 3-5. Rotation Arithmetic Operators</B
3260></P
3261><TABLE
3262BORDER="1"
3263CLASS="CALSTABLE"
3264><COL><COL><THEAD
3265><TR
3266><TH
3267>Operator</TH
3268><TH
3269>Meaning</TH
3270></TR
3271></THEAD
3272><TBODY
3273><TR
3274><TD
3275>+</TD
3276><TD
3277>Add two rotations together</TD
3278></TR
3279><TR
3280><TD
3281>-</TD
3282><TD
3283>Subtract one rotation from another</TD
3284></TR
3285><TR
3286><TD
3287>*</TD
3288><TD
3289>Rotate the first rotation by the second</TD
3290></TR
3291><TR
3292><TD
3293>/</TD
3294><TD
3295>Rotate the first rotation by the inverse of the second</TD
3296></TR
3297></TBODY
3298></TABLE
3299></DIV
3300></DD
3301><DT
3302>list</DT
3303><DD
3304><P
3305>A heterogeneous list of the other data types. Lists are
3306 created via comma separated values of the other data types
3307 enclosed by '[' and ']'.</P
3308><P
3309><DIV
3310CLASS="informalexample"
3311><P
3312></P
3313><A
3314NAME="AEN307"
3315></A
3316><PRE
3317CLASS="programlisting"
3318>&#13;string StringVar = "Hello, Carbon Unit";
3319list MyList = [ 1234, ZERO_ROTATION, StringVar ];
3320 </PRE
3321><P
3322></P
3323></DIV
3324>
3325 Yields the list: <SAMP
3326CLASS="computeroutput"
3327>[ 1234, &#60;0,0,0,1&#62;, "Hello,
3328 Carbon Unit" ]</SAMP
3329>
3330 </P
3331><P
3332>Lists can be combined with other lists. For example:
3333 <DIV
3334CLASS="informalexample"
3335><P
3336></P
3337><A
3338NAME="AEN311"
3339></A
3340><PRE
3341CLASS="programlisting"
3342>&#13;MyList = 3.14159 + MyList;
3343 </PRE
3344><P
3345></P
3346></DIV
3347>
3348 Yields the list: <SAMP
3349CLASS="computeroutput"
3350>[ 3.14159, 1234, &#60;0,0,0,1&#62;,
3351 "Hello, Carbon Unit" ]</SAMP
3352>
3353 And similarly,
3354 <DIV
3355CLASS="informalexample"
3356><P
3357></P
3358><A
3359NAME="AEN314"
3360></A
3361><PRE
3362CLASS="programlisting"
3363>&#13;MyList = MyList + MyList;
3364 </PRE
3365><P
3366></P
3367></DIV
3368>
3369 Yields: <SAMP
3370CLASS="computeroutput"
3371>[ 3.14159, 1234, &#60;0,0,0,1&#62;, "Hello,
3372 Carbon Unit", 3.14159, 1234, &#60;0,0,0,1&#62;, "Hello, Carbon Unit"
3373 ]</SAMP
3374>
3375 </P
3376><P
3377>Library functions exist used to copy data from lists,
3378 sort lists, copy/remove sublists.</P
3379></DD
3380></DL
3381></DIV
3382><DIV
3383CLASS="section"
3384><HR><H3
3385CLASS="section"
3386><A
3387NAME="AEN318"
3388>3.3.1. Type Conversion</A
3389></H3
3390><P
3391>Type conversion can either occur implicitly or explicitly.
3392 Explicit type casts are accomplished using C syntax:
3393 <DIV
3394CLASS="informalexample"
3395><P
3396></P
3397><A
3398NAME="AEN321"
3399></A
3400><PRE
3401CLASS="programlisting"
3402>&#13;float foo_float = 1.0;
3403integer foo_int = (integer)foo_float;
3404 </PRE
3405><P
3406></P
3407></DIV
3408>
3409 </P
3410><DIV
3411CLASS="section"
3412><HR><H4
3413CLASS="section"
3414><A
3415NAME="AEN323"
3416>3.3.1.1. Implicit Casting</A
3417></H4
3418><P
3419>LSL only supports two implicit type casts: integer to
3420 float and string to key. Thus, any place you see a float
3421 specified you can supply an integer, and any place you see a
3422 key specified, you can supply a string.</P
3423></DIV
3424><DIV
3425CLASS="section"
3426><HR><H4
3427CLASS="section"
3428><A
3429NAME="AEN326"
3430>3.3.1.2. Explicit Casting</A
3431></H4
3432><P
3433>LSL supports the following explicit casts:
3434 <P
3435></P
3436><UL
3437><LI
3438STYLE="list-style-type: opencircle"
3439><P
3440>Integer to String</P
3441></LI
3442><LI
3443STYLE="list-style-type: opencircle"
3444><P
3445>Float to Integer</P
3446></LI
3447><LI
3448STYLE="list-style-type: opencircle"
3449><P
3450>Float to String</P
3451></LI
3452><LI
3453STYLE="list-style-type: opencircle"
3454><P
3455>Vector to String</P
3456></LI
3457><LI
3458STYLE="list-style-type: opencircle"
3459><P
3460>Rotation to String</P
3461></LI
3462><LI
3463STYLE="list-style-type: opencircle"
3464><P
3465>Integer to List</P
3466></LI
3467><LI
3468STYLE="list-style-type: opencircle"
3469><P
3470>Float to List</P
3471></LI
3472><LI
3473STYLE="list-style-type: opencircle"
3474><P
3475>Key to List</P
3476></LI
3477><LI
3478STYLE="list-style-type: opencircle"
3479><P
3480>String to List</P
3481></LI
3482><LI
3483STYLE="list-style-type: opencircle"
3484><P
3485>Vector to List</P
3486></LI
3487><LI
3488STYLE="list-style-type: opencircle"
3489><P
3490>Rotation to List</P
3491></LI
3492><LI
3493STYLE="list-style-type: opencircle"
3494><P
3495>String to Integer</P
3496></LI
3497><LI
3498STYLE="list-style-type: opencircle"
3499><P
3500>String to Float</P
3501></LI
3502><LI
3503STYLE="list-style-type: opencircle"
3504><P
3505>String to Vector</P
3506></LI
3507><LI
3508STYLE="list-style-type: opencircle"
3509><P
3510>String to Rotation</P
3511></LI
3512></UL
3513>
3514 </P
3515></DIV
3516></DIV
3517></DIV
3518><DIV
3519CLASS="section"
3520><HR><H2
3521CLASS="section"
3522><A
3523NAME="AEN360"
3524>3.4. Global Functions</A
3525></H2
3526><P
3527>Global functions are also declared much like Java/C, with
3528 the exception that no 'void' return value exists. Instead, if no
3529 return value is needed, just don't specify one:
3530
3531 <DIV
3532CLASS="informalexample"
3533><P
3534></P
3535><A
3536NAME="AEN363"
3537></A
3538><PRE
3539CLASS="programlisting"
3540>&#13;make_physical_and_spin(vector torque)
3541{
3542 // double the torque
3543 vector double_torque = 2.0*torque;
3544 llSetStatus(STATUS_PHYSICS, TRUE);
3545 llApplyTorque(double_torque);
3546}
3547 </PRE
3548><P
3549></P
3550></DIV
3551></P
3552></DIV
3553><DIV
3554CLASS="section"
3555><HR><H2
3556CLASS="section"
3557><A
3558NAME="AEN365"
3559>3.5. Global Variables</A
3560></H2
3561><P
3562>Global variables and functions are accessible from anywhere
3563 in the file. Global variables are declared much like Java or C,
3564 although only one declaration may be made per line:
3565 <DIV
3566CLASS="informalexample"
3567><P
3568></P
3569><A
3570NAME="AEN368"
3571></A
3572><PRE
3573CLASS="programlisting"
3574>&#13;vector gStartPosition;
3575 </PRE
3576><P
3577></P
3578></DIV
3579></P
3580><P
3581>Global variables may also be initialized if desired,
3582 although uninitialized global and local variables are initialized
3583 to legal zero values:
3584 <DIV
3585CLASS="informalexample"
3586><P
3587></P
3588><A
3589NAME="AEN371"
3590></A
3591><PRE
3592CLASS="programlisting"
3593>&#13;vector gStartPosition = &#60;10.0,10.0,10.0&#62;
3594 </PRE
3595><P
3596></P
3597></DIV
3598></P
3599></DIV
3600><DIV
3601CLASS="section"
3602><HR><H2
3603CLASS="section"
3604><A
3605NAME="AEN373"
3606>3.6. Local Variables</A
3607></H2
3608><P
3609>Local variables are scoped below their declaration within
3610 the block of code they are declared in and may be declared within
3611 any block of code. Thus the following code is legal and will work
3612 like C:
3613 <DIV
3614CLASS="informalexample"
3615><P
3616></P
3617><A
3618NAME="AEN376"
3619></A
3620><PRE
3621CLASS="programlisting"
3622>&#13;integer test_function()
3623{
3624 // Test vector that we can use anywhere in the function
3625 vector test = &#60;1,2,3&#62;;
3626 integer j;
3627 for (j = 0; j &#60; 10; j++)
3628 {
3629 // This vector is a different variable than the one declared above
3630 // This IS NOT good coding practice
3631 vector test = &#60;j, j, j&#62;;
3632 }
3633 // this test fails
3634 if (test == &#60;9,9,9&#62;)
3635 {
3636 // never reached
3637 }
3638}
3639 </PRE
3640><P
3641></P
3642></DIV
3643></P
3644></DIV
3645></DIV
3646><DIV
3647CLASS="chapter"
3648><HR><H1
3649><A
3650NAME="AEN378"
3651></A
3652>Chapter 4. Flow Control</H1
3653><P
3654>LSL comes with a complete complement of constructs meant to
3655 deal with conditional processing, looping, as well as simply jumping
3656 to a different point in the script.</P
3657><DIV
3658CLASS="section"
3659><HR><H2
3660CLASS="section"
3661><A
3662NAME="AEN381"
3663>4.1. Conditional Statements</A
3664></H2
3665><P
3666>The 'if' statement operates and has the
3667 same syntax as the Java/C version.</P
3668><P
3669><DIV
3670CLASS="informalexample"
3671><P
3672></P
3673><A
3674NAME="AEN385"
3675></A
3676><PRE
3677CLASS="programlisting"
3678>&#13;check_message(string message)
3679{
3680 if(message == "open")
3681 {
3682 open();
3683 }
3684 else if(message == "close")
3685 {
3686 close();
3687 }
3688 else
3689 {
3690 llSay(0, "Unknown command: " + message);
3691 }
3692}
3693 </PRE
3694><P
3695></P
3696></DIV
3697></P
3698><P
3699>The statements between the open and close curly brace are
3700 performed if the conditional inside the parentheses evaluates to a
3701 non-zero integer. Once a conditional is determined to be true
3702 (non-zero), no further processing of 'else' conditionals will be
3703 considered. The <A
3704HREF="#AEN6070"
3705>NULL_KEY</A
3706> constant
3707 is counted as FALSE by conditional expressions.</P
3708><P
3709>There can be zero or more 'else if' statements, and an
3710 optional final 'else' to handle the case when none of the if
3711 statements evaluate to a non-zero integer.</P
3712><P
3713>The usual set of integer arithmetic and comparison operators
3714 are available.</P
3715><P
3716><DIV
3717CLASS="informalexample"
3718><P
3719></P
3720><A
3721NAME="AEN392"
3722></A
3723><PRE
3724CLASS="programlisting"
3725>&#13;// a function that accepts some information about its environment and
3726// determines the 'best' next step. This kind of code might be
3727// part of a simple box meant to move close to an agent and attach to
3728// them once near. This code sample relies on the standard linden
3729// library functions as well as two other methods not defined here.
3730assess_next_step(integer perm, integer attached, integer balance, float dist)
3731{
3732 string msg;
3733 if(!attached)
3734 {
3735 if((perm &#38; PERMISSION_ATTACH) &#38;&#38; (dist &#60; 10.0))
3736 {
3737 attach();
3738 }
3739 else if((dist &#62; 10.0) || ((dist &#62; 20.0) &#38;&#38; (balance &#62; 1000)))
3740 {
3741 move_closer();
3742 }
3743 else
3744 {
3745 llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
3746 }
3747 }
3748}
3749 </PRE
3750><P
3751></P
3752></DIV
3753></P
3754></DIV
3755><DIV
3756CLASS="section"
3757><HR><H2
3758CLASS="section"
3759><A
3760NAME="AEN394"
3761>4.2. Loop Constructs</A
3762></H2
3763><P
3764>Loops are a basic building block of most useful programming
3765 languages, and LSL offers the same loop constructs as found in
3766 Java or C.</P
3767><DIV
3768CLASS="section"
3769><HR><H3
3770CLASS="section"
3771><A
3772NAME="AEN397"
3773>4.2.1. for loop</A
3774></H3
3775><P
3776>A for loop is most useful for when you know how many times
3777 you need to iterate over an operation. Just like a Java or C for
3778 loop, the parentheses have three parts, the initializer, the
3779 continuation condition, and the increment. The loop continues
3780 while the middle term evaluates to true, and the increment step
3781 is performed at the end of every loop.</P
3782><P
3783><DIV
3784CLASS="informalexample"
3785><P
3786></P
3787><A
3788NAME="AEN401"
3789></A
3790><PRE
3791CLASS="programlisting"
3792>&#13;// move a non-physical block smoothly upward (positive z) the total
3793// distance specified divided into steps discrete moves.
3794move_up(float distance, integer steps)
3795{
3796 float step_distance = distance / (float)steps;
3797 vector offset = &#60;0.0, 0.0, step_distance&#62;;
3798 vector base_pos = llGetPos();
3799 integer i;
3800 for(i = 0; i &#60;= steps; ++i)
3801 {
3802 llSetPos(base_pos + i * offset);
3803 llSleep(0.1);
3804 }
3805}
3806 </PRE
3807><P
3808></P
3809></DIV
3810></P
3811></DIV
3812><DIV
3813CLASS="section"
3814><HR><H3
3815CLASS="section"
3816><A
3817NAME="AEN403"
3818>4.2.2. do-while loop</A
3819></H3
3820><P
3821>The do-while loop construct is most useful when you are
3822 sure that you want to perform an operation at least once, but
3823 you are not sure how many times you want to loop. The syntax is
3824 the same as you would find in a Java or C program. A simple
3825 English translation would be 'do the code inside the curly braces
3826 and continue doing it if the statement after the while is
3827 true.</P
3828><P
3829><DIV
3830CLASS="informalexample"
3831><P
3832></P
3833><A
3834NAME="AEN407"
3835></A
3836><PRE
3837CLASS="programlisting"
3838>&#13;// output the name of all inventory items attached to this object
3839talk_about_inventory(integer type)
3840{
3841 string name;
3842 integer i = 0;
3843 integer continue = TRUE;
3844 do
3845 {
3846 name = llGetInventoryName(type, i);
3847 if(llStringLength(name) &#62; 0)
3848 {
3849 llSay(0, "Inventory " + (string)i + ": " + name);
3850 }
3851 else
3852 {
3853 llSay(0, "No more inventory items");
3854 continue = FALSE;
3855 }
3856 i++;
3857 } while(continue);
3858}
3859 </PRE
3860><P
3861></P
3862></DIV
3863></P
3864></DIV
3865><DIV
3866CLASS="section"
3867><HR><H3
3868CLASS="section"
3869><A
3870NAME="AEN409"
3871>4.2.3. while loop</A
3872></H3
3873><P
3874>The while loop behaves similarly to the do-while loop,
3875 except it allows you to exit the loop without doing a single
3876 iteration inside.</P
3877><P
3878><DIV
3879CLASS="informalexample"
3880><P
3881></P
3882><A
3883NAME="AEN413"
3884></A
3885><PRE
3886CLASS="programlisting"
3887>&#13;mention_inventory_type(integer type)
3888{
3889 integer i = llGetInventoryNumber(type);
3890 while(i--)
3891 {
3892 llSay(0, "item: " + llGetInventory(i));
3893 }
3894}
3895 </PRE
3896><P
3897></P
3898></DIV
3899></P
3900></DIV
3901></DIV
3902><DIV
3903CLASS="section"
3904><HR><H2
3905CLASS="section"
3906><A
3907NAME="AEN415"
3908>4.3. Jumps</A
3909></H2
3910><P
3911>A jump is used to move the running script to a new point
3912 inside of a function or event handler. You cannot jump into other
3913 functions or event handlers. Usually, you will want to use a jump
3914 for in situations where the if..else statements would become too
3915 cumbersome. For example, you may want to check several
3916 preconditions, and exit if any of them are not met.</P
3917><P
3918><DIV
3919CLASS="informalexample"
3920><P
3921></P
3922><A
3923NAME="AEN419"
3924></A
3925><PRE
3926CLASS="programlisting"
3927>&#13;attach_if_ready(vector target_pos)
3928{
3929 // make sure we have permission
3930 integer perm = llGetPerm();
3931 if(!(perm &#38; PERMISSION_ATTACH))
3932 {
3933 jump early_exit;
3934 }
3935
3936 // make sure we're 10 or less meters away
3937 vector pos = llGetPos()
3938 float dist = llVecDist(pos, target_pos);
3939 if(dist &#62; 10.0)
3940 {
3941 jump early_exit;
3942 }
3943
3944 // make sure we're roughly pointed toward the target.
3945 // the calculation of max_cos_theta could be precomputed
3946 // as a constant, but is manually computed here to
3947 // illustrate the math.
3948 float max_cos_theta = llCos(PI / 4.0);
3949 vector toward_target = llVecNorm(target_pos - pos);
3950 rotation rot = llGetRot();
3951 vector fwd = llRot2Fwd(rot);
3952 float cos_theta = toward_target * fwd;
3953 if(cos_theta &#62; max_cos_theta)
3954 {
3955 jump early_exit;
3956 }
3957
3958 // at this point, we've done all the checks.
3959 attach();
3960
3961 @early_exit;
3962}
3963 </PRE
3964><P
3965></P
3966></DIV
3967></P
3968></DIV
3969><DIV
3970CLASS="section"
3971><HR><H2
3972CLASS="section"
3973><A
3974NAME="AEN421"
3975>4.4. State Change</A
3976></H2
3977><P
3978>State change allow you to move through the lsl virtual
3979 machine's flexible state machine by transitioning your script to
3980 and from user defined states and the default state. You can define
3981 your own script state by placing the keyword 'state' before its
3982 name and enclosing the event handlers with open and close curly
3983 braces ('{' and '}'.) You can invoke the transition to a new state
3984 by calling it with the syntax: 'state &#60;statename&#62;'.</P
3985><P
3986><DIV
3987CLASS="informalexample"
3988><P
3989></P
3990><A
3991NAME="AEN425"
3992></A
3993><PRE
3994CLASS="programlisting"
3995>&#13;default
3996{
3997 state_entry()
3998 {
3999 llSay(0, "I am in the default state");
4000 llSetTimer(1.0);
4001 }
4002
4003 timer()
4004 {
4005 state SpinState;
4006 }
4007}
4008
4009state SpinState
4010{
4011 state_entry()
4012 {
4013 llSay(0, "I am in SpinState!");
4014 llTargetOmega(&#60;0,0,1&#62;, 4, 1.0);
4015 llSetTimer(2.0);
4016 }
4017
4018 timer()
4019 {
4020 state default;
4021 }
4022
4023 state_exit()
4024 {
4025 llTargetOmega(&#60;0,0,1&#62;, 0, 0.0);
4026 }
4027}
4028 </PRE
4029><P
4030></P
4031></DIV
4032></P
4033></DIV
4034></DIV
4035><DIV
4036CLASS="chapter"
4037><HR><H1
4038><A
4039NAME="AEN427"
4040></A
4041>Chapter 5. States</H1
4042><P
4043>All scripts must have a 'default' state, which is the first
4044 state entered when the script starts. States contain event handlers
4045 that are triggered by the LSL virtual machine. All states must
4046 supply at least one event handler - it's not really a state without
4047 one.</P
4048><P
4049>When state changes, all callback settings are retained and all
4050 pending events are cleared.</P
4051><DIV
4052CLASS="section"
4053><HR><H2
4054CLASS="section"
4055><A
4056NAME="AEN431"
4057>5.1. state_entry()</A
4058></H2
4059><P
4060>The <A
4061HREF="#AEN5195"
4062>state_entry</A
4063>
4064 event occurs whenever a new state is
4065 entered, including program start, and is always the first event
4066 handled. No data is passed to this event handler.</P
4067><P
4068>You will usually want to set callbacks for things such as
4069 timers and sensor in the state_entry() callback of the state to
4070 put your object into a useful condition for that state.</P
4071><P
4072>Warning: It is a common mistake to assume that the state_entry()
4073 callback is called when you rez an object out of your
4074 inventory. When you derez an object into your inventory the
4075 current state of the script is saved, so there will not be a
4076 call to state_entry() during the rez. If you need to provide
4077 startup code every time an object is created, you should create
4078 a global function and call it from both state_entry() and the
4079 on_rez() callbacks.</P
4080><P
4081><DIV
4082CLASS="informalexample"
4083><P
4084></P
4085><A
4086NAME="AEN438"
4087></A
4088><PRE
4089CLASS="programlisting"
4090>&#13;// global initialization function.
4091init()
4092{
4093 // Set up a listen callback for whoever owns this object.
4094 key owner = llGetOwner();
4095 llListen(0, "", owner, "");
4096}
4097
4098default
4099{
4100 state_entry()
4101 {
4102 init();
4103 }
4104
4105 on_rez(integer start_param)
4106 {
4107 init();
4108 }
4109
4110 listen(integer channel, string name, key id, string message)
4111 {
4112 llSay(0, "Hi " + name + "! You own me.");
4113 }
4114}
4115 </PRE
4116><P
4117></P
4118></DIV
4119></P
4120></DIV
4121><DIV
4122CLASS="section"
4123><HR><H2
4124CLASS="section"
4125><A
4126NAME="AEN440"
4127>5.2. state_exit()</A
4128></H2
4129><P
4130>You will want to provide a <A
4131HREF="#AEN5203"
4132>&#13; state_exit()</A
4133> if you need to clean
4134 up any events that you have requested in the current state, but do
4135 not expect in the next state.</P
4136><P
4137><DIV
4138CLASS="informalexample"
4139><P
4140></P
4141><A
4142NAME="AEN445"
4143></A
4144><PRE
4145CLASS="programlisting"
4146>&#13;default
4147{
4148 state_entry()
4149 {
4150 state TimerState;
4151 }
4152}
4153
4154state TimerState
4155{
4156 state_entry()
4157 {
4158 // set a timer event for 5 seconds in the future.
4159 llSetTimerEvent(5.0);
4160 }
4161
4162 timer()
4163 {
4164 llSay(0, "timer");
4165 state ListenState;
4166 }
4167
4168 state_exit()
4169 {
4170 // turn off future timer events.
4171 llSetTimerEvent(0.0);
4172 }
4173}
4174
4175integer g_listen_control;
4176
4177state ListenState
4178{
4179 state_entry()
4180 {
4181 // listen for anything on the public channel
4182 g_listen_control = llListen(0, "", NULL_KEY, "");
4183 }
4184
4185 listen(integer channel, string name, key id, string message)
4186 {
4187 llSay(0, "listen");
4188 state TimerState;
4189 }
4190
4191 state_exit()
4192 {
4193 // turn off the listener
4194 llListenRemove(g_listen_control);
4195 }
4196}
4197 </PRE
4198><P
4199></P
4200></DIV
4201></P
4202><P
4203>The <A
4204HREF="#AEN5203"
4205>state_exit()</A
4206>
4207 handler is not called when an object is
4208 being deleted - all callbacks, handlers, sounds, etc, will be
4209 cleaned up automatically for you.</P
4210></DIV
4211><DIV
4212CLASS="section"
4213><HR><H2
4214CLASS="section"
4215><A
4216NAME="AEN449"
4217>5.3. States vs. Global variables</A
4218></H2
4219><P
4220>A state and a set of global variables can serve the same
4221 purpose, and each can be expressed in terms of the other. In
4222 general, you should prefer the use of states over global variables
4223 since states allow you to immediately assume script state without
4224 making comparisons. The less comparisons a script makes, the more
4225 regular code statements it can run.</P
4226></DIV
4227></DIV
4228><DIV
4229CLASS="chapter"
4230><HR><H1
4231><A
4232NAME="AEN452"
4233></A
4234>Chapter 6. Math</H1
4235><DIV
4236CLASS="section"
4237><H2
4238CLASS="section"
4239><A
4240NAME="AEN454"
4241>6.1. Tables of Functions</A
4242></H2
4243><DIV
4244CLASS="table"
4245><A
4246NAME="AEN456"
4247></A
4248><P
4249><B
4250>Table 6-1. Trigonometry Functions</B
4251></P
4252><TABLE
4253BORDER="1"
4254CLASS="CALSTABLE"
4255><COL><THEAD
4256><TR
4257><TH
4258>Function</TH
4259></TR
4260></THEAD
4261><TBODY
4262><TR
4263><TD
4264><A
4265HREF="#AEN1002"
4266>llAbs</A
4267></TD
4268></TR
4269><TR
4270><TD
4271><A
4272HREF="#AEN1012"
4273>llAcos</A
4274></TD
4275></TR
4276><TR
4277><TD
4278><A
4279HREF="#AEN1096"
4280>llAsin</A
4281></TD
4282></TR
4283><TR
4284><TD
4285><A
4286HREF="#AEN1106"
4287>llAtan2</A
4288></TD
4289></TR
4290><TR
4291><TD
4292><A
4293HREF="#AEN1212"
4294>llCeil</A
4295></TD
4296></TR
4297><TR
4298><TD
4299><A
4300HREF="#AEN1282"
4301>llCos</A
4302></TD
4303></TR
4304><TR
4305><TD
4306><A
4307HREF="#AEN1559"
4308>llFabs</A
4309></TD
4310></TR
4311><TR
4312><TD
4313><A
4314HREF="#AEN1569"
4315>llFloor</A
4316></TD
4317></TR
4318><TR
4319><TD
4320><A
4321HREF="#AEN1579"
4322>llFrand</A
4323></TD
4324></TR
4325><TR
4326><TD
4327><A
4328HREF="#AEN3220"
4329>llPow</A
4330></TD
4331></TR
4332><TR
4333><TD
4334><A
4335HREF="#AEN3618"
4336>llRound</A
4337></TD
4338></TR
4339><TR
4340><TD
4341><A
4342HREF="#AEN4302"
4343>llSin</A
4344></TD
4345></TR
4346><TR
4347><TD
4348><A
4349HREF="#AEN4335"
4350>llSqrt</A
4351></TD
4352></TR
4353><TR
4354><TD
4355><A
4356HREF="#AEN4678"
4357>llTan</A
4358></TD
4359></TR
4360></TBODY
4361></TABLE
4362></DIV
4363><DIV
4364CLASS="table"
4365><A
4366NAME="AEN505"
4367></A
4368><P
4369><B
4370>Table 6-2. Vector Functions</B
4371></P
4372><TABLE
4373BORDER="1"
4374CLASS="CALSTABLE"
4375><COL><THEAD
4376><TR
4377><TH
4378>Function</TH
4379></TR
4380></THEAD
4381><TBODY
4382><TR
4383><TD
4384><A
4385HREF="#AEN4810"
4386>llVecDist</A
4387></TD
4388></TR
4389><TR
4390><TD
4391><A
4392HREF="#AEN4823"
4393>llVecMag</A
4394></TD
4395></TR
4396><TR
4397><TD
4398><A
4399HREF="#AEN4833"
4400>llVecNorm</A
4401></TD
4402></TR
4403></TBODY
4404></TABLE
4405></DIV
4406><DIV
4407CLASS="table"
4408><A
4409NAME="AEN521"
4410></A
4411><P
4412><B
4413>Table 6-3. Rotation Functions</B
4414></P
4415><TABLE
4416BORDER="1"
4417CLASS="CALSTABLE"
4418><COL><THEAD
4419><TR
4420><TH
4421>Function</TH
4422></TR
4423></THEAD
4424><TBODY
4425><TR
4426><TD
4427><A
4428HREF="#AEN1057"
4429>llAngleBetween</A
4430></TD
4431></TR
4432><TR
4433><TD
4434><A
4435HREF="#AEN1144"
4436>llAxes2Rot</A
4437></TD
4438></TR
4439><TR
4440><TD
4441><A
4442HREF="#AEN1160"
4443>llAxisAngle2Rot</A
4444></TD
4445></TR
4446><TR
4447><TD
4448><A
4449HREF="#AEN1549"
4450>llEuler2Rot</A
4451></TD
4452></TR
4453><TR
4454><TD
4455><A
4456HREF="#AEN3486"
4457>llRot2Angle</A
4458></TD
4459></TR
4460><TR
4461><TD
4462><A
4463HREF="#AEN3496"
4464>llRot2Axis</A
4465></TD
4466></TR
4467><TR
4468><TD
4469><A
4470HREF="#AEN3506"
4471>llRot2Euler</A
4472></TD
4473></TR
4474><TR
4475><TD
4476><A
4477HREF="#AEN3516"
4478>llRot2Fwd</A
4479></TD
4480></TR
4481><TR
4482><TD
4483><A
4484HREF="#AEN3526"
4485>llRot2Left</A
4486></TD
4487></TR
4488><TR
4489><TD
4490><A
4491HREF="#AEN3536"
4492>llRot2Up</A
4493></TD
4494></TR
4495><TR
4496><TD
4497><A
4498HREF="#AEN3546"
4499>llRotBetween</A
4500></TD
4501></TR
4502></TBODY
4503></TABLE
4504></DIV
4505></DIV
4506></DIV
4507><DIV
4508CLASS="chapter"
4509><HR><H1
4510><A
4511NAME="AEN561"
4512></A
4513>Chapter 7. Strings</H1
4514><DIV
4515CLASS="section"
4516><H2
4517CLASS="section"
4518><A
4519NAME="AEN563"
4520>7.1. Tables of Functions</A
4521></H2
4522><DIV
4523CLASS="table"
4524><A
4525NAME="AEN565"
4526></A
4527><P
4528><B
4529>Table 7-1. String Functions</B
4530></P
4531><TABLE
4532BORDER="1"
4533CLASS="CALSTABLE"
4534><COL><THEAD
4535><TR
4536><TH
4537>Function</TH
4538></TR
4539></THEAD
4540><TBODY
4541><TR
4542><TD
4543><A
4544HREF="#AEN1173"
4545>llBase64ToString</A
4546></TD
4547></TR
4548><TR
4549><TD
4550><A
4551HREF="#AEN1326"
4552>llDeleteSubString</A
4553></TD
4554></TR
4555><TR
4556><TD
4557><A
4558HREF="#AEN2195"
4559>llGetSubString</A
4560></TD
4561></TR
4562><TR
4563><TD
4564><A
4565HREF="#AEN2415"
4566>llInsertString</A
4567></TD
4568></TR
4569><TR
4570><TD
4571><A
4572HREF="#AEN2902"
4573>llMD5String</A
4574></TD
4575></TR
4576><TR
4577><TD
4578><A
4579HREF="#AEN4631"
4580>llStringLength</A
4581></TD
4582></TR
4583><TR
4584><TD
4585><A
4586HREF="#AEN4641"
4587>llSubStringIndex</A
4588></TD
4589></TR
4590><TR
4591><TD
4592><A
4593HREF="#AEN4652"
4594>llStringToBase64</A
4595></TD
4596></TR
4597><TR
4598><TD
4599><A
4600HREF="#AEN4737"
4601>llToLower</A
4602></TD
4603></TR
4604><TR
4605><TD
4606><A
4607HREF="#AEN4746"
4608>llToUpper</A
4609></TD
4610></TR
4611><TR
4612><TD
4613><A
4614HREF="#AEN4886"
4615>llXorBase64Strings</A
4616></TD
4617></TR
4618></TBODY
4619></TABLE
4620></DIV
4621></DIV
4622></DIV
4623><DIV
4624CLASS="chapter"
4625><HR><H1
4626><A
4627NAME="AEN605"
4628></A
4629>Chapter 8. Lists</H1
4630><DIV
4631CLASS="section"
4632><H2
4633CLASS="section"
4634><A
4635NAME="AEN607"
4636>8.1. Tables of Functions</A
4637></H2
4638><DIV
4639CLASS="table"
4640><A
4641NAME="AEN609"
4642></A
4643><P
4644><B
4645>Table 8-1. List Functions</B
4646></P
4647><TABLE
4648BORDER="1"
4649CLASS="CALSTABLE"
4650><COL><THEAD
4651><TR
4652><TH
4653>Function</TH
4654></TR
4655></THEAD
4656><TBODY
4657><TR
4658><TD
4659><A
4660HREF="#AEN1202"
4661>llCSV2List</A
4662></TD
4663></TR
4664><TR
4665><TD
4666><A
4667HREF="#AEN1306"
4668>llDeleteSubList</A
4669></TD
4670></TR
4671><TR
4672><TD
4673><A
4674HREF="#AEN1875"
4675>llGetListEntryType</A
4676></TD
4677></TR
4678><TR
4679><TD
4680><A
4681HREF="#AEN1889"
4682>llGetListLength</A
4683></TD
4684></TR
4685><TR
4686><TD
4687><A
4688HREF="#AEN2454"
4689>llList2CSV</A
4690></TD
4691></TR
4692><TR
4693><TD
4694><A
4695HREF="#AEN2464"
4696>llList2Float</A
4697></TD
4698></TR
4699><TR
4700><TD
4701><A
4702HREF="#AEN2477"
4703>llList2Integer</A
4704></TD
4705></TR
4706><TR
4707><TD
4708><A
4709HREF="#AEN2490"
4710>llList2Key</A
4711></TD
4712></TR
4713><TR
4714><TD
4715><A
4716HREF="#AEN2503"
4717>llList2List</A
4718></TD
4719></TR
4720><TR
4721><TD
4722><A
4723HREF="#AEN2526"
4724>llList2ListStrided</A
4725></TD
4726></TR
4727><TR
4728><TD
4729><A
4730HREF="#AEN2544"
4731>llList2Rot</A
4732></TD
4733></TR
4734><TR
4735><TD
4736><A
4737HREF="#AEN2557"
4738>llList2String</A
4739></TD
4740></TR
4741><TR
4742><TD
4743><A
4744HREF="#AEN2570"
4745>llList2Vector</A
4746></TD
4747></TR
4748><TR
4749><TD
4750><A
4751HREF="#AEN2583"
4752>llListFindList</A
4753></TD
4754></TR
4755><TR
4756><TD
4757><A
4758HREF="#AEN2598"
4759>llListInsertList</A
4760></TD
4761></TR
4762><TR
4763><TD
4764><A
4765HREF="#AEN2614"
4766>llListRandomize</A
4767></TD
4768></TR
4769><TR
4770><TD
4771><A
4772HREF="#AEN2648"
4773>llListSort</A
4774></TD
4775></TR
4776><TR
4777><TD
4778><A
4779HREF="#AEN3105"
4780>llParseString2List</A
4781></TD
4782></TR
4783></TBODY
4784></TABLE
4785></DIV
4786></DIV
4787></DIV
4788><DIV
4789CLASS="chapter"
4790><HR><H1
4791><A
4792NAME="AEN670"
4793></A
4794>Chapter 9. Communication</H1
4795><DIV
4796CLASS="section"
4797><H2
4798CLASS="section"
4799><A
4800NAME="AEN672"
4801>9.1. Tables of Functions</A
4802></H2
4803><DIV
4804CLASS="table"
4805><A
4806NAME="AEN674"
4807></A
4808><P
4809><B
4810>Table 9-1. In World Functions</B
4811></P
4812><TABLE
4813BORDER="1"
4814CLASS="CALSTABLE"
4815><COL><THEAD
4816><TR
4817><TH
4818>Function</TH
4819></TR
4820></THEAD
4821><TBODY
4822><TR
4823><TD
4824><A
4825HREF="#AEN2665"
4826>llListen</A
4827></TD
4828></TR
4829><TR
4830><TD
4831><A
4832HREF="#AEN2686"
4833>llListenControl</A
4834></TD
4835></TR
4836><TR
4837><TD
4838><A
4839HREF="#AEN2701"
4840>llListenRemove</A
4841></TD
4842></TR
4843><TR
4844><TD
4845><A
4846HREF="#AEN3640"
4847>llSay</A
4848></TD
4849></TR
4850><TR
4851><TD
4852><A
4853HREF="#AEN4288"
4854>llShout</A
4855></TD
4856></TR
4857><TR
4858><TD
4859><A
4860HREF="#AEN4862"
4861>llWhisper</A
4862></TD
4863></TR
4864></TBODY
4865></TABLE
4866></DIV
4867><DIV
4868CLASS="table"
4869><A
4870NAME="AEN699"
4871></A
4872><P
4873><B
4874>Table 9-2. Messaging Functions</B
4875></P
4876><TABLE
4877BORDER="1"
4878CLASS="CALSTABLE"
4879><COL><THEAD
4880><TR
4881><TH
4882>Function</TH
4883></TR
4884></THEAD
4885><TBODY
4886><TR
4887><TD
4888><A
4889HREF="#AEN1533"
4890>llEmail</A
4891></TD
4892></TR
4893><TR
4894><TD
4895><A
4896HREF="#AEN1933"
4897>llGetNextEmail</A
4898></TD
4899></TR
4900><TR
4901><TD
4902><A
4903HREF="#AEN2431"
4904>llInstantMessage</A
4905></TD
4906></TR
4907></TBODY
4908></TABLE
4909></DIV
4910></DIV
4911></DIV
4912><DIV
4913CLASS="chapter"
4914><HR><H1
4915><A
4916NAME="AEN715"
4917></A
4918>Chapter 10. Inventory</H1
4919><DIV
4920CLASS="section"
4921><H2
4922CLASS="section"
4923><A
4924NAME="AEN717"
4925>10.1. Tables of Functions</A
4926></H2
4927><DIV
4928CLASS="table"
4929><A
4930NAME="AEN719"
4931></A
4932><P
4933><B
4934>Table 10-1. Inventory Functions</B
4935></P
4936><TABLE
4937BORDER="1"
4938CLASS="CALSTABLE"
4939><COL><THEAD
4940><TR
4941><TH
4942>Function</TH
4943></TR
4944></THEAD
4945><TBODY
4946><TR
4947><TD
4948><A
4949HREF="#AEN1047"
4950>llAllowInventoryDrop</A
4951></TD
4952></TR
4953><TR
4954><TD
4955><A
4956HREF="#AEN1754"
4957>llGetInventoryCreator</A
4958></TD
4959></TR
4960><TR
4961><TD
4962><A
4963HREF="#AEN1764"
4964>llGetInventoryKey</A
4965></TD
4966></TR
4967><TR
4968><TD
4969><A
4970HREF="#AEN1774"
4971>llGetInventoryName</A
4972></TD
4973></TR
4974><TR
4975><TD
4976><A
4977HREF="#AEN1816"
4978>llGetInventoryType</A
4979></TD
4980></TR
4981><TR
4982><TD
4983><A
4984HREF="#AEN1789"
4985>llGetInventoryNumber</A
4986></TD
4987></TR
4988><TR
4989><TD
4990><A
4991HREF="#AEN1801"
4992>llGetInventoryPermMask</A
4993></TD
4994></TR
4995><TR
4996><TD
4997><A
4998HREF="#AEN1946"
4999>llGetNotecardLine</A
5000></TD
5001></TR
5002><TR
5003><TD
5004><A
5005HREF="#AEN2314"
5006>llGiveInventory</A
5007></TD
5008></TR
5009><TR
5010><TD
5011><A
5012HREF="#AEN2326"
5013>llGiveInventoryList</A
5014></TD
5015></TR
5016><TR
5017><TD
5018><A
5019HREF="#AEN3325"
5020>llRemoveInventory</A
5021></TD
5022></TR
5023><TR
5024><TD
5025><A
5026HREF="#AEN3363"
5027>llRequestInventoryData</A
5028></TD
5029></TR
5030><TR
5031><TD
5032><A
5033HREF="#AEN3461"
5034>llRezObject</A
5035></TD
5036></TR
5037><TR
5038><TD
5039><A
5040HREF="#AEN3434"
5041>llRezAtRoot</A
5042></TD
5043></TR
5044></TBODY
5045></TABLE
5046></DIV
5047></DIV
5048></DIV
5049><DIV
5050CLASS="chapter"
5051><HR><H1
5052><A
5053NAME="AEN768"
5054></A
5055>Chapter 11. Vehicles</H1
5056><P
5057>Custom Vehicles can be constructed and controlled using the LSL.
5058 This chapter will cover the basics of how vehicles work, the
5059 terms used when describing vehicles, and a more thorough examination
5060 of the api available.</P
5061><P
5062>There are several ways to make scripted objects move
5063 themselves around. One way is to turn the object into a
5064 "vehicle". This feature is versatile enough to make things
5065 that slide, hover, fly, and float. Some of the behaviors that can be
5066 enabled are:</P
5067><P
5068><P
5069></P
5070><UL
5071><LI
5072STYLE="list-style-type: opencircle"
5073><P
5074>deflection of linear and angular velocity to
5075 preferred axis of motion</P
5076></LI
5077><LI
5078STYLE="list-style-type: opencircle"
5079><P
5080>&#13; <A
5081HREF="#AEN956"
5082>asymmetric linear
5083 and angular friction</A
5084></P
5085></LI
5086><LI
5087STYLE="list-style-type: opencircle"
5088><P
5089>&#13; <A
5090HREF="#AEN979"
5091>hovering</A
5092> over terrain/water or
5093 at a global height</P
5094></LI
5095><LI
5096STYLE="list-style-type: opencircle"
5097><P
5098>&#13; <A
5099HREF="#AEN949"
5100>banking</A
5101> on turns
5102 </P
5103></LI
5104><LI
5105STYLE="list-style-type: opencircle"
5106><P
5107>&#13; <A
5108HREF="#AEN866"
5109>linear</A
5110> and
5111 <A
5112HREF="#AEN898"
5113>angular</A
5114> motor for
5115 <A
5116HREF="#AEN853"
5117>push and turning</A
5118>
5119 </P
5120></LI
5121></UL
5122></P
5123><DIV
5124CLASS="section"
5125><HR><H2
5126CLASS="section"
5127><A
5128NAME="AEN790"
5129>11.1. Overview</A
5130></H2
5131><P
5132>Each scripted object can have one vehicle behavior that is
5133 configurable through the <A
5134HREF="#AEN4249"
5135>llSetVehicleType</A
5136>, <A
5137HREF="#AEN4235"
5138>llSetVehicleFloatParam</A
5139>,
5140 <A
5141HREF="#AEN4274"
5142>llSetVehicleVectorParam</A
5143>,
5144 <A
5145HREF="#AEN4260"
5146>llSetVehicleRotationParam</A
5147>,
5148 <A
5149HREF="#AEN4224"
5150>llSetVehicleFlags</A
5151>,
5152 and <A
5153HREF="#AEN3335"
5154>llRemoveVehicleFlags</A
5155>
5156 library calls.</P
5157><P
5158>These script calls are described in more detail below, but
5159 the important thing to notice here is that the vehicle behavior
5160 has several parameters that can be adjusted to change how the
5161 vehicle handles. Depending on the values chosen the vehicle can
5162 veer like a boat in water, or ride like a sled on rails.</P
5163><P
5164>Setting the vehicle flags allow you to make exceptions to
5165 some default behaviors. Some of these flags only have an effect
5166 when certain behaviors are enabled. For example, the
5167 VEHICLE_FLAG_HOVER_WATER_ONLY will make the vehicle ignore the
5168 height of the terrain, however it only makes a difference if the
5169 vehicle is hovering.</P
5170></DIV
5171><DIV
5172CLASS="section"
5173><HR><H2
5174CLASS="section"
5175><A
5176NAME="AEN801"
5177>11.2. Warnings</A
5178></H2
5179><P
5180>Vehicles are a work in progress and will
5181 likely experience changes in future versions of Second Life.
5182 Some of the details of vehicle behavior may be changed
5183 as necessary to ensure stability
5184 and user safety. In particular, many of the limits and defaults
5185 described in the appendices will probably change and should not be
5186 relied upon in the long term.</P
5187><P
5188>It is not recommended that you mix vehicle behavior with
5189 some of the other script calls that provide impulse and forces to
5190 the object, especially <A
5191HREF="#AEN3773"
5192>llSetBuoyancy</A
5193>, <A
5194HREF="#AEN3841"
5195>llSetForce</A
5196>, <A
5197HREF="#AEN4200"
5198>llSetTorque</A
5199>, and <A
5200HREF="#AEN3872"
5201>llSetHoverHeight</A
5202>.</P
5203><P
5204>While the following methods probably don't cause any
5205 instabilities, their behavior may conflict with vehicles and cause
5206 undesired and/or inconsistent results, so use <A
5207HREF="#AEN2753"
5208>llLookAt</A
5209>, <A
5210HREF="#AEN3559"
5211>llRotLookAt</A
5212>, <A
5213HREF="#AEN2980"
5214>llMoveToTarget</A
5215>, and <A
5216HREF="#AEN4701"
5217>llTargetOmega</A
5218> at your own
5219 risk.</P
5220><P
5221>If you think you have found a bug relating to how vehicle's
5222 work, one way to submit the problem is to give a copy of the
5223 vehicle and script to Andrew Linden with comments or a notecard
5224 describing the problem. Please name all submissions "Bugged
5225 Vehicle XX" where XX are your Second Life initials. The
5226 vehicle and script will be examined at the earliest
5227 convenience.</P
5228></DIV
5229><DIV
5230CLASS="section"
5231><HR><H2
5232CLASS="section"
5233><A
5234NAME="AEN815"
5235>11.3. Definitions</A
5236></H2
5237><P
5238>&#13; The terms "roll", "pitch", and
5239 "yaw" are often used to describe the modes of rotations
5240 that can happen to a airplane or boat. They correspond to
5241 rotations about the local x-, y-, and z-axis respectively.</P
5242><P
5243><DIV
5244CLASS="informalexample"
5245><P
5246></P
5247><A
5248NAME="AEN819"
5249></A
5250><PRE
5251CLASS="programlisting"
5252>&#13; z-axis .
5253 yaw-axis /|\
5254 | __. y-axis
5255 ._ ___| /| pitch-axis
5256 _||\ \\ |\. /
5257 \|| \_______\_|__\_/_______
5258 | _ _ o o o o o o o |\_ ______\ x-axis
5259 // ./_______,----,__________) / roll-axis
5260 /_,/ // ./
5261 /__,/
5262 </PRE
5263><P
5264></P
5265></DIV
5266></P
5267><P
5268>&#13; The right-hand-rule, often introduced in beginning physics
5269 courses, is used to define the direction of positive rotation
5270 about any axis. As an example of how to use the right hand rule,
5271 consider a positive rotation about the roll axis. To help
5272 visualize how such a rotation would move the airplane, place your
5273 right thumb parallel to the plane's roll-axis such that the thumb
5274 points in the positive x-direction, then curl the four fingers
5275 into a fist. Your fingers will be pointing in the direction that
5276 the plane will spin.</P
5277><P
5278><DIV
5279CLASS="informalexample"
5280><P
5281></P
5282><A
5283NAME="AEN823"
5284></A
5285><PRE
5286CLASS="programlisting"
5287>&#13; .-.--.--.--. __
5288 / / / / _ \ / \
5289 (-(- (- (- ( | _________|______\ axis of
5290 \.\._\._\._) | | / rotation
5291 | \:__,---. \|/
5292 | | + positive
5293 \ .,_.___.' rotation
5294 \_ ^ `.__,/
5295 | /
5296 | |
5297 </PRE
5298><P
5299></P
5300></DIV
5301></P
5302><P
5303>&#13; Many of the parameters that control a vehicle's behavior are
5304 of the form: VEHICLE_BEHAVIOR_TIMESCALE. A behavior's
5305 "timescale" can usually be understood as the time for
5306 the behavior to push, twist, or otherwise affect the vehicle such
5307 that the difference between what it is doing, and what it is
5308 supposed to be doing, has been reduced to 1/e of what it was,
5309 where "e" is the natural exponent (approximately
5310 2.718281828). In other words, it is the timescale for exponential
5311 decay toward full compliance to the desired behavior. When you
5312 want the vehicle to be very responsive use a short timescale of
5313 one second or less, and if you want to disable a behavior then set
5314 the timescale to a very large number like 300 (5 minutes) or
5315 more. Note, for stability reasons, there is usually a limit to how
5316 small a timescale is allowed to be, and is usually on the order of
5317 a tenth of a second. Setting a timescale to zero is safe and is
5318 always equivalent to setting it to its minimum. Any feature with a
5319 timescale can be effectively disabled by setting the timescale so
5320 large that it would take them all day to have any
5321 effect.</P
5322></DIV
5323><DIV
5324CLASS="section"
5325><HR><H2
5326CLASS="section"
5327><A
5328NAME="AEN826"
5329>11.4. Setting the Vehicle Type</A
5330></H2
5331><P
5332>Before any vehicle parameters can be set the vehicle
5333 behavior must first be enabled. It is enabled by calling <A
5334HREF="#AEN4249"
5335>llSetVehicleType</A
5336> with any
5337 VEHICLE_TYPE_*, except VEHICLE_TYPE_NONE which will disable the
5338 vehicle. See the <A
5339HREF="#AEN6288"
5340>vehicle type
5341 constants</A
5342> section for currently available types. More types
5343 will be available soon.</P
5344><P
5345>Setting the vehicle type is necessary for enabling the
5346 vehicle behavior and sets all of the parameters to its default
5347 values. For each vehicle type listed we provide the corresponding
5348 equivalent code in long format. Is is
5349 <SPAN
5350CLASS="emphasis"
5351><I
5352CLASS="emphasis"
5353>important</I
5354></SPAN
5355> to realize that the defaults are
5356 <SPAN
5357CLASS="emphasis"
5358><I
5359CLASS="emphasis"
5360>not</I
5361></SPAN
5362> the optimal settings for any of these
5363 vehicle types and that they will definitely be changed in the
5364 future. Do not rely on these values to be constant until
5365 specified.</P
5366><P
5367>Should you want to make a unique or experimental vehicle you
5368 will still have to enable the vehicle behavior with one of the
5369 default types first, after which you will be able to change any of
5370 the parameters or flags within the allowed ranges.</P
5371><P
5372>Setting the vehicle type does not automatically take
5373 controls or otherwise move the object. However should you enable
5374 the vehicle behavior while the object is free to move and parked
5375 on a hill then it may start to slide away.</P
5376><P
5377>We're looking for new and better default vehicle types. If
5378 you think you've found a set of parameters that make a better car,
5379 boat, or any other default type of vehicle then you may submit
5380 your proposed list of settings to Andrew Linden via a script or
5381 notecard.</P
5382></DIV
5383><DIV
5384CLASS="section"
5385><HR><H2
5386CLASS="section"
5387><A
5388NAME="AEN837"
5389>11.5. Linear and Angular Deflection</A
5390></H2
5391><P
5392>A common feature of real vehicles is their tendency to move
5393 along "preferred axes of motion". That is, due to
5394 their wheels, wings, shape, or method of propulsion they tend to
5395 push or redirect themselves along axes that are static in the
5396 vehicle's local frame. This general feature defines a
5397 class of vehicles and included in this category a common
5398 dart is a "vehicle": it
5399 has fins in the back such that if it were to tumble in the air it
5400 would eventually align itself to move point-forward -- we'll call
5401 this alignment effect <SPAN
5402CLASS="emphasis"
5403><I
5404CLASS="emphasis"
5405>angular
5406 deflection</I
5407></SPAN
5408>.</P
5409><P
5410>A wheeled craft exhibits a
5411 different effect: when a
5412 skateboard is pushed in some direction it will tend to redirect
5413 the resultant motion along that which it is free to roll -- we'll
5414 call this effect <SPAN
5415CLASS="emphasis"
5416><I
5417CLASS="emphasis"
5418>&#13; linear deflection</I
5419></SPAN
5420>.</P
5421><P
5422>So a typical Second Life vehicle is an object that
5423 exhibits linear and/or angular deflection along the
5424 "preferential axes of motion". The default
5425 preferential axes of motion are the local x- (at), y- (left), and
5426 z- (up) axes of the <SPAN
5427CLASS="emphasis"
5428><I
5429CLASS="emphasis"
5430>local frame</I
5431></SPAN
5432> of the
5433 vehicle's root primitive. The deflection behaviors relate to the
5434 x-axis (at): linear deflection will tend to rotate its velocity
5435 until it points along it's positive local x-axis while the
5436 angular deflection will tend to reorient the vehicle such that
5437 it's x-axis points in the direction that it is moving. The other
5438 axes are relevant to vehicle behaviors that are described later,
5439 such as the
5440 <A
5441HREF="#AEN938"
5442>vertical attractor</A
5443>
5444 which tries to keep a vehicle's
5445 local z-axis pointed toward the world z-axis (up). The vehicle
5446 axes can be rotated relative to the object's actual local axes by
5447 using the
5448 <A
5449HREF="#AEN990"
5450>VEHICLE_REFERENCE_FRAME</A
5451>
5452 parameter, however that is an
5453 advanced feature and is covered in detail in a later section of
5454 these documents.</P
5455><P
5456>Depending on the vehicle it might be desirable to have lots
5457 of linear and/or angular deflection or not. The speed of the
5458 deflections are controlled by setting the relevant parameters
5459 using the <A
5460HREF="#AEN4235"
5461>llSetVehicleFloatParam</A
5462>
5463 script call. Each variety of deflection has a
5464 "timescale" parameter that determines how quickly a
5465 full deflection happens. Basically the timescale it the time
5466 coefficient for exponential decay toward full deflection. So, a
5467 vehicle that deflects quickly should have a small timescale. For
5468 instance, a typical dart might have a angular deflection
5469 timescale of a couple of seconds but a linear deflection of
5470 several seconds; it will tend to reorient itself before it
5471 changes direction. To set the deflection timescales of a dart
5472 you might use the lines below:</P
5473><P
5474><DIV
5475CLASS="informalexample"
5476><P
5477></P
5478><A
5479NAME="AEN850"
5480></A
5481><PRE
5482CLASS="programlisting"
5483>&#13;llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 2.0);
5484llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 6.0);
5485 </PRE
5486><P
5487></P
5488></DIV
5489></P
5490><P
5491> Each variety of deflection has an "efficiency"
5492 parameter that is a slider between 0.0 and 1.0. Unlike the other
5493 efficiency parameters of other vehicle behaviors, the deflection
5494 efficiencies do not slide between "bouncy" and
5495 "damped", but instead slide from "no deflection
5496 whatsoever" (0.0) to "maximum deflection" (1.0).
5497 That is, they behave much like the deflection timescales, however
5498 they are normalized to the range between 0.0 and 1.0.</P
5499></DIV
5500><DIV
5501CLASS="section"
5502><HR><H2
5503CLASS="section"
5504><A
5505NAME="AEN853"
5506>11.6. Moving and Steering the Vehicle</A
5507></H2
5508><P
5509>Once enabled, a vehicle can be pushed and rotated by
5510 external forces and/or from script calls such as
5511 <A
5512HREF="#AEN1070"
5513>llApplyImpulse</A
5514>,
5515 however linear and angular motors have been built in
5516 to make motion smoother and easier to control.
5517 Their directions can be set using the
5518 <A
5519HREF="#AEN4274"
5520>llSetVehicleVectorParam</A
5521>
5522 call. For example, to make the vehicle try to move at 5
5523 meters/second along its local x-axis (the default look-at
5524 direction) you would put the following line in your script:</P
5525><P
5526><DIV
5527CLASS="informalexample"
5528><P
5529></P
5530><A
5531NAME="AEN859"
5532></A
5533><PRE
5534CLASS="programlisting"
5535>&#13;llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;5, 0, 0&#62;);
5536 </PRE
5537><P
5538></P
5539></DIV
5540></P
5541><P
5542>The motor strength is not the full story, since you can also
5543 control how fast the motor engages (VEHICLE_LINEAR_MOTOR_TIMESCALE)
5544 and there is a parameter that causes the motor's effectiveness to
5545 decay over time (VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE).</P
5546><P
5547>Steering the vehicle involves setting the
5548 VEHICLE_ANGULAR_MOTOR_DIRECTION and related parameters.
5549 It is also possible to set some flags that allow the angular
5550 motor slave to your camera view when in mouselook.</P
5551><P
5552>For more details about the vehicle motors
5553 read the sections on the <A
5554HREF="#AEN866"
5555>linear
5556 </A
5557> and <A
5558HREF="#AEN898"
5559>angular</A
5560>
5561 motors below.</P
5562></DIV
5563><DIV
5564CLASS="section"
5565><HR><H2
5566CLASS="section"
5567><A
5568NAME="AEN866"
5569>11.7. The Linear Motor</A
5570></H2
5571><P
5572>The parameters that control the linear motor are:</P
5573><P
5574><P
5575></P
5576><UL
5577><LI
5578STYLE="list-style-type: opencircle"
5579><P
5580>&#13; VEHICLE_LINEAR_MOTOR_DIRECTION</P
5581><P
5582>A vector.
5583 It is the velocity (meters/sec) that the vehicle will
5584 try to attain. It points in the vehicle's local frame, and has a
5585 maximum length of 40.</P
5586></LI
5587><LI
5588STYLE="list-style-type: opencircle"
5589><P
5590>&#13; VEHICLE_LINEAR_MOTOR_OFFSET</P
5591><P
5592>A vector.
5593 It is the offset point from the vehicle's center of mass at which
5594 the linear motor's impulse is applied. This allows the linear motor
5595 to also cause rotational torque. It is in the vehicle's local
5596 frame and its maximum length is 100 meters! No need to worry
5597 about stability -- if the vehicle starts to spin too fast
5598 (greater than about 4*PI radians per second) then angular
5599 velocity damping will kick in. The reason the offset is allowed
5600 to be so large is so that it can compete with the other vehicle
5601 behaviors such as <A
5602HREF="#vehicle_angular_deflection"
5603>angular deflection</A
5604>
5605 and the <A
5606HREF="#AEN938"
5607>vertical
5608 attractor</A
5609>. Some of the other vehicle behaviors may
5610 drastically reduce the effective torque from the linear motor
5611 offset, in which case a longer leverage arm may help.</P
5612></LI
5613><LI
5614STYLE="list-style-type: opencircle"
5615><P
5616>&#13; VEHICLE_LINEAR_MOTOR_TIMESCALE</P
5617><P
5618>A float. Determines how long it takes for the motor to
5619 push the vehicle to full speed. Its minimum value is approximately
5620 0.06 seconds.</P
5621></LI
5622><LI
5623STYLE="list-style-type: opencircle"
5624><P
5625>&#13; VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE</P
5626><P
5627>A float. The effectiveness of the motor will exponentially
5628 decay over this timescale, but the effectiveness will be reset
5629 whenever the motor's value is explicitly set. The maximum value
5630 of this decay timescale is 120 seconds,
5631 and this timescale is always in effect.</P
5632></LI
5633></UL
5634></P
5635><P
5636>The flags that affect the linear motor are:</P
5637><P
5638><P
5639></P
5640><UL
5641><LI
5642STYLE="list-style-type: opencircle"
5643><P
5644>VEHICLE_FLAG_LIMIT_MOTOR_UP</P
5645><P
5646>Useful for "ground vehicles".
5647 Setting this flag will clamp the z-component of the linear
5648 motor (in world frame) to prevent it from defeating gravity.</P
5649></LI
5650></UL
5651></P
5652><P
5653>Setting the motor speed is not enough to enable all
5654 interesting vehicles. For example, some will want a car that
5655 immediately gets up to the speed they want, while others will want
5656 a boat that slowly climbs up to its maximum velocity. To control
5657 this effect the VEHICLE_LINEAR_MOTOR_TIMESCALE parameter can be
5658 used. Basically the "timescale" of a motor is the
5659 time constant for the vehicle to exponentially accelerate toward
5660 its full speed.</P
5661><P
5662>What would happen if you were to accidentally set the
5663 vehicle's linear velocity to maximum possible speed and then let
5664 go? It would run away and never stop, right? Not necessarily: an
5665 automatic "motor decay" has been built in such that all
5666 motors will gradually decrease their effectiveness after being
5667 set.</P
5668><P
5669>Each time the linear motor's vector is set its
5670 "grip"
5671 immediately starts to decay exponentially with a timescale
5672 determined by the VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, such
5673 that after enough time the motor ceases to have any effect.
5674 This decay timescale serves two purposes. First, since it
5675 <SPAN
5676CLASS="emphasis"
5677><I
5678CLASS="emphasis"
5679>cannot</I
5680></SPAN
5681> be set longer than 120 seconds,
5682 and is <SPAN
5683CLASS="emphasis"
5684><I
5685CLASS="emphasis"
5686>always</I
5687></SPAN
5688> enabled it
5689 guarantees that a vehicle will not push itself about forever
5690 in the absence
5691 of active control (from keyboard commands or some logic loop in
5692 the script). Second, it can be used to push some vehicles around
5693 using a simple impulse model. That is, rather than setting the
5694 motor "on" or "off" depending on whether
5695 a particular key is pressed "down" or "up"
5696 the decay timescale can be set short and the motor can be set
5697 "on" whenever the key transitions from "up"
5698 to "down" and allowed to automatically decay.</P
5699><P
5700> Since the motor's effectiveness is reset whenever the
5701 motor's vector is set, then setting it to a vector of length zero
5702 is different from allowing it to decay completely. The first case
5703 will cause the vehicle to try to reach zero velocity, while the
5704 second will leave the motor impotent.</P
5705><P
5706>The two motor timescales have very similar names, but have
5707 different effects, so try not to get them confused.
5708 VEHICLE_LINEAR_MOTOR_TIMESCALE is the time for motor to
5709 "win", and VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE is the
5710 time for the motor's "effectiveness" to decay toward
5711 zero. If you set one when you think you are changing the other
5712 you will have frustrating results. Also, if the motor's decay
5713 timescale is shorter than the regular timescale, then the
5714 effective magnitude of the motor vector will be
5715 diminished.</P
5716></DIV
5717><DIV
5718CLASS="section"
5719><HR><H2
5720CLASS="section"
5721><A
5722NAME="AEN898"
5723>11.8. The Angular Motor</A
5724></H2
5725><P
5726>The parameters that control the angular motor are:</P
5727><P
5728><P
5729></P
5730><UL
5731><LI
5732STYLE="list-style-type: opencircle"
5733><P
5734>&#13; VEHICLE_ANGULAR_MOTOR_DIRECTION</P
5735><P
5736>A vector. It is the angular velocity (radians/sec)
5737 that the vehicle will try to rotate. It points in the vehicle's
5738 local frame, and has a maximum value of 4*PI (two revolutions
5739 per second).</P
5740></LI
5741><LI
5742STYLE="list-style-type: opencircle"
5743><P
5744>&#13; VEHICLE_ANGULAR_MOTOR_TIMESCALE</P
5745><P
5746>A float. Determines how long it takes for the motor to
5747 spin the vehicle to full speed. Its minimum value is approximately
5748 0.06 seconds.</P
5749></LI
5750><LI
5751STYLE="list-style-type: opencircle"
5752><P
5753>&#13; VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE</P
5754><P
5755>A float. The effectiveness of the motor will exponentially
5756 decay over this timescale, but the effectiveness will be reset
5757 whenever the motor's value is explicitly set. The maximum value
5758 of this decay timescale is 120 seconds,
5759 and this timescale is always in effect.</P
5760></LI
5761></UL
5762></P
5763><P
5764>Like the linear motor the angular motor can be set explicitly,
5765 and has magnitude/direction, a timescale, and a decay timescale. </P
5766><P
5767>When it comes to actually steering a vehicle there are
5768 several ways to do it. One way would be for the script to grab
5769 keyboard input and to explicitly turn the motor on/off based on
5770 which keys are pressed. When steering this way you probably
5771 don't want it to turn very far or for very long. One way to do
5772 it using the angular motor would be to leave the decay timescale
5773 long, enable a significant amount of angular friction (to
5774 quickly slow the vehicle down when the motor is turned off) then
5775 set the angular motor to a large vector on a key press, and set
5776 it to zero when the key is released. That has the effect of
5777 making the vehicle unresponsive to external collisions, due to
5778 the angular friction.</P
5779><P
5780>Another way to do it is to set the
5781 VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE to a short value and push
5782 the vehicle about with a more impulsive method that sets the
5783 motor fast on a key press down (and optionally setting the motor
5784 to zero on a key up) relying on the automatic exponential decay
5785 of the motor's effectiveness rather than a constant angular
5786 friction.</P
5787><P
5788>Finally, it may be possible to discard the angular motor
5789 entirely and use the VEHICLE_LINEAR_MOTOR_OFFSET. Whenever the
5790 offset has a component that is perpendicular to the direction
5791 of the linear motor the vehicle will rotate as it travels.
5792 Note, with the incorrect values for offset and strength the
5793 linear motor effect can easily cause the vehicle to tumble
5794 and spin uncontrollably, so experiement with small offsets
5795 first!.</P
5796><P
5797>Setting the angular motor to zero magnitude is different
5798 from allowing it to decay. When the motor completely decays
5799 it no longer affects the motion of the vehicle, however setting
5800 it to zero will reset the "grip" of the vehicle and
5801 will make the vehicle try to achieve zero angular velocity.
5802 </P
5803><P
5804>Many real vehicles bank (roll about their
5805 forward axis) to effect a turn, such as motorcycles and airplanes.
5806 To make it easier to build banking vehicles there is
5807 <A
5808HREF="#AEN949"
5809>banking behavior</A
5810>
5811 available which can be controlled by setting other parameters and is
5812 described in more detail here.</P
5813><P
5814>It is also possible to make a
5815 <A
5816HREF="#AEN921"
5817>vehicle turn in response
5818 to changing the camera view</A
5819>
5820 (right now this only works in mouselook).</P
5821></DIV
5822><DIV
5823CLASS="section"
5824><HR><H2
5825CLASS="section"
5826><A
5827NAME="AEN921"
5828>11.9. Using the Camera to Steer</A
5829></H2
5830><P
5831>The vehicle can be instructed to rotate its forward axis
5832 to point in the same direction as the camera view. This
5833 is achieved by setting some flags that change how the
5834 VEHICLE_ANGULAR_MOTOR_DIRECTION is interpreted. When used properly
5835 this feature has the advantage of being able to provide simple
5836 and stable steering that is resilient to bad render frame rates
5837 on the client. </P
5838><P
5839>The flags that affect the angular motor are:</P
5840><P
5841><P
5842></P
5843><UL
5844><LI
5845STYLE="list-style-type: opencircle"
5846><P
5847>&#13; VEHICLE_FLAG_MOUSELOOK_STEER</P
5848><P
5849>Steer the vehicle using the mouse. Use this flag to make
5850 the angular motor try to make the vehicle
5851 turn such that its local x-axis points in the same direction as
5852 the client-side camera.</P
5853></LI
5854><LI
5855STYLE="list-style-type: opencircle"
5856><P
5857>&#13; VEHICLE_FLAG_MOUSELOOK_BANK</P
5858><P
5859>Same as above, but relies on banking. It remaps left-right
5860 motions of the client camera (also known as "yaw") to rotations about
5861 the vehicle's local x-axis (also known as "roll"). </P
5862></LI
5863><LI
5864STYLE="list-style-type: opencircle"
5865><P
5866>&#13; VEHICLE_FLAG_CAMERA_DECOUPLED</P
5867><P
5868>Makes mouselook camera rotate independently of the vehicle.
5869 By default the client mouselook camera will rotate about
5870 with the vehicle, however when this flag is set the camera
5871 direction is independent of the vehicle's rotation.</P
5872></LI
5873></UL
5874></P
5875><P
5876>When using the VEHICLE_FLAG_MOUSELOOK_STEER (or
5877 VEHICLE_FLAG_MOUSELOOK_BANK) the meaning of the
5878 VEHICLE_ANGULAR_MOTOR_DIRECTION parameter subtly changes. Instead
5879 of representing the "angular velocity" of the motor
5880 the components of the parameter scale the "measured angular
5881 velocity" (as determined by the rotation between
5882 the client's camera view direction and the forward-axis of the vehicle)
5883 to compute the "final angular velocity". That is,
5884 suppose you set the angular motor to &#60;0, 0, 5&#62;, then moved the
5885 camera view to be PI/4 radians to the left of the vehicle's forward axis,
5886 and down PI/8 toward the ground.
5887 The measured angular velocity would be &#60;0, -PI/8, PI/4&#62;
5888 radians/second, but the final velocity would be &#60;0, 0, 5*PI/4&#62;...
5889 the vehicle will turn left, but will not dip its nose down.
5890 Thus, by setting a component of the VEHICLE_ANGULAR_MOTOR_DIRECTION
5891 to zero, one can negate the pitch or yaw response of the motor,
5892 or even scale one to be much more responsive than the other.
5893 </P
5894><P
5895>The VEHICLE_ANGULAR_MOTOR_TIMESCALE still has an effect when
5896 using mouselook control, and scales the global responsiveness of the
5897 angular motor. The VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, on the other
5898 hand, is ignored when using mouselook controls.</P
5899></DIV
5900><DIV
5901CLASS="section"
5902><HR><H2
5903CLASS="section"
5904><A
5905NAME="AEN938"
5906>11.10. The Vertical Attractor</A
5907></H2
5908><P
5909>Some vehicles, like boats, should always keep their up-side
5910 up. This can be done by enabling the "vertical
5911 attractor" behavior that springs the vehicle's local z-axis
5912 to the world z-axis (a.k.a. "up"). To take advantage of
5913 this feature you would set the VEHICLE_VERTICAL_ATTRACTION_TIMESCALE
5914 to control the period of the spring frequency, and then set the
5915 VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY to control the damping. An
5916 efficiency of 0.0 will cause the spring to wobble around its
5917 equilibrium, while an efficiency of 1.0 will cause the spring to
5918 reach it's equilibrium with exponential decay.</P
5919><P
5920><DIV
5921CLASS="informalexample"
5922><P
5923></P
5924><A
5925NAME="AEN942"
5926></A
5927><PRE
5928CLASS="programlisting"
5929>&#13;llSetVehicleVectorParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 4.0);
5930llSetVehicleVectorParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5);
5931 </PRE
5932><P
5933></P
5934></DIV
5935></P
5936><P
5937>The vertical attractor is disabled by setting its timescale
5938 to anything larger than 300 seconds.</P
5939><P
5940>Note that by default the vertical attractor will prevent the
5941 vehicle from diving and climbing. So, if you wanted to make a
5942 airplane you would probably want to unlock the attractor around the
5943 pitch axis by setting the VEHICLE_FLAG_LIMIT_ROLL_ONLY bit:</P
5944><P
5945><DIV
5946CLASS="informalexample"
5947><P
5948></P
5949><A
5950NAME="AEN947"
5951></A
5952><PRE
5953CLASS="programlisting"
5954>&#13;llSetVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY);
5955 </PRE
5956><P
5957></P
5958></DIV
5959></P
5960></DIV
5961><DIV
5962CLASS="section"
5963><HR><H2
5964CLASS="section"
5965><A
5966NAME="AEN949"
5967>11.11. Banking</A
5968></H2
5969><P
5970>The <A
5971HREF="#AEN938"
5972>&#13; vertical attractor</A
5973> feature must be enabled in order for
5974 the banking behavior to function. The way banking works is this: a
5975 rotation around the vehicle's roll-axis will produce a angular
5976 velocity around the yaw-axis, causing the vehicle to turn. The
5977 magnitude of the yaw effect will be proportional to the
5978 VEHICLE_BANKING_EFFICIENCY, the angle of the roll rotation, and
5979 sometimes the vehicle's velocity along it's preferred axis of
5980 motion.</P
5981><P
5982>The VEHICLE_BANKING_EFFICIENCY can vary between -1 and +1. When
5983 it's positive then any positive rotation (by the right-hand rule)
5984 about the roll-axis will effect a (negative) torque around the
5985 yaw-axis, making it turn to the right -- that is the vehicle will
5986 lean into the turn, which is how real airplanes and motorcycle's
5987 work. Negating the banking coefficient will make it so that the
5988 vehicle leans to the outside of the turn (not very
5989 "physical" but might allow interesting vehicles so why
5990 not?).</P
5991><P
5992>The VEHICLE_BANKING_MIX is a fake (i.e. non-physical)
5993 parameter that is useful for making banking vehicles do what you
5994 want rather than what the laws of physics allow. For example,
5995 consider a real motorcycle... it must be moving forward in order
5996 for it to turn while banking, however video-game motorcycles are
5997 often configured to turn in place when at a dead stop -- because
5998 they're often easier to control that way using the limited
5999 interface of the keyboard or game controller. The
6000 VEHICLE_BANKING_MIX enables combinations of both realistic and
6001 non-realistic banking by functioning as a slider between a banking
6002 that is correspondingly totally static (0.0) and totally dynamic
6003 (1.0). By "static" we mean that the banking effect
6004 depends only on the vehicle's rotation about it's roll-axis
6005 compared to "dynamic" where the banking is also
6006 proportional to it's velocity along it's roll-axis. Finding the
6007 best value of the "mixture" will probably require trial
6008 and error.</P
6009><P
6010>The time it takes for the
6011 banking behavior to defeat a
6012 pre-existing angular velocity about the world z-axis is determined
6013 by the VEHICLE_BANKING_TIMESCALE. So if you want the vehicle to
6014 bank quickly then give it a banking timescale of about a second or
6015 less, otherwise you can make a sluggish vehicle by giving it a
6016 timescale of several seconds.</P
6017></DIV
6018><DIV
6019CLASS="section"
6020><HR><H2
6021CLASS="section"
6022><A
6023NAME="AEN956"
6024>11.12. Friction Timescales</A
6025></H2
6026><P
6027>&#13; VEHICLE_LINEAR_FRICTION_TIMESCALE is a vector parameter that
6028 defines the timescales for the vehicle to come to a complete stop
6029 along the three local axes of the
6030 <A
6031HREF="#AEN990"
6032>vehicle's reference frame</A
6033>.
6034 The timescale along each axis is independent of the others.
6035 For example, a sliding ground car would probably have very little
6036 friction along its x- and z-axes (so it can easily slide forward
6037 and fall down) while there would usually significant friction
6038 along its y-axis:</P
6039><P
6040><DIV
6041CLASS="informalexample"
6042><P
6043></P
6044><A
6045NAME="AEN961"
6046></A
6047><PRE
6048CLASS="programlisting"
6049>&#13;llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;1000, 1000, 3&#62;);
6050 </PRE
6051><P
6052></P
6053></DIV
6054></P
6055><P
6056>Remember that a longer timescale corresponds to a weaker
6057 friction, hence to effectively disable all linear friction you
6058 would set all of the timescales to large values.</P
6059><P
6060>Setting the linear friction as a scalar is allowed, and has
6061 the effect of setting all of the timescales to the same
6062 value. Both code snippets below are equivalent, and both make friction
6063 negligible:</P
6064><P
6065><DIV
6066CLASS="informalexample"
6067><P
6068></P
6069><A
6070NAME="AEN966"
6071></A
6072><PRE
6073CLASS="programlisting"
6074>&#13;// set all linear friction timescales to 1000
6075llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;1000, 1000, 1000&#62;);
6076 </PRE
6077><P
6078></P
6079></DIV
6080></P
6081><P
6082><DIV
6083CLASS="informalexample"
6084><P
6085></P
6086><A
6087NAME="AEN969"
6088></A
6089><PRE
6090CLASS="programlisting"
6091>&#13;// same as above, but fewer characters
6092llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 1000);
6093 </PRE
6094><P
6095></P
6096></DIV
6097></P
6098><P
6099>&#13; VEHICLE_ANGULAR_FRICTION_TIMESCALE is also a vector
6100 parameter that defines the timescales for the vehicle to stop
6101 rotating about the x-, y-, and z-axes, and are set and disabled in
6102 the same way as the linear friction.</P
6103></DIV
6104><DIV
6105CLASS="section"
6106><HR><H2
6107CLASS="section"
6108><A
6109NAME="AEN972"
6110>11.13. Buoyancy</A
6111></H2
6112><P
6113>The vehicle has a built-in buoyancy feature that is
6114 independent of the <A
6115HREF="#AEN3773"
6116>llSetBuoyancy</A
6117> call. It
6118 is recommended that the two buoyancies do not mix! To make
6119 a vehicle buoyant, set the VEHICLE_BUOYANCY parameter to something
6120 between -1.0 (extra gravity) to 1.0 (full anti-gravity).
6121 </P
6122><P
6123>The buoyancy behavior is independent of hover, however
6124 in order for hover to work without a large offset of the
6125 VEHICLE_HOVER_HEIGHT, the VEHICLE_BUOYANCY should be set to 1.0.
6126 </P
6127><P
6128>It is not recommended that you mix vehicle buoyancy with
6129 the <A
6130HREF="#AEN3773"
6131>llSetBuoyancy</A
6132> script call.
6133 It would probably cause the object to fly up into space.</P
6134></DIV
6135><DIV
6136CLASS="section"
6137><HR><H2
6138CLASS="section"
6139><A
6140NAME="AEN979"
6141>11.14. Hover</A
6142></H2
6143><P
6144>The hover behavior is enabled by setting the
6145 VEHICLE_HOVER_TIMESCALE to a value less than 300 seconds; larger
6146 timescales totally disable it. Most vehicles will work
6147 best with short hover timescales of a few seconds or less.
6148 The shorter the timescale, the faster the vehicle will
6149 slave to is target height. Note, that if the values of
6150 VEHICLE_LINEAR_FRICTION_TIMESCALE may affect the speed of
6151 the hover.</P
6152><P
6153>Hover is independent of buoyancy, however the
6154 VEHICLE_BUOYANCY should be set to 1.0, otherwise the vehicle
6155 will not lift itself off of the ground until the
6156 VEHICLE_HOVER_HEIGHT is made large enough to counter the
6157 acceleration of gravity, and the vehicle will never float
6158 all the way to its target height. </P
6159><P
6160>The VEHICLE_HOVER_EFFICIENCY can be thought of as a slider
6161 between bouncy (0.0) and smoothed (1.0). When in the
6162 bouncy range the vehicle will tend to hover a little lower than
6163 its target height and the VEHICLE_HOVER_TIMESCALE will be
6164 approximately the oscillation period of the bounce (the real
6165 period will tend to be a little longer than the timescale).</P
6166><P
6167>For performance reasons, until improvements are made to the
6168 Second Life physics engine the vehicles can only hover over the
6169 terrain and water, so they will not be able to hover above
6170 objects made out of primitives, such as bridges and houses. By
6171 default the hover behavior will float over terrain and water,
6172 however this can be changed by setting some flags: </P
6173><P
6174>If you wanted to make a boat you should set the
6175 <A
6176HREF="#const_vehicle_flag_hover_water_only"
6177>&#13; VEHICLE_HOVER_WATER_ONLY </A
6178> flag, or if you wanted to drive a hover
6179 tank under water you would use the
6180 <A
6181HREF="#const_vehicle_flag_hover_terrain_only"
6182>&#13; VEHICLE_HOVER_TERRAIN_ONLY </A
6183> flag instead.
6184 Finally, if you wanted to make a submarine or a balloon you would use the
6185 <A
6186HREF="#const_vehicle_flag_hover_global_height"
6187>&#13; VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT</A
6188>. Note that
6189 the flags are independent of each other and that setting two
6190 contradictory flags will have undefined behavior. The flags are
6191 set using the script call llSetVehicleFlags().</P
6192><P
6193>The VEHICLE_HOVER_HEIGHT determines
6194 how high the vehicle
6195 will hover over the terrain and/or water, or the global height,
6196 and has a maximum value of 100 meters. Note that for hovering
6197 purposes the "center" of the vehicle is its "center of mass"
6198 which is not always obvious to the untrained eye, and it
6199 changes when avatar's sit on the vehicle.</P
6200></DIV
6201><DIV
6202CLASS="section"
6203><HR><H2
6204CLASS="section"
6205><A
6206NAME="AEN990"
6207>11.15. Reference Frame</A
6208></H2
6209><P
6210>The vehicle relies on the x- (at), y- (left), and z- (up)
6211 axes in order to figure out which way it prefers to move and
6212 which end is up. By default these axes are identical to the
6213 local axes of the root primitive of the object, however this
6214 means that the vehicle's root primitive must, by default, be
6215 oriented to agree with the designed at, left, and up axes of the
6216 vehicle. But, what if the vehicle object was already pre-built
6217 with the root primitive in some non-trivial orientation
6218 relative to where the vehicle as a whole should move? This is
6219 where the VEHICLE_REFERENCE_FRAME parameter becomes useful; the
6220 vehicle's axes can be arbitrarily reoriented by setting this
6221 parameter. </P
6222><P
6223>As an example, suppose you had built a rocket out of a big
6224 cylinder, a cone for the nose, and some stretched cut boxes for
6225 the fins, then linked them all together with the cylinder as the
6226 root primitive. Ideally the rocket would move nose-first,
6227 however the cylinder's axis of symmetry is its local z-axis while
6228 the default "at-axis" of the vehicle, the axis it will
6229 want to deflect to forward under angular deflection, is the local
6230 x-axis and points out from the curved surface of the cylinder.
6231 The script code below will rotate the vehicle's axes such that
6232 the local z-axis becomes the "at-axis" and the local
6233 negative x-axis becomes the "up-axis":</P
6234><P
6235><DIV
6236CLASS="informalexample"
6237><P
6238></P
6239><A
6240NAME="AEN995"
6241></A
6242><PRE
6243CLASS="programlisting"
6244>&#13;// rotate the vehicle frame -PI/2 about the local y-axis (left-axis)
6245rotation rot = llEuler2Rot(0, PI/2, 0);
6246llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, rot);
6247</PRE
6248><P
6249></P
6250></DIV
6251></P
6252><P
6253>Another example of how the reference frame parameter could
6254 be used is to consider flying craft that uses the vertical
6255 attractor for stability during flying but wants to use VTOL
6256 (vertical takeoff and landing). During flight the craft's dorsal
6257 axis should point up, but during landing its nose-axis should be
6258 up. To land the vehicle: while the
6259 <A
6260HREF="#AEN938"
6261>vertical attractor</A
6262>
6263 is in effect, rotate the existing VEHICLE_REFERENCE_FRAME by +PI/2
6264 about the left-axis, then the vehicle will pitch up such that
6265 it's nose points toward the sky. The vehicle could be allowed to
6266 fall to the landing pad under friction, or a decreasing hover
6267 effect. </P
6268></DIV
6269></DIV
6270><DIV
6271CLASS="appendix"
6272><HR><H1
6273><A
6274NAME="AEN999"
6275></A
6276>Appendix A. Linden Library Functions</H1
6277><P
6278>Complete listing of the Linden Library function calls
6279 available in lsl.</P
6280><DIV
6281CLASS="section"
6282><HR><H2
6283CLASS="section"
6284><A
6285NAME="AEN1002"
6286>A.1. llAbs</A
6287></H2
6288><DIV
6289CLASS="funcsynopsis"
6290><P
6291></P
6292><A
6293NAME="AEN1004"
6294></A
6295><P
6296><CODE
6297><CODE
6298CLASS="FUNCDEF"
6299>integer llAbs</CODE
6300>(integer val);</CODE
6301></P
6302><P
6303></P
6304></DIV
6305><P
6306>Returns the absolute value of
6307 <CODE
6308CLASS="parameter"
6309>val</CODE
6310>.</P
6311></DIV
6312><DIV
6313CLASS="section"
6314><HR><H2
6315CLASS="section"
6316><A
6317NAME="AEN1012"
6318>A.2. llAcos</A
6319></H2
6320><DIV
6321CLASS="funcsynopsis"
6322><P
6323></P
6324><A
6325NAME="AEN1014"
6326></A
6327><P
6328><CODE
6329><CODE
6330CLASS="FUNCDEF"
6331>float llAcos</CODE
6332>(float val);</CODE
6333></P
6334><P
6335></P
6336></DIV
6337><P
6338>Returns the arccosine in radians of
6339 <CODE
6340CLASS="parameter"
6341>val</CODE
6342>.</P
6343></DIV
6344><DIV
6345CLASS="section"
6346><HR><H2
6347CLASS="section"
6348><A
6349NAME="AEN1022"
6350>A.3. llAddToLandPassList</A
6351></H2
6352><DIV
6353CLASS="funcsynopsis"
6354><P
6355></P
6356><A
6357NAME="AEN1024"
6358></A
6359><P
6360><CODE
6361><CODE
6362CLASS="FUNCDEF"
6363>llAddToLandPassList</CODE
6364>(key avatar, float hours);</CODE
6365></P
6366><P
6367></P
6368></DIV
6369><P
6370>Add <CODE
6371CLASS="parameter"
6372>avatar</CODE
6373> to the land pass list for
6374 <CODE
6375CLASS="parameter"
6376>hours</CODE
6377>.</P
6378></DIV
6379><DIV
6380CLASS="section"
6381><HR><H2
6382CLASS="section"
6383><A
6384NAME="AEN1035"
6385>A.4. llAdjustSoundVolume</A
6386></H2
6387><DIV
6388CLASS="funcsynopsis"
6389><P
6390></P
6391><A
6392NAME="AEN1037"
6393></A
6394><P
6395><CODE
6396><CODE
6397CLASS="FUNCDEF"
6398>llAdjustSoundVolume</CODE
6399>(float volume);</CODE
6400></P
6401><P
6402></P
6403></DIV
6404><P
6405>Adjusts the volume of the currently playing attached sound
6406 started with <A
6407HREF="#AEN3184"
6408>llPlaySound</A
6409> or
6410 <A
6411HREF="#AEN2773"
6412>llLoopSound</A
6413>. This function
6414 Has no effect on sounds started with <A
6415HREF="#AEN4756"
6416>llTriggerSound</A
6417>.</P
6418></DIV
6419><DIV
6420CLASS="section"
6421><HR><H2
6422CLASS="section"
6423><A
6424NAME="AEN1047"
6425>A.5. llAllowInventoryDrop</A
6426></H2
6427><DIV
6428CLASS="funcsynopsis"
6429><P
6430></P
6431><A
6432NAME="AEN1049"
6433></A
6434><P
6435><CODE
6436><CODE
6437CLASS="FUNCDEF"
6438>llAllowInventoryDrop</CODE
6439>(integer add);</CODE
6440></P
6441><P
6442></P
6443></DIV
6444><P
6445>If <CODE
6446CLASS="parameter"
6447>add</CODE
6448> == TRUE, users that do no have
6449 object modify permissions can still drop inventory items onto
6450 object.</P
6451></DIV
6452><DIV
6453CLASS="section"
6454><HR><H2
6455CLASS="section"
6456><A
6457NAME="AEN1057"
6458>A.6. llAngleBetween</A
6459></H2
6460><DIV
6461CLASS="funcsynopsis"
6462><P
6463></P
6464><A
6465NAME="AEN1059"
6466></A
6467><P
6468><CODE
6469><CODE
6470CLASS="FUNCDEF"
6471>float llAngleBetween</CODE
6472>(rotation a, rotation b);</CODE
6473></P
6474><P
6475></P
6476></DIV
6477><P
6478>Returns the angle in radians between rotations
6479 <CODE
6480CLASS="parameter"
6481>a</CODE
6482> and <CODE
6483CLASS="parameter"
6484>b</CODE
6485>.</P
6486></DIV
6487><DIV
6488CLASS="section"
6489><HR><H2
6490CLASS="section"
6491><A
6492NAME="AEN1070"
6493>A.7. llApplyImpulse</A
6494></H2
6495><DIV
6496CLASS="funcsynopsis"
6497><P
6498></P
6499><A
6500NAME="AEN1072"
6501></A
6502><P
6503><CODE
6504><CODE
6505CLASS="FUNCDEF"
6506>llApplyImpulse</CODE
6507>(vector force, integer local);</CODE
6508></P
6509><P
6510></P
6511></DIV
6512><P
6513>Applies the <CODE
6514CLASS="parameter"
6515>impulse</CODE
6516> in local
6517 coordinates if <CODE
6518CLASS="parameter"
6519>local</CODE
6520> == TRUE. Otherwise the
6521 impulse is applied in global coordinates. This function only works
6522 on physical objects.</P
6523></DIV
6524><DIV
6525CLASS="section"
6526><HR><H2
6527CLASS="section"
6528><A
6529NAME="AEN1083"
6530>A.8. llApplyRotationalImpulse</A
6531></H2
6532><DIV
6533CLASS="funcsynopsis"
6534><P
6535></P
6536><A
6537NAME="AEN1085"
6538></A
6539><P
6540><CODE
6541><CODE
6542CLASS="FUNCDEF"
6543>llApplyRotationalImpulse</CODE
6544>(vector force, integer local);</CODE
6545></P
6546><P
6547></P
6548></DIV
6549><P
6550>Applies a rotational <CODE
6551CLASS="parameter"
6552>impulse</CODE
6553> force in
6554 local coordinates if <CODE
6555CLASS="parameter"
6556>local</CODE
6557> ==
6558 TRUE. Otherwise the impulse is applied in global coordinates. This
6559 function only works on physical objects.</P
6560></DIV
6561><DIV
6562CLASS="section"
6563><HR><H2
6564CLASS="section"
6565><A
6566NAME="AEN1096"
6567>A.9. llAsin</A
6568></H2
6569><DIV
6570CLASS="funcsynopsis"
6571><P
6572></P
6573><A
6574NAME="AEN1098"
6575></A
6576><P
6577><CODE
6578><CODE
6579CLASS="FUNCDEF"
6580>float llAsin</CODE
6581>(float val);</CODE
6582></P
6583><P
6584></P
6585></DIV
6586><P
6587>Returns the arcsine in radians of
6588 <CODE
6589CLASS="parameter"
6590>val</CODE
6591>.</P
6592></DIV
6593><DIV
6594CLASS="section"
6595><HR><H2
6596CLASS="section"
6597><A
6598NAME="AEN1106"
6599>A.10. llAtan2</A
6600></H2
6601><DIV
6602CLASS="funcsynopsis"
6603><P
6604></P
6605><A
6606NAME="AEN1108"
6607></A
6608><P
6609><CODE
6610><CODE
6611CLASS="FUNCDEF"
6612>float llAtan2</CODE
6613>(float y, float x);</CODE
6614></P
6615><P
6616></P
6617></DIV
6618><P
6619>returns the arctangent2 of <CODE
6620CLASS="parameter"
6621>y</CODE
6622>,
6623 <CODE
6624CLASS="parameter"
6625>x</CODE
6626></P
6627></DIV
6628><DIV
6629CLASS="section"
6630><HR><H2
6631CLASS="section"
6632><A
6633NAME="AEN1119"
6634>A.11. llAttachToAvatar</A
6635></H2
6636><DIV
6637CLASS="funcsynopsis"
6638><P
6639></P
6640><A
6641NAME="AEN1121"
6642></A
6643><P
6644><CODE
6645><CODE
6646CLASS="FUNCDEF"
6647>llAttachToAvatar</CODE
6648>(key avatar, integer attachment);</CODE
6649></P
6650><P
6651></P
6652></DIV
6653><P
6654>Attach to <CODE
6655CLASS="parameter"
6656>avatar</CODE
6657> at point <A
6658HREF="#AEN5448"
6659><CODE
6660CLASS="parameter"
6661>attachment</CODE
6662></A
6663>.
6664 Requires the <A
6665HREF="#const_permission_attach"
6666>PERMISSION_ATTACH</A
6667> runtime
6668 permission.</P
6669></DIV
6670><DIV
6671CLASS="section"
6672><HR><H2
6673CLASS="section"
6674><A
6675NAME="AEN1134"
6676>A.12. llAvatarOnSitTarget</A
6677></H2
6678><DIV
6679CLASS="funcsynopsis"
6680><P
6681></P
6682><A
6683NAME="AEN1136"
6684></A
6685><P
6686><CODE
6687><CODE
6688CLASS="FUNCDEF"
6689>key llAvatarOnSitTarget</CODE
6690>(void);</CODE
6691></P
6692><P
6693></P
6694></DIV
6695><P
6696>If an avatar is sitting on the sit target, return
6697 the avatar's key, <A
6698HREF="#AEN6070"
6699>NULL_KEY</A
6700> otherwise.
6701 This only will detect avatars sitting on sit targets defined with <A
6702HREF="#AEN4312"
6703>llSitTarget</A
6704>.</P
6705></DIV
6706><DIV
6707CLASS="section"
6708><HR><H2
6709CLASS="section"
6710><A
6711NAME="AEN1144"
6712>A.13. llAxes2Rot</A
6713></H2
6714><DIV
6715CLASS="funcsynopsis"
6716><P
6717></P
6718><A
6719NAME="AEN1146"
6720></A
6721><P
6722><CODE
6723><CODE
6724CLASS="FUNCDEF"
6725>rotation llAxes2Rot</CODE
6726>(vector fwd, vector left, vector up);</CODE
6727></P
6728><P
6729></P
6730></DIV
6731><P
6732>Returns the rotation represented by coordinate axes
6733 <CODE
6734CLASS="parameter"
6735>fwd</CODE
6736>, <CODE
6737CLASS="parameter"
6738>left</CODE
6739>, and
6740 <CODE
6741CLASS="parameter"
6742>up</CODE
6743>.</P
6744></DIV
6745><DIV
6746CLASS="section"
6747><HR><H2
6748CLASS="section"
6749><A
6750NAME="AEN1160"
6751>A.14. llAxisAngle2Rot</A
6752></H2
6753><DIV
6754CLASS="funcsynopsis"
6755><P
6756></P
6757><A
6758NAME="AEN1162"
6759></A
6760><P
6761><CODE
6762><CODE
6763CLASS="FUNCDEF"
6764>rotation llAxisAngle2Rot</CODE
6765>(vector axis, float angle);</CODE
6766></P
6767><P
6768></P
6769></DIV
6770><P
6771>Returns the rotation generated <CODE
6772CLASS="parameter"
6773>angle</CODE
6774>
6775 about <CODE
6776CLASS="parameter"
6777>axis</CODE
6778>.</P
6779></DIV
6780><DIV
6781CLASS="section"
6782><HR><H2
6783CLASS="section"
6784><A
6785NAME="AEN1173"
6786>A.15. llBase64ToString</A
6787></H2
6788><DIV
6789CLASS="funcsynopsis"
6790><P
6791></P
6792><A
6793NAME="AEN1175"
6794></A
6795><P
6796><CODE
6797><CODE
6798CLASS="FUNCDEF"
6799>string llBase64ToString</CODE
6800>(string str);</CODE
6801></P
6802><P
6803></P
6804></DIV
6805><P
6806>Converts a Base 64 string to a conventional string. If the
6807 conversion creates any unprintable characters, they are converted to
6808 spaces.</P
6809></DIV
6810><DIV
6811CLASS="section"
6812><HR><H2
6813CLASS="section"
6814><A
6815NAME="AEN1182"
6816>A.16. llBreakAllLinks</A
6817></H2
6818><DIV
6819CLASS="funcsynopsis"
6820><P
6821></P
6822><A
6823NAME="AEN1184"
6824></A
6825><P
6826><CODE
6827><CODE
6828CLASS="FUNCDEF"
6829>llBreakAllLinks</CODE
6830>(void);</CODE
6831></P
6832><P
6833></P
6834></DIV
6835><P
6836>Delinks all objects in the link set. Requires the permission
6837 <A
6838HREF="#const_permission_change_links"
6839>PERMISSION_CHANGE_LINKS</A
6840>
6841 be set.</P
6842></DIV
6843><DIV
6844CLASS="section"
6845><HR><H2
6846CLASS="section"
6847><A
6848NAME="AEN1191"
6849>A.17. llBreakLink</A
6850></H2
6851><DIV
6852CLASS="funcsynopsis"
6853><P
6854></P
6855><A
6856NAME="AEN1193"
6857></A
6858><P
6859><CODE
6860><CODE
6861CLASS="FUNCDEF"
6862>llBreakLink</CODE
6863>(integer linknum);</CODE
6864></P
6865><P
6866></P
6867></DIV
6868><P
6869>Delinks the object with the given
6870 <CODE
6871CLASS="parameter"
6872>link</CODE
6873> number. Requires permission <A
6874HREF="#const_permission_change_links"
6875>PERMISSION_CHANGE_LINKS</A
6876>
6877 be set.</P
6878></DIV
6879><DIV
6880CLASS="section"
6881><HR><H2
6882CLASS="section"
6883><A
6884NAME="AEN1202"
6885>A.18. llCSV2List</A
6886></H2
6887><DIV
6888CLASS="funcsynopsis"
6889><P
6890></P
6891><A
6892NAME="AEN1204"
6893></A
6894><P
6895><CODE
6896><CODE
6897CLASS="FUNCDEF"
6898>list llCSV2List</CODE
6899>(string src);</CODE
6900></P
6901><P
6902></P
6903></DIV
6904><P
6905>Create a list from a string of comma separated values
6906 specified in <CODE
6907CLASS="parameter"
6908>src</CODE
6909>.</P
6910></DIV
6911><DIV
6912CLASS="section"
6913><HR><H2
6914CLASS="section"
6915><A
6916NAME="AEN1212"
6917>A.19. llCeil</A
6918></H2
6919><DIV
6920CLASS="funcsynopsis"
6921><P
6922></P
6923><A
6924NAME="AEN1214"
6925></A
6926><P
6927><CODE
6928><CODE
6929CLASS="FUNCDEF"
6930>integer llCeil</CODE
6931>(float val);</CODE
6932></P
6933><P
6934></P
6935></DIV
6936><P
6937>Returns largest integer value &#62;=
6938 <CODE
6939CLASS="parameter"
6940>val</CODE
6941>.</P
6942></DIV
6943><DIV
6944CLASS="section"
6945><HR><H2
6946CLASS="section"
6947><A
6948NAME="AEN1222"
6949>A.20. llCloseRemoteDataChannel</A
6950></H2
6951><DIV
6952CLASS="funcsynopsis"
6953><P
6954></P
6955><A
6956NAME="AEN1224"
6957></A
6958><P
6959><CODE
6960><CODE
6961CLASS="FUNCDEF"
6962>llCloseRemoteDataChannel</CODE
6963>(key channel);</CODE
6964></P
6965><P
6966></P
6967></DIV
6968><P
6969>Closes XML-RPC channel.</P
6970></DIV
6971><DIV
6972CLASS="section"
6973><HR><H2
6974CLASS="section"
6975><A
6976NAME="AEN1231"
6977>A.21. llCloud</A
6978></H2
6979><DIV
6980CLASS="funcsynopsis"
6981><P
6982></P
6983><A
6984NAME="AEN1233"
6985></A
6986><P
6987><CODE
6988><CODE
6989CLASS="FUNCDEF"
6990>float llCloud</CODE
6991>(vector offset);</CODE
6992></P
6993><P
6994></P
6995></DIV
6996><P
6997>Returns the cloud density at the object position +
6998 <CODE
6999CLASS="parameter"
7000>offset</CODE
7001>.</P
7002></DIV
7003><DIV
7004CLASS="section"
7005><HR><H2
7006CLASS="section"
7007><A
7008NAME="AEN1241"
7009>A.22. llCollisionFilter</A
7010></H2
7011><DIV
7012CLASS="funcsynopsis"
7013><P
7014></P
7015><A
7016NAME="AEN1243"
7017></A
7018><P
7019><CODE
7020><CODE
7021CLASS="FUNCDEF"
7022>llCollisionFilter</CODE
7023>(string name, key id, integer accept);</CODE
7024></P
7025><P
7026></P
7027></DIV
7028><P
7029>If <CODE
7030CLASS="parameter"
7031>accept</CODE
7032> == TRUE, only accept
7033 collisions with objects <CODE
7034CLASS="parameter"
7035>name</CODE
7036> and
7037 <CODE
7038CLASS="parameter"
7039>id</CODE
7040>, otherwise with objects not
7041 <CODE
7042CLASS="parameter"
7043>name</CODE
7044> or <CODE
7045CLASS="parameter"
7046>id</CODE
7047>. Specify
7048 an empty string or <A
7049HREF="#AEN6070"
7050>NULL_KEY</A
7051> to
7052 not filter on the corresponding parameter.</P
7053></DIV
7054><DIV
7055CLASS="section"
7056><HR><H2
7057CLASS="section"
7058><A
7059NAME="AEN1260"
7060>A.23. llCollisionSound</A
7061></H2
7062><DIV
7063CLASS="funcsynopsis"
7064><P
7065></P
7066><A
7067NAME="AEN1262"
7068></A
7069><P
7070><CODE
7071><CODE
7072CLASS="FUNCDEF"
7073>llCollisionSound</CODE
7074>(string impact_sound, float impact_volume);</CODE
7075></P
7076><P
7077></P
7078></DIV
7079><P
7080>Suppress default collision sounds, replace default impact
7081 sounds with <CODE
7082CLASS="parameter"
7083>impact_sound</CODE
7084> found in the
7085 object inventory. Supply an empty string to suppress collision
7086 sounds.</P
7087></DIV
7088><DIV
7089CLASS="section"
7090><HR><H2
7091CLASS="section"
7092><A
7093NAME="AEN1272"
7094>A.24. llCollisionSprite</A
7095></H2
7096><DIV
7097CLASS="funcsynopsis"
7098><P
7099></P
7100><A
7101NAME="AEN1274"
7102></A
7103><P
7104><CODE
7105><CODE
7106CLASS="FUNCDEF"
7107>llCollisionSprite</CODE
7108>(string impact_sprite);</CODE
7109></P
7110><P
7111></P
7112></DIV
7113><P
7114>Suppress default collision sprites, replace default impact
7115 sprite with <CODE
7116CLASS="parameter"
7117>impact_sprite</CODE
7118> found in the
7119 object inventory. Supply an empty string to just suppress.</P
7120></DIV
7121><DIV
7122CLASS="section"
7123><HR><H2
7124CLASS="section"
7125><A
7126NAME="AEN1282"
7127>A.25. llCos</A
7128></H2
7129><DIV
7130CLASS="funcsynopsis"
7131><P
7132></P
7133><A
7134NAME="AEN1284"
7135></A
7136><P
7137><CODE
7138><CODE
7139CLASS="FUNCDEF"
7140>float llCos</CODE
7141>(float theta);</CODE
7142></P
7143><P
7144></P
7145></DIV
7146><P
7147>Returns the cosine of <CODE
7148CLASS="parameter"
7149>theta</CODE
7150>
7151 radians.</P
7152></DIV
7153><DIV
7154CLASS="section"
7155><HR><H2
7156CLASS="section"
7157><A
7158NAME="AEN1292"
7159>A.26. llCreateLink</A
7160></H2
7161><DIV
7162CLASS="funcsynopsis"
7163><P
7164></P
7165><A
7166NAME="AEN1294"
7167></A
7168><P
7169><CODE
7170><CODE
7171CLASS="FUNCDEF"
7172>llCreateLink</CODE
7173>(key target, integer parent);</CODE
7174></P
7175><P
7176></P
7177></DIV
7178><P
7179>Attempt to link object script is attached to and
7180 <CODE
7181CLASS="parameter"
7182>target</CODE
7183>. Requires permission <A
7184HREF="#const_permission_change_links"
7185>PERMISSION_CHANGE_LINKS</A
7186>
7187 be set. If <CODE
7188CLASS="parameter"
7189>parent</CODE
7190> == TRUE, object script is
7191 attached to is the root.</P
7192></DIV
7193><DIV
7194CLASS="section"
7195><HR><H2
7196CLASS="section"
7197><A
7198NAME="AEN1306"
7199>A.27. llDeleteSubList</A
7200></H2
7201><DIV
7202CLASS="funcsynopsis"
7203><P
7204></P
7205><A
7206NAME="AEN1308"
7207></A
7208><P
7209><CODE
7210><CODE
7211CLASS="FUNCDEF"
7212>list llDeleteSubList</CODE
7213>(list src, integer start, integer end);</CODE
7214></P
7215><P
7216></P
7217></DIV
7218><P
7219>Remove the slice from the list and return the remainder.
7220 The <CODE
7221CLASS="parameter"
7222>start</CODE
7223> and <CODE
7224CLASS="parameter"
7225>end</CODE
7226>
7227 are inclusive, so 0, length - 1 would delete the entire list and
7228 0,0 would delete the first list entry. Using negative numbers for
7229 <CODE
7230CLASS="parameter"
7231>start</CODE
7232> and/or <CODE
7233CLASS="parameter"
7234>end</CODE
7235>
7236 causes the index to count backwards from the length of the list,
7237 so 0,-1 would delete the entire list. If
7238 <CODE
7239CLASS="parameter"
7240>start</CODE
7241> is larger than
7242 <CODE
7243CLASS="parameter"
7244>end</CODE
7245> the list deleted is the exclusion of the
7246 entries, so 6,4 would delete the entire list except for the
7247 5<SUP
7248>th</SUP
7249> list entry.</P
7250></DIV
7251><DIV
7252CLASS="section"
7253><HR><H2
7254CLASS="section"
7255><A
7256NAME="AEN1326"
7257>A.28. llDeleteSubString</A
7258></H2
7259><DIV
7260CLASS="funcsynopsis"
7261><P
7262></P
7263><A
7264NAME="AEN1328"
7265></A
7266><P
7267><CODE
7268><CODE
7269CLASS="FUNCDEF"
7270>string llDeleteSubString</CODE
7271>(string src, integer start, integer end);</CODE
7272></P
7273><P
7274></P
7275></DIV
7276><P
7277>Removes the indicated substring and returns the result. The
7278 <CODE
7279CLASS="parameter"
7280>start</CODE
7281> and <CODE
7282CLASS="parameter"
7283>end</CODE
7284> are
7285 inclusive, so 0,length-1 would delete the entire string and 0,0
7286 would delete the first character. Using negative numbers for
7287 <CODE
7288CLASS="parameter"
7289>start</CODE
7290> and/or <CODE
7291CLASS="parameter"
7292>end</CODE
7293>
7294 causes the index to count backwards from the length of the string,
7295 so 0,-1 would delete the entire string. If
7296 <CODE
7297CLASS="parameter"
7298>start</CODE
7299> is larger than end the sub string is
7300 the exclusion of the entries, so 6,4 would delete the entire
7301 string except for the 5<SUP
7302>th</SUP
7303>
7304 character.</P
7305></DIV
7306><DIV
7307CLASS="section"
7308><HR><H2
7309CLASS="section"
7310><A
7311NAME="AEN1345"
7312>A.29. llDetachFromAvatar</A
7313></H2
7314><DIV
7315CLASS="funcsynopsis"
7316><P
7317></P
7318><A
7319NAME="AEN1347"
7320></A
7321><P
7322><CODE
7323><CODE
7324CLASS="FUNCDEF"
7325>llDetachFromAvatar</CODE
7326>(key avatar);</CODE
7327></P
7328><P
7329></P
7330></DIV
7331><P
7332>Drop off of <CODE
7333CLASS="parameter"
7334>avatar</CODE
7335>.</P
7336></DIV
7337><DIV
7338CLASS="section"
7339><HR><H2
7340CLASS="section"
7341><A
7342NAME="lib_lldetected"
7343>A.30. llDetectedGrab</A
7344></H2
7345><DIV
7346CLASS="funcsynopsis"
7347><P
7348></P
7349><A
7350NAME="AEN1357"
7351></A
7352><P
7353><CODE
7354><CODE
7355CLASS="FUNCDEF"
7356>vector llDetectedGrab</CODE
7357>(integer number);</CODE
7358></P
7359><P
7360></P
7361></DIV
7362><P
7363>Returns the grab offset of detected object
7364 <CODE
7365CLASS="parameter"
7366>number</CODE
7367>. Returns &#60;0,0,0&#62; if number is
7368 not valid sensed object.</P
7369></DIV
7370><DIV
7371CLASS="section"
7372><HR><H2
7373CLASS="section"
7374><A
7375NAME="AEN1365"
7376>A.31. llDetectedGroup</A
7377></H2
7378><DIV
7379CLASS="funcsynopsis"
7380><P
7381></P
7382><A
7383NAME="AEN1367"
7384></A
7385><P
7386><CODE
7387><CODE
7388CLASS="FUNCDEF"
7389>integer llDetectedGroup</CODE
7390>(integer number);</CODE
7391></P
7392><P
7393></P
7394></DIV
7395><P
7396>Returns TRUE if detected object
7397 <CODE
7398CLASS="parameter"
7399>number</CODE
7400> is part of same group as
7401 owner.</P
7402></DIV
7403><DIV
7404CLASS="section"
7405><HR><H2
7406CLASS="section"
7407><A
7408NAME="AEN1375"
7409>A.32. llDetectedKey</A
7410></H2
7411><DIV
7412CLASS="funcsynopsis"
7413><P
7414></P
7415><A
7416NAME="AEN1377"
7417></A
7418><P
7419><CODE
7420><CODE
7421CLASS="FUNCDEF"
7422>key llDetectedKey</CODE
7423>(integer number);</CODE
7424></P
7425><P
7426></P
7427></DIV
7428><P
7429>Returns the key of detected object
7430 <CODE
7431CLASS="parameter"
7432>number</CODE
7433>. Returns <A
7434HREF="#AEN6070"
7435>NULL_KEY</A
7436> if number is not valid sensed
7437 object.</P
7438></DIV
7439><DIV
7440CLASS="section"
7441><HR><H2
7442CLASS="section"
7443><A
7444NAME="AEN1386"
7445>A.33. llDetectedLinkNumber</A
7446></H2
7447><DIV
7448CLASS="funcsynopsis"
7449><P
7450></P
7451><A
7452NAME="AEN1388"
7453></A
7454><P
7455><CODE
7456><CODE
7457CLASS="FUNCDEF"
7458>integer llDetectedLinkNumber</CODE
7459>(integer number);</CODE
7460></P
7461><P
7462></P
7463></DIV
7464><P
7465>Returns the link position of the triggered event for
7466 touches. 0 for a non-linked object, 1 for the root of a linked
7467 object, 2 for the first child, etc.</P
7468></DIV
7469><DIV
7470CLASS="section"
7471><HR><H2
7472CLASS="section"
7473><A
7474NAME="AEN1395"
7475>A.34. llDetectedName</A
7476></H2
7477><DIV
7478CLASS="funcsynopsis"
7479><P
7480></P
7481><A
7482NAME="AEN1397"
7483></A
7484><P
7485><CODE
7486><CODE
7487CLASS="FUNCDEF"
7488>string llDetectedName</CODE
7489>(integer number);</CODE
7490></P
7491><P
7492></P
7493></DIV
7494><P
7495>Returns the name of detected object
7496 <CODE
7497CLASS="parameter"
7498>number</CODE
7499>. Returns empty string if
7500 <CODE
7501CLASS="parameter"
7502>number</CODE
7503> is not valid sensed object.</P
7504></DIV
7505><DIV
7506CLASS="section"
7507><HR><H2
7508CLASS="section"
7509><A
7510NAME="AEN1406"
7511>A.35. llDetectedOwner</A
7512></H2
7513><DIV
7514CLASS="funcsynopsis"
7515><P
7516></P
7517><A
7518NAME="AEN1408"
7519></A
7520><P
7521><CODE
7522><CODE
7523CLASS="FUNCDEF"
7524>key llDetectedOwner</CODE
7525>(integer number);</CODE
7526></P
7527><P
7528></P
7529></DIV
7530><P
7531>Returns the key of detected <CODE
7532CLASS="parameter"
7533>number</CODE
7534>
7535 object's owner. Returns invalid key if
7536 <CODE
7537CLASS="parameter"
7538>number</CODE
7539> is not valid sensed object.</P
7540></DIV
7541><DIV
7542CLASS="section"
7543><HR><H2
7544CLASS="section"
7545><A
7546NAME="AEN1417"
7547>A.36. llDetectedPos</A
7548></H2
7549><DIV
7550CLASS="funcsynopsis"
7551><P
7552></P
7553><A
7554NAME="AEN1419"
7555></A
7556><P
7557><CODE
7558><CODE
7559CLASS="FUNCDEF"
7560>vector llDetectedPos</CODE
7561>(integer number);</CODE
7562></P
7563><P
7564></P
7565></DIV
7566><P
7567>Returns the position of detected object
7568 <CODE
7569CLASS="parameter"
7570>number</CODE
7571>. Returns &#60;0,0,0&#62; if
7572 <CODE
7573CLASS="parameter"
7574>number</CODE
7575> is not valid sensed object.</P
7576></DIV
7577><DIV
7578CLASS="section"
7579><HR><H2
7580CLASS="section"
7581><A
7582NAME="AEN1428"
7583>A.37. llDetectedRot</A
7584></H2
7585><DIV
7586CLASS="funcsynopsis"
7587><P
7588></P
7589><A
7590NAME="AEN1430"
7591></A
7592><P
7593><CODE
7594><CODE
7595CLASS="FUNCDEF"
7596>rotation llDetectedRot</CODE
7597>(integer number);</CODE
7598></P
7599><P
7600></P
7601></DIV
7602><P
7603>Returns the rotation of detected object
7604 <CODE
7605CLASS="parameter"
7606>number</CODE
7607>. Returns &#60;0,0,0,1&#62; if
7608 <CODE
7609CLASS="parameter"
7610>number</CODE
7611> is not valid sensed object).</P
7612></DIV
7613><DIV
7614CLASS="section"
7615><HR><H2
7616CLASS="section"
7617><A
7618NAME="AEN1439"
7619>A.38. llDetectedType</A
7620></H2
7621><DIV
7622CLASS="funcsynopsis"
7623><P
7624></P
7625><A
7626NAME="AEN1441"
7627></A
7628><P
7629><CODE
7630><CODE
7631CLASS="FUNCDEF"
7632>integer llDetectedType</CODE
7633>(integer number);</CODE
7634></P
7635><P
7636></P
7637></DIV
7638><P
7639>Returns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of
7640 detected object <CODE
7641CLASS="parameter"
7642>number</CODE
7643>. Returns 0 if
7644 <CODE
7645CLASS="parameter"
7646>number</CODE
7647> is not valid sensed object. Note
7648 that <CODE
7649CLASS="parameter"
7650>number</CODE
7651> is a bitfield, so comparisons
7652 need to be a bitwise and check. eg:
7653<DIV
7654CLASS="informalexample"
7655><P
7656></P
7657><A
7658NAME="AEN1451"
7659></A
7660><PRE
7661CLASS="programlisting"
7662>&#13;integer type = llDetectedType(0);
7663if (type &#38; AGENT)
7664{
7665 // ...do stuff with the agent
7666}
7667</PRE
7668><P
7669></P
7670></DIV
7671>
7672 </P
7673></DIV
7674><DIV
7675CLASS="section"
7676><HR><H2
7677CLASS="section"
7678><A
7679NAME="AEN1453"
7680>A.39. llDetectedVel</A
7681></H2
7682><DIV
7683CLASS="funcsynopsis"
7684><P
7685></P
7686><A
7687NAME="AEN1455"
7688></A
7689><P
7690><CODE
7691><CODE
7692CLASS="FUNCDEF"
7693>vector llDetectedVel</CODE
7694>(integer number);</CODE
7695></P
7696><P
7697></P
7698></DIV
7699><P
7700>Returns the velocity of detected object
7701 <CODE
7702CLASS="parameter"
7703>number</CODE
7704>. Returns &#60;0,0,0&#62; if
7705 <CODE
7706CLASS="parameter"
7707>number</CODE
7708> is not valid sensed object.</P
7709></DIV
7710><DIV
7711CLASS="section"
7712><HR><H2
7713CLASS="section"
7714><A
7715NAME="AEN1464"
7716>A.40. llDialog</A
7717></H2
7718><DIV
7719CLASS="funcsynopsis"
7720><P
7721></P
7722><A
7723NAME="AEN1466"
7724></A
7725><P
7726><CODE
7727><CODE
7728CLASS="FUNCDEF"
7729>llDialog</CODE
7730>(key avatar, string message, list buttons, integer channel);</CODE
7731></P
7732><P
7733></P
7734></DIV
7735><P
7736>Opens a "notify box" in the top-right corner of the given avatar's screen displaying the message. Up to twelve buttons can be specified in a list of strings. When the player clicks a button, the name of the button is chatted on the specified channel. Channels work just like llSay(), so channel 0 can be heard by everyone. The chat originates at the object's position, not the avatar's position. e.g.
7737<DIV
7738CLASS="informalexample"
7739><P
7740></P
7741><A
7742NAME="AEN1479"
7743></A
7744><PRE
7745CLASS="programlisting"
7746>&#13;LLDialog(who, "Are you a boy or a girl?", [ "Boy", "Girl" ], 4913);
7747LLDialog(who, "This shows only an OK button.", [], 192);
7748llDialog(who, "This chats so you can hear it.", ["Hooray"], 0);
7749</PRE
7750><P
7751></P
7752></DIV
7753>
7754 </P
7755></DIV
7756><DIV
7757CLASS="section"
7758><HR><H2
7759CLASS="section"
7760><A
7761NAME="AEN1481"
7762>A.41. llDie</A
7763></H2
7764><DIV
7765CLASS="funcsynopsis"
7766><P
7767></P
7768><A
7769NAME="AEN1483"
7770></A
7771><P
7772><CODE
7773><CODE
7774CLASS="FUNCDEF"
7775>llDie</CODE
7776>(void);</CODE
7777></P
7778><P
7779></P
7780></DIV
7781><P
7782>Delete the object which holds the script.</P
7783></DIV
7784><DIV
7785CLASS="section"
7786><HR><H2
7787CLASS="section"
7788><A
7789NAME="AEN1489"
7790>A.42. llDumpList2String</A
7791></H2
7792><DIV
7793CLASS="funcsynopsis"
7794><P
7795></P
7796><A
7797NAME="AEN1491"
7798></A
7799><P
7800><CODE
7801><CODE
7802CLASS="FUNCDEF"
7803>string llDumpList2String</CODE
7804>(list src, string separator);</CODE
7805></P
7806><P
7807></P
7808></DIV
7809><P
7810>Write the list out in a single string using separator between values.</P
7811></DIV
7812><DIV
7813CLASS="section"
7814><HR><H2
7815CLASS="section"
7816><A
7817NAME="AEN1500"
7818>A.43. llEscapeURL</A
7819></H2
7820><DIV
7821CLASS="funcsynopsis"
7822><P
7823></P
7824><A
7825NAME="AEN1502"
7826></A
7827><P
7828><CODE
7829><CODE
7830CLASS="FUNCDEF"
7831>string llEscapeURL</CODE
7832>(string url);</CODE
7833></P
7834><P
7835></P
7836></DIV
7837><P
7838>Returns the string that is the URL escaped version of <CODE
7839CLASS="parameter"
7840>url</CODE
7841>,
7842 replacing spaces with %20 etc.</P
7843></DIV
7844><DIV
7845CLASS="section"
7846><HR><H2
7847CLASS="section"
7848><A
7849NAME="AEN1510"
7850>A.44. llEdgeOfWorld</A
7851></H2
7852><DIV
7853CLASS="funcsynopsis"
7854><P
7855></P
7856><A
7857NAME="AEN1512"
7858></A
7859><P
7860><CODE
7861><CODE
7862CLASS="FUNCDEF"
7863>integer llEdgeOfWorld</CODE
7864>(vector pos, vector dir);</CODE
7865></P
7866><P
7867></P
7868></DIV
7869><P
7870>Returns TRUE if the line along <CODE
7871CLASS="parameter"
7872>dir</CODE
7873>
7874 from <CODE
7875CLASS="parameter"
7876>pos</CODE
7877> hits the edge of the world in the
7878 current simulator and returns FALSE if that edge crosses into
7879 another simulator.</P
7880></DIV
7881><DIV
7882CLASS="section"
7883><HR><H2
7884CLASS="section"
7885><A
7886NAME="AEN1523"
7887>A.45. llEjectFromLand</A
7888></H2
7889><DIV
7890CLASS="funcsynopsis"
7891><P
7892></P
7893><A
7894NAME="AEN1525"
7895></A
7896><P
7897><CODE
7898><CODE
7899CLASS="FUNCDEF"
7900>llEjectFromLand</CODE
7901>(key pest);</CODE
7902></P
7903><P
7904></P
7905></DIV
7906><P
7907>Ejects <CODE
7908CLASS="parameter"
7909>pest</CODE
7910> from land that you
7911 own.</P
7912></DIV
7913><DIV
7914CLASS="section"
7915><HR><H2
7916CLASS="section"
7917><A
7918NAME="AEN1533"
7919>A.46. llEmail</A
7920></H2
7921><DIV
7922CLASS="funcsynopsis"
7923><P
7924></P
7925><A
7926NAME="AEN1535"
7927></A
7928><P
7929><CODE
7930><CODE
7931CLASS="FUNCDEF"
7932>llEmail</CODE
7933>(string address, string subject, string message);</CODE
7934></P
7935><P
7936></P
7937></DIV
7938><P
7939>Sends email to <CODE
7940CLASS="parameter"
7941>address</CODE
7942> with
7943 <CODE
7944CLASS="parameter"
7945>subject</CODE
7946> and
7947 <CODE
7948CLASS="parameter"
7949>message</CODE
7950>.</P
7951></DIV
7952><DIV
7953CLASS="section"
7954><HR><H2
7955CLASS="section"
7956><A
7957NAME="AEN1549"
7958>A.47. llEuler2Rot</A
7959></H2
7960><DIV
7961CLASS="funcsynopsis"
7962><P
7963></P
7964><A
7965NAME="AEN1551"
7966></A
7967><P
7968><CODE
7969><CODE
7970CLASS="FUNCDEF"
7971>rotation llEuler2Rot</CODE
7972>(vector vec);</CODE
7973></P
7974><P
7975></P
7976></DIV
7977><P
7978>Returns the rotation represented by Euler Angle
7979 <CODE
7980CLASS="parameter"
7981>vec</CODE
7982>.</P
7983></DIV
7984><DIV
7985CLASS="section"
7986><HR><H2
7987CLASS="section"
7988><A
7989NAME="AEN1559"
7990>A.48. llFabs</A
7991></H2
7992><DIV
7993CLASS="funcsynopsis"
7994><P
7995></P
7996><A
7997NAME="AEN1561"
7998></A
7999><P
8000><CODE
8001><CODE
8002CLASS="FUNCDEF"
8003>float llFabs</CODE
8004>(float val);</CODE
8005></P
8006><P
8007></P
8008></DIV
8009><P
8010>Returns the absolute value of
8011 <CODE
8012CLASS="parameter"
8013>val</CODE
8014>.</P
8015></DIV
8016><DIV
8017CLASS="section"
8018><HR><H2
8019CLASS="section"
8020><A
8021NAME="AEN1569"
8022>A.49. llFloor</A
8023></H2
8024><DIV
8025CLASS="funcsynopsis"
8026><P
8027></P
8028><A
8029NAME="AEN1571"
8030></A
8031><P
8032><CODE
8033><CODE
8034CLASS="FUNCDEF"
8035>integer llFloor</CODE
8036>(float val);</CODE
8037></P
8038><P
8039></P
8040></DIV
8041><P
8042>Returns largest integer value &#60;=
8043 <CODE
8044CLASS="parameter"
8045>val</CODE
8046>.</P
8047></DIV
8048><DIV
8049CLASS="section"
8050><HR><H2
8051CLASS="section"
8052><A
8053NAME="AEN1579"
8054>A.50. llFrand</A
8055></H2
8056><DIV
8057CLASS="funcsynopsis"
8058><P
8059></P
8060><A
8061NAME="AEN1581"
8062></A
8063><P
8064><CODE
8065><CODE
8066CLASS="FUNCDEF"
8067>float llFrand</CODE
8068>(float mag);</CODE
8069></P
8070><P
8071></P
8072></DIV
8073><P
8074>Returns a pseudo-random number between [0,
8075 <CODE
8076CLASS="parameter"
8077>mag</CODE
8078>).</P
8079></DIV
8080><DIV
8081CLASS="section"
8082><HR><H2
8083CLASS="section"
8084><A
8085NAME="AEN1589"
8086>A.51. llGetAccel</A
8087></H2
8088><DIV
8089CLASS="funcsynopsis"
8090><P
8091></P
8092><A
8093NAME="AEN1591"
8094></A
8095><P
8096><CODE
8097><CODE
8098CLASS="FUNCDEF"
8099>vector llGetAccel</CODE
8100>(void);</CODE
8101></P
8102><P
8103></P
8104></DIV
8105><P
8106>Gets the acceleration.</P
8107></DIV
8108><DIV
8109CLASS="section"
8110><HR><H2
8111CLASS="section"
8112><A
8113NAME="AEN1597"
8114>A.52. llGetAttached</A
8115></H2
8116><DIV
8117CLASS="funcsynopsis"
8118><P
8119></P
8120><A
8121NAME="AEN1599"
8122></A
8123><P
8124><CODE
8125><CODE
8126CLASS="FUNCDEF"
8127>integer llGetAttached</CODE
8128>(void);</CODE
8129></P
8130><P
8131></P
8132></DIV
8133><P
8134>Returns the object attachment point or 0 if not attached.</P
8135></DIV
8136><DIV
8137CLASS="section"
8138><HR><H2
8139CLASS="section"
8140><A
8141NAME="AEN1605"
8142>A.53. llGetAgentInfo</A
8143></H2
8144><DIV
8145CLASS="funcsynopsis"
8146><P
8147></P
8148><A
8149NAME="AEN1607"
8150></A
8151><P
8152><CODE
8153><CODE
8154CLASS="FUNCDEF"
8155>integer llGetAgentInfo</CODE
8156>(key id);</CODE
8157></P
8158><P
8159></P
8160></DIV
8161><P
8162>Returns information about the given agent
8163 <CODE
8164CLASS="parameter"
8165>id</CODE
8166>. Returns a bitfield of <A
8167HREF="#AEN5767"
8168>agent info constants</A
8169>.</P
8170></DIV
8171><DIV
8172CLASS="section"
8173><HR><H2
8174CLASS="section"
8175><A
8176NAME="AEN1616"
8177>A.54. llGetAgentSize</A
8178></H2
8179><DIV
8180CLASS="funcsynopsis"
8181><P
8182></P
8183><A
8184NAME="AEN1618"
8185></A
8186><P
8187><CODE
8188><CODE
8189CLASS="FUNCDEF"
8190>vector llGetAgentSize</CODE
8191>(key id);</CODE
8192></P
8193><P
8194></P
8195></DIV
8196><P
8197>If the agent <CODE
8198CLASS="parameter"
8199>id</CODE
8200> is in the same sim as
8201 the object, returns the size of the avatar.</P
8202></DIV
8203><DIV
8204CLASS="section"
8205><HR><H2
8206CLASS="section"
8207><A
8208NAME="AEN1626"
8209>A.55. llGetAlpha</A
8210></H2
8211><DIV
8212CLASS="funcsynopsis"
8213><P
8214></P
8215><A
8216NAME="AEN1628"
8217></A
8218><P
8219><CODE
8220><CODE
8221CLASS="FUNCDEF"
8222>float llGetAlpha</CODE
8223>(integer face);</CODE
8224></P
8225><P
8226></P
8227></DIV
8228><P
8229>Returns the alpha of the given
8230 <CODE
8231CLASS="parameter"
8232>face</CODE
8233>. If <CODE
8234CLASS="parameter"
8235>face</CODE
8236> is
8237 <A
8238HREF="#AEN6073"
8239>ALL_SIDES</A
8240> the value returned is
8241 the mean average of all faces.</P
8242></DIV
8243><DIV
8244CLASS="section"
8245><HR><H2
8246CLASS="section"
8247><A
8248NAME="AEN1638"
8249>A.56. llGetAndResetTime</A
8250></H2
8251><DIV
8252CLASS="funcsynopsis"
8253><P
8254></P
8255><A
8256NAME="AEN1640"
8257></A
8258><P
8259><CODE
8260><CODE
8261CLASS="FUNCDEF"
8262>float llGetAndResetTime</CODE
8263>(void);</CODE
8264></P
8265><P
8266></P
8267></DIV
8268><P
8269>Returns the seconds of elapsed time from an internal timer
8270 associated with the script. The timer is reset to zero during the
8271 call. The timer is also reset on rez, simulator restart, script
8272 reset, and in calls to <A
8273HREF="#AEN3426"
8274>llResetTime</A
8275>. Use <A
8276HREF="#AEN4188"
8277>llSetTimerEvent</A
8278> if you want a
8279 reliable timing mechanism.</P
8280></DIV
8281><DIV
8282CLASS="section"
8283><HR><H2
8284CLASS="section"
8285><A
8286NAME="AEN1648"
8287>A.57. llGetAnimation</A
8288></H2
8289><DIV
8290CLASS="funcsynopsis"
8291><P
8292></P
8293><A
8294NAME="AEN1650"
8295></A
8296><P
8297><CODE
8298><CODE
8299CLASS="FUNCDEF"
8300>string llGetAnimation</CODE
8301>(key id);</CODE
8302></P
8303><P
8304></P
8305></DIV
8306><P
8307>Returns the currently playing animation for avatar
8308 <CODE
8309CLASS="parameter"
8310>id</CODE
8311>.</P
8312></DIV
8313><DIV
8314CLASS="section"
8315><HR><H2
8316CLASS="section"
8317><A
8318NAME="AEN1658"
8319>A.58. llGetAnimationList</A
8320></H2
8321><DIV
8322CLASS="funcsynopsis"
8323><P
8324></P
8325><A
8326NAME="AEN1660"
8327></A
8328><P
8329><CODE
8330><CODE
8331CLASS="FUNCDEF"
8332>list llGetAnimationList</CODE
8333>(key id);</CODE
8334></P
8335><P
8336></P
8337></DIV
8338><P
8339>Returns a list of currently playing animations for avatar
8340 <CODE
8341CLASS="parameter"
8342>id</CODE
8343>.</P
8344></DIV
8345><DIV
8346CLASS="section"
8347><HR><H2
8348CLASS="section"
8349><A
8350NAME="AEN1668"
8351>A.59. llGetBoundingBox</A
8352></H2
8353><DIV
8354CLASS="funcsynopsis"
8355><P
8356></P
8357><A
8358NAME="AEN1670"
8359></A
8360><P
8361><CODE
8362><CODE
8363CLASS="FUNCDEF"
8364>list llGetBoundingBox</CODE
8365>(key object);</CODE
8366></P
8367><P
8368></P
8369></DIV
8370><P
8371>Returns the bounding box around <CODE
8372CLASS="parameter"
8373>object</CODE
8374> (including any linked prims)
8375 relative to the root prim. Returned value is a list of the form:
8376 [ (vector) min_corner, (vector) max_corner ]</P
8377></DIV
8378><DIV
8379CLASS="section"
8380><HR><H2
8381CLASS="section"
8382><A
8383NAME="AEN1678"
8384>A.60. llGetCenterOfMass</A
8385></H2
8386><DIV
8387CLASS="funcsynopsis"
8388><P
8389></P
8390><A
8391NAME="AEN1680"
8392></A
8393><P
8394><CODE
8395><CODE
8396CLASS="FUNCDEF"
8397>vector llGetCenterOfMass</CODE
8398>(void);</CODE
8399></P
8400><P
8401></P
8402></DIV
8403><P
8404>Returns the center of mass of the root object.</P
8405></DIV
8406><DIV
8407CLASS="section"
8408><HR><H2
8409CLASS="section"
8410><A
8411NAME="AEN1686"
8412>A.61. llGetColor</A
8413></H2
8414><DIV
8415CLASS="funcsynopsis"
8416><P
8417></P
8418><A
8419NAME="AEN1688"
8420></A
8421><P
8422><CODE
8423><CODE
8424CLASS="FUNCDEF"
8425>vector llGetColor</CODE
8426>(integer face);</CODE
8427></P
8428><P
8429></P
8430></DIV
8431><P
8432>Returns the color of <CODE
8433CLASS="parameter"
8434>face</CODE
8435> as a vector
8436 of red, green, and blue values between 0 and 1. If
8437 <CODE
8438CLASS="parameter"
8439>face</CODE
8440> is <A
8441HREF="#AEN6073"
8442>ALL_SIDES</A
8443> the color returned is the
8444 mean average of each channel.</P
8445></DIV
8446><DIV
8447CLASS="section"
8448><HR><H2
8449CLASS="section"
8450><A
8451NAME="AEN1698"
8452>A.62. llGetCreator</A
8453></H2
8454><DIV
8455CLASS="funcsynopsis"
8456><P
8457></P
8458><A
8459NAME="AEN1700"
8460></A
8461><P
8462><CODE
8463><CODE
8464CLASS="FUNCDEF"
8465>key llGetCreator</CODE
8466>(void);</CODE
8467></P
8468><P
8469></P
8470></DIV
8471><P
8472>Returns the creator of the object which has the script.</P
8473></DIV
8474><DIV
8475CLASS="section"
8476><HR><H2
8477CLASS="section"
8478><A
8479NAME="AEN1706"
8480>A.63. llGetDate</A
8481></H2
8482><DIV
8483CLASS="funcsynopsis"
8484><P
8485></P
8486><A
8487NAME="AEN1708"
8488></A
8489><P
8490><CODE
8491><CODE
8492CLASS="FUNCDEF"
8493>string llGetDate</CODE
8494>(void);</CODE
8495></P
8496><P
8497></P
8498></DIV
8499><P
8500>Returns the current UTC date as YYYY-MM-DD.</P
8501></DIV
8502><DIV
8503CLASS="section"
8504><HR><H2
8505CLASS="section"
8506><A
8507NAME="AEN1714"
8508>A.64. llGetEnergy</A
8509></H2
8510><DIV
8511CLASS="funcsynopsis"
8512><P
8513></P
8514><A
8515NAME="AEN1716"
8516></A
8517><P
8518><CODE
8519><CODE
8520CLASS="FUNCDEF"
8521>float llGetEnergy</CODE
8522>(void);</CODE
8523></P
8524><P
8525></P
8526></DIV
8527><P
8528>Returns how much energy is in the object as a percentage of
8529 maximum.</P
8530></DIV
8531><DIV
8532CLASS="section"
8533><HR><H2
8534CLASS="section"
8535><A
8536NAME="AEN1722"
8537>A.65. llGetForce</A
8538></H2
8539><DIV
8540CLASS="funcsynopsis"
8541><P
8542></P
8543><A
8544NAME="AEN1724"
8545></A
8546><P
8547><CODE
8548><CODE
8549CLASS="FUNCDEF"
8550>vector llGetForce</CODE
8551>(void);</CODE
8552></P
8553><P
8554></P
8555></DIV
8556><P
8557>Returns the current force if the script is physical.</P
8558></DIV
8559><DIV
8560CLASS="section"
8561><HR><H2
8562CLASS="section"
8563><A
8564NAME="AEN1730"
8565>A.66. llGetFreeMemory</A
8566></H2
8567><DIV
8568CLASS="funcsynopsis"
8569><P
8570></P
8571><A
8572NAME="AEN1732"
8573></A
8574><P
8575><CODE
8576><CODE
8577CLASS="FUNCDEF"
8578>integer llGetFreeMemory</CODE
8579>(void);</CODE
8580></P
8581><P
8582></P
8583></DIV
8584><P
8585>Returns the available heap space for the current script.</P
8586></DIV
8587><DIV
8588CLASS="section"
8589><HR><H2
8590CLASS="section"
8591><A
8592NAME="AEN1738"
8593>A.67. llGetGeometricCenter</A
8594></H2
8595><DIV
8596CLASS="funcsynopsis"
8597><P
8598></P
8599><A
8600NAME="AEN1740"
8601></A
8602><P
8603><CODE
8604><CODE
8605CLASS="FUNCDEF"
8606>vector llGetGeometricCenter</CODE
8607>(void);</CODE
8608></P
8609><P
8610></P
8611></DIV
8612><P
8613>Returns the geometric center of the linked set the script is attached to.</P
8614></DIV
8615><DIV
8616CLASS="section"
8617><HR><H2
8618CLASS="section"
8619><A
8620NAME="AEN1746"
8621>A.68. llGetGMTclock</A
8622></H2
8623><DIV
8624CLASS="funcsynopsis"
8625><P
8626></P
8627><A
8628NAME="AEN1748"
8629></A
8630><P
8631><CODE
8632><CODE
8633CLASS="FUNCDEF"
8634>float llGetGMTclock</CODE
8635>(void);</CODE
8636></P
8637><P
8638></P
8639></DIV
8640><P
8641>Returns the time in seconds since GMT midnight.</P
8642></DIV
8643><DIV
8644CLASS="section"
8645><HR><H2
8646CLASS="section"
8647><A
8648NAME="AEN1754"
8649>A.69. llGetInventoryCreator</A
8650></H2
8651><DIV
8652CLASS="funcsynopsis"
8653><P
8654></P
8655><A
8656NAME="AEN1756"
8657></A
8658><P
8659><CODE
8660><CODE
8661CLASS="FUNCDEF"
8662>key llGetInventoryCreator</CODE
8663>(string name);</CODE
8664></P
8665><P
8666></P
8667></DIV
8668><P
8669>Returns the key for the creator of the inventory
8670 <CODE
8671CLASS="parameter"
8672>name</CODE
8673>.</P
8674></DIV
8675><DIV
8676CLASS="section"
8677><HR><H2
8678CLASS="section"
8679><A
8680NAME="AEN1764"
8681>A.70. llGetInventoryKey</A
8682></H2
8683><DIV
8684CLASS="funcsynopsis"
8685><P
8686></P
8687><A
8688NAME="AEN1766"
8689></A
8690><P
8691><CODE
8692><CODE
8693CLASS="FUNCDEF"
8694>key llGetInventoryKey</CODE
8695>(string name);</CODE
8696></P
8697><P
8698></P
8699></DIV
8700><P
8701>Returns the key of the inventory
8702 <CODE
8703CLASS="parameter"
8704>name</CODE
8705>.</P
8706></DIV
8707><DIV
8708CLASS="section"
8709><HR><H2
8710CLASS="section"
8711><A
8712NAME="AEN1774"
8713>A.71. llGetInventoryName</A
8714></H2
8715><DIV
8716CLASS="funcsynopsis"
8717><P
8718></P
8719><A
8720NAME="AEN1776"
8721></A
8722><P
8723><CODE
8724><CODE
8725CLASS="FUNCDEF"
8726>string llGetInventoryName</CODE
8727>(integer type, integer number);</CODE
8728></P
8729><P
8730></P
8731></DIV
8732><P
8733>Get the name of the inventory item
8734 <CODE
8735CLASS="parameter"
8736>number</CODE
8737> of <CODE
8738CLASS="parameter"
8739>type</CODE
8740>. Use
8741 the <A
8742HREF="#AEN5411"
8743>inventory constants</A
8744> to
8745 specify the <CODE
8746CLASS="parameter"
8747>type</CODE
8748>.</P
8749></DIV
8750><DIV
8751CLASS="section"
8752><HR><H2
8753CLASS="section"
8754><A
8755NAME="AEN1789"
8756>A.72. llGetInventoryNumber</A
8757></H2
8758><DIV
8759CLASS="funcsynopsis"
8760><P
8761></P
8762><A
8763NAME="AEN1791"
8764></A
8765><P
8766><CODE
8767><CODE
8768CLASS="FUNCDEF"
8769>integer llGetInventoryNumber</CODE
8770>(integer type);</CODE
8771></P
8772><P
8773></P
8774></DIV
8775><P
8776>Get the number of items of <CODE
8777CLASS="parameter"
8778>type</CODE
8779> in
8780 the object inventory. Use the <A
8781HREF="#AEN5411"
8782>inventory constants</A
8783> to specify
8784 the <CODE
8785CLASS="parameter"
8786>type</CODE
8787>.</P
8788></DIV
8789><DIV
8790CLASS="section"
8791><HR><H2
8792CLASS="section"
8793><A
8794NAME="AEN1801"
8795>A.73. llGetInventoryPermMask</A
8796></H2
8797><DIV
8798CLASS="funcsynopsis"
8799><P
8800></P
8801><A
8802NAME="AEN1803"
8803></A
8804><P
8805><CODE
8806><CODE
8807CLASS="FUNCDEF"
8808>integer llGetInventoryPermMask</CODE
8809>(string item, integer mask);</CODE
8810></P
8811><P
8812></P
8813></DIV
8814><P
8815>Returns the requested permission <CODE
8816CLASS="parameter"
8817>mask</CODE
8818> for the
8819 specified inventory item. See <A
8820HREF="#AEN6412"
8821>Permission Mask Constants</A
8822>
8823 for more information. Example usage:
8824<DIV
8825CLASS="informalexample"
8826><P
8827></P
8828><A
8829NAME="AEN1814"
8830></A
8831><PRE
8832CLASS="programlisting"
8833>&#13;integer JeansPerms = llGetInventoryPermMask("Black Jeans", MASK_NEXT);
8834if (JeansPerms &#38; PERM_COPY)
8835{
8836 llSay(0, "The next owner may copy the 'Black Jeans'");
8837}
8838</PRE
8839><P
8840></P
8841></DIV
8842></P
8843></DIV
8844><DIV
8845CLASS="section"
8846><HR><H2
8847CLASS="section"
8848><A
8849NAME="AEN1816"
8850>A.74. llGetInventoryType</A
8851></H2
8852><DIV
8853CLASS="funcsynopsis"
8854><P
8855></P
8856><A
8857NAME="AEN1818"
8858></A
8859><P
8860><CODE
8861><CODE
8862CLASS="FUNCDEF"
8863>integer llGetInventoryType</CODE
8864>(string name);</CODE
8865></P
8866><P
8867></P
8868></DIV
8869><P
8870>Returns the type of the inventory
8871 <CODE
8872CLASS="parameter"
8873>name</CODE
8874>. INVENTORY_NONE is returned if no
8875 inventory matching <CODE
8876CLASS="parameter"
8877>name</CODE
8878> is found. Use the <A
8879HREF="#AEN5411"
8880>inventory constants</A
8881> to compare
8882 against the return value.</P
8883></DIV
8884><DIV
8885CLASS="section"
8886><HR><H2
8887CLASS="section"
8888><A
8889NAME="AEN1828"
8890>A.75. llGetKey</A
8891></H2
8892><DIV
8893CLASS="funcsynopsis"
8894><P
8895></P
8896><A
8897NAME="AEN1830"
8898></A
8899><P
8900><CODE
8901><CODE
8902CLASS="FUNCDEF"
8903>key llGetKey</CODE
8904>(void);</CODE
8905></P
8906><P
8907></P
8908></DIV
8909><P
8910>Get the key for the object which has this script.</P
8911></DIV
8912><DIV
8913CLASS="section"
8914><HR><H2
8915CLASS="section"
8916><A
8917NAME="AEN1836"
8918>A.76. llGetLandOwnerAt</A
8919></H2
8920><DIV
8921CLASS="funcsynopsis"
8922><P
8923></P
8924><A
8925NAME="AEN1838"
8926></A
8927><P
8928><CODE
8929><CODE
8930CLASS="FUNCDEF"
8931>key llGetLandOwnerAt</CODE
8932>(vector pos);</CODE
8933></P
8934><P
8935></P
8936></DIV
8937><P
8938>Returns the key of the land owner at
8939 <CODE
8940CLASS="parameter"
8941>pos</CODE
8942> or <A
8943HREF="#AEN6070"
8944>NULL_KEY</A
8945> if public.</P
8946></DIV
8947><DIV
8948CLASS="section"
8949><HR><H2
8950CLASS="section"
8951><A
8952NAME="AEN1847"
8953>A.77. llGetLinkKey</A
8954></H2
8955><DIV
8956CLASS="funcsynopsis"
8957><P
8958></P
8959><A
8960NAME="AEN1849"
8961></A
8962><P
8963><CODE
8964><CODE
8965CLASS="FUNCDEF"
8966>key llGetLinkKey</CODE
8967>(integer linknum);</CODE
8968></P
8969><P
8970></P
8971></DIV
8972><P
8973>Returns the key of <CODE
8974CLASS="parameter"
8975>linknum</CODE
8976> in the link
8977 set.</P
8978></DIV
8979><DIV
8980CLASS="section"
8981><HR><H2
8982CLASS="section"
8983><A
8984NAME="AEN1857"
8985>A.78. llGetLinkName</A
8986></H2
8987><DIV
8988CLASS="funcsynopsis"
8989><P
8990></P
8991><A
8992NAME="AEN1859"
8993></A
8994><P
8995><CODE
8996><CODE
8997CLASS="FUNCDEF"
8998>string llGetLinkName</CODE
8999>(integer linknum);</CODE
9000></P
9001><P
9002></P
9003></DIV
9004><P
9005>Returns the name of <CODE
9006CLASS="parameter"
9007>linknum</CODE
9008> in the
9009 link set.</P
9010></DIV
9011><DIV
9012CLASS="section"
9013><HR><H2
9014CLASS="section"
9015><A
9016NAME="AEN1867"
9017>A.79. llGetLinkNumber</A
9018></H2
9019><DIV
9020CLASS="funcsynopsis"
9021><P
9022></P
9023><A
9024NAME="AEN1869"
9025></A
9026><P
9027><CODE
9028><CODE
9029CLASS="FUNCDEF"
9030>integer llGetLinkNumber</CODE
9031>(void);</CODE
9032></P
9033><P
9034></P
9035></DIV
9036><P
9037>Returns what link number in a link set the for the object
9038 which has this script. 0 means no link, 1 the root, 2 for first
9039 child, etc.</P
9040></DIV
9041><DIV
9042CLASS="section"
9043><HR><H2
9044CLASS="section"
9045><A
9046NAME="AEN1875"
9047>A.80. llGetListEntryType</A
9048></H2
9049><DIV
9050CLASS="funcsynopsis"
9051><P
9052></P
9053><A
9054NAME="AEN1877"
9055></A
9056><P
9057><CODE
9058><CODE
9059CLASS="FUNCDEF"
9060>integer llGetListEntryType</CODE
9061>(list src, integer index);</CODE
9062></P
9063><P
9064></P
9065></DIV
9066><P
9067>Returns the <A
9068HREF="#AEN5733"
9069>type</A
9070> of the
9071 variable at <CODE
9072CLASS="parameter"
9073>index</CODE
9074> in
9075 <CODE
9076CLASS="parameter"
9077>src</CODE
9078>.</P
9079></DIV
9080><DIV
9081CLASS="section"
9082><HR><H2
9083CLASS="section"
9084><A
9085NAME="AEN1889"
9086>A.81. llGetListLength</A
9087></H2
9088><DIV
9089CLASS="funcsynopsis"
9090><P
9091></P
9092><A
9093NAME="AEN1891"
9094></A
9095><P
9096><CODE
9097><CODE
9098CLASS="FUNCDEF"
9099>integer llGetListLength</CODE
9100>(list src);</CODE
9101></P
9102><P
9103></P
9104></DIV
9105><P
9106>Returns the number of elements in
9107 <CODE
9108CLASS="parameter"
9109>src</CODE
9110>.</P
9111></DIV
9112><DIV
9113CLASS="section"
9114><HR><H2
9115CLASS="section"
9116><A
9117NAME="AEN1899"
9118>A.82. llGetLocalPos</A
9119></H2
9120><DIV
9121CLASS="funcsynopsis"
9122><P
9123></P
9124><A
9125NAME="AEN1901"
9126></A
9127><P
9128><CODE
9129><CODE
9130CLASS="FUNCDEF"
9131>vector llGetLocalPos</CODE
9132>(void);</CODE
9133></P
9134><P
9135></P
9136></DIV
9137><P
9138>Returns the local position of a child object relative to the
9139 root.</P
9140></DIV
9141><DIV
9142CLASS="section"
9143><HR><H2
9144CLASS="section"
9145><A
9146NAME="AEN1907"
9147>A.83. llGetLocalRot</A
9148></H2
9149><DIV
9150CLASS="funcsynopsis"
9151><P
9152></P
9153><A
9154NAME="AEN1909"
9155></A
9156><P
9157><CODE
9158><CODE
9159CLASS="FUNCDEF"
9160>rotation llGetLocalRot</CODE
9161>(void);</CODE
9162></P
9163><P
9164></P
9165></DIV
9166><P
9167>Returns the local rotation of a child object relative to the
9168 root.</P
9169></DIV
9170><DIV
9171CLASS="section"
9172><HR><H2
9173CLASS="section"
9174><A
9175NAME="AEN1915"
9176>A.84. llGetMass</A
9177></H2
9178><DIV
9179CLASS="funcsynopsis"
9180><P
9181></P
9182><A
9183NAME="AEN1917"
9184></A
9185><P
9186><CODE
9187><CODE
9188CLASS="FUNCDEF"
9189>float llGetMass</CODE
9190>(void);</CODE
9191></P
9192><P
9193></P
9194></DIV
9195><P
9196>Returns the mass of the object in Kilograms. Most materials
9197 in Second Life are less dense than their first life counterparts,
9198 so the returned mass may be less than you might expect.</P
9199></DIV
9200><DIV
9201CLASS="section"
9202><HR><H2
9203CLASS="section"
9204><A
9205NAME="AEN1923"
9206>A.85. llGetObjectMass</A
9207></H2
9208><DIV
9209CLASS="funcsynopsis"
9210><P
9211></P
9212><A
9213NAME="AEN1925"
9214></A
9215><P
9216><CODE
9217><CODE
9218CLASS="FUNCDEF"
9219>float llGetObjectMass</CODE
9220>(key id);</CODE
9221></P
9222><P
9223></P
9224></DIV
9225><P
9226>Returns the mass of the object specified by <CODE
9227CLASS="parameter"
9228>id</CODE
9229> in Kilograms. Most materials
9230 in Second Life are less dense than their first life counterparts,
9231 so the returned mass may be less than you might expect.</P
9232></DIV
9233><DIV
9234CLASS="section"
9235><HR><H2
9236CLASS="section"
9237><A
9238NAME="AEN1933"
9239>A.86. llGetNextEmail</A
9240></H2
9241><DIV
9242CLASS="funcsynopsis"
9243><P
9244></P
9245><A
9246NAME="AEN1935"
9247></A
9248><P
9249><CODE
9250><CODE
9251CLASS="FUNCDEF"
9252>llGetNextEmail</CODE
9253>(string address, string subject);</CODE
9254></P
9255><P
9256></P
9257></DIV
9258><P
9259>Get the next waiting email with appropriate
9260 <CODE
9261CLASS="parameter"
9262>address</CODE
9263> and/or
9264 <CODE
9265CLASS="parameter"
9266>subject</CODE
9267>. If the parameters are blank, they
9268 are not used for filtering.</P
9269></DIV
9270><DIV
9271CLASS="section"
9272><HR><H2
9273CLASS="section"
9274><A
9275NAME="AEN1946"
9276>A.87. llGetNotecardLine</A
9277></H2
9278><DIV
9279CLASS="funcsynopsis"
9280><P
9281></P
9282><A
9283NAME="AEN1948"
9284></A
9285><P
9286><CODE
9287><CODE
9288CLASS="FUNCDEF"
9289>key llGetNotecardLine</CODE
9290>(string name, integer line);</CODE
9291></P
9292><P
9293></P
9294></DIV
9295><P
9296>This function fetches line number
9297 <CODE
9298CLASS="parameter"
9299>line</CODE
9300> of notecard
9301 <CODE
9302CLASS="parameter"
9303>name</CODE
9304> and returns the data through the <A
9305HREF="#AEN4997"
9306>dataserver</A
9307> event. The line count
9308 starts at zero. If the requested line is past the end of the
9309 notecard the <A
9310HREF="#AEN4997"
9311>dataserver</A
9312>
9313 event will return the constant <A
9314HREF="#AEN6076"
9315>EOF</A
9316> string. The key returned by
9317 this function is a unique identifier which will be supplied to the
9318 <A
9319HREF="#AEN4997"
9320>dataserver</A
9321> event in the
9322 <CODE
9323CLASS="parameter"
9324>requested</CODE
9325> parameter.</P
9326></DIV
9327><DIV
9328CLASS="section"
9329><HR><H2
9330CLASS="section"
9331><A
9332NAME="AEN1964"
9333>A.88. llGetNumberOfNotecardLines</A
9334></H2
9335><DIV
9336CLASS="funcsynopsis"
9337><P
9338></P
9339><A
9340NAME="AEN1966"
9341></A
9342><P
9343><CODE
9344><CODE
9345CLASS="FUNCDEF"
9346>key llGetNumberOfNotecardLines</CODE
9347>(string name);</CODE
9348></P
9349><P
9350></P
9351></DIV
9352><P
9353>This function reads the number of lines in notecard <CODE
9354CLASS="parameter"
9355>name</CODE
9356>
9357 and returns this information through the <A
9358HREF="#AEN4997"
9359>dataserver</A
9360> event.
9361 The key returned by this function is a unique identifier which will be supplied to the
9362 <A
9363HREF="#AEN4997"
9364>dataserver</A
9365> event in the <CODE
9366CLASS="parameter"
9367>requested</CODE
9368>
9369 parameter. You will need to cast the returned string to an integer.</P
9370></DIV
9371><DIV
9372CLASS="section"
9373><HR><H2
9374CLASS="section"
9375><A
9376NAME="AEN1977"
9377>A.89. llGetNumberOfPrims</A
9378></H2
9379><DIV
9380CLASS="funcsynopsis"
9381><P
9382></P
9383><A
9384NAME="AEN1979"
9385></A
9386><P
9387><CODE
9388><CODE
9389CLASS="FUNCDEF"
9390>integer llGetNumberOfPrims</CODE
9391>(void);</CODE
9392></P
9393><P
9394></P
9395></DIV
9396><P
9397>Returns the number of prims in the linked set the script is attached to.</P
9398></DIV
9399><DIV
9400CLASS="section"
9401><HR><H2
9402CLASS="section"
9403><A
9404NAME="AEN1985"
9405>A.90. llGetNumberOfSides</A
9406></H2
9407><DIV
9408CLASS="funcsynopsis"
9409><P
9410></P
9411><A
9412NAME="AEN1987"
9413></A
9414><P
9415><CODE
9416><CODE
9417CLASS="FUNCDEF"
9418>key llGetNumberOfSides</CODE
9419>(void);</CODE
9420></P
9421><P
9422></P
9423></DIV
9424><P
9425>Returns the number of sides of the current which has the
9426 script.</P
9427></DIV
9428><DIV
9429CLASS="section"
9430><HR><H2
9431CLASS="section"
9432><A
9433NAME="AEN1993"
9434>A.91. llGetObjectDesc</A
9435></H2
9436><DIV
9437CLASS="funcsynopsis"
9438><P
9439></P
9440><A
9441NAME="AEN1995"
9442></A
9443><P
9444><CODE
9445><CODE
9446CLASS="FUNCDEF"
9447>string llGetObjectDesc</CODE
9448>(void);</CODE
9449></P
9450><P
9451></P
9452></DIV
9453><P
9454>Returns the description of the object which has the script.</P
9455></DIV
9456><DIV
9457CLASS="section"
9458><HR><H2
9459CLASS="section"
9460><A
9461NAME="AEN2001"
9462>A.92. llGetObjectName</A
9463></H2
9464><DIV
9465CLASS="funcsynopsis"
9466><P
9467></P
9468><A
9469NAME="AEN2003"
9470></A
9471><P
9472><CODE
9473><CODE
9474CLASS="FUNCDEF"
9475>string llGetObjectName</CODE
9476>(void);</CODE
9477></P
9478><P
9479></P
9480></DIV
9481><P
9482>Returns the name of the object which has the script.</P
9483></DIV
9484><DIV
9485CLASS="section"
9486><HR><H2
9487CLASS="section"
9488><A
9489NAME="AEN2009"
9490>A.93. llGetObjectPermMask</A
9491></H2
9492><DIV
9493CLASS="funcsynopsis"
9494><P
9495></P
9496><A
9497NAME="AEN2011"
9498></A
9499><P
9500><CODE
9501><CODE
9502CLASS="FUNCDEF"
9503>integer llGetObjectPermMask</CODE
9504>(integer mask);</CODE
9505></P
9506><P
9507></P
9508></DIV
9509><P
9510>Returns the requested permission <CODE
9511CLASS="parameter"
9512>mask</CODE
9513> for the root object the
9514 task is attached to. See <A
9515HREF="#AEN6412"
9516>Permission Mask Constants</A
9517>
9518 for more information. Example usage:
9519<DIV
9520CLASS="informalexample"
9521><P
9522></P
9523><A
9524NAME="AEN2020"
9525></A
9526><PRE
9527CLASS="programlisting"
9528>&#13;integer ObjectPerms = llGetObjectPermMask(MASK_NEXT);
9529if (ObjectPerms &#38; PERM_COPY)
9530{
9531 llSay(0, "The next owner may copy this item");
9532}
9533</PRE
9534><P
9535></P
9536></DIV
9537></P
9538></DIV
9539><DIV
9540CLASS="section"
9541><HR><H2
9542CLASS="section"
9543><A
9544NAME="AEN2022"
9545>A.94. llGetOmega</A
9546></H2
9547><DIV
9548CLASS="funcsynopsis"
9549><P
9550></P
9551><A
9552NAME="AEN2024"
9553></A
9554><P
9555><CODE
9556><CODE
9557CLASS="FUNCDEF"
9558>vector llGetOmega</CODE
9559>(void);</CODE
9560></P
9561><P
9562></P
9563></DIV
9564><P
9565>Returns the omega.</P
9566></DIV
9567><DIV
9568CLASS="section"
9569><HR><H2
9570CLASS="section"
9571><A
9572NAME="AEN2030"
9573>A.95. llGetOwner</A
9574></H2
9575><DIV
9576CLASS="funcsynopsis"
9577><P
9578></P
9579><A
9580NAME="AEN2032"
9581></A
9582><P
9583><CODE
9584><CODE
9585CLASS="FUNCDEF"
9586>key llGetOwner</CODE
9587>(void);</CODE
9588></P
9589><P
9590></P
9591></DIV
9592><P
9593>Returns the owner of the object.</P
9594></DIV
9595><DIV
9596CLASS="section"
9597><HR><H2
9598CLASS="section"
9599><A
9600NAME="AEN2038"
9601>A.96. llGetOwnerKey</A
9602></H2
9603><DIV
9604CLASS="funcsynopsis"
9605><P
9606></P
9607><A
9608NAME="AEN2040"
9609></A
9610><P
9611><CODE
9612><CODE
9613CLASS="FUNCDEF"
9614>key llGetOwnerKey</CODE
9615>(key id);</CODE
9616></P
9617><P
9618></P
9619></DIV
9620><P
9621>Returns the owner of object
9622 <CODE
9623CLASS="parameter"
9624>id</CODE
9625>.</P
9626></DIV
9627><DIV
9628CLASS="section"
9629><HR><H2
9630CLASS="section"
9631><A
9632NAME="AEN2048"
9633>A.97. llGetPermissions</A
9634></H2
9635><DIV
9636CLASS="funcsynopsis"
9637><P
9638></P
9639><A
9640NAME="AEN2050"
9641></A
9642><P
9643><CODE
9644><CODE
9645CLASS="FUNCDEF"
9646>integer llGetPermissions</CODE
9647>(void);</CODE
9648></P
9649><P
9650></P
9651></DIV
9652><P
9653>Returns what permissions have been enabled. eg:
9654<DIV
9655CLASS="informalexample"
9656><P
9657></P
9658><A
9659NAME="AEN2056"
9660></A
9661><PRE
9662CLASS="programlisting"
9663>&#13;integer perm = llGetPermissions();
9664if((perm &#38; PERMISSION_DEBIT) == PERMISSION_DEBIT)
9665{
9666 // code goes here
9667}
9668</PRE
9669><P
9670></P
9671></DIV
9672></P
9673></DIV
9674><DIV
9675CLASS="section"
9676><HR><H2
9677CLASS="section"
9678><A
9679NAME="AEN2058"
9680>A.98. llGetPermissionsKey</A
9681></H2
9682><DIV
9683CLASS="funcsynopsis"
9684><P
9685></P
9686><A
9687NAME="AEN2060"
9688></A
9689><P
9690><CODE
9691><CODE
9692CLASS="FUNCDEF"
9693>key llGetPermissionsKey</CODE
9694>(void);</CODE
9695></P
9696><P
9697></P
9698></DIV
9699><P
9700>Returns avatar that has enabled permissions. Returns <A
9701HREF="#AEN6070"
9702>NULL_KEY</A
9703> if not enabled.</P
9704></DIV
9705><DIV
9706CLASS="section"
9707><HR><H2
9708CLASS="section"
9709><A
9710NAME="AEN2067"
9711>A.99. llGetPos</A
9712></H2
9713><DIV
9714CLASS="funcsynopsis"
9715><P
9716></P
9717><A
9718NAME="AEN2069"
9719></A
9720><P
9721><CODE
9722><CODE
9723CLASS="FUNCDEF"
9724>vector llGetPos</CODE
9725>(void);</CODE
9726></P
9727><P
9728></P
9729></DIV
9730><P
9731>Returns the position.</P
9732></DIV
9733><DIV
9734CLASS="section"
9735><HR><H2
9736CLASS="section"
9737><A
9738NAME="AEN2075"
9739>A.100. llGetPrimitiveParams</A
9740></H2
9741><DIV
9742CLASS="funcsynopsis"
9743><P
9744></P
9745><A
9746NAME="AEN2077"
9747></A
9748><P
9749><CODE
9750><CODE
9751CLASS="FUNCDEF"
9752>list llGetPrimitiveParams</CODE
9753>(list parameters);</CODE
9754></P
9755><P
9756></P
9757></DIV
9758><P
9759>Get primitive parameters specified in <CODE
9760CLASS="parameter"
9761>parameters</CODE
9762>. The
9763 <CODE
9764CLASS="parameter"
9765>parameters</CODE
9766> are identical to the rules of <A
9767HREF="#AEN4020"
9768>llSetPrimitiveParams</A
9769>, and the returned list is ordered as such. Most requested parameters do not require a value to be associated, except for texture-related requests (PRIM_TEXTURE, PRIM_COLOR, and PRIM_BUMP_SHINY) which require a side number to be specified as well.
9770
9771 Valid parameters can be found in the <A
9772HREF="#AEN6323"
9773>Primitive Constants</A
9774>.
9775 Here is a simple example:
9776<DIV
9777CLASS="informalexample"
9778><P
9779></P
9780><A
9781NAME="AEN2088"
9782></A
9783><PRE
9784CLASS="programlisting"
9785>&#13;llGetPrimitiveParams([PRIM_TYPE, PRIM_MATERIAL, PRIM_COLOR, ALL_SIDES, PRIM_POSITION]);
9786</PRE
9787><P
9788></P
9789></DIV
9790>
9791 This would return a list similar to this:
9792<DIV
9793CLASS="informalexample"
9794><P
9795></P
9796><A
9797NAME="AEN2090"
9798></A
9799><PRE
9800CLASS="programlisting"
9801>&#13; [PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, &#60;0, 1, 0&#62;, 0.0, &#60;0, 0, 0&#62;, &#60;1, 1, 0&#62;, &#60;0, 0, 0&#62;, // PRIM_TYPE
9802 PRIM_MATERIAL_WOOD, // PRIM_MATERIAL
9803 0, &#60;1, 1, 1&#62;, 1.0, // PRIM_COLOR (ALL_SIDES specified, so all 6 sides returned)
9804 1, &#60;1, 0, 0&#62;, 0.5,
9805 2, &#60;0, 0, 1&#62;, 1.0,
9806 3, &#60;0, 1, 0&#62;, 1.0,
9807 4, &#60;0, 0, 0&#62;, 0.5,
9808 5, &#60;1, 1, 1&#62;, 1.0,
9809 &#60;37.341, 195.283, 31.239&#62;] // PRIM_POSITION
9810</PRE
9811><P
9812></P
9813></DIV
9814></P
9815></DIV
9816><DIV
9817CLASS="section"
9818><HR><H2
9819CLASS="section"
9820><A
9821NAME="AEN2092"
9822>A.101. llGetRegionCorner</A
9823></H2
9824><DIV
9825CLASS="funcsynopsis"
9826><P
9827></P
9828><A
9829NAME="AEN2094"
9830></A
9831><P
9832><CODE
9833><CODE
9834CLASS="FUNCDEF"
9835>llGetRegionCorner</CODE
9836>(void);</CODE
9837></P
9838><P
9839></P
9840></DIV
9841><P
9842>Returns a vector with the south west corner position of the
9843 current region.</P
9844></DIV
9845><DIV
9846CLASS="section"
9847><HR><H2
9848CLASS="section"
9849><A
9850NAME="AEN2100"
9851>A.102. llGetRegionFPS</A
9852></H2
9853><DIV
9854CLASS="funcsynopsis"
9855><P
9856></P
9857><A
9858NAME="AEN2102"
9859></A
9860><P
9861><CODE
9862><CODE
9863CLASS="FUNCDEF"
9864>llGetRegionFPS</CODE
9865>(void);</CODE
9866></P
9867><P
9868></P
9869></DIV
9870><P
9871>Returns the mean region frames per second.</P
9872></DIV
9873><DIV
9874CLASS="section"
9875><HR><H2
9876CLASS="section"
9877><A
9878NAME="AEN2108"
9879>A.103. llGetRegionName</A
9880></H2
9881><DIV
9882CLASS="funcsynopsis"
9883><P
9884></P
9885><A
9886NAME="AEN2110"
9887></A
9888><P
9889><CODE
9890><CODE
9891CLASS="FUNCDEF"
9892>string llGetRegionName</CODE
9893>(void);</CODE
9894></P
9895><P
9896></P
9897></DIV
9898><P
9899>Returns the current region name.</P
9900></DIV
9901><DIV
9902CLASS="section"
9903><HR><H2
9904CLASS="section"
9905><A
9906NAME="AEN2116"
9907>A.104. llGetRegionTimeDilation</A
9908></H2
9909><DIV
9910CLASS="funcsynopsis"
9911><P
9912></P
9913><A
9914NAME="AEN2118"
9915></A
9916><P
9917><CODE
9918><CODE
9919CLASS="FUNCDEF"
9920>float llGetRegionTimeDilation</CODE
9921>(void);</CODE
9922></P
9923><P
9924></P
9925></DIV
9926><P
9927>Returns the current time dilation as a float between 0 and 1.</P
9928></DIV
9929><DIV
9930CLASS="section"
9931><HR><H2
9932CLASS="section"
9933><A
9934NAME="AEN2124"
9935>A.105. llGetRootPosition</A
9936></H2
9937><DIV
9938CLASS="funcsynopsis"
9939><P
9940></P
9941><A
9942NAME="AEN2126"
9943></A
9944><P
9945><CODE
9946><CODE
9947CLASS="FUNCDEF"
9948>vector llGetRootPosition</CODE
9949>(void);</CODE
9950></P
9951><P
9952></P
9953></DIV
9954><P
9955>Returns the global position of the root object of the object the script is attached to.</P
9956></DIV
9957><DIV
9958CLASS="section"
9959><HR><H2
9960CLASS="section"
9961><A
9962NAME="AEN2132"
9963>A.106. llGetRootRotation</A
9964></H2
9965><DIV
9966CLASS="funcsynopsis"
9967><P
9968></P
9969><A
9970NAME="AEN2134"
9971></A
9972><P
9973><CODE
9974><CODE
9975CLASS="FUNCDEF"
9976>rotation llGetRootRotation</CODE
9977>(void);</CODE
9978></P
9979><P
9980></P
9981></DIV
9982><P
9983>Returns the global rotation of the root object of the object the script is attached to.</P
9984></DIV
9985><DIV
9986CLASS="section"
9987><HR><H2
9988CLASS="section"
9989><A
9990NAME="AEN2140"
9991>A.107. llGetRot</A
9992></H2
9993><DIV
9994CLASS="funcsynopsis"
9995><P
9996></P
9997><A
9998NAME="AEN2142"
9999></A
10000><P
10001><CODE
10002><CODE
10003CLASS="FUNCDEF"
10004>rotation llGetRot</CODE
10005>(void);</CODE
10006></P
10007><P
10008></P
10009></DIV
10010><P
10011>Returns the rotation.</P
10012></DIV
10013><DIV
10014CLASS="section"
10015><HR><H2
10016CLASS="section"
10017><A
10018NAME="AEN2148"
10019>A.108. llGetScale</A
10020></H2
10021><DIV
10022CLASS="funcsynopsis"
10023><P
10024></P
10025><A
10026NAME="AEN2150"
10027></A
10028><P
10029><CODE
10030><CODE
10031CLASS="FUNCDEF"
10032>vector llGetScale</CODE
10033>(void);</CODE
10034></P
10035><P
10036></P
10037></DIV
10038><P
10039>Returns the scale.</P
10040></DIV
10041><DIV
10042CLASS="section"
10043><HR><H2
10044CLASS="section"
10045><A
10046NAME="AEN2156"
10047>A.109. llGetScriptName</A
10048></H2
10049><DIV
10050CLASS="funcsynopsis"
10051><P
10052></P
10053><A
10054NAME="AEN2158"
10055></A
10056><P
10057><CODE
10058><CODE
10059CLASS="FUNCDEF"
10060>string llGetScriptName</CODE
10061>(void);</CODE
10062></P
10063><P
10064></P
10065></DIV
10066><P
10067>Returns the name of this script.</P
10068></DIV
10069><DIV
10070CLASS="section"
10071><HR><H2
10072CLASS="section"
10073><A
10074NAME="AEN2164"
10075>A.110. llGetStartParameter</A
10076></H2
10077><DIV
10078CLASS="funcsynopsis"
10079><P
10080></P
10081><A
10082NAME="AEN2166"
10083></A
10084><P
10085><CODE
10086><CODE
10087CLASS="FUNCDEF"
10088>integer llGetStartParameter</CODE
10089>(void);</CODE
10090></P
10091><P
10092></P
10093></DIV
10094><P
10095>Returns the start parameter passed to <A
10096HREF="#AEN3461"
10097>llRezObject</A
10098> or <A
10099HREF="#AEN3434"
10100>llRezAtRoot</A
10101>. If the object was
10102 created from agent inventory, this function returns 0.</P
10103></DIV
10104><DIV
10105CLASS="section"
10106><HR><H2
10107CLASS="section"
10108><A
10109NAME="AEN2174"
10110>A.111. llGetScriptState</A
10111></H2
10112><DIV
10113CLASS="funcsynopsis"
10114><P
10115></P
10116><A
10117NAME="AEN2176"
10118></A
10119><P
10120><CODE
10121><CODE
10122CLASS="FUNCDEF"
10123>integer llGetScriptState</CODE
10124>(string name);</CODE
10125></P
10126><P
10127></P
10128></DIV
10129><P
10130>Resets TRUE if script <CODE
10131CLASS="parameter"
10132>name</CODE
10133> is running</P
10134></DIV
10135><DIV
10136CLASS="section"
10137><HR><H2
10138CLASS="section"
10139><A
10140NAME="AEN2184"
10141>A.112. llGetStatus</A
10142></H2
10143><DIV
10144CLASS="funcsynopsis"
10145><P
10146></P
10147><A
10148NAME="AEN2186"
10149></A
10150><P
10151><CODE
10152><CODE
10153CLASS="FUNCDEF"
10154>integer llGetStatus</CODE
10155>(integer status);</CODE
10156></P
10157><P
10158></P
10159></DIV
10160><P
10161>Returns the value of <CODE
10162CLASS="parameter"
10163>status</CODE
10164>. The
10165 value will be one of the <A
10166HREF="#AEN5304"
10167>status
10168 constants</A
10169>.</P
10170></DIV
10171><DIV
10172CLASS="section"
10173><HR><H2
10174CLASS="section"
10175><A
10176NAME="AEN2195"
10177>A.113. llGetSubString</A
10178></H2
10179><DIV
10180CLASS="funcsynopsis"
10181><P
10182></P
10183><A
10184NAME="AEN2197"
10185></A
10186><P
10187><CODE
10188><CODE
10189CLASS="FUNCDEF"
10190>string llGetSubString</CODE
10191>(string src, integer start, integer end);</CODE
10192></P
10193><P
10194></P
10195></DIV
10196><P
10197>Returns the indicated substring from
10198 <CODE
10199CLASS="parameter"
10200>src</CODE
10201>. The <CODE
10202CLASS="parameter"
10203>start</CODE
10204> and
10205 <CODE
10206CLASS="parameter"
10207>end</CODE
10208> are inclusive, so 0,length-1 would
10209 capture the entire string and 0,0 would capture the first
10210 character. Using negative numbers for <CODE
10211CLASS="parameter"
10212>start</CODE
10213>
10214 and/or <CODE
10215CLASS="parameter"
10216>end</CODE
10217> causes the index to count
10218 backwards from the length of the string, so 0,-1 would capture the
10219 entire string. If start is larger than end the sub string is the
10220 exclusion of the entries, so 6,4 would give the entire string
10221 except for the 5<SUP
10222>th</SUP
10223> character.</P
10224></DIV
10225><DIV
10226CLASS="section"
10227><HR><H2
10228CLASS="section"
10229><A
10230NAME="AEN2214"
10231>A.114. llGetSunDirection</A
10232></H2
10233><DIV
10234CLASS="funcsynopsis"
10235><P
10236></P
10237><A
10238NAME="AEN2216"
10239></A
10240><P
10241><CODE
10242><CODE
10243CLASS="FUNCDEF"
10244>vector llGetSunDirection</CODE
10245>(void);</CODE
10246></P
10247><P
10248></P
10249></DIV
10250><P
10251>Returns the sun direction on the simulator.</P
10252></DIV
10253><DIV
10254CLASS="section"
10255><HR><H2
10256CLASS="section"
10257><A
10258NAME="AEN2222"
10259>A.115. llGetTexture</A
10260></H2
10261><DIV
10262CLASS="funcsynopsis"
10263><P
10264></P
10265><A
10266NAME="AEN2224"
10267></A
10268><P
10269><CODE
10270><CODE
10271CLASS="FUNCDEF"
10272>string llGetTexture</CODE
10273>(integer face);</CODE
10274></P
10275><P
10276></P
10277></DIV
10278><P
10279>Returns the texture of <CODE
10280CLASS="parameter"
10281>face</CODE
10282> if it is
10283 found in object inventory.</P
10284></DIV
10285><DIV
10286CLASS="section"
10287><HR><H2
10288CLASS="section"
10289><A
10290NAME="AEN2232"
10291>A.116. llGetTextureOffset</A
10292></H2
10293><DIV
10294CLASS="funcsynopsis"
10295><P
10296></P
10297><A
10298NAME="AEN2234"
10299></A
10300><P
10301><CODE
10302><CODE
10303CLASS="FUNCDEF"
10304>vector llGetTextureOffset</CODE
10305>(integer side);</CODE
10306></P
10307><P
10308></P
10309></DIV
10310><P
10311>Returns the texture offset of <CODE
10312CLASS="parameter"
10313>side</CODE
10314> in
10315 the x and y components of a vector.</P
10316></DIV
10317><DIV
10318CLASS="section"
10319><HR><H2
10320CLASS="section"
10321><A
10322NAME="AEN2242"
10323>A.117. llGetTextureRot</A
10324></H2
10325><DIV
10326CLASS="funcsynopsis"
10327><P
10328></P
10329><A
10330NAME="AEN2244"
10331></A
10332><P
10333><CODE
10334><CODE
10335CLASS="FUNCDEF"
10336>float llGetTextureRot</CODE
10337>(integer side);</CODE
10338></P
10339><P
10340></P
10341></DIV
10342><P
10343>Returns the texture rotation of
10344 <CODE
10345CLASS="parameter"
10346>side</CODE
10347>.</P
10348></DIV
10349><DIV
10350CLASS="section"
10351><HR><H2
10352CLASS="section"
10353><A
10354NAME="AEN2252"
10355>A.118. llGetTextureScale</A
10356></H2
10357><DIV
10358CLASS="funcsynopsis"
10359><P
10360></P
10361><A
10362NAME="AEN2254"
10363></A
10364><P
10365><CODE
10366><CODE
10367CLASS="FUNCDEF"
10368>vector llGetTextureScale</CODE
10369>(integer side);</CODE
10370></P
10371><P
10372></P
10373></DIV
10374><P
10375>Returns the texture scale of <CODE
10376CLASS="parameter"
10377>side</CODE
10378> in
10379 the x and y components of a vector.</P
10380></DIV
10381><DIV
10382CLASS="section"
10383><HR><H2
10384CLASS="section"
10385><A
10386NAME="AEN2262"
10387>A.119. llGetTime</A
10388></H2
10389><DIV
10390CLASS="funcsynopsis"
10391><P
10392></P
10393><A
10394NAME="AEN2264"
10395></A
10396><P
10397><CODE
10398><CODE
10399CLASS="FUNCDEF"
10400>float llGetTime</CODE
10401>(void);</CODE
10402></P
10403><P
10404></P
10405></DIV
10406><P
10407>Returns the seconds of elapsed time from an internal timer
10408 associated with the script. The timer is reset on rez, simulator
10409 restart, script reset, and in calls to <A
10410HREF="#AEN1638"
10411>llGetAndResetTime</A
10412> or <A
10413HREF="#AEN3426"
10414>llResetTime</A
10415>. Use <A
10416HREF="#AEN4188"
10417>llSetTimerEvent</A
10418> if you want a
10419 reliable timing mechanism.</P
10420></DIV
10421><DIV
10422CLASS="section"
10423><HR><H2
10424CLASS="section"
10425><A
10426NAME="AEN2273"
10427>A.120. llGetTimeOfDay</A
10428></H2
10429><DIV
10430CLASS="funcsynopsis"
10431><P
10432></P
10433><A
10434NAME="AEN2275"
10435></A
10436><P
10437><CODE
10438><CODE
10439CLASS="FUNCDEF"
10440>float llGetTimeOfDay</CODE
10441>(void);</CODE
10442></P
10443><P
10444></P
10445></DIV
10446><P
10447>Gets the time in seconds since midnight in Second Life.</P
10448></DIV
10449><DIV
10450CLASS="section"
10451><HR><H2
10452CLASS="section"
10453><A
10454NAME="AEN2281"
10455>A.121. llGetTimestamp</A
10456></H2
10457><DIV
10458CLASS="funcsynopsis"
10459><P
10460></P
10461><A
10462NAME="AEN2283"
10463></A
10464><P
10465><CODE
10466><CODE
10467CLASS="FUNCDEF"
10468>string llGetTimestamp</CODE
10469>(void);</CODE
10470></P
10471><P
10472></P
10473></DIV
10474><P
10475>Returns a timestamp in the format: YYYY-MM-DDThh:mm:ss.ff..fZ.</P
10476></DIV
10477><DIV
10478CLASS="section"
10479><HR><H2
10480CLASS="section"
10481><A
10482NAME="AEN2289"
10483>A.122. llGetTorque</A
10484></H2
10485><DIV
10486CLASS="funcsynopsis"
10487><P
10488></P
10489><A
10490NAME="AEN2291"
10491></A
10492><P
10493><CODE
10494><CODE
10495CLASS="FUNCDEF"
10496>vector llGetTorque</CODE
10497>(void);</CODE
10498></P
10499><P
10500></P
10501></DIV
10502><P
10503>Returns the torque if the script is physical.</P
10504></DIV
10505><DIV
10506CLASS="section"
10507><HR><H2
10508CLASS="section"
10509><A
10510NAME="AEN2297"
10511>A.123. llGetVel</A
10512></H2
10513><DIV
10514CLASS="funcsynopsis"
10515><P
10516></P
10517><A
10518NAME="AEN2299"
10519></A
10520><P
10521><CODE
10522><CODE
10523CLASS="FUNCDEF"
10524>vector llGetVel</CODE
10525>();</CODE
10526></P
10527><P
10528></P
10529></DIV
10530><P
10531>Returns the velocity.</P
10532></DIV
10533><DIV
10534CLASS="section"
10535><HR><H2
10536CLASS="section"
10537><A
10538NAME="AEN2306"
10539>A.124. llGetWallclock</A
10540></H2
10541><DIV
10542CLASS="funcsynopsis"
10543><P
10544></P
10545><A
10546NAME="AEN2308"
10547></A
10548><P
10549><CODE
10550><CODE
10551CLASS="FUNCDEF"
10552>float llGetWallclock</CODE
10553>(void);</CODE
10554></P
10555><P
10556></P
10557></DIV
10558><P
10559>Returns the time in seconds since simulator timezone
10560 midnight. Currently this is PST.</P
10561></DIV
10562><DIV
10563CLASS="section"
10564><HR><H2
10565CLASS="section"
10566><A
10567NAME="AEN2314"
10568>A.125. llGiveInventory</A
10569></H2
10570><DIV
10571CLASS="funcsynopsis"
10572><P
10573></P
10574><A
10575NAME="AEN2316"
10576></A
10577><P
10578><CODE
10579><CODE
10580CLASS="FUNCDEF"
10581>llGiveInventory</CODE
10582>(key destination, string inventory);</CODE
10583></P
10584><P
10585></P
10586></DIV
10587><P
10588>Give the named inventory item to the keyed avatar or object
10589 in the same simulator as the giver. If the recipient is an avatar,
10590 the avatar then follows the normal procedure of accepting or
10591 denying the offer. If the recipient is an object, the same
10592 permissions apply as if you were dragging inventory onto the
10593 object by hand, ie if <A
10594HREF="#AEN1047"
10595>llAllowInventoryDrop</A
10596> has
10597 been called with TRUE, any other object can pass objects to its
10598 inventory.</P
10599></DIV
10600><DIV
10601CLASS="section"
10602><HR><H2
10603CLASS="section"
10604><A
10605NAME="AEN2326"
10606>A.126. llGiveInventoryList</A
10607></H2
10608><DIV
10609CLASS="funcsynopsis"
10610><P
10611></P
10612><A
10613NAME="AEN2328"
10614></A
10615><P
10616><CODE
10617><CODE
10618CLASS="FUNCDEF"
10619>llGiveInventoryList</CODE
10620>(key destination, string category, list inventory);</CODE
10621></P
10622><P
10623></P
10624></DIV
10625><P
10626>Give the list of named inventory items to the keyed avatar
10627 or object in the same simulator as the giver. If the recipient is
10628 an avatar, the avatar then follows the normal procedure of
10629 accepting or denying the offer. The offered inventory is then
10630 placed in a folder named <CODE
10631CLASS="parameter"
10632>category</CODE
10633> in the
10634 recipients inventory. If the recipient is an object, the same
10635 permissions apply as if you were dragging inventory onto the
10636 object by hand, ie if <A
10637HREF="#AEN1047"
10638>llAllowInventoryDrop</A
10639> has
10640 been called with TRUE, any other object can pass objects to its
10641 inventory.If the recipient is an object, the
10642 <CODE
10643CLASS="parameter"
10644>category</CODE
10645> parameter is ignored.</P
10646></DIV
10647><DIV
10648CLASS="section"
10649><HR><H2
10650CLASS="section"
10651><A
10652NAME="AEN2342"
10653>A.127. llGiveMoney</A
10654></H2
10655><DIV
10656CLASS="funcsynopsis"
10657><P
10658></P
10659><A
10660NAME="AEN2344"
10661></A
10662><P
10663><CODE
10664><CODE
10665CLASS="FUNCDEF"
10666>llGiveMoney</CODE
10667>(key destination, integer amount);</CODE
10668></P
10669><P
10670></P
10671></DIV
10672><P
10673>Transfer <CODE
10674CLASS="parameter"
10675>amount</CODE
10676> from the script owner
10677 to <CODE
10678CLASS="parameter"
10679>destination</CODE
10680>. This call will fail if
10681 <A
10682HREF="#AEN5360"
10683>PERMISSION_DEBIT</A
10684> has not
10685 been set.</P
10686></DIV
10687><DIV
10688CLASS="section"
10689><HR><H2
10690CLASS="section"
10691><A
10692NAME="AEN2356"
10693>A.128. llGround</A
10694></H2
10695><DIV
10696CLASS="funcsynopsis"
10697><P
10698></P
10699><A
10700NAME="AEN2358"
10701></A
10702><P
10703><CODE
10704><CODE
10705CLASS="FUNCDEF"
10706>float llGround</CODE
10707>(vector offset);</CODE
10708></P
10709><P
10710></P
10711></DIV
10712><P
10713>Returns the ground height at the object position +
10714 <CODE
10715CLASS="parameter"
10716>offset</CODE
10717>.</P
10718></DIV
10719><DIV
10720CLASS="section"
10721><HR><H2
10722CLASS="section"
10723><A
10724NAME="AEN2366"
10725>A.129. llGroundContour</A
10726></H2
10727><DIV
10728CLASS="funcsynopsis"
10729><P
10730></P
10731><A
10732NAME="AEN2368"
10733></A
10734><P
10735><CODE
10736><CODE
10737CLASS="FUNCDEF"
10738>vector llGroundContour</CODE
10739>(vector offset);</CODE
10740></P
10741><P
10742></P
10743></DIV
10744><P
10745>Returns the ground contour at the object position +
10746 <CODE
10747CLASS="parameter"
10748>offset</CODE
10749>.</P
10750></DIV
10751><DIV
10752CLASS="section"
10753><HR><H2
10754CLASS="section"
10755><A
10756NAME="AEN2376"
10757>A.130. llGroundNormal</A
10758></H2
10759><DIV
10760CLASS="funcsynopsis"
10761><P
10762></P
10763><A
10764NAME="AEN2378"
10765></A
10766><P
10767><CODE
10768><CODE
10769CLASS="FUNCDEF"
10770>vector llGroundNormal</CODE
10771>(vector offset);</CODE
10772></P
10773><P
10774></P
10775></DIV
10776><P
10777>Returns the ground contour at the object position +
10778 <CODE
10779CLASS="parameter"
10780>offset</CODE
10781>.</P
10782></DIV
10783><DIV
10784CLASS="section"
10785><HR><H2
10786CLASS="section"
10787><A
10788NAME="AEN2386"
10789>A.131. llGroundRepel</A
10790></H2
10791><DIV
10792CLASS="funcsynopsis"
10793><P
10794></P
10795><A
10796NAME="AEN2388"
10797></A
10798><P
10799><CODE
10800><CODE
10801CLASS="FUNCDEF"
10802>llGroundRepel</CODE
10803>(float height, integer water, float tau);</CODE
10804></P
10805><P
10806></P
10807></DIV
10808><P
10809>Critically damps to <CODE
10810CLASS="parameter"
10811>height</CODE
10812> if within
10813 <CODE
10814CLASS="parameter"
10815>height</CODE
10816> * 0.5 of
10817 <CODE
10818CLASS="parameter"
10819>level</CODE
10820>. The <CODE
10821CLASS="parameter"
10822>height</CODE
10823>
10824 is above ground level if <CODE
10825CLASS="parameter"
10826>water</CODE
10827> is FALSE or
10828 above the higher of land and water if <CODE
10829CLASS="parameter"
10830>water</CODE
10831>
10832 is TRUE.</P
10833></DIV
10834><DIV
10835CLASS="section"
10836><HR><H2
10837CLASS="section"
10838><A
10839NAME="AEN2405"
10840>A.132. llGroundSlope</A
10841></H2
10842><DIV
10843CLASS="funcsynopsis"
10844><P
10845></P
10846><A
10847NAME="AEN2407"
10848></A
10849><P
10850><CODE
10851><CODE
10852CLASS="FUNCDEF"
10853>vector llGroundSlope</CODE
10854>(vector offset);</CODE
10855></P
10856><P
10857></P
10858></DIV
10859><P
10860>Returns the ground slope at the object position +
10861 <CODE
10862CLASS="parameter"
10863>offset</CODE
10864>.</P
10865></DIV
10866><DIV
10867CLASS="section"
10868><HR><H2
10869CLASS="section"
10870><A
10871NAME="AEN2415"
10872>A.133. llInsertString</A
10873></H2
10874><DIV
10875CLASS="funcsynopsis"
10876><P
10877></P
10878><A
10879NAME="AEN2417"
10880></A
10881><P
10882><CODE
10883><CODE
10884CLASS="FUNCDEF"
10885>string llInsertString</CODE
10886>(string dst, integer position, string src);</CODE
10887></P
10888><P
10889></P
10890></DIV
10891><P
10892>Inserts <CODE
10893CLASS="parameter"
10894>src</CODE
10895> into
10896 <CODE
10897CLASS="parameter"
10898>dst</CODE
10899> at <CODE
10900CLASS="parameter"
10901>position</CODE
10902> and
10903 returns the result.</P
10904></DIV
10905><DIV
10906CLASS="section"
10907><HR><H2
10908CLASS="section"
10909><A
10910NAME="AEN2431"
10911>A.134. llInstantMessage</A
10912></H2
10913><DIV
10914CLASS="funcsynopsis"
10915><P
10916></P
10917><A
10918NAME="AEN2433"
10919></A
10920><P
10921><CODE
10922><CODE
10923CLASS="FUNCDEF"
10924>llInstantMessage</CODE
10925>(key user, string message);</CODE
10926></P
10927><P
10928></P
10929></DIV
10930><P
10931>Send <CODE
10932CLASS="parameter"
10933>message</CODE
10934> to the
10935 <CODE
10936CLASS="parameter"
10937>user</CODE
10938> as an instant message.</P
10939></DIV
10940><DIV
10941CLASS="section"
10942><HR><H2
10943CLASS="section"
10944><A
10945NAME="AEN2444"
10946>A.135. llKey2Name</A
10947></H2
10948><DIV
10949CLASS="funcsynopsis"
10950><P
10951></P
10952><A
10953NAME="AEN2446"
10954></A
10955><P
10956><CODE
10957><CODE
10958CLASS="FUNCDEF"
10959>string llKey2Name</CODE
10960>(key id);</CODE
10961></P
10962><P
10963></P
10964></DIV
10965><P
10966>If object <CODE
10967CLASS="parameter"
10968>id</CODE
10969> is in the same
10970 simulator, return the name of the object.</P
10971></DIV
10972><DIV
10973CLASS="section"
10974><HR><H2
10975CLASS="section"
10976><A
10977NAME="AEN2454"
10978>A.136. llList2CSV</A
10979></H2
10980><DIV
10981CLASS="funcsynopsis"
10982><P
10983></P
10984><A
10985NAME="AEN2456"
10986></A
10987><P
10988><CODE
10989><CODE
10990CLASS="FUNCDEF"
10991>string llList2CSV</CODE
10992>(list src);</CODE
10993></P
10994><P
10995></P
10996></DIV
10997><P
10998>Create a string of comma separated values from
10999 <CODE
11000CLASS="parameter"
11001>list</CODE
11002>.</P
11003></DIV
11004><DIV
11005CLASS="section"
11006><HR><H2
11007CLASS="section"
11008><A
11009NAME="AEN2464"
11010>A.137. llList2Float</A
11011></H2
11012><DIV
11013CLASS="funcsynopsis"
11014><P
11015></P
11016><A
11017NAME="AEN2466"
11018></A
11019><P
11020><CODE
11021><CODE
11022CLASS="FUNCDEF"
11023>float llList2Float</CODE
11024>(list src, integer index);</CODE
11025></P
11026><P
11027></P
11028></DIV
11029><P
11030>Returns the float at <CODE
11031CLASS="parameter"
11032>index</CODE
11033> in the
11034 list <CODE
11035CLASS="parameter"
11036>src</CODE
11037>.</P
11038></DIV
11039><DIV
11040CLASS="section"
11041><HR><H2
11042CLASS="section"
11043><A
11044NAME="AEN2477"
11045>A.138. llList2Integer</A
11046></H2
11047><DIV
11048CLASS="funcsynopsis"
11049><P
11050></P
11051><A
11052NAME="AEN2479"
11053></A
11054><P
11055><CODE
11056><CODE
11057CLASS="FUNCDEF"
11058>integer llList2Integer</CODE
11059>(list src, integer index);</CODE
11060></P
11061><P
11062></P
11063></DIV
11064><P
11065>Returns the integer at <CODE
11066CLASS="parameter"
11067>index</CODE
11068> in the list
11069 <CODE
11070CLASS="parameter"
11071>src</CODE
11072>.</P
11073></DIV
11074><DIV
11075CLASS="section"
11076><HR><H2
11077CLASS="section"
11078><A
11079NAME="AEN2490"
11080>A.139. llList2Key</A
11081></H2
11082><DIV
11083CLASS="funcsynopsis"
11084><P
11085></P
11086><A
11087NAME="AEN2492"
11088></A
11089><P
11090><CODE
11091><CODE
11092CLASS="FUNCDEF"
11093>key llList2Key</CODE
11094>(list src, integer index);</CODE
11095></P
11096><P
11097></P
11098></DIV
11099><P
11100>Returns the key at <CODE
11101CLASS="parameter"
11102>index</CODE
11103> in the list
11104 <CODE
11105CLASS="parameter"
11106>src</CODE
11107>.</P
11108></DIV
11109><DIV
11110CLASS="section"
11111><HR><H2
11112CLASS="section"
11113><A
11114NAME="AEN2503"
11115>A.140. llList2List</A
11116></H2
11117><DIV
11118CLASS="funcsynopsis"
11119><P
11120></P
11121><A
11122NAME="AEN2505"
11123></A
11124><P
11125><CODE
11126><CODE
11127CLASS="FUNCDEF"
11128>list llList2List</CODE
11129>(list src, integer start, integer end);</CODE
11130></P
11131><P
11132></P
11133></DIV
11134><P
11135>Returns the slice of the list from
11136 <CODE
11137CLASS="parameter"
11138>start</CODE
11139> to <CODE
11140CLASS="parameter"
11141>end</CODE
11142> from
11143 the list <CODE
11144CLASS="parameter"
11145>src</CODE
11146> as a new list. The
11147 <CODE
11148CLASS="parameter"
11149>start</CODE
11150> and <CODE
11151CLASS="parameter"
11152>end</CODE
11153>
11154 parameters are inclusive, so 0,length-1 would copy the entire list
11155 and 0,0 would capture the first list entry. Using negative numbers
11156 for <CODE
11157CLASS="parameter"
11158>start</CODE
11159> and/or <CODE
11160CLASS="parameter"
11161>end</CODE
11162>
11163 causes the index to count backwards from the length of the list,
11164 so 0,-1 would capture the entire list. If
11165 <CODE
11166CLASS="parameter"
11167>start</CODE
11168> is larger than
11169 <CODE
11170CLASS="parameter"
11171>end</CODE
11172> the list returned is the exclusion of
11173 the entries, so 6,4 would give the entire list except for the
11174 5<SUP
11175>th</SUP
11176> entry.</P
11177></DIV
11178><DIV
11179CLASS="section"
11180><HR><H2
11181CLASS="section"
11182><A
11183NAME="AEN2526"
11184>A.141. llList2ListStrided</A
11185></H2
11186><DIV
11187CLASS="funcsynopsis"
11188><P
11189></P
11190><A
11191NAME="AEN2528"
11192></A
11193><P
11194><CODE
11195><CODE
11196CLASS="FUNCDEF"
11197>list llList2ListStrided</CODE
11198>(list src, integer start, integer end, integer stride);</CODE
11199></P
11200><P
11201></P
11202></DIV
11203><P
11204>Copy the strided slice of <CODE
11205CLASS="parameter"
11206>src</CODE
11207> from
11208 <CODE
11209CLASS="parameter"
11210>start</CODE
11211> to <CODE
11212CLASS="parameter"
11213>end</CODE
11214>.</P
11215></DIV
11216><DIV
11217CLASS="section"
11218><HR><H2
11219CLASS="section"
11220><A
11221NAME="AEN2544"
11222>A.142. llList2Rot</A
11223></H2
11224><DIV
11225CLASS="funcsynopsis"
11226><P
11227></P
11228><A
11229NAME="AEN2546"
11230></A
11231><P
11232><CODE
11233><CODE
11234CLASS="FUNCDEF"
11235>rotation llList2Rot</CODE
11236>(list src, integer index);</CODE
11237></P
11238><P
11239></P
11240></DIV
11241><P
11242>Returns the rotation at <CODE
11243CLASS="parameter"
11244>index</CODE
11245> in
11246 <CODE
11247CLASS="parameter"
11248>src</CODE
11249>.</P
11250></DIV
11251><DIV
11252CLASS="section"
11253><HR><H2
11254CLASS="section"
11255><A
11256NAME="AEN2557"
11257>A.143. llList2String</A
11258></H2
11259><DIV
11260CLASS="funcsynopsis"
11261><P
11262></P
11263><A
11264NAME="AEN2559"
11265></A
11266><P
11267><CODE
11268><CODE
11269CLASS="FUNCDEF"
11270>string llList2String</CODE
11271>(list src, integer index);</CODE
11272></P
11273><P
11274></P
11275></DIV
11276><P
11277>Returns the string at <CODE
11278CLASS="parameter"
11279>index</CODE
11280> in
11281 <CODE
11282CLASS="parameter"
11283>src</CODE
11284>.</P
11285></DIV
11286><DIV
11287CLASS="section"
11288><HR><H2
11289CLASS="section"
11290><A
11291NAME="AEN2570"
11292>A.144. llList2Vector</A
11293></H2
11294><DIV
11295CLASS="funcsynopsis"
11296><P
11297></P
11298><A
11299NAME="AEN2572"
11300></A
11301><P
11302><CODE
11303><CODE
11304CLASS="FUNCDEF"
11305>llList2Vector</CODE
11306>(list src, integer index);</CODE
11307></P
11308><P
11309></P
11310></DIV
11311><P
11312>Returns the string at <CODE
11313CLASS="parameter"
11314>index</CODE
11315> in
11316 <CODE
11317CLASS="parameter"
11318>src</CODE
11319>.</P
11320></DIV
11321><DIV
11322CLASS="section"
11323><HR><H2
11324CLASS="section"
11325><A
11326NAME="AEN2583"
11327>A.145. llListFindList</A
11328></H2
11329><DIV
11330CLASS="funcsynopsis"
11331><P
11332></P
11333><A
11334NAME="AEN2585"
11335></A
11336><P
11337><CODE
11338><CODE
11339CLASS="FUNCDEF"
11340>integer llListFindList</CODE
11341>(list src, list test);</CODE
11342></P
11343><P
11344></P
11345></DIV
11346><P
11347>Returns the position of the first instance of
11348 <CODE
11349CLASS="parameter"
11350>test</CODE
11351> in <CODE
11352CLASS="parameter"
11353>src</CODE
11354>. Returns
11355 -1 if <CODE
11356CLASS="parameter"
11357>test</CODE
11358> is not in
11359 <CODE
11360CLASS="parameter"
11361>src</CODE
11362>.</P
11363></DIV
11364><DIV
11365CLASS="section"
11366><HR><H2
11367CLASS="section"
11368><A
11369NAME="AEN2598"
11370>A.146. llListInsertList</A
11371></H2
11372><DIV
11373CLASS="funcsynopsis"
11374><P
11375></P
11376><A
11377NAME="AEN2600"
11378></A
11379><P
11380><CODE
11381><CODE
11382CLASS="FUNCDEF"
11383>list llListInsertList</CODE
11384>(list dest, list src, integer pos);</CODE
11385></P
11386><P
11387></P
11388></DIV
11389><P
11390>Returns the list created by inserting
11391 <CODE
11392CLASS="parameter"
11393>src</CODE
11394> into <CODE
11395CLASS="parameter"
11396>dest</CODE
11397> at
11398 <CODE
11399CLASS="parameter"
11400>pos</CODE
11401>.</P
11402></DIV
11403><DIV
11404CLASS="section"
11405><HR><H2
11406CLASS="section"
11407><A
11408NAME="AEN2614"
11409>A.147. llListRandomize</A
11410></H2
11411><DIV
11412CLASS="funcsynopsis"
11413><P
11414></P
11415><A
11416NAME="AEN2616"
11417></A
11418><P
11419><CODE
11420><CODE
11421CLASS="FUNCDEF"
11422>list llListRandomize</CODE
11423>(list src, integer stride);</CODE
11424></P
11425><P
11426></P
11427></DIV
11428><P
11429>Returns <CODE
11430CLASS="parameter"
11431>src</CODE
11432> randomized into blocks of
11433 size <CODE
11434CLASS="parameter"
11435>stride</CODE
11436>. If the length of
11437 <CODE
11438CLASS="parameter"
11439>src</CODE
11440> divided by
11441 <CODE
11442CLASS="parameter"
11443>stride</CODE
11444> is non-zero, this function does
11445 not randomize the list.</P
11446></DIV
11447><DIV
11448CLASS="section"
11449><HR><H2
11450CLASS="section"
11451><A
11452NAME="AEN2629"
11453>A.148. llListReplaceList</A
11454></H2
11455><DIV
11456CLASS="funcsynopsis"
11457><P
11458></P
11459><A
11460NAME="AEN2631"
11461></A
11462><P
11463><CODE
11464><CODE
11465CLASS="FUNCDEF"
11466>list llListReplaceList</CODE
11467>(list dest, list src, integer start, integer end);</CODE
11468></P
11469><P
11470></P
11471></DIV
11472><P
11473>Returns the list created by replacing the segment of <CODE
11474CLASS="parameter"
11475>dest</CODE
11476> from
11477 <CODE
11478CLASS="parameter"
11479>start</CODE
11480> to <CODE
11481CLASS="parameter"
11482>end</CODE
11483> with <CODE
11484CLASS="parameter"
11485>src</CODE
11486>.</P
11487></DIV
11488><DIV
11489CLASS="section"
11490><HR><H2
11491CLASS="section"
11492><A
11493NAME="AEN2648"
11494>A.149. llListSort</A
11495></H2
11496><DIV
11497CLASS="funcsynopsis"
11498><P
11499></P
11500><A
11501NAME="AEN2650"
11502></A
11503><P
11504><CODE
11505><CODE
11506CLASS="FUNCDEF"
11507>list llListSort</CODE
11508>(list src, integer stride, integer ascending);</CODE
11509></P
11510><P
11511></P
11512></DIV
11513><P
11514>Returns <CODE
11515CLASS="parameter"
11516>src</CODE
11517> sorted into blocks of
11518 <CODE
11519CLASS="parameter"
11520>stride</CODE
11521> in ascending order if
11522 <CODE
11523CLASS="parameter"
11524>ascending</CODE
11525> is <A
11526HREF="#AEN5295"
11527>TRUE</A
11528>. Note that sort only works in
11529 the head of each sort block is the same type.</P
11530></DIV
11531><DIV
11532CLASS="section"
11533><HR><H2
11534CLASS="section"
11535><A
11536NAME="AEN2665"
11537>A.150. llListen</A
11538></H2
11539><DIV
11540CLASS="funcsynopsis"
11541><P
11542></P
11543><A
11544NAME="AEN2667"
11545></A
11546><P
11547><CODE
11548><CODE
11549CLASS="FUNCDEF"
11550>integer llListen</CODE
11551>(integer channel, string name, key id, string msg);</CODE
11552></P
11553><P
11554></P
11555></DIV
11556><P
11557>Sets a listen event callback for <CODE
11558CLASS="parameter"
11559>msg</CODE
11560>
11561 on <CODE
11562CLASS="parameter"
11563>channel</CODE
11564> from <CODE
11565CLASS="parameter"
11566>name</CODE
11567>
11568 and returns an identifier that can be used to deactivate or remove
11569 the listen. The <CODE
11570CLASS="parameter"
11571>name</CODE
11572>,
11573 <CODE
11574CLASS="parameter"
11575>id</CODE
11576> and/or <CODE
11577CLASS="parameter"
11578>msg</CODE
11579>
11580 parameters can be blank to indicate not to filter on that
11581 argument. Channel 0 is the public chat channel that all avatars
11582 see as chat text. Channels 1 to 2,147,483,648 are hidden channels
11583 that are not sent to avatars.</P
11584></DIV
11585><DIV
11586CLASS="section"
11587><HR><H2
11588CLASS="section"
11589><A
11590NAME="AEN2686"
11591>A.151. llListenControl</A
11592></H2
11593><DIV
11594CLASS="funcsynopsis"
11595><P
11596></P
11597><A
11598NAME="AEN2688"
11599></A
11600><P
11601><CODE
11602><CODE
11603CLASS="FUNCDEF"
11604>llListenControl</CODE
11605>(integer number, integer active);</CODE
11606></P
11607><P
11608></P
11609></DIV
11610><P
11611>Make a listen event callback active or inactive. Pass in the
11612 value returned from <A
11613HREF="#AEN2665"
11614>llListen</A
11615>
11616 to the <CODE
11617CLASS="parameter"
11618>number</CODE
11619> parameter to specify which
11620 event you are controlling. Use <A
11621HREF="#AEN5295"
11622>boolean</A
11623> values to specify
11624 <CODE
11625CLASS="parameter"
11626>active</CODE
11627>.</P
11628></DIV
11629><DIV
11630CLASS="section"
11631><HR><H2
11632CLASS="section"
11633><A
11634NAME="AEN2701"
11635>A.152. llListenRemove</A
11636></H2
11637><DIV
11638CLASS="funcsynopsis"
11639><P
11640></P
11641><A
11642NAME="AEN2703"
11643></A
11644><P
11645><CODE
11646><CODE
11647CLASS="FUNCDEF"
11648>llListenRemove</CODE
11649>(integer number);</CODE
11650></P
11651><P
11652></P
11653></DIV
11654><P
11655>Removes a listen event callback. Pass in the value returned
11656 from <A
11657HREF="#AEN2665"
11658>llListen</A
11659> to the
11660 <CODE
11661CLASS="parameter"
11662>number</CODE
11663> parameter to specify which event you
11664 are removing.</P
11665></DIV
11666><DIV
11667CLASS="section"
11668><HR><H2
11669CLASS="section"
11670><A
11671NAME="AEN2712"
11672>A.153. llLoadURL</A
11673></H2
11674><DIV
11675CLASS="funcsynopsis"
11676><P
11677></P
11678><A
11679NAME="AEN2714"
11680></A
11681><P
11682><CODE
11683><CODE
11684CLASS="FUNCDEF"
11685>llLoadURL</CODE
11686>(key avatar_id, string message, string url);</CODE
11687></P
11688><P
11689></P
11690></DIV
11691><P
11692>Displays a dialog to user <CODE
11693CLASS="parameter"
11694>avatar_id</CODE
11695>
11696 with <CODE
11697CLASS="parameter"
11698>message</CODE
11699> offering to
11700 go to the web page at <CODE
11701CLASS="parameter"
11702>url</CODE
11703>. If the user clicks the
11704 "Go to page" button, their default web browser is launched and
11705 directed to <CODE
11706CLASS="parameter"
11707>url</CODE
11708>.</P
11709><P
11710>The <CODE
11711CLASS="parameter"
11712>url</CODE
11713> must begin with "http:" or
11714 "https:", other protocols are not currently supported.
11715 The dialog box shows the name of the object's
11716 owner so that abuse (e.g. spamming) can be easily reported.
11717 This function has a 10 second implicit sleep.</P
11718></DIV
11719><DIV
11720CLASS="section"
11721><HR><H2
11722CLASS="section"
11723><A
11724NAME="AEN2731"
11725>A.154. llLog</A
11726></H2
11727><DIV
11728CLASS="funcsynopsis"
11729><P
11730></P
11731><A
11732NAME="AEN2733"
11733></A
11734><P
11735><CODE
11736><CODE
11737CLASS="FUNCDEF"
11738>float llLog</CODE
11739>(float val);</CODE
11740></P
11741><P
11742></P
11743></DIV
11744><P
11745>Returns the natural logarithm (base e) of
11746 <CODE
11747CLASS="parameter"
11748>val</CODE
11749> if <CODE
11750CLASS="parameter"
11751>val</CODE
11752> &#62; 0,
11753 otherwise returns 0.</P
11754></DIV
11755><DIV
11756CLASS="section"
11757><HR><H2
11758CLASS="section"
11759><A
11760NAME="AEN2742"
11761>A.155. llLog10</A
11762></H2
11763><DIV
11764CLASS="funcsynopsis"
11765><P
11766></P
11767><A
11768NAME="AEN2744"
11769></A
11770><P
11771><CODE
11772><CODE
11773CLASS="FUNCDEF"
11774>float llLog10</CODE
11775>(float val);</CODE
11776></P
11777><P
11778></P
11779></DIV
11780><P
11781>Returns the base 10 log of <CODE
11782CLASS="parameter"
11783>val</CODE
11784> if
11785 <CODE
11786CLASS="parameter"
11787>val</CODE
11788> &#62; 0, otherwise returns 0.</P
11789></DIV
11790><DIV
11791CLASS="section"
11792><HR><H2
11793CLASS="section"
11794><A
11795NAME="AEN2753"
11796>A.156. llLookAt</A
11797></H2
11798><DIV
11799CLASS="funcsynopsis"
11800><P
11801></P
11802><A
11803NAME="AEN2755"
11804></A
11805><P
11806><CODE
11807><CODE
11808CLASS="FUNCDEF"
11809>llLookAt</CODE
11810>(vector target, float strength, float damping);</CODE
11811></P
11812><P
11813></P
11814></DIV
11815><P
11816>Cause object to point the forward axis toward
11817 <CODE
11818CLASS="parameter"
11819>target</CODE
11820>. Good
11821 <CODE
11822CLASS="parameter"
11823>strength</CODE
11824> values are around half the mass of
11825 the object and good <CODE
11826CLASS="parameter"
11827>damping</CODE
11828> values are less
11829 than 1/10<SUP
11830>th</SUP
11831> of the
11832 <CODE
11833CLASS="parameter"
11834>strength</CODE
11835>. Asymmetrical shapes require
11836 smaller <CODE
11837CLASS="parameter"
11838>damping</CODE
11839>. A
11840 <CODE
11841CLASS="parameter"
11842>strength</CODE
11843> of 0.0 cancels the look at.</P
11844></DIV
11845><DIV
11846CLASS="section"
11847><HR><H2
11848CLASS="section"
11849><A
11850NAME="AEN2773"
11851>A.157. llLoopSound</A
11852></H2
11853><DIV
11854CLASS="funcsynopsis"
11855><P
11856></P
11857><A
11858NAME="AEN2775"
11859></A
11860><P
11861><CODE
11862><CODE
11863CLASS="FUNCDEF"
11864>llLoopSound</CODE
11865>(string sound, float volume);</CODE
11866></P
11867><P
11868></P
11869></DIV
11870><P
11871>Similar to <A
11872HREF="#AEN3184"
11873>llPlaySound</A
11874>, this function plays
11875 a sound attached to an object, but will continuously loop that
11876 sound until <A
11877HREF="#AEN4620"
11878>llStopSound</A
11879> or
11880 <A
11881HREF="#AEN3184"
11882>llPlaySound</A
11883> is called. Only
11884 one sound may be attached to an object at a time. A second call to
11885 llLoopSound with the same key will not restart the sound, but the
11886 new volume will be used. This allows control over the volume of
11887 already playing sounds. Setting the <CODE
11888CLASS="parameter"
11889>volume</CODE
11890>
11891 to 0 is not the same as calling <A
11892HREF="#AEN4620"
11893>llStopSound</A
11894>; a sound with 0
11895 volume will continue to loop. To restart the sound from the
11896 beginning, call <A
11897HREF="#AEN4620"
11898>llStopSound</A
11899>
11900 before calling llLoopSound again.</P
11901></DIV
11902><DIV
11903CLASS="section"
11904><HR><H2
11905CLASS="section"
11906><A
11907NAME="AEN2790"
11908>A.158. llLoopSoundMaster</A
11909></H2
11910><DIV
11911CLASS="funcsynopsis"
11912><P
11913></P
11914><A
11915NAME="AEN2792"
11916></A
11917><P
11918><CODE
11919><CODE
11920CLASS="FUNCDEF"
11921>llLoopSoundMaster</CODE
11922>(string sound, float volume);</CODE
11923></P
11924><P
11925></P
11926></DIV
11927><P
11928>Behaviour is identical to <A
11929HREF="#AEN2773"
11930>llLoopSound</A
11931>, with the addition of
11932 marking the source as a "Sync Master", causing "Slave" sounds to
11933 sync to it. If there are multiple masters within a viewer's
11934 interest area, the most audible one (a function of both distance
11935 and volume) will win out as the master. The use of multiple
11936 masters within a small area is unlikely to produce the desired
11937 effect.</P
11938></DIV
11939><DIV
11940CLASS="section"
11941><HR><H2
11942CLASS="section"
11943><A
11944NAME="AEN2802"
11945>A.159. llLoopSoundSlave</A
11946></H2
11947><DIV
11948CLASS="funcsynopsis"
11949><P
11950></P
11951><A
11952NAME="AEN2804"
11953></A
11954><P
11955><CODE
11956><CODE
11957CLASS="FUNCDEF"
11958>llLoopSoundSlave</CODE
11959>(string sound, float volume);</CODE
11960></P
11961><P
11962></P
11963></DIV
11964><P
11965>Behaviour is identical to <A
11966HREF="#AEN2773"
11967>llLoopSound</A
11968>, unless there is a
11969 "Sync Master" present. If a Sync Master is already playing the
11970 Slave sound will begin playing from the same point the master is
11971 in its loop synchronizing the loop points of both sounds. If a
11972 Sync Master is started when the Slave is already playing, the
11973 Slave will skip to the correct position to sync with the
11974 Master.</P
11975></DIV
11976><DIV
11977CLASS="section"
11978><HR><H2
11979CLASS="section"
11980><A
11981NAME="AEN2814"
11982>A.160. llMakeExplosion</A
11983></H2
11984><DIV
11985CLASS="funcsynopsis"
11986><P
11987></P
11988><A
11989NAME="AEN2816"
11990></A
11991><P
11992><CODE
11993><CODE
11994CLASS="FUNCDEF"
11995>llMakeExplosion</CODE
11996>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
11997></P
11998><P
11999></P
12000></DIV
12001><P
12002>Make a round explosion of particles using
12003 <CODE
12004CLASS="parameter"
12005>texture</CODE
12006> from the object's inventory.</P
12007></DIV
12008><DIV
12009CLASS="section"
12010><HR><H2
12011CLASS="section"
12012><A
12013NAME="AEN2836"
12014>A.161. llMakeFire</A
12015></H2
12016><DIV
12017CLASS="funcsynopsis"
12018><P
12019></P
12020><A
12021NAME="AEN2838"
12022></A
12023><P
12024><CODE
12025><CODE
12026CLASS="FUNCDEF"
12027>llMakeFire</CODE
12028>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
12029></P
12030><P
12031></P
12032></DIV
12033><P
12034>Make fire particles using <CODE
12035CLASS="parameter"
12036>texture</CODE
12037>
12038 from the object's inventory.</P
12039></DIV
12040><DIV
12041CLASS="section"
12042><HR><H2
12043CLASS="section"
12044><A
12045NAME="AEN2858"
12046>A.162. llMakeFountain</A
12047></H2
12048><DIV
12049CLASS="funcsynopsis"
12050><P
12051></P
12052><A
12053NAME="AEN2860"
12054></A
12055><P
12056><CODE
12057><CODE
12058CLASS="FUNCDEF"
12059>llMakeFountain</CODE
12060>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
12061></P
12062><P
12063></P
12064></DIV
12065><P
12066>Make a fountain of particles using
12067 <CODE
12068CLASS="parameter"
12069>texture</CODE
12070> from the object's inventory.</P
12071></DIV
12072><DIV
12073CLASS="section"
12074><HR><H2
12075CLASS="section"
12076><A
12077NAME="AEN2880"
12078>A.163. llMakeSmoke</A
12079></H2
12080><DIV
12081CLASS="funcsynopsis"
12082><P
12083></P
12084><A
12085NAME="AEN2882"
12086></A
12087><P
12088><CODE
12089><CODE
12090CLASS="FUNCDEF"
12091>llMakeSmoke</CODE
12092>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
12093></P
12094><P
12095></P
12096></DIV
12097><P
12098>Make smoky particles using <CODE
12099CLASS="parameter"
12100>texture</CODE
12101>
12102 from the object's inventory.</P
12103></DIV
12104><DIV
12105CLASS="section"
12106><HR><H2
12107CLASS="section"
12108><A
12109NAME="AEN2902"
12110>A.164. llMD5String</A
12111></H2
12112><DIV
12113CLASS="funcsynopsis"
12114><P
12115></P
12116><A
12117NAME="AEN2904"
12118></A
12119><P
12120><CODE
12121><CODE
12122CLASS="FUNCDEF"
12123>string llMD5String</CODE
12124>(string str, integer nonce);</CODE
12125></P
12126><P
12127></P
12128></DIV
12129><P
12130>Performs a RSA Data Security, Inc. MD5 Message-Digest
12131 Algorithm on <CODE
12132CLASS="parameter"
12133>str</CODE
12134> with
12135 <CODE
12136CLASS="parameter"
12137>nonce</CODE
12138>. The function returns the digest as a
12139 32 character hex string. The digest is computed on the string in
12140 the following format:
12141<DIV
12142CLASS="informalexample"
12143><P
12144></P
12145><A
12146NAME="AEN2915"
12147></A
12148><PRE
12149CLASS="programlisting"
12150>&#13;<CODE
12151CLASS="parameter"
12152>str</CODE
12153> + ":" + (string)<CODE
12154CLASS="parameter"
12155>nonce</CODE
12156>
12157</PRE
12158><P
12159></P
12160></DIV
12161>
12162 </P
12163></DIV
12164><DIV
12165CLASS="section"
12166><HR><H2
12167CLASS="section"
12168><A
12169NAME="AEN2919"
12170>A.165. llMessageLinked</A
12171></H2
12172><DIV
12173CLASS="funcsynopsis"
12174><P
12175></P
12176><A
12177NAME="AEN2921"
12178></A
12179><P
12180><CODE
12181><CODE
12182CLASS="FUNCDEF"
12183>llMessageLinked</CODE
12184>(integer linknum, integer num, string str, key id);</CODE
12185></P
12186><P
12187></P
12188></DIV
12189><P
12190>Sends <CODE
12191CLASS="parameter"
12192>num</CODE
12193>,
12194 <CODE
12195CLASS="parameter"
12196>str</CODE
12197>, and <CODE
12198CLASS="parameter"
12199>id</CODE
12200> to
12201 members of the link set. The <CODE
12202CLASS="parameter"
12203>linknum</CODE
12204>
12205 parameter is either the linked number available through <A
12206HREF="#AEN1867"
12207>llGetLinkNumber</A
12208> or a <A
12209HREF="#AEN5616"
12210>link constant</A
12211>.</P
12212></DIV
12213><DIV
12214CLASS="section"
12215><HR><H2
12216CLASS="section"
12217><A
12218NAME="AEN2940"
12219>A.166. llMinEventDelay</A
12220></H2
12221><DIV
12222CLASS="funcsynopsis"
12223><P
12224></P
12225><A
12226NAME="AEN2942"
12227></A
12228><P
12229><CODE
12230><CODE
12231CLASS="FUNCDEF"
12232>llMinEventDelay</CODE
12233>(float delay);</CODE
12234></P
12235><P
12236></P
12237></DIV
12238><P
12239>Set the minimum time between events being handled.</P
12240></DIV
12241><DIV
12242CLASS="section"
12243><HR><H2
12244CLASS="section"
12245><A
12246NAME="AEN2949"
12247>A.167. llModifyLand</A
12248></H2
12249><DIV
12250CLASS="funcsynopsis"
12251><P
12252></P
12253><A
12254NAME="AEN2951"
12255></A
12256><P
12257><CODE
12258><CODE
12259CLASS="FUNCDEF"
12260>llModifyLand</CODE
12261>(integer action, integer size);</CODE
12262></P
12263><P
12264></P
12265></DIV
12266><P
12267>Modify land with <CODE
12268CLASS="parameter"
12269>action</CODE
12270> on
12271 <CODE
12272CLASS="parameter"
12273>size</CODE
12274> area. The parameters can be chosen
12275 from the <A
12276HREF="#AEN5574"
12277>land constants</A
12278>.</P
12279></DIV
12280><DIV
12281CLASS="section"
12282><HR><H2
12283CLASS="section"
12284><A
12285NAME="AEN2963"
12286>A.168. llModPow</A
12287></H2
12288><DIV
12289CLASS="funcsynopsis"
12290><P
12291></P
12292><A
12293NAME="AEN2965"
12294></A
12295><P
12296><CODE
12297><CODE
12298CLASS="FUNCDEF"
12299>integer llModPow</CODE
12300>(integer a, integer b, integer c);</CODE
12301></P
12302><P
12303></P
12304></DIV
12305><P
12306>Raise <CODE
12307CLASS="parameter"
12308>a</CODE
12309> to the <CODE
12310CLASS="parameter"
12311>b</CODE
12312> power, modulo <CODE
12313CLASS="parameter"
12314>c</CODE
12315>.
12316 <CODE
12317CLASS="parameter"
12318>b</CODE
12319> is capped at 0xFFFF (16 bits).</P
12320></DIV
12321><DIV
12322CLASS="section"
12323><HR><H2
12324CLASS="section"
12325><A
12326NAME="AEN2980"
12327>A.169. llMoveToTarget</A
12328></H2
12329><DIV
12330CLASS="funcsynopsis"
12331><P
12332></P
12333><A
12334NAME="AEN2982"
12335></A
12336><P
12337><CODE
12338><CODE
12339CLASS="FUNCDEF"
12340>llMoveToTarget</CODE
12341>(vector target, float tau);</CODE
12342></P
12343><P
12344></P
12345></DIV
12346><P
12347>Critically damp to position <CODE
12348CLASS="parameter"
12349>target</CODE
12350> in
12351 <CODE
12352CLASS="parameter"
12353>tau</CODE
12354> seconds if the script is physical. Good
12355 <CODE
12356CLASS="parameter"
12357>tau</CODE
12358> values are greater than 0.2. A
12359 <CODE
12360CLASS="parameter"
12361>tau</CODE
12362> of 0.0 stops the critical
12363 damping.</P
12364></DIV
12365><DIV
12366CLASS="section"
12367><HR><H2
12368CLASS="section"
12369><A
12370NAME="AEN2995"
12371>A.170. llOffsetTexture</A
12372></H2
12373><DIV
12374CLASS="funcsynopsis"
12375><P
12376></P
12377><A
12378NAME="AEN2997"
12379></A
12380><P
12381><CODE
12382><CODE
12383CLASS="FUNCDEF"
12384>llOffsetTexture</CODE
12385>(float offset_s, float offset_t, integer face);</CODE
12386></P
12387><P
12388></P
12389></DIV
12390><P
12391>Sets the texture s and t offsets of
12392 <CODE
12393CLASS="parameter"
12394>face</CODE
12395>. If <CODE
12396CLASS="parameter"
12397>face</CODE
12398> is
12399 <A
12400HREF="#AEN6073"
12401>ALL_SIDES</A
12402> this
12403 function sets the texture offsets for all faces.</P
12404></DIV
12405><DIV
12406CLASS="section"
12407><HR><H2
12408CLASS="section"
12409><A
12410NAME="AEN3011"
12411>A.171. llOpenRemoteDataChannel</A
12412></H2
12413><DIV
12414CLASS="funcsynopsis"
12415><P
12416></P
12417><A
12418NAME="AEN3013"
12419></A
12420><P
12421><CODE
12422><CODE
12423CLASS="FUNCDEF"
12424>llOpenRemoteDataChannel</CODE
12425>(void);</CODE
12426></P
12427><P
12428></P
12429></DIV
12430><P
12431>Creates a channel to listen for XML-RPC calls.
12432 Will trigger a remote_data event with type = REMOTE_DATA_CHANNEL and a channel id once it is available.</P
12433></DIV
12434><DIV
12435CLASS="section"
12436><HR><H2
12437CLASS="section"
12438><A
12439NAME="AEN3019"
12440>A.172. llOverMyLand</A
12441></H2
12442><DIV
12443CLASS="funcsynopsis"
12444><P
12445></P
12446><A
12447NAME="AEN3021"
12448></A
12449><P
12450><CODE
12451><CODE
12452CLASS="FUNCDEF"
12453>integer llOverMyLand</CODE
12454>(key id);</CODE
12455></P
12456><P
12457></P
12458></DIV
12459><P
12460>Returns <A
12461HREF="#AEN5295"
12462>TRUE</A
12463> if
12464 <CODE
12465CLASS="parameter"
12466>id</CODE
12467> is over land owned by the object owner,
12468 <A
12469HREF="#AEN5295"
12470>FALSE</A
12471> otherwise.</P
12472></DIV
12473><DIV
12474CLASS="section"
12475><HR><H2
12476CLASS="section"
12477><A
12478NAME="AEN3031"
12479>A.173. llParcelMediaCommandList</A
12480></H2
12481><DIV
12482CLASS="funcsynopsis"
12483><P
12484></P
12485><A
12486NAME="AEN3033"
12487></A
12488><P
12489><CODE
12490><CODE
12491CLASS="FUNCDEF"
12492>llParcelMediaCommandList</CODE
12493>(list command_list);</CODE
12494></P
12495><P
12496></P
12497></DIV
12498><P
12499>Controls the playback of movies and other multimedia resources on a land parcel.
12500 <CODE
12501CLASS="parameter"
12502>command</CODE
12503> can be one of
12504 <A
12505HREF="#AEN6459"
12506>PARCEL_MEDIA_COMMAND_STOP</A
12507>,
12508 <A
12509HREF="#AEN6459"
12510>PARCEL_MEDIA_COMMAND_PAUSE</A
12511>,
12512 <A
12513HREF="#AEN6459"
12514>PARCEL_MEDIA_COMMAND_PLAY</A
12515>,
12516 <A
12517HREF="#AEN6459"
12518>PARCEL_MEDIA_COMMAND_LOOP</A
12519>,
12520 <A
12521HREF="#AEN6459"
12522>PARCEL_MEDIA_COMMAND_TEXTURE</A
12523>,
12524 <A
12525HREF="#AEN6459"
12526>PARCEL_MEDIA_COMMAND_URL</A
12527>,
12528 <A
12529HREF="#AEN6459"
12530>PARCEL_MEDIA_COMMAND_TYPE</A
12531>,
12532 <A
12533HREF="#AEN6459"
12534>PARCEL_MEDIA_COMMAND_DESC</A
12535>,
12536 <A
12537HREF="#AEN6459"
12538>PARCEL_MEDIA_COMMAND_SIZE</A
12539>,
12540 <A
12541HREF="#AEN6459"
12542>PARCEL_MEDIA_COMMAND_TIME</A
12543>,
12544 <A
12545HREF="#AEN6459"
12546>PARCEL_MEDIA_COMMAND_AGENT</A
12547>,
12548 <A
12549HREF="#AEN6459"
12550>PARCEL_MEDIA_COMMAND_UNLOAD</A
12551>, or
12552 <A
12553HREF="#AEN6459"
12554>PARCEL_MEDIA_COMMAND_AUTO_ALIGN</A
12555>.
12556 </P
12557><P
12558>You are allowed one movie (or "media" resource) per land parcel.
12559 The movie will be played by replacing a texture on an object with the
12560 movie. Users will only see the movie when they are standing on your
12561 land parcel. Otherwise they will see the static texture.</P
12562><P
12563>Most of the QuickTime media formats are supported including:
12564 <P
12565></P
12566><UL
12567><LI
12568><P
12569>QuickTime movies (.mov)</P
12570></LI
12571><LI
12572><P
12573>Streamable stored QuickTime movies (.mov)</P
12574></LI
12575><LI
12576><P
12577>Real time QuickTime streams (rtsp://)</P
12578></LI
12579><LI
12580><P
12581>MPEG4 movies (.mp4, .mpeg4) (simple profile only)</P
12582></LI
12583><LI
12584><P
12585>QuickTime VR scenes and objects (.mov)</P
12586></LI
12587><LI
12588><P
12589>Flash movies (.swf) (only non-interative, version 5 and earlier</P
12590></LI
12591><LI
12592><P
12593>and many others from http://www.apple.com/quicktime/products/qt/specifications.html</P
12594></LI
12595></UL
12596>
12597 A good rule of thumb is if it plays in the QuickTime Media Player, it will play in Second Life.
12598 </P
12599><P
12600>You can set up a movie for playback as follows:
12601 <P
12602></P
12603><UL
12604><LI
12605><P
12606>First, select a texture from your inventory to be the static texture. It should not be a common texture -- a test pattern would be better than the default plywood.</P
12607></LI
12608><LI
12609><P
12610>Apply that texture to an object.</P
12611></LI
12612><LI
12613><P
12614>Right click on your land and select "About Land..."</P
12615></LI
12616><LI
12617><P
12618>Under "Options" use the GUI to select the static texture.</P
12619></LI
12620><LI
12621><P
12622>Enter the URL of your movie or media stream.</P
12623></LI
12624><LI
12625><P
12626>Create objects you want to click on for PLAY, STOP, PAUSE and LOOP (play forever)</P
12627></LI
12628><LI
12629><P
12630>Attach the following script (or similar) to each.</P
12631></LI
12632></UL
12633>
12634<DIV
12635CLASS="informalexample"
12636><P
12637></P
12638><A
12639NAME="AEN3087"
12640></A
12641><PRE
12642CLASS="programlisting"
12643>&#13;default
12644{
12645 touch_start ( integer total_number )
12646 {
12647 // This will play the current movie for all agents in the parcel.
12648 llParcelMediaCommandList( [PARCEL_MEDIA_COMMAND_LOOP] );
12649 }
12650}
12651</PRE
12652><P
12653></P
12654></DIV
12655>
12656Or a more advanced example:
12657<DIV
12658CLASS="informalexample"
12659><P
12660></P
12661><A
12662NAME="AEN3089"
12663></A
12664><PRE
12665CLASS="programlisting"
12666>&#13;float START_TIME = 30.0;
12667float RUN_LENGTH = 10.0;
12668
12669default
12670{
12671 state_entry()
12672 {
12673 llParcelMediaCommandList( [
12674 PARCEL_MEDIA_COMMAND_URL, "http://enter_your.url/here",
12675 PARCEL_MEDIA_COMMAND_TEXTURE, (key) llGetTexture(0) ] );
12676 }
12677
12678 touch_start(integer num_detected)
12679 {
12680 llParcelMediaCommandList( [
12681 PARCEL_MEDIA_COMMAND_AGENT, llDetectedKey(0),
12682 PARCEL_MEDIA_COMMAND_TIME, START_TIME,
12683 PARCEL_MEDIA_COMMAND_PLAY ] );
12684 list Info = llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL, PARCEL_MEDIA_COMMAND_TEXTURE]);
12685 llSay(0, "Playing '" + llList2String(Info, 0) + "' on texture '" + (string)llList2Key(Info, 1) + "' for agent " + llDetectedName(0));
12686 llSetTimerEvent(RUN_LENGTH);
12687 }
12688
12689 timer()
12690 {
12691 llParcelMediaCommandList( [ PARCEL_MEDIA_COMMAND_STOP ] );
12692 llSetTimerEvent(0.0);
12693 }
12694}
12695</PRE
12696><P
12697></P
12698></DIV
12699>
12700
12701
12702 </P
12703></DIV
12704><DIV
12705CLASS="section"
12706><HR><H2
12707CLASS="section"
12708><A
12709NAME="AEN3091"
12710>A.174. llParcelMediaQuery</A
12711></H2
12712><DIV
12713CLASS="funcsynopsis"
12714><P
12715></P
12716><A
12717NAME="AEN3093"
12718></A
12719><P
12720><CODE
12721><CODE
12722CLASS="FUNCDEF"
12723>list llParcelMediaQuery</CODE
12724>(list query_list);</CODE
12725></P
12726><P
12727></P
12728></DIV
12729><P
12730>Controls the playback of movies and other multimedia resources on a land parcel.
12731 <CODE
12732CLASS="parameter"
12733>command</CODE
12734> can be one of
12735 <A
12736HREF="#AEN6459"
12737>PARCEL_MEDIA_COMMAND_TEXTURE</A
12738> or
12739 <A
12740HREF="#AEN6459"
12741>PARCEL_MEDIA_COMMAND_URL</A
12742>.
12743 </P
12744><P
12745>This allows you to query the texture or url for media on the parcel.
12746 See <A
12747HREF="#AEN3031"
12748>llParcelMediaCommandList</A
12749> for an example
12750 of usage.</P
12751></DIV
12752><DIV
12753CLASS="section"
12754><HR><H2
12755CLASS="section"
12756><A
12757NAME="AEN3105"
12758>A.175. llParseString2List</A
12759></H2
12760><DIV
12761CLASS="funcsynopsis"
12762><P
12763></P
12764><A
12765NAME="AEN3107"
12766></A
12767><P
12768><CODE
12769><CODE
12770CLASS="FUNCDEF"
12771>list llParseString2List</CODE
12772>(string src, list separators, list spacers);</CODE
12773></P
12774><P
12775></P
12776></DIV
12777><P
12778>Breaks <CODE
12779CLASS="parameter"
12780>src</CODE
12781> into a list, discarding
12782 anything in <CODE
12783CLASS="parameter"
12784>separators</CODE
12785>, keeping any entry
12786 in <CODE
12787CLASS="parameter"
12788>spacers</CODE
12789>. The
12790 <CODE
12791CLASS="parameter"
12792>separators</CODE
12793> and
12794 <CODE
12795CLASS="parameter"
12796>spacers</CODE
12797> must be lists of strings with a
12798 maximum of 8 entries each. So, if you had made the call:
12799<DIV
12800CLASS="informalexample"
12801><P
12802></P
12803><A
12804NAME="AEN3123"
12805></A
12806><PRE
12807CLASS="programlisting"
12808>&#13;llParseString2List("Parsethisnow! I dare:you to.", ["this", "!", " "], [":"]);
12809</PRE
12810><P
12811></P
12812></DIV
12813>
12814 You would get the list:
12815<DIV
12816CLASS="informalexample"
12817><P
12818></P
12819><A
12820NAME="AEN3125"
12821></A
12822><PRE
12823CLASS="programlisting"
12824>&#13;["Parse", "now", "I", "dare", ":", "you", "to"]
12825</PRE
12826><P
12827></P
12828></DIV
12829></P
12830></DIV
12831><DIV
12832CLASS="section"
12833><HR><H2
12834CLASS="section"
12835><A
12836NAME="AEN3127"
12837>A.176. llParseStringKeepNulls</A
12838></H2
12839><DIV
12840CLASS="funcsynopsis"
12841><P
12842></P
12843><A
12844NAME="AEN3129"
12845></A
12846><P
12847><CODE
12848><CODE
12849CLASS="FUNCDEF"
12850>list llParseStringKeepNulls</CODE
12851>(string src, list separators, list spacers);</CODE
12852></P
12853><P
12854></P
12855></DIV
12856><P
12857>Breaks <CODE
12858CLASS="parameter"
12859>src</CODE
12860> into a list, discarding
12861 anything in <CODE
12862CLASS="parameter"
12863>separators</CODE
12864>, keeping any entry
12865 in <CODE
12866CLASS="parameter"
12867>spacers</CODE
12868>. Any resulting null values
12869 are kept. The <CODE
12870CLASS="parameter"
12871>separators</CODE
12872> and
12873 <CODE
12874CLASS="parameter"
12875>spacers</CODE
12876> must be lists of strings with a
12877 maximum of 8 entries each. So, if you had made the call:
12878<DIV
12879CLASS="informalexample"
12880><P
12881></P
12882><A
12883NAME="AEN3145"
12884></A
12885><PRE
12886CLASS="programlisting"
12887>&#13;llParseString2List("!Parsethisthisnow I dare::you to.", ["this", "!", " "], [":"]);
12888</PRE
12889><P
12890></P
12891></DIV
12892>
12893 You would get the list:
12894<DIV
12895CLASS="informalexample"
12896><P
12897></P
12898><A
12899NAME="AEN3147"
12900></A
12901><PRE
12902CLASS="programlisting"
12903>&#13;[NULL, "Parse", NULL, "now", "I", "dare", ":", NULL, ":", "you", "to"]
12904</PRE
12905><P
12906></P
12907></DIV
12908></P
12909></DIV
12910><DIV
12911CLASS="section"
12912><HR><H2
12913CLASS="section"
12914><A
12915NAME="AEN3149"
12916>A.177. llParticleSystem</A
12917></H2
12918><DIV
12919CLASS="funcsynopsis"
12920><P
12921></P
12922><A
12923NAME="AEN3151"
12924></A
12925><P
12926><CODE
12927><CODE
12928CLASS="FUNCDEF"
12929>llParticleSystem</CODE
12930>(list parameters);</CODE
12931></P
12932><P
12933></P
12934></DIV
12935><P
12936>Makes a particle system based on the parameter list. The
12937 <CODE
12938CLASS="parameter"
12939>parameters</CODE
12940> are specified as an ordered list
12941 of parameter and value. Valid parameters and their expected values
12942 can be found in the <A
12943HREF="#AEN5851"
12944>particle system
12945 constants</A
12946>. Here is a simple example:
12947<DIV
12948CLASS="informalexample"
12949><P
12950></P
12951><A
12952NAME="AEN3160"
12953></A
12954><PRE
12955CLASS="programlisting"
12956>&#13;llParticleSystem([PSYS_PART_FLAGS, PSYS_PART_WIND_MASK,
12957 PSYS_PART_START_COLOR, &#60;1,0,0&#62;,
12958 PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE]);
12959</PRE
12960><P
12961></P
12962></DIV
12963></P
12964></DIV
12965><DIV
12966CLASS="section"
12967><HR><H2
12968CLASS="section"
12969><A
12970NAME="AEN3162"
12971>A.178. llPassCollisions</A
12972></H2
12973><DIV
12974CLASS="funcsynopsis"
12975><P
12976></P
12977><A
12978NAME="AEN3164"
12979></A
12980><P
12981><CODE
12982><CODE
12983CLASS="FUNCDEF"
12984>llPassCollisions</CODE
12985>(integer pass);</CODE
12986></P
12987><P
12988></P
12989></DIV
12990><P
12991>If <CODE
12992CLASS="parameter"
12993>pass</CODE
12994> is <A
12995HREF="#AEN5295"
12996>TRUE</A
12997>, land and object collisions
12998 are passed from children on to parents.</P
12999></DIV
13000><DIV
13001CLASS="section"
13002><HR><H2
13003CLASS="section"
13004><A
13005NAME="AEN3173"
13006>A.179. llPassTouches</A
13007></H2
13008><DIV
13009CLASS="funcsynopsis"
13010><P
13011></P
13012><A
13013NAME="AEN3175"
13014></A
13015><P
13016><CODE
13017><CODE
13018CLASS="FUNCDEF"
13019>llPassTouches</CODE
13020>(integer pass);</CODE
13021></P
13022><P
13023></P
13024></DIV
13025><P
13026>If <CODE
13027CLASS="parameter"
13028>pass</CODE
13029> is <A
13030HREF="#AEN5295"
13031>TRUE</A
13032>, touches are passed from
13033 children on to parents.</P
13034></DIV
13035><DIV
13036CLASS="section"
13037><HR><H2
13038CLASS="section"
13039><A
13040NAME="AEN3184"
13041>A.180. llPlaySound</A
13042></H2
13043><DIV
13044CLASS="funcsynopsis"
13045><P
13046></P
13047><A
13048NAME="AEN3186"
13049></A
13050><P
13051><CODE
13052><CODE
13053CLASS="FUNCDEF"
13054>llPlaySound</CODE
13055>(string sound, float volume);</CODE
13056></P
13057><P
13058></P
13059></DIV
13060><P
13061>Plays a sound once. The sound will be attached to an object
13062 and follow object movement. Only one sound may be attached to an
13063 object at a time, and attaching a new sound or calling <A
13064HREF="#AEN4620"
13065>llStopSound</A
13066> will stop the
13067 previously attached sound. A second call to llPlaySound with the
13068 same <CODE
13069CLASS="parameter"
13070>sound</CODE
13071> will not restart the sound, but
13072 the new volume will be used, which allows control over the volume
13073 of already playing sounds. To restart the sound from the
13074 beginning, call <A
13075HREF="#AEN4620"
13076>llStopSound</A
13077>
13078 before calling llPlaySound again.</P
13079></DIV
13080><DIV
13081CLASS="section"
13082><HR><H2
13083CLASS="section"
13084><A
13085NAME="AEN3198"
13086>A.181. llPlaySoundSlave</A
13087></H2
13088><DIV
13089CLASS="funcsynopsis"
13090><P
13091></P
13092><A
13093NAME="AEN3200"
13094></A
13095><P
13096><CODE
13097><CODE
13098CLASS="FUNCDEF"
13099>llPlaySoundSlave</CODE
13100>(string sound, float volume);</CODE
13101></P
13102><P
13103></P
13104></DIV
13105><P
13106>Behaviour is identical to llPlaySound, unless there is a
13107 "Sync Master" present. If a Sync Master is already
13108 playing the Slave sound will not be played until the Master hits
13109 its loop point and returns to the beginning. llPlaySoundSlave will
13110 play the sound exactly once; if it is desired to have the sound
13111 play every time the Master loops, either use <A
13112HREF="#AEN2802"
13113>llLoopSoundSlave</A
13114> with extra
13115 silence padded on the end of the sound or ensure that
13116 llPlaySoundSlave is called at least once per loop of the
13117 Master.</P
13118></DIV
13119><DIV
13120CLASS="section"
13121><HR><H2
13122CLASS="section"
13123><A
13124NAME="AEN3210"
13125>A.182. llPointAt</A
13126></H2
13127><DIV
13128CLASS="funcsynopsis"
13129><P
13130></P
13131><A
13132NAME="AEN3212"
13133></A
13134><P
13135><CODE
13136><CODE
13137CLASS="FUNCDEF"
13138>llPointAt</CODE
13139>(vector pos);</CODE
13140></P
13141><P
13142></P
13143></DIV
13144><P
13145>Make avatar that owns object point at
13146 <CODE
13147CLASS="parameter"
13148>pos</CODE
13149>.</P
13150></DIV
13151><DIV
13152CLASS="section"
13153><HR><H2
13154CLASS="section"
13155><A
13156NAME="AEN3220"
13157>A.183. llPow</A
13158></H2
13159><DIV
13160CLASS="funcsynopsis"
13161><P
13162></P
13163><A
13164NAME="AEN3222"
13165></A
13166><P
13167><CODE
13168><CODE
13169CLASS="FUNCDEF"
13170>llPow</CODE
13171>(float base, float exp);</CODE
13172></P
13173><P
13174></P
13175></DIV
13176><P
13177>Returns <CODE
13178CLASS="parameter"
13179>base</CODE
13180> raised to the
13181 <CODE
13182CLASS="parameter"
13183>exp</CODE
13184>.</P
13185></DIV
13186><DIV
13187CLASS="section"
13188><HR><H2
13189CLASS="section"
13190><A
13191NAME="AEN3233"
13192>A.184. llPreloadSound</A
13193></H2
13194><DIV
13195CLASS="funcsynopsis"
13196><P
13197></P
13198><A
13199NAME="AEN3235"
13200></A
13201><P
13202><CODE
13203><CODE
13204CLASS="FUNCDEF"
13205>llPreloadSound</CODE
13206>(string sound);</CODE
13207></P
13208><P
13209></P
13210></DIV
13211><P
13212>Preloads <CODE
13213CLASS="parameter"
13214>sound</CODE
13215> from object inventory
13216 on nearby viewers.</P
13217></DIV
13218><DIV
13219CLASS="section"
13220><HR><H2
13221CLASS="section"
13222><A
13223NAME="AEN3243"
13224>A.185. llPushObject</A
13225></H2
13226><DIV
13227CLASS="funcsynopsis"
13228><P
13229></P
13230><A
13231NAME="AEN3245"
13232></A
13233><P
13234><CODE
13235><CODE
13236CLASS="FUNCDEF"
13237>llPushObject</CODE
13238>(key id, vector impulse, vector angular_impulse, integer local);</CODE
13239></P
13240><P
13241></P
13242></DIV
13243><P
13244>Applies <CODE
13245CLASS="parameter"
13246>impulse</CODE
13247> and
13248 <CODE
13249CLASS="parameter"
13250>angular_impulse</CODE
13251> to object
13252 <CODE
13253CLASS="parameter"
13254>id</CODE
13255>.</P
13256></DIV
13257><DIV
13258CLASS="section"
13259><HR><H2
13260CLASS="section"
13261><A
13262NAME="AEN3261"
13263>A.186. llReleaseControls</A
13264></H2
13265><DIV
13266CLASS="funcsynopsis"
13267><P
13268></P
13269><A
13270NAME="AEN3263"
13271></A
13272><P
13273><CODE
13274><CODE
13275CLASS="FUNCDEF"
13276>llReleaseControls</CODE
13277>(key avatar);</CODE
13278></P
13279><P
13280></P
13281></DIV
13282><P
13283>Stop taking inputs from <CODE
13284CLASS="parameter"
13285>avatar</CODE
13286>.</P
13287></DIV
13288><DIV
13289CLASS="section"
13290><HR><H2
13291CLASS="section"
13292><A
13293NAME="AEN3271"
13294>A.187. llRemoteDataReply</A
13295></H2
13296><DIV
13297CLASS="funcsynopsis"
13298><P
13299></P
13300><A
13301NAME="AEN3273"
13302></A
13303><P
13304><CODE
13305><CODE
13306CLASS="FUNCDEF"
13307>llRemoteDataReply</CODE
13308>(key channel, key message_id, string sdata);</CODE
13309></P
13310><P
13311></P
13312></DIV
13313><P
13314>Send an XML-RPC reply to message_id on channel with payload of string sdata.</P
13315></DIV
13316><DIV
13317CLASS="section"
13318><HR><H2
13319CLASS="section"
13320><A
13321NAME="AEN3284"
13322>A.188. llRemoteDataSetRegion</A
13323></H2
13324><DIV
13325CLASS="funcsynopsis"
13326><P
13327></P
13328><A
13329NAME="AEN3286"
13330></A
13331><P
13332><CODE
13333><CODE
13334CLASS="FUNCDEF"
13335>llRemoteDataSetRegion</CODE
13336>(void);</CODE
13337></P
13338><P
13339></P
13340></DIV
13341><P
13342>If an object using remote data channels changes regions, you
13343 must call this function to reregister the remote data
13344 channels. You do not need to make this call if your object does
13345 not change regions or use remote data channels.</P
13346></DIV
13347><DIV
13348CLASS="section"
13349><HR><H2
13350CLASS="section"
13351><A
13352NAME="AEN3292"
13353>A.189. llRemoteLoadScript</A
13354></H2
13355><DIV
13356CLASS="funcsynopsis"
13357><P
13358></P
13359><A
13360NAME="AEN3294"
13361></A
13362><P
13363><CODE
13364><CODE
13365CLASS="FUNCDEF"
13366>llRemoteLoadScript</CODE
13367>(void);</CODE
13368></P
13369><P
13370></P
13371></DIV
13372><P
13373>Deprecated. Please use llRemoteLoadScriptPin instead.</P
13374></DIV
13375><DIV
13376CLASS="section"
13377><HR><H2
13378CLASS="section"
13379><A
13380NAME="AEN3300"
13381>A.190. llRemoteLoadScriptPin</A
13382></H2
13383><DIV
13384CLASS="funcsynopsis"
13385><P
13386></P
13387><A
13388NAME="AEN3302"
13389></A
13390><P
13391><CODE
13392><CODE
13393CLASS="FUNCDEF"
13394>llRemoteLoadScriptPin</CODE
13395>(key target, string name, integer pin, integer running, integer param);</CODE
13396></P
13397><P
13398></P
13399></DIV
13400><P
13401>If the owner of the object this script is attached can modify <CODE
13402CLASS="parameter"
13403>target</CODE
13404>, it has the correct <CODE
13405CLASS="parameter"
13406>pin</CODE
13407> and the objects are in the same region, copy script <CODE
13408CLASS="parameter"
13409>name</CODE
13410> onto <CODE
13411CLASS="parameter"
13412>target</CODE
13413>, if <CODE
13414CLASS="parameter"
13415>running</CODE
13416> == TRUE, start the script with <CODE
13417CLASS="parameter"
13418>param</CODE
13419>. If <CODE
13420CLASS="parameter"
13421>name</CODE
13422> already exists on <CODE
13423CLASS="parameter"
13424>target</CODE
13425>, it is replaced.</P
13426></DIV
13427><DIV
13428CLASS="section"
13429><HR><H2
13430CLASS="section"
13431><A
13432NAME="AEN3325"
13433>A.191. llRemoveInventory</A
13434></H2
13435><DIV
13436CLASS="funcsynopsis"
13437><P
13438></P
13439><A
13440NAME="AEN3327"
13441></A
13442><P
13443><CODE
13444><CODE
13445CLASS="FUNCDEF"
13446>llRemoveInventory</CODE
13447>(string inventory);</CODE
13448></P
13449><P
13450></P
13451></DIV
13452><P
13453>Remove the name <CODE
13454CLASS="parameter"
13455>inventory</CODE
13456> item from
13457 the object inventory.</P
13458></DIV
13459><DIV
13460CLASS="section"
13461><HR><H2
13462CLASS="section"
13463><A
13464NAME="AEN3335"
13465>A.192. llRemoveVehicleFlags</A
13466></H2
13467><DIV
13468CLASS="funcsynopsis"
13469><P
13470></P
13471><A
13472NAME="AEN3337"
13473></A
13474><P
13475><CODE
13476><CODE
13477CLASS="FUNCDEF"
13478>llRemoveVehicleFlags</CODE
13479>(integer flags);</CODE
13480></P
13481><P
13482></P
13483></DIV
13484><P
13485>Sets the vehicle <CODE
13486CLASS="parameter"
13487>flags</CODE
13488> to
13489 FALSE. Valid parameters can be found in the <A
13490HREF="#AEN6231"
13491>vehicle flags constants</A
13492>
13493 section.</P
13494></DIV
13495><DIV
13496CLASS="section"
13497><HR><H2
13498CLASS="section"
13499><A
13500NAME="AEN3346"
13501>A.193. llRequestAgentData</A
13502></H2
13503><DIV
13504CLASS="funcsynopsis"
13505><P
13506></P
13507><A
13508NAME="AEN3348"
13509></A
13510><P
13511><CODE
13512><CODE
13513CLASS="FUNCDEF"
13514>key llRequestAgentData</CODE
13515>(key id, integer data);</CODE
13516></P
13517><P
13518></P
13519></DIV
13520><P
13521>This function requests data about agent
13522 <CODE
13523CLASS="parameter"
13524>id</CODE
13525>. If and when the information is
13526 collected, the <A
13527HREF="#AEN4997"
13528>dataserver</A
13529>
13530 event is called with the returned key returned from this function
13531 passed in the <CODE
13532CLASS="parameter"
13533>requested</CODE
13534> parameter. See the
13535 <A
13536HREF="#AEN6005"
13537>agent data constants</A
13538> for
13539 details about valid values of <CODE
13540CLASS="parameter"
13541>data</CODE
13542> and what
13543 each will return in the <A
13544HREF="#AEN4997"
13545>dataserver</A
13546> event.</P
13547></DIV
13548><DIV
13549CLASS="section"
13550><HR><H2
13551CLASS="section"
13552><A
13553NAME="AEN3363"
13554>A.194. llRequestInventoryData</A
13555></H2
13556><DIV
13557CLASS="funcsynopsis"
13558><P
13559></P
13560><A
13561NAME="AEN3365"
13562></A
13563><P
13564><CODE
13565><CODE
13566CLASS="FUNCDEF"
13567>key llRequestInventoryData</CODE
13568>(string name);</CODE
13569></P
13570><P
13571></P
13572></DIV
13573><P
13574>Requests data from object inventory item
13575 <CODE
13576CLASS="parameter"
13577>name</CODE
13578>. When data is available the <A
13579HREF="#AEN4997"
13580>dataserver</A
13581> event will be raised
13582 with the key returned from this function in the
13583 <CODE
13584CLASS="parameter"
13585>requested</CODE
13586> parameter. The only request
13587 currently implemented is to request data from landmarks, where the
13588 data returned is in the form "&#60;float, float,
13589 float&#62;" which can be cast to a vector. This position is in
13590 region local coordinates of the region the script call is made
13591 (possible even resulting in negative values). So, to
13592 convert this value into a global position, just add the result of
13593 llGetRegionCorner.</P
13594></DIV
13595><DIV
13596CLASS="section"
13597><HR><H2
13598CLASS="section"
13599><A
13600NAME="AEN3375"
13601>A.195. llRequestPermissions</A
13602></H2
13603><DIV
13604CLASS="funcsynopsis"
13605><P
13606></P
13607><A
13608NAME="AEN3377"
13609></A
13610><P
13611><CODE
13612><CODE
13613CLASS="FUNCDEF"
13614>integer llRequestPermissions</CODE
13615>(key avatar, integer perm);</CODE
13616></P
13617><P
13618></P
13619></DIV
13620><P
13621>Ask <CODE
13622CLASS="parameter"
13623>avatar</CODE
13624> to allow the script to do
13625 <CODE
13626CLASS="parameter"
13627>perm</CODE
13628>. The <CODE
13629CLASS="parameter"
13630>perm</CODE
13631>
13632 parameter should be a <A
13633HREF="#AEN5360"
13634>permission
13635 constant</A
13636>. Multiple permissions can be requested
13637 simultaneously by or'ing the constants together. Many of the
13638 permissions requests can only go to object owner. This call will
13639 not stop script execution - if the specified avatar grants the
13640 requested permissions, the <A
13641HREF="#AEN5171"
13642>run_time_permissions</A
13643>
13644 event will be called.</P
13645></DIV
13646><DIV
13647CLASS="section"
13648><HR><H2
13649CLASS="section"
13650><A
13651NAME="AEN3391"
13652>A.196. llRequestSimulatorData</A
13653></H2
13654><DIV
13655CLASS="funcsynopsis"
13656><P
13657></P
13658><A
13659NAME="AEN3393"
13660></A
13661><P
13662><CODE
13663><CODE
13664CLASS="FUNCDEF"
13665>key llRequestSimulatorData</CODE
13666>(string sim_name, integer data);</CODE
13667></P
13668><P
13669></P
13670></DIV
13671><P
13672>This function requests data about simulator
13673 <CODE
13674CLASS="parameter"
13675>sim_name</CODE
13676>. When the information is
13677 collected, the <A
13678HREF="#AEN4997"
13679>dataserver</A
13680>
13681 event is called with the returned key returned from this function
13682 passed in the <CODE
13683CLASS="parameter"
13684>requested</CODE
13685> parameter. See the
13686 <A
13687HREF="#AEN6086"
13688>simulator data constants</A
13689> for
13690 details about valid values of <CODE
13691CLASS="parameter"
13692>data</CODE
13693> and what
13694 each will return in the <A
13695HREF="#AEN4997"
13696>dataserver</A
13697> event.</P
13698></DIV
13699><DIV
13700CLASS="section"
13701><HR><H2
13702CLASS="section"
13703><A
13704NAME="AEN3408"
13705>A.197. llResetScript</A
13706></H2
13707><DIV
13708CLASS="funcsynopsis"
13709><P
13710></P
13711><A
13712NAME="AEN3410"
13713></A
13714><P
13715><CODE
13716><CODE
13717CLASS="FUNCDEF"
13718>llResetScript</CODE
13719>(void);</CODE
13720></P
13721><P
13722></P
13723></DIV
13724><P
13725>Resets this script.</P
13726></DIV
13727><DIV
13728CLASS="section"
13729><HR><H2
13730CLASS="section"
13731><A
13732NAME="AEN3416"
13733>A.198. llResetOtherScript</A
13734></H2
13735><DIV
13736CLASS="funcsynopsis"
13737><P
13738></P
13739><A
13740NAME="AEN3418"
13741></A
13742><P
13743><CODE
13744><CODE
13745CLASS="FUNCDEF"
13746>llResetOtherScript</CODE
13747>(string name);</CODE
13748></P
13749><P
13750></P
13751></DIV
13752><P
13753>Resets the script <CODE
13754CLASS="parameter"
13755>name</CODE
13756>.</P
13757></DIV
13758><DIV
13759CLASS="section"
13760><HR><H2
13761CLASS="section"
13762><A
13763NAME="AEN3426"
13764>A.199. llResetTime</A
13765></H2
13766><DIV
13767CLASS="funcsynopsis"
13768><P
13769></P
13770><A
13771NAME="AEN3428"
13772></A
13773><P
13774><CODE
13775><CODE
13776CLASS="FUNCDEF"
13777>llResetTime</CODE
13778>(void);</CODE
13779></P
13780><P
13781></P
13782></DIV
13783><P
13784>Sets the internal script timer to zero.</P
13785></DIV
13786><DIV
13787CLASS="section"
13788><HR><H2
13789CLASS="section"
13790><A
13791NAME="AEN3434"
13792>A.200. llRezAtRoot</A
13793></H2
13794><DIV
13795CLASS="funcsynopsis"
13796><P
13797></P
13798><A
13799NAME="AEN3436"
13800></A
13801><P
13802><CODE
13803><CODE
13804CLASS="FUNCDEF"
13805>llRezAtRoot</CODE
13806>(string inventory, vector pos, vector vel, rotation rot, integer param);</CODE
13807></P
13808><P
13809></P
13810></DIV
13811><P
13812>Creates object's <CODE
13813CLASS="parameter"
13814>inventory</CODE
13815> object at
13816 position <CODE
13817CLASS="parameter"
13818>pos</CODE
13819> with velocity
13820 <CODE
13821CLASS="parameter"
13822>vel</CODE
13823> and rotation
13824 <CODE
13825CLASS="parameter"
13826>rot</CODE
13827>. The last selected root object's location
13828 in a multi-object selection will be placed at <CODE
13829CLASS="parameter"
13830>pos</CODE
13831>.
13832 All other objects in a selection will be created relative to the last
13833 selected root's position, taking <CODE
13834CLASS="parameter"
13835>rot</CODE
13836> into account.
13837 The <CODE
13838CLASS="parameter"
13839>param</CODE
13840> value
13841 will be available to the newly created object in the <A
13842HREF="#AEN5159"
13843>on_rez</A
13844> event or through the <A
13845HREF="#AEN2164"
13846>llGetStartParameter</A
13847>
13848 library function. The <CODE
13849CLASS="parameter"
13850>vel</CODE
13851> parameter is
13852 ignored if the rezzed object is not physical.</P
13853></DIV
13854><DIV
13855CLASS="section"
13856><HR><H2
13857CLASS="section"
13858><A
13859NAME="AEN3461"
13860>A.201. llRezObject</A
13861></H2
13862><DIV
13863CLASS="funcsynopsis"
13864><P
13865></P
13866><A
13867NAME="AEN3463"
13868></A
13869><P
13870><CODE
13871><CODE
13872CLASS="FUNCDEF"
13873>llRezObject</CODE
13874>(string inventory, vector pos, vector vel, rotation rot, integer param);</CODE
13875></P
13876><P
13877></P
13878></DIV
13879><P
13880>Creates object's <CODE
13881CLASS="parameter"
13882>inventory</CODE
13883> object at
13884 position <CODE
13885CLASS="parameter"
13886>pos</CODE
13887> with velocity
13888 <CODE
13889CLASS="parameter"
13890>vel</CODE
13891> and rotation
13892 <CODE
13893CLASS="parameter"
13894>rot</CODE
13895>. The <CODE
13896CLASS="parameter"
13897>param</CODE
13898> value
13899 will be available to the newly created object in the <A
13900HREF="#AEN5159"
13901>on_rez</A
13902> event or through the <A
13903HREF="#AEN2164"
13904>llGetStartParameter</A
13905>
13906 library function. The <CODE
13907CLASS="parameter"
13908>vel</CODE
13909> parameter is
13910 ignored if the rezzed object is not physical.</P
13911></DIV
13912><DIV
13913CLASS="section"
13914><HR><H2
13915CLASS="section"
13916><A
13917NAME="AEN3486"
13918>A.202. llRot2Angle</A
13919></H2
13920><DIV
13921CLASS="funcsynopsis"
13922><P
13923></P
13924><A
13925NAME="AEN3488"
13926></A
13927><P
13928><CODE
13929><CODE
13930CLASS="FUNCDEF"
13931>float llRot2Angle</CODE
13932>(rotation rot);</CODE
13933></P
13934><P
13935></P
13936></DIV
13937><P
13938>Returns the rotation angle represented by
13939 <CODE
13940CLASS="parameter"
13941>rot</CODE
13942>.</P
13943></DIV
13944><DIV
13945CLASS="section"
13946><HR><H2
13947CLASS="section"
13948><A
13949NAME="AEN3496"
13950>A.203. llRot2Axis</A
13951></H2
13952><DIV
13953CLASS="funcsynopsis"
13954><P
13955></P
13956><A
13957NAME="AEN3498"
13958></A
13959><P
13960><CODE
13961><CODE
13962CLASS="FUNCDEF"
13963>vector llRot2Axis</CODE
13964>(rotation rot);</CODE
13965></P
13966><P
13967></P
13968></DIV
13969><P
13970>Returns the rotation axis represented by
13971 <CODE
13972CLASS="parameter"
13973>rot</CODE
13974>.</P
13975></DIV
13976><DIV
13977CLASS="section"
13978><HR><H2
13979CLASS="section"
13980><A
13981NAME="AEN3506"
13982>A.204. llRot2Euler</A
13983></H2
13984><DIV
13985CLASS="funcsynopsis"
13986><P
13987></P
13988><A
13989NAME="AEN3508"
13990></A
13991><P
13992><CODE
13993><CODE
13994CLASS="FUNCDEF"
13995>vector llRot2Euler</CODE
13996>(rotation rot);</CODE
13997></P
13998><P
13999></P
14000></DIV
14001><P
14002>Returns the Euler Angle representation of
14003 <CODE
14004CLASS="parameter"
14005>rot</CODE
14006>.</P
14007></DIV
14008><DIV
14009CLASS="section"
14010><HR><H2
14011CLASS="section"
14012><A
14013NAME="AEN3516"
14014>A.205. llRot2Fwd</A
14015></H2
14016><DIV
14017CLASS="funcsynopsis"
14018><P
14019></P
14020><A
14021NAME="AEN3518"
14022></A
14023><P
14024><CODE
14025><CODE
14026CLASS="FUNCDEF"
14027>vector llRot2Fwd</CODE
14028>(rotation rot);</CODE
14029></P
14030><P
14031></P
14032></DIV
14033><P
14034>Returns the forward axis represented by
14035 <CODE
14036CLASS="parameter"
14037>rot</CODE
14038>.</P
14039></DIV
14040><DIV
14041CLASS="section"
14042><HR><H2
14043CLASS="section"
14044><A
14045NAME="AEN3526"
14046>A.206. llRot2Left</A
14047></H2
14048><DIV
14049CLASS="funcsynopsis"
14050><P
14051></P
14052><A
14053NAME="AEN3528"
14054></A
14055><P
14056><CODE
14057><CODE
14058CLASS="FUNCDEF"
14059>llRot2Left</CODE
14060>(rotation rot);</CODE
14061></P
14062><P
14063></P
14064></DIV
14065><P
14066>Returns the left axis represented by
14067 <CODE
14068CLASS="parameter"
14069>rot</CODE
14070>.</P
14071></DIV
14072><DIV
14073CLASS="section"
14074><HR><H2
14075CLASS="section"
14076><A
14077NAME="AEN3536"
14078>A.207. llRot2Up</A
14079></H2
14080><DIV
14081CLASS="funcsynopsis"
14082><P
14083></P
14084><A
14085NAME="AEN3538"
14086></A
14087><P
14088><CODE
14089><CODE
14090CLASS="FUNCDEF"
14091>llRot2Up</CODE
14092>(rotation rot);</CODE
14093></P
14094><P
14095></P
14096></DIV
14097><P
14098>Returns the up axis represented by
14099 <CODE
14100CLASS="parameter"
14101>rot</CODE
14102>.</P
14103></DIV
14104><DIV
14105CLASS="section"
14106><HR><H2
14107CLASS="section"
14108><A
14109NAME="AEN3546"
14110>A.208. llRotBetween</A
14111></H2
14112><DIV
14113CLASS="funcsynopsis"
14114><P
14115></P
14116><A
14117NAME="AEN3548"
14118></A
14119><P
14120><CODE
14121><CODE
14122CLASS="FUNCDEF"
14123>rotation llRotBetween</CODE
14124>(vector a, vector b);</CODE
14125></P
14126><P
14127></P
14128></DIV
14129><P
14130>Returns the rotation needed to rotate
14131 <CODE
14132CLASS="parameter"
14133>a</CODE
14134> to <CODE
14135CLASS="parameter"
14136>b</CODE
14137>.</P
14138></DIV
14139><DIV
14140CLASS="section"
14141><HR><H2
14142CLASS="section"
14143><A
14144NAME="AEN3559"
14145>A.209. llRotLookAt</A
14146></H2
14147><DIV
14148CLASS="funcsynopsis"
14149><P
14150></P
14151><A
14152NAME="AEN3561"
14153></A
14154><P
14155><CODE
14156><CODE
14157CLASS="FUNCDEF"
14158>llRotLookAt</CODE
14159>(rotation rot, float strength, float damping);</CODE
14160></P
14161><P
14162></P
14163></DIV
14164><P
14165>Cause object to rotate to <CODE
14166CLASS="parameter"
14167>rot</CODE
14168>. Good
14169 <CODE
14170CLASS="parameter"
14171>strength</CODE
14172> values are around half the mass of
14173 the object and good <CODE
14174CLASS="parameter"
14175>damping</CODE
14176> values are less
14177 than 1/10<SUP
14178>th</SUP
14179> of the
14180 <CODE
14181CLASS="parameter"
14182>strength</CODE
14183>. Asymmetrical shapes require
14184 smaller <CODE
14185CLASS="parameter"
14186>damping</CODE
14187>. A
14188 <CODE
14189CLASS="parameter"
14190>strength</CODE
14191> of 0.0 cancels the look at.</P
14192></DIV
14193><DIV
14194CLASS="section"
14195><HR><H2
14196CLASS="section"
14197><A
14198NAME="AEN3579"
14199>A.210. llRotTarget</A
14200></H2
14201><DIV
14202CLASS="funcsynopsis"
14203><P
14204></P
14205><A
14206NAME="AEN3581"
14207></A
14208><P
14209><CODE
14210><CODE
14211CLASS="FUNCDEF"
14212>integer llRotTarget</CODE
14213>(rotation rot, float error);</CODE
14214></P
14215><P
14216></P
14217></DIV
14218><P
14219>Set object rotation within <CODE
14220CLASS="parameter"
14221>error</CODE
14222> of
14223 <CODE
14224CLASS="parameter"
14225>rotation</CODE
14226> as a rotational target and return
14227 an integer number for the target. The number can be used in <A
14228HREF="#AEN3593"
14229>llRotTargetRemove</A
14230>.</P
14231></DIV
14232><DIV
14233CLASS="section"
14234><HR><H2
14235CLASS="section"
14236><A
14237NAME="AEN3593"
14238>A.211. llRotTargetRemove</A
14239></H2
14240><DIV
14241CLASS="funcsynopsis"
14242><P
14243></P
14244><A
14245NAME="AEN3595"
14246></A
14247><P
14248><CODE
14249><CODE
14250CLASS="FUNCDEF"
14251>llRotTargetRemove</CODE
14252>(integer number);</CODE
14253></P
14254><P
14255></P
14256></DIV
14257><P
14258>Remove rotational target
14259 <CODE
14260CLASS="parameter"
14261>number</CODE
14262>.</P
14263></DIV
14264><DIV
14265CLASS="section"
14266><HR><H2
14267CLASS="section"
14268><A
14269NAME="AEN3603"
14270>A.212. llRotateTexture</A
14271></H2
14272><DIV
14273CLASS="funcsynopsis"
14274><P
14275></P
14276><A
14277NAME="AEN3605"
14278></A
14279><P
14280><CODE
14281><CODE
14282CLASS="FUNCDEF"
14283>llRotateTexture</CODE
14284>(float radians, integer face);</CODE
14285></P
14286><P
14287></P
14288></DIV
14289><P
14290>Sets the texture rotation of <CODE
14291CLASS="parameter"
14292>face</CODE
14293> to
14294 <CODE
14295CLASS="parameter"
14296>radians</CODE
14297>. If <CODE
14298CLASS="parameter"
14299>face</CODE
14300>
14301 <A
14302HREF="#AEN6073"
14303>ALL_SIDES</A
14304>, rotate the
14305 texture of all faces.</P
14306></DIV
14307><DIV
14308CLASS="section"
14309><HR><H2
14310CLASS="section"
14311><A
14312NAME="AEN3618"
14313>A.213. llRound</A
14314></H2
14315><DIV
14316CLASS="funcsynopsis"
14317><P
14318></P
14319><A
14320NAME="AEN3620"
14321></A
14322><P
14323><CODE
14324><CODE
14325CLASS="FUNCDEF"
14326>integer llRound</CODE
14327>(float val);</CODE
14328></P
14329><P
14330></P
14331></DIV
14332><P
14333>returns <CODE
14334CLASS="parameter"
14335>val</CODE
14336> rounded to the nearest
14337 integer.</P
14338></DIV
14339><DIV
14340CLASS="section"
14341><HR><H2
14342CLASS="section"
14343><A
14344NAME="AEN3628"
14345>A.214. llSameGroup</A
14346></H2
14347><DIV
14348CLASS="funcsynopsis"
14349><P
14350></P
14351><A
14352NAME="AEN3630"
14353></A
14354><P
14355><CODE
14356><CODE
14357CLASS="FUNCDEF"
14358>integer llSameGroup</CODE
14359>(key id);</CODE
14360></P
14361><P
14362></P
14363></DIV
14364><P
14365>Returns <A
14366HREF="#AEN5295"
14367>TRUE</A
14368> if the
14369 object or agent <CODE
14370CLASS="parameter"
14371>id</CODE
14372> is in the same simulator
14373 and has the same active group as this object. Otherwise, returns
14374 <A
14375HREF="#AEN5295"
14376>FALSE</A
14377>.</P
14378></DIV
14379><DIV
14380CLASS="section"
14381><HR><H2
14382CLASS="section"
14383><A
14384NAME="AEN3640"
14385>A.215. llSay</A
14386></H2
14387><DIV
14388CLASS="funcsynopsis"
14389><P
14390></P
14391><A
14392NAME="AEN3642"
14393></A
14394><P
14395><CODE
14396><CODE
14397CLASS="FUNCDEF"
14398>llSay</CODE
14399>(integer channel, string text);</CODE
14400></P
14401><P
14402></P
14403></DIV
14404><P
14405>Say <CODE
14406CLASS="parameter"
14407>text</CODE
14408> on
14409 <CODE
14410CLASS="parameter"
14411>channel</CODE
14412>. Channel 0 is the public chat
14413 channel that all avatars see as chat text. Channels 1 to
14414 2,147,483,648 are private channels that are not sent to avatars
14415 but other scripts can listen for through the <A
14416HREF="#AEN2665"
14417>llListen</A
14418> api.</P
14419></DIV
14420><DIV
14421CLASS="section"
14422><HR><H2
14423CLASS="section"
14424><A
14425NAME="AEN3654"
14426>A.216. llScaleTexture</A
14427></H2
14428><DIV
14429CLASS="funcsynopsis"
14430><P
14431></P
14432><A
14433NAME="AEN3656"
14434></A
14435><P
14436><CODE
14437><CODE
14438CLASS="FUNCDEF"
14439>llScaleTexture</CODE
14440>(integer scale_s, integer scale_t, integer face);</CODE
14441></P
14442><P
14443></P
14444></DIV
14445><P
14446>Sets the texture s and t scales of
14447 <CODE
14448CLASS="parameter"
14449>face</CODE
14450> to <CODE
14451CLASS="parameter"
14452>scale_s</CODE
14453> and
14454 <CODE
14455CLASS="parameter"
14456>scale_t</CODE
14457> respectively. If face is <A
14458HREF="#AEN6073"
14459>ALL_SIDES</A
14460>, scale the texture
14461 to all faces.</P
14462></DIV
14463><DIV
14464CLASS="section"
14465><HR><H2
14466CLASS="section"
14467><A
14468NAME="AEN3671"
14469>A.217. llScriptDanger</A
14470></H2
14471><DIV
14472CLASS="funcsynopsis"
14473><P
14474></P
14475><A
14476NAME="AEN3673"
14477></A
14478><P
14479><CODE
14480><CODE
14481CLASS="FUNCDEF"
14482>integer llScriptDanger</CODE
14483>(vector pos);</CODE
14484></P
14485><P
14486></P
14487></DIV
14488><P
14489>Returns true if pos is over public land, land that doesn't allow everyone to edit and build, or land that doesn't allow outside scripts.</P
14490></DIV
14491><DIV
14492CLASS="section"
14493><HR><H2
14494CLASS="section"
14495><A
14496NAME="AEN3680"
14497>A.218. llSendRemoteData</A
14498></H2
14499><DIV
14500CLASS="funcsynopsis"
14501><P
14502></P
14503><A
14504NAME="AEN3682"
14505></A
14506><P
14507><CODE
14508><CODE
14509CLASS="FUNCDEF"
14510>key llSendRemoteData</CODE
14511>(string dest, integer idata, string sdata);</CODE
14512></P
14513><P
14514></P
14515></DIV
14516><P
14517>Send an XML-RPC request to dest through channel with payload
14518 of channel (in a string), integer idata and string sdata. An
14519 XML-RPC reply will trigger a remote_data event with type =
14520 REMOTE_DATA_REPLY. The call returns a message_id that can be used
14521 to identify XML-RPC replies.</P
14522></DIV
14523><DIV
14524CLASS="section"
14525><HR><H2
14526CLASS="section"
14527><A
14528NAME="AEN3693"
14529>A.219. llSensor</A
14530></H2
14531><DIV
14532CLASS="funcsynopsis"
14533><P
14534></P
14535><A
14536NAME="AEN3695"
14537></A
14538><P
14539><CODE
14540><CODE
14541CLASS="FUNCDEF"
14542>llSensor</CODE
14543>(string name, key id, integer type, float range, float arc);</CODE
14544></P
14545><P
14546></P
14547></DIV
14548><P
14549>Performs a single scan for <CODE
14550CLASS="parameter"
14551>name</CODE
14552> and
14553 <CODE
14554CLASS="parameter"
14555>id</CODE
14556> with <CODE
14557CLASS="parameter"
14558>type</CODE
14559> within
14560 <CODE
14561CLASS="parameter"
14562>range</CODE
14563> meters and <CODE
14564CLASS="parameter"
14565>arc</CODE
14566>
14567 radians of forward vector. Specifying a blank name or <A
14568HREF="#AEN6070"
14569>NULL_KEY</A
14570> id will not filter results for
14571 any particular name or id. A range of 0.0 does not perform a
14572 scan. Range is limited to 96.0. The <CODE
14573CLASS="parameter"
14574>type</CODE
14575> parameter should be an <A
14576HREF="#AEN5338"
14577>object type constant</A
14578> value. If anything is found
14579 during the scan, a <A
14580HREF="#AEN5183"
14581>sensor</A
14582> event is triggered. A maximum
14583 of 16 items are passed to this event. If nothing is found during the scan, a
14584 <A
14585HREF="#AEN5121"
14586>no sensor</A
14587> event is triggered instead.</P
14588></DIV
14589><DIV
14590CLASS="section"
14591><HR><H2
14592CLASS="section"
14593><A
14594NAME="AEN3720"
14595>A.220. llSensorRemove</A
14596></H2
14597><DIV
14598CLASS="funcsynopsis"
14599><P
14600></P
14601><A
14602NAME="AEN3722"
14603></A
14604><P
14605><CODE
14606><CODE
14607CLASS="FUNCDEF"
14608>llSensorRemove</CODE
14609>(void);</CODE
14610></P
14611><P
14612></P
14613></DIV
14614><P
14615>Removes the sensor.</P
14616></DIV
14617><DIV
14618CLASS="section"
14619><HR><H2
14620CLASS="section"
14621><A
14622NAME="AEN3728"
14623>A.221. llSensorRepeat</A
14624></H2
14625><DIV
14626CLASS="funcsynopsis"
14627><P
14628></P
14629><A
14630NAME="AEN3730"
14631></A
14632><P
14633><CODE
14634><CODE
14635CLASS="FUNCDEF"
14636>llSensorRepeat</CODE
14637>(string name, key id, integer type, float range, float arc, float rate);</CODE
14638></P
14639><P
14640></P
14641></DIV
14642><P
14643>Performs a single scan for <CODE
14644CLASS="parameter"
14645>name</CODE
14646> and
14647 <CODE
14648CLASS="parameter"
14649>id</CODE
14650> with <CODE
14651CLASS="parameter"
14652>type</CODE
14653> within
14654 <CODE
14655CLASS="parameter"
14656>range</CODE
14657> meters and <CODE
14658CLASS="parameter"
14659>arc</CODE
14660>
14661 radians of forward vector and repeats every
14662 <CODE
14663CLASS="parameter"
14664>rate</CODE
14665> seconds. Specifying a blank name or
14666 <A
14667HREF="#AEN6070"
14668>NULL_KEY</A
14669> id will not filter
14670 results for any particular name or id. A range of 0.0 cancels the
14671 scan. Range is limited to 96.0. The <CODE
14672CLASS="parameter"
14673>type</CODE
14674> parameter should be an <A
14675HREF="#AEN5338"
14676>object type constant</A
14677>
14678 value. If anything is found during the scan, a <A
14679HREF="#AEN5183"
14680>sensor</A
14681>
14682 event is triggered. A maximum of 16 items are passed to this event. If nothing is found
14683 during the scan, a <A
14684HREF="#AEN5121"
14685>no sensor</A
14686> event is triggered instead.</P
14687></DIV
14688><DIV
14689CLASS="section"
14690><HR><H2
14691CLASS="section"
14692><A
14693NAME="AEN3758"
14694>A.222. llSetAlpha</A
14695></H2
14696><DIV
14697CLASS="funcsynopsis"
14698><P
14699></P
14700><A
14701NAME="AEN3760"
14702></A
14703><P
14704><CODE
14705><CODE
14706CLASS="FUNCDEF"
14707>llSetAlpha</CODE
14708>(float alpha, integer face);</CODE
14709></P
14710><P
14711></P
14712></DIV
14713><P
14714>Sets the alpha value for <CODE
14715CLASS="parameter"
14716>face</CODE
14717>. If
14718 face is <A
14719HREF="#AEN6073"
14720>ALL_SIDES</A
14721>, set
14722 the alpha to all faces. The <CODE
14723CLASS="parameter"
14724>alpha</CODE
14725> value is
14726 interpreted as an opacity percentage - 1.0 is fully opaque, and
14727 0.2 is mostly transparent. This api will clamp
14728 <CODE
14729CLASS="parameter"
14730>alpha</CODE
14731> values less 0.1 to .1 and greater
14732 than 1.0 to 1.</P
14733></DIV
14734><DIV
14735CLASS="section"
14736><HR><H2
14737CLASS="section"
14738><A
14739NAME="AEN3773"
14740>A.223. llSetBuoyancy</A
14741></H2
14742><DIV
14743CLASS="funcsynopsis"
14744><P
14745></P
14746><A
14747NAME="AEN3775"
14748></A
14749><P
14750><CODE
14751><CODE
14752CLASS="FUNCDEF"
14753>llSetBuoyancy</CODE
14754>(float buoyancy);</CODE
14755></P
14756><P
14757></P
14758></DIV
14759><P
14760>Set the object buoyancy. A value of 0 is none, less than 1.0 sinks,
14761 1.0 floats, and greater than 1.0 rises.</P
14762></DIV
14763><DIV
14764CLASS="section"
14765><HR><H2
14766CLASS="section"
14767><A
14768NAME="AEN3782"
14769>A.224. llSetCameraAtOffset</A
14770></H2
14771><DIV
14772CLASS="funcsynopsis"
14773><P
14774></P
14775><A
14776NAME="AEN3784"
14777></A
14778><P
14779><CODE
14780><CODE
14781CLASS="FUNCDEF"
14782>llSetCameraAtOffset</CODE
14783>(vector offset);</CODE
14784></P
14785><P
14786></P
14787></DIV
14788><P
14789>Sets the camera at offset used in this object if an avatar
14790 sits on it.</P
14791></DIV
14792><DIV
14793CLASS="section"
14794><HR><H2
14795CLASS="section"
14796><A
14797NAME="AEN3791"
14798>A.225. llSetClickAction</A
14799></H2
14800><DIV
14801CLASS="funcsynopsis"
14802><P
14803></P
14804><A
14805NAME="AEN3793"
14806></A
14807><P
14808><CODE
14809><CODE
14810CLASS="FUNCDEF"
14811>llSetClickAction</CODE
14812>(integer action);</CODE
14813></P
14814><P
14815></P
14816></DIV
14817><P
14818>Sets which action is invoked when a resident clicks a prim.</P
14819></DIV
14820><DIV
14821CLASS="section"
14822><HR><H2
14823CLASS="section"
14824><A
14825NAME="AEN3800"
14826>A.226. llForceMouselook</A
14827></H2
14828><DIV
14829CLASS="funcsynopsis"
14830><P
14831></P
14832><A
14833NAME="AEN3802"
14834></A
14835><P
14836><CODE
14837><CODE
14838CLASS="FUNCDEF"
14839>llForceMouselook</CODE
14840>(integer mouselook);</CODE
14841></P
14842><P
14843></P
14844></DIV
14845><P
14846>Puts the camera into mouselook mode if an avatar
14847 sits on this object.</P
14848></DIV
14849><DIV
14850CLASS="section"
14851><HR><H2
14852CLASS="section"
14853><A
14854NAME="AEN3809"
14855>A.227. llSetCameraEyeOffset</A
14856></H2
14857><DIV
14858CLASS="funcsynopsis"
14859><P
14860></P
14861><A
14862NAME="AEN3811"
14863></A
14864><P
14865><CODE
14866><CODE
14867CLASS="FUNCDEF"
14868>llSetCameraEyeOffset</CODE
14869>(vector offset);</CODE
14870></P
14871><P
14872></P
14873></DIV
14874><P
14875>Sets the camera eye offset used in this object if an avatar
14876 sits on it.</P
14877></DIV
14878><DIV
14879CLASS="section"
14880><HR><H2
14881CLASS="section"
14882><A
14883NAME="AEN3818"
14884>A.228. llSetColor</A
14885></H2
14886><DIV
14887CLASS="funcsynopsis"
14888><P
14889></P
14890><A
14891NAME="AEN3820"
14892></A
14893><P
14894><CODE
14895><CODE
14896CLASS="FUNCDEF"
14897>llSetColor</CODE
14898>(vector color, integer face);</CODE
14899></P
14900><P
14901></P
14902></DIV
14903><P
14904>Sets the <CODE
14905CLASS="parameter"
14906>color</CODE
14907> of
14908 <CODE
14909CLASS="parameter"
14910>face</CODE
14911>. If face is <A
14912HREF="#AEN6073"
14913>ALL_SIDES</A
14914>, set the alpha to
14915 all faces.</P
14916></DIV
14917><DIV
14918CLASS="section"
14919><HR><H2
14920CLASS="section"
14921><A
14922NAME="AEN3832"
14923>A.229. llSetDamage</A
14924></H2
14925><DIV
14926CLASS="funcsynopsis"
14927><P
14928></P
14929><A
14930NAME="AEN3834"
14931></A
14932><P
14933><CODE
14934><CODE
14935CLASS="FUNCDEF"
14936>llSetDamage</CODE
14937>(float damage);</CODE
14938></P
14939><P
14940></P
14941></DIV
14942><P
14943>Sets the amount of damage that will be done to an object
14944 that this object hits. This object will be destroyed on damaging
14945 another object.</P
14946></DIV
14947><DIV
14948CLASS="section"
14949><HR><H2
14950CLASS="section"
14951><A
14952NAME="AEN3841"
14953>A.230. llSetForce</A
14954></H2
14955><DIV
14956CLASS="funcsynopsis"
14957><P
14958></P
14959><A
14960NAME="AEN3843"
14961></A
14962><P
14963><CODE
14964><CODE
14965CLASS="FUNCDEF"
14966>llSetForce</CODE
14967>(vector force, integer local);</CODE
14968></P
14969><P
14970></P
14971></DIV
14972><P
14973>If the object is physical, this function sets the
14974 <CODE
14975CLASS="parameter"
14976>force</CODE
14977>. The vector is in local coordinates if
14978 local is <A
14979HREF="#AEN5295"
14980>TRUE</A
14981>, global if
14982 <A
14983HREF="#AEN5295"
14984>FALSE</A
14985>.</P
14986></DIV
14987><DIV
14988CLASS="section"
14989><HR><H2
14990CLASS="section"
14991><A
14992NAME="AEN3855"
14993>A.231. llSetForceAndTorque</A
14994></H2
14995><DIV
14996CLASS="funcsynopsis"
14997><P
14998></P
14999><A
15000NAME="AEN3857"
15001></A
15002><P
15003><CODE
15004><CODE
15005CLASS="FUNCDEF"
15006>llSetForceAndTorque</CODE
15007>(vector force, vector torque, integer local);</CODE
15008></P
15009><P
15010></P
15011></DIV
15012><P
15013>If the object is physical, this function sets the
15014 <CODE
15015CLASS="parameter"
15016>force</CODE
15017> and
15018 <CODE
15019CLASS="parameter"
15020>torque</CODE
15021>. The vectors are in local coordinates
15022 if local is <A
15023HREF="#AEN5295"
15024>TRUE</A
15025>, global if
15026 <A
15027HREF="#AEN5295"
15028>FALSE</A
15029>.</P
15030></DIV
15031><DIV
15032CLASS="section"
15033><HR><H2
15034CLASS="section"
15035><A
15036NAME="AEN3872"
15037>A.232. llSetHoverHeight</A
15038></H2
15039><DIV
15040CLASS="funcsynopsis"
15041><P
15042></P
15043><A
15044NAME="AEN3874"
15045></A
15046><P
15047><CODE
15048><CODE
15049CLASS="FUNCDEF"
15050>llSetHoverHeight</CODE
15051>(float height, float water, float tau);</CODE
15052></P
15053><P
15054></P
15055></DIV
15056><P
15057>Critically damps to a height. The height is above ground and
15058 water if <CODE
15059CLASS="parameter"
15060>water</CODE
15061> is <A
15062HREF="#AEN5295"
15063>TRUE</A
15064>.</P
15065></DIV
15066><DIV
15067CLASS="section"
15068><HR><H2
15069CLASS="section"
15070><A
15071NAME="AEN3887"
15072>A.233. llSetLinkAlpha</A
15073></H2
15074><DIV
15075CLASS="funcsynopsis"
15076><P
15077></P
15078><A
15079NAME="AEN3889"
15080></A
15081><P
15082><CODE
15083><CODE
15084CLASS="FUNCDEF"
15085>llSetLinkAlpha</CODE
15086>(integer linknumber, float alpha, integer face);</CODE
15087></P
15088><P
15089></P
15090></DIV
15091><P
15092>Sets the <CODE
15093CLASS="parameter"
15094>alpha</CODE
15095> of a prim in the link set.
15096 The <CODE
15097CLASS="parameter"
15098>linknum</CODE
15099>
15100 parameter is either the linked number available through <A
15101HREF="#AEN1867"
15102>llGetLinkNumber</A
15103> or a <A
15104HREF="#AEN5616"
15105>link constant</A
15106>.
15107 If <CODE
15108CLASS="parameter"
15109>face</CODE
15110> is
15111 <A
15112HREF="#AEN6073"
15113>ALL_SIDES</A
15114>, set the alpha
15115 of all faces.</P
15116></DIV
15117><DIV
15118CLASS="section"
15119><HR><H2
15120CLASS="section"
15121><A
15122NAME="AEN3906"
15123>A.234. llSetLinkColor</A
15124></H2
15125><DIV
15126CLASS="funcsynopsis"
15127><P
15128></P
15129><A
15130NAME="AEN3908"
15131></A
15132><P
15133><CODE
15134><CODE
15135CLASS="FUNCDEF"
15136>llSetLinkColor</CODE
15137>(integer linknumber, vector color, integer face);</CODE
15138></P
15139><P
15140></P
15141></DIV
15142><P
15143>Sets the <CODE
15144CLASS="parameter"
15145>color</CODE
15146> of a prim in the link set.
15147 The <CODE
15148CLASS="parameter"
15149>linknum</CODE
15150>
15151 parameter is either the linked number available through <A
15152HREF="#AEN1867"
15153>llGetLinkNumber</A
15154> or a <A
15155HREF="#AEN5616"
15156>link constant</A
15157>.
15158 If <CODE
15159CLASS="parameter"
15160>face</CODE
15161> is
15162 <A
15163HREF="#AEN6073"
15164>ALL_SIDES</A
15165>, set the color
15166 of all faces.</P
15167></DIV
15168><DIV
15169CLASS="section"
15170><HR><H2
15171CLASS="section"
15172><A
15173NAME="AEN3925"
15174>A.235. llSetLinkPrimitiveParams</A
15175></H2
15176><DIV
15177CLASS="funcsynopsis"
15178><P
15179></P
15180><A
15181NAME="AEN3927"
15182></A
15183><P
15184><CODE
15185><CODE
15186CLASS="FUNCDEF"
15187>llSetLinkPrimitiveParams</CODE
15188>(integer linknumber, list rules);</CODE
15189></P
15190><P
15191></P
15192></DIV
15193><P
15194>Sets the primitive parameters of a prim in the link set.
15195 The <CODE
15196CLASS="parameter"
15197>linknum</CODE
15198>
15199 parameter is either the linked number available through <A
15200HREF="#AEN1867"
15201>llGetLinkNumber</A
15202> or a <A
15203HREF="#AEN5616"
15204>link constant</A
15205>.
15206 The <CODE
15207CLASS="parameter"
15208>rules</CODE
15209>
15210 list is identical to that of
15211 <A
15212HREF="#AEN4020"
15213>llSetPrimitiveParams</A
15214>.</P
15215></DIV
15216><DIV
15217CLASS="section"
15218><HR><H2
15219CLASS="section"
15220><A
15221NAME="AEN3941"
15222>A.236. llSetLinkTexture</A
15223></H2
15224><DIV
15225CLASS="funcsynopsis"
15226><P
15227></P
15228><A
15229NAME="AEN3943"
15230></A
15231><P
15232><CODE
15233><CODE
15234CLASS="FUNCDEF"
15235>llSetLinkTexture</CODE
15236>(integer linknumber, string texture, integer face);</CODE
15237></P
15238><P
15239></P
15240></DIV
15241><P
15242>Sets the <CODE
15243CLASS="parameter"
15244>texture</CODE
15245> of a prim in the link set.
15246 The <CODE
15247CLASS="parameter"
15248>linknum</CODE
15249>
15250 parameter is either the linked number available through <A
15251HREF="#AEN1867"
15252>llGetLinkNumber</A
15253> or a <A
15254HREF="#AEN5616"
15255>link constant</A
15256>.
15257 If <CODE
15258CLASS="parameter"
15259>face</CODE
15260> is
15261 <A
15262HREF="#AEN6073"
15263>ALL_SIDES</A
15264>, set the texture
15265 of all faces.</P
15266></DIV
15267><DIV
15268CLASS="section"
15269><HR><H2
15270CLASS="section"
15271><A
15272NAME="AEN3960"
15273>A.237. llSetLocalRot</A
15274></H2
15275><DIV
15276CLASS="funcsynopsis"
15277><P
15278></P
15279><A
15280NAME="AEN3962"
15281></A
15282><P
15283><CODE
15284><CODE
15285CLASS="FUNCDEF"
15286>llSetLocalRot</CODE
15287>(rotation rot);</CODE
15288></P
15289><P
15290></P
15291></DIV
15292><P
15293>If the object is not physical, this function sets the
15294 rotation of a child prim relative to the root prim, and the
15295 linked set is adjusted.</P
15296></DIV
15297><DIV
15298CLASS="section"
15299><HR><H2
15300CLASS="section"
15301><A
15302NAME="AEN3969"
15303>A.238. llSetObjectDesc</A
15304></H2
15305><DIV
15306CLASS="funcsynopsis"
15307><P
15308></P
15309><A
15310NAME="AEN3971"
15311></A
15312><P
15313><CODE
15314><CODE
15315CLASS="FUNCDEF"
15316>llSetObjectDesc</CODE
15317>(string description);</CODE
15318></P
15319><P
15320></P
15321></DIV
15322><P
15323>Sets the object description to <CODE
15324CLASS="parameter"
15325>description</CODE
15326>.</P
15327></DIV
15328><DIV
15329CLASS="section"
15330><HR><H2
15331CLASS="section"
15332><A
15333NAME="AEN3979"
15334>A.239. llSetObjectName</A
15335></H2
15336><DIV
15337CLASS="funcsynopsis"
15338><P
15339></P
15340><A
15341NAME="AEN3981"
15342></A
15343><P
15344><CODE
15345><CODE
15346CLASS="FUNCDEF"
15347>llSetObjectName</CODE
15348>(string name);</CODE
15349></P
15350><P
15351></P
15352></DIV
15353><P
15354>Sets the object name to <CODE
15355CLASS="parameter"
15356>name</CODE
15357>.</P
15358></DIV
15359><DIV
15360CLASS="section"
15361><HR><H2
15362CLASS="section"
15363><A
15364NAME="AEN3989"
15365>A.240. llSetParcelMusicURL</A
15366></H2
15367><DIV
15368CLASS="funcsynopsis"
15369><P
15370></P
15371><A
15372NAME="AEN3991"
15373></A
15374><P
15375><CODE
15376><CODE
15377CLASS="FUNCDEF"
15378>llSetParcelMusicURL</CODE
15379>(string url);</CODE
15380></P
15381><P
15382></P
15383></DIV
15384><P
15385>Sets the streaming audio URL for the parcel where the object
15386 is currently located. The <CODE
15387CLASS="parameter"
15388>url</CODE
15389> must be an
15390 http streaming source of mp3 or ogg data.</P
15391></DIV
15392><DIV
15393CLASS="section"
15394><HR><H2
15395CLASS="section"
15396><A
15397NAME="AEN3999"
15398>A.241. llSetPayPrice</A
15399></H2
15400><DIV
15401CLASS="funcsynopsis"
15402><P
15403></P
15404><A
15405NAME="AEN4001"
15406></A
15407><P
15408><CODE
15409><CODE
15410CLASS="FUNCDEF"
15411>llSetPayPrice</CODE
15412>(integer default_price, list quick_pay_buttons);</CODE
15413></P
15414><P
15415></P
15416></DIV
15417><P
15418>Sets the default pay price and optionally the quick pay buttons
15419 for the 'Pay' window when someone pays this object.
15420 See also <A
15421HREF="#AEN5434"
15422>Pay Button Constants</A
15423>. </P
15424></DIV
15425><DIV
15426CLASS="section"
15427><HR><H2
15428CLASS="section"
15429><A
15430NAME="AEN4011"
15431>A.242. llSetPos</A
15432></H2
15433><DIV
15434CLASS="funcsynopsis"
15435><P
15436></P
15437><A
15438NAME="AEN4013"
15439></A
15440><P
15441><CODE
15442><CODE
15443CLASS="FUNCDEF"
15444>llSetPos</CODE
15445>(vector pos);</CODE
15446></P
15447><P
15448></P
15449></DIV
15450><P
15451>If the object is not physical, this function sets the
15452 position in region coordinates. If the object is a child, the
15453 position is treated as root relative and the linked set is
15454 adjusted.</P
15455></DIV
15456><DIV
15457CLASS="section"
15458><HR><H2
15459CLASS="section"
15460><A
15461NAME="AEN4020"
15462>A.243. llSetPrimitiveParams</A
15463></H2
15464><DIV
15465CLASS="funcsynopsis"
15466><P
15467></P
15468><A
15469NAME="AEN4022"
15470></A
15471><P
15472><CODE
15473><CODE
15474CLASS="FUNCDEF"
15475>llSetPrimitiveParams</CODE
15476>(list rules);</CODE
15477></P
15478><P
15479></P
15480></DIV
15481><P
15482>Set primitive parameters based on <CODE
15483CLASS="parameter"
15484>rules</CODE
15485>. The
15486 <CODE
15487CLASS="parameter"
15488>rules</CODE
15489> are specified as an ordered list
15490 of parameter and value(s). Valid parameters and their expected values
15491 can be found in the <A
15492HREF="#AEN6323"
15493>Primitive Constants</A
15494>.
15495 Here is a simple example:
15496<DIV
15497CLASS="informalexample"
15498><P
15499></P
15500><A
15501NAME="AEN4032"
15502></A
15503><PRE
15504CLASS="programlisting"
15505>&#13;llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, &#60;0,1,0&#62;,
15506 0.5, &#60;-0.2, 0.2, 0&#62;, &#60;0.5,0.5,0&#62;,&#60;-0.5,0.5,0&#62;]);
15507</PRE
15508><P
15509></P
15510></DIV
15511></P
15512></DIV
15513><DIV
15514CLASS="section"
15515><HR><H2
15516CLASS="section"
15517><A
15518NAME="AEN4034"
15519>A.244. llSetRemoteScriptAccessPin</A
15520></H2
15521><DIV
15522CLASS="funcsynopsis"
15523><P
15524></P
15525><A
15526NAME="AEN4036"
15527></A
15528><P
15529><CODE
15530><CODE
15531CLASS="FUNCDEF"
15532>llSetRemoteScriptAccessPin</CODE
15533>(integer pin);</CODE
15534></P
15535><P
15536></P
15537></DIV
15538><P
15539>If pin is set to a non-zero number, the task will accept remote script
15540 loads via llRemoteLoadScriptPin if it passes in the correct pin.
15541 Otherwise, llRemoteLoadScriptPin is ignored.</P
15542></DIV
15543><DIV
15544CLASS="section"
15545><HR><H2
15546CLASS="section"
15547><A
15548NAME="AEN4043"
15549>A.245. llSetRot</A
15550></H2
15551><DIV
15552CLASS="funcsynopsis"
15553><P
15554></P
15555><A
15556NAME="AEN4045"
15557></A
15558><P
15559><CODE
15560><CODE
15561CLASS="FUNCDEF"
15562>llSetRot</CODE
15563>(rotation rot);</CODE
15564></P
15565><P
15566></P
15567></DIV
15568><P
15569>If the object is not physical, this function sets the
15570 rotation. If the object is a child, the position is treated as
15571 root relative and the linked set is adjusted.</P
15572></DIV
15573><DIV
15574CLASS="section"
15575><HR><H2
15576CLASS="section"
15577><A
15578NAME="AEN4052"
15579>A.246. llSetScale</A
15580></H2
15581><DIV
15582CLASS="funcsynopsis"
15583><P
15584></P
15585><A
15586NAME="AEN4054"
15587></A
15588><P
15589><CODE
15590><CODE
15591CLASS="FUNCDEF"
15592>llSetScale</CODE
15593>(vector scale);</CODE
15594></P
15595><P
15596></P
15597></DIV
15598><P
15599>Sets the object scale.</P
15600></DIV
15601><DIV
15602CLASS="section"
15603><HR><H2
15604CLASS="section"
15605><A
15606NAME="AEN4061"
15607>A.247. llSetScriptState</A
15608></H2
15609><DIV
15610CLASS="funcsynopsis"
15611><P
15612></P
15613><A
15614NAME="AEN4063"
15615></A
15616><P
15617><CODE
15618><CODE
15619CLASS="FUNCDEF"
15620>llSetScriptState</CODE
15621>(string name, integer run);</CODE
15622></P
15623><P
15624></P
15625></DIV
15626><P
15627>Control the state of a script on the object.</P
15628></DIV
15629><DIV
15630CLASS="section"
15631><HR><H2
15632CLASS="section"
15633><A
15634NAME="AEN4072"
15635>A.248. llSetSitText</A
15636></H2
15637><DIV
15638CLASS="funcsynopsis"
15639><P
15640></P
15641><A
15642NAME="AEN4074"
15643></A
15644><P
15645><CODE
15646><CODE
15647CLASS="FUNCDEF"
15648>llSetSitText</CODE
15649>(string text);</CODE
15650></P
15651><P
15652></P
15653></DIV
15654><P
15655>Displays <CODE
15656CLASS="parameter"
15657>text</CODE
15658> rather than 'sit' in
15659 viewer pie menu.</P
15660></DIV
15661><DIV
15662CLASS="section"
15663><HR><H2
15664CLASS="section"
15665><A
15666NAME="AEN4082"
15667>A.249. llSetSoundQueueing</A
15668></H2
15669><DIV
15670CLASS="funcsynopsis"
15671><P
15672></P
15673><A
15674NAME="AEN4084"
15675></A
15676><P
15677><CODE
15678><CODE
15679CLASS="FUNCDEF"
15680>llSetSoundQueueing</CODE
15681>(integer queue);</CODE
15682></P
15683><P
15684></P
15685></DIV
15686><P
15687>Sets whether successive calls to <A
15688HREF="#AEN3184"
15689>llPlaySound</A
15690>, <A
15691HREF="#AEN2773"
15692>llLoopSound</A
15693>, etc., (attached
15694 sounds) interrupt the playing sound. The default for objects is
15695 <A
15696HREF="#AEN5295"
15697>FALSE</A
15698>. Setting this value to
15699 <A
15700HREF="#AEN5295"
15701>TRUE</A
15702> will make the sound wait
15703 until the current playing sound reaches its end. The queue is one
15704 level deep.</P
15705></DIV
15706><DIV
15707CLASS="section"
15708><HR><H2
15709CLASS="section"
15710><A
15711NAME="AEN4095"
15712>A.250. llSetStatus</A
15713></H2
15714><DIV
15715CLASS="funcsynopsis"
15716><P
15717></P
15718><A
15719NAME="AEN4097"
15720></A
15721><P
15722><CODE
15723><CODE
15724CLASS="FUNCDEF"
15725>llSetStatus</CODE
15726>(integer status, integer value);</CODE
15727></P
15728><P
15729></P
15730></DIV
15731><P
15732>Sets the <CODE
15733CLASS="parameter"
15734>status</CODE
15735> to
15736 <CODE
15737CLASS="parameter"
15738>value</CODE
15739>. Use <A
15740HREF="#AEN5304"
15741>status constants</A
15742> for the values of
15743 <CODE
15744CLASS="parameter"
15745>status</CODE
15746>.</P
15747></DIV
15748><DIV
15749CLASS="section"
15750><HR><H2
15751CLASS="section"
15752><A
15753NAME="AEN4110"
15754>A.251. llSetText</A
15755></H2
15756><DIV
15757CLASS="funcsynopsis"
15758><P
15759></P
15760><A
15761NAME="AEN4112"
15762></A
15763><P
15764><CODE
15765><CODE
15766CLASS="FUNCDEF"
15767>llSetText</CODE
15768>(string text, vector color, float alpha);</CODE
15769></P
15770><P
15771></P
15772></DIV
15773><P
15774>Sets text that floats above object to
15775 <CODE
15776CLASS="parameter"
15777>text</CODE
15778>, using the specified
15779 <CODE
15780CLASS="parameter"
15781>color</CODE
15782> and
15783 <CODE
15784CLASS="parameter"
15785>alpha</CODE
15786>.</P
15787></DIV
15788><DIV
15789CLASS="section"
15790><HR><H2
15791CLASS="section"
15792><A
15793NAME="AEN4126"
15794>A.252. llSetTexture</A
15795></H2
15796><DIV
15797CLASS="funcsynopsis"
15798><P
15799></P
15800><A
15801NAME="AEN4128"
15802></A
15803><P
15804><CODE
15805><CODE
15806CLASS="FUNCDEF"
15807>llSetTexture</CODE
15808>(string texture, integer face);</CODE
15809></P
15810><P
15811></P
15812></DIV
15813><P
15814>Sets the <CODE
15815CLASS="parameter"
15816>texture</CODE
15817> from object
15818 inventory of <CODE
15819CLASS="parameter"
15820>face</CODE
15821>. If face is <A
15822HREF="#AEN6073"
15823>ALL_SIDES</A
15824>, set the texture to
15825 all faces.</P
15826></DIV
15827><DIV
15828CLASS="section"
15829><HR><H2
15830CLASS="section"
15831><A
15832NAME="AEN4140"
15833>A.253. llSetTextureAnim</A
15834></H2
15835><DIV
15836CLASS="funcsynopsis"
15837><P
15838></P
15839><A
15840NAME="AEN4142"
15841></A
15842><P
15843><CODE
15844><CODE
15845CLASS="FUNCDEF"
15846>llSetTextureAnim</CODE
15847>(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate);</CODE
15848></P
15849><P
15850></P
15851></DIV
15852><P
15853>Animates a texture by setting the texture scale and
15854 offset. The mode is a mask of <A
15855HREF="#AEN5817"
15856>texture animation
15857 constants</A
15858>. You can only have one texture animation on an
15859 object, calling llSetTextureAnim more than once on an object will
15860 reset it.</P
15861><P
15862>You can only do one traditional animation, <A
15863HREF="#AEN5817"
15864>ROTATE</A
15865> or <A
15866HREF="#AEN5817"
15867>SCALE</A
15868> at a time, you
15869 cannot combine masks. In the case of <A
15870HREF="#AEN5817"
15871>ROTATE</A
15872> or <A
15873HREF="#AEN5817"
15874>SCALE</A
15875>,
15876 <CODE
15877CLASS="parameter"
15878>sizex</CODE
15879> and <CODE
15880CLASS="parameter"
15881>sizey</CODE
15882> are
15883 ignored, and <CODE
15884CLASS="parameter"
15885>start</CODE
15886> and
15887 <CODE
15888CLASS="parameter"
15889>length</CODE
15890> are used as the start and length
15891 values of the animation. For rotation,
15892 <CODE
15893CLASS="parameter"
15894>start</CODE
15895> and <CODE
15896CLASS="parameter"
15897>length</CODE
15898> are
15899 in radians.</P
15900><P
15901>The <CODE
15902CLASS="parameter"
15903>face</CODE
15904> specified which face to
15905 animate. If <CODE
15906CLASS="parameter"
15907>face</CODE
15908> is <A
15909HREF="#AEN6073"
15910>ALL_SIDES</A
15911>, all textures on the
15912 object are animated. </P
15913><P
15914>The <CODE
15915CLASS="parameter"
15916>sizex</CODE
15917> and
15918 <CODE
15919CLASS="parameter"
15920>sizey</CODE
15921> describe the layout of the frames
15922 within the texture. <CODE
15923CLASS="parameter"
15924>sizex</CODE
15925> specifies how
15926 many horizontal frames and <CODE
15927CLASS="parameter"
15928>sizey</CODE
15929> is how
15930 many vertical frames.</P
15931><P
15932><CODE
15933CLASS="parameter"
15934>start</CODE
15935> is the frame number to begin
15936 the animation on. Frames are numbered from left to right, top to
15937 bottom, starting at 0.</P
15938><P
15939><CODE
15940CLASS="parameter"
15941>length</CODE
15942> is the number of frames to
15943 animate. 0 means to animate all frames after the start
15944 frame.</P
15945><P
15946><CODE
15947CLASS="parameter"
15948>rate</CODE
15949> is the frame rate to animate
15950 at. 1.0 means 1 frame per second, 10.0 means 10
15951 frames per second, etc.</P
15952></DIV
15953><DIV
15954CLASS="section"
15955><HR><H2
15956CLASS="section"
15957><A
15958NAME="AEN4188"
15959>A.254. llSetTimerEvent</A
15960></H2
15961><DIV
15962CLASS="funcsynopsis"
15963><P
15964></P
15965><A
15966NAME="AEN4190"
15967></A
15968><P
15969><CODE
15970><CODE
15971CLASS="FUNCDEF"
15972>llSetTimerEvent</CODE
15973>(float sec);</CODE
15974></P
15975><P
15976></P
15977></DIV
15978><P
15979>Sets the <A
15980HREF="#AEN5211"
15981>timer</A
15982> event to
15983 be triggered every <CODE
15984CLASS="parameter"
15985>sec</CODE
15986> seconds. Passing in
15987 0.0 stops further <A
15988HREF="#AEN5211"
15989>timer</A
15990>
15991 events.</P
15992></DIV
15993><DIV
15994CLASS="section"
15995><HR><H2
15996CLASS="section"
15997><A
15998NAME="AEN4200"
15999>A.255. llSetTorque</A
16000></H2
16001><DIV
16002CLASS="funcsynopsis"
16003><P
16004></P
16005><A
16006NAME="AEN4202"
16007></A
16008><P
16009><CODE
16010><CODE
16011CLASS="FUNCDEF"
16012>llSetTorque</CODE
16013>(vector torque, integer local);</CODE
16014></P
16015><P
16016></P
16017></DIV
16018><P
16019>If the object is physical, this function sets the
16020 <CODE
16021CLASS="parameter"
16022>torque</CODE
16023>. The vector is in local coordinates
16024 if local is <A
16025HREF="#AEN5295"
16026>TRUE</A
16027>, global if
16028 <A
16029HREF="#AEN5295"
16030>FALSE</A
16031>.</P
16032></DIV
16033><DIV
16034CLASS="section"
16035><HR><H2
16036CLASS="section"
16037><A
16038NAME="AEN4214"
16039>A.256. llSetTouchText</A
16040></H2
16041><DIV
16042CLASS="funcsynopsis"
16043><P
16044></P
16045><A
16046NAME="AEN4216"
16047></A
16048><P
16049><CODE
16050><CODE
16051CLASS="FUNCDEF"
16052>llSetTouchText</CODE
16053>(string text);</CODE
16054></P
16055><P
16056></P
16057></DIV
16058><P
16059>Displays <CODE
16060CLASS="parameter"
16061>text</CODE
16062> in viewer pie menu that
16063 acts as a touch.</P
16064></DIV
16065><DIV
16066CLASS="section"
16067><HR><H2
16068CLASS="section"
16069><A
16070NAME="AEN4224"
16071>A.257. llSetVehicleFlags</A
16072></H2
16073><DIV
16074CLASS="funcsynopsis"
16075><P
16076></P
16077><A
16078NAME="AEN4226"
16079></A
16080><P
16081><CODE
16082><CODE
16083CLASS="FUNCDEF"
16084>llSetVehicleFlags</CODE
16085>(integer flags);</CODE
16086></P
16087><P
16088></P
16089></DIV
16090><P
16091>Sets the vehicle <CODE
16092CLASS="parameter"
16093>flags</CODE
16094> to TRUE. Valid
16095 parameters can be found in the <A
16096HREF="#AEN6231"
16097>vehicle flags constants</A
16098>
16099 section.</P
16100></DIV
16101><DIV
16102CLASS="section"
16103><HR><H2
16104CLASS="section"
16105><A
16106NAME="AEN4235"
16107>A.258. llSetVehicleFloatParam</A
16108></H2
16109><DIV
16110CLASS="funcsynopsis"
16111><P
16112></P
16113><A
16114NAME="AEN4237"
16115></A
16116><P
16117><CODE
16118><CODE
16119CLASS="FUNCDEF"
16120>llSetVehicleFloatParam</CODE
16121>(integer param_name, float param_value);</CODE
16122></P
16123><P
16124></P
16125></DIV
16126><P
16127>Sets the vehicle floating point parameter
16128 <CODE
16129CLASS="parameter"
16130>param_name</CODE
16131> to
16132 <CODE
16133CLASS="parameter"
16134>param_value</CODE
16135>. Valid parameters and their
16136 expected values can be found in the <A
16137HREF="#AEN6112"
16138>vehicle parameter
16139 constants</A
16140> section.</P
16141></DIV
16142><DIV
16143CLASS="section"
16144><HR><H2
16145CLASS="section"
16146><A
16147NAME="AEN4249"
16148>A.259. llSetVehicleType</A
16149></H2
16150><DIV
16151CLASS="funcsynopsis"
16152><P
16153></P
16154><A
16155NAME="AEN4251"
16156></A
16157><P
16158><CODE
16159><CODE
16160CLASS="FUNCDEF"
16161>llSetVehicleType</CODE
16162>(integer type);</CODE
16163></P
16164><P
16165></P
16166></DIV
16167><P
16168>Activates the vehicle action and choose vehicle
16169 <CODE
16170CLASS="parameter"
16171>type</CODE
16172>. Valid types and an explanation of
16173 their characteristics can be found in the <A
16174HREF="#AEN6288"
16175>vehicle type constants</A
16176>
16177 section.</P
16178></DIV
16179><DIV
16180CLASS="section"
16181><HR><H2
16182CLASS="section"
16183><A
16184NAME="AEN4260"
16185>A.260. llSetVehicleRotationParam</A
16186></H2
16187><DIV
16188CLASS="funcsynopsis"
16189><P
16190></P
16191><A
16192NAME="AEN4262"
16193></A
16194><P
16195><CODE
16196><CODE
16197CLASS="FUNCDEF"
16198>llSetVehicleRotationParam</CODE
16199>(integer param_name, rotation param_value);</CODE
16200></P
16201><P
16202></P
16203></DIV
16204><P
16205>Sets the vehicle rotation parameter
16206 <CODE
16207CLASS="parameter"
16208>param_name</CODE
16209> to
16210 <CODE
16211CLASS="parameter"
16212>param_value</CODE
16213>. Valid parameters can be found
16214 in the <A
16215HREF="#AEN6112"
16216>vehicle parameter
16217 constants</A
16218> section.</P
16219></DIV
16220><DIV
16221CLASS="section"
16222><HR><H2
16223CLASS="section"
16224><A
16225NAME="AEN4274"
16226>A.261. llSetVehicleVectorParam</A
16227></H2
16228><DIV
16229CLASS="funcsynopsis"
16230><P
16231></P
16232><A
16233NAME="AEN4276"
16234></A
16235><P
16236><CODE
16237><CODE
16238CLASS="FUNCDEF"
16239>llSetVehicleVectorParam</CODE
16240>(integer param_name, vector param_value);</CODE
16241></P
16242><P
16243></P
16244></DIV
16245><P
16246>Sets the vehicle vector parameter
16247 <CODE
16248CLASS="parameter"
16249>param_name</CODE
16250> to
16251 <CODE
16252CLASS="parameter"
16253>param_value</CODE
16254>. Valid parameters can be found
16255 in the <A
16256HREF="#AEN6112"
16257>vehicle parameter
16258 constants</A
16259> section.</P
16260></DIV
16261><DIV
16262CLASS="section"
16263><HR><H2
16264CLASS="section"
16265><A
16266NAME="AEN4288"
16267>A.262. llShout</A
16268></H2
16269><DIV
16270CLASS="funcsynopsis"
16271><P
16272></P
16273><A
16274NAME="AEN4290"
16275></A
16276><P
16277><CODE
16278><CODE
16279CLASS="FUNCDEF"
16280>llShout</CODE
16281>(integer channel, string text);</CODE
16282></P
16283><P
16284></P
16285></DIV
16286><P
16287>Shout <CODE
16288CLASS="parameter"
16289>text</CODE
16290> on
16291 <CODE
16292CLASS="parameter"
16293>channel</CODE
16294>. Channel 0 is the public chat
16295 channel that all avatars see as chat text. Channels 1 to
16296 2,147,483,648 are private channels that are not sent to avatars
16297 but other scripts can listen for through the <A
16298HREF="#AEN2665"
16299>llListen</A
16300> api.</P
16301></DIV
16302><DIV
16303CLASS="section"
16304><HR><H2
16305CLASS="section"
16306><A
16307NAME="AEN4302"
16308>A.263. llSin</A
16309></H2
16310><DIV
16311CLASS="funcsynopsis"
16312><P
16313></P
16314><A
16315NAME="AEN4304"
16316></A
16317><P
16318><CODE
16319><CODE
16320CLASS="FUNCDEF"
16321>float llSin</CODE
16322>(float theta);</CODE
16323></P
16324><P
16325></P
16326></DIV
16327><P
16328>Returns the sine of <CODE
16329CLASS="parameter"
16330>theta</CODE
16331> in
16332 radians.</P
16333></DIV
16334><DIV
16335CLASS="section"
16336><HR><H2
16337CLASS="section"
16338><A
16339NAME="AEN4312"
16340>A.264. llSitTarget</A
16341></H2
16342><DIV
16343CLASS="funcsynopsis"
16344><P
16345></P
16346><A
16347NAME="AEN4314"
16348></A
16349><P
16350><CODE
16351><CODE
16352CLASS="FUNCDEF"
16353>llSitTarget</CODE
16354>(vector offset, rotation rot);</CODE
16355></P
16356><P
16357></P
16358></DIV
16359><P
16360>Set the sit location for this object. If
16361 <CODE
16362CLASS="parameter"
16363>offset</CODE
16364> == <A
16365HREF="#AEN6080"
16366>ZERO_VECTOR</A
16367>
16368 clear the sit target.</P
16369></DIV
16370><DIV
16371CLASS="section"
16372><HR><H2
16373CLASS="section"
16374><A
16375NAME="AEN4325"
16376>A.265. llSleep</A
16377></H2
16378><DIV
16379CLASS="funcsynopsis"
16380><P
16381></P
16382><A
16383NAME="AEN4327"
16384></A
16385><P
16386><CODE
16387><CODE
16388CLASS="FUNCDEF"
16389>llSleep</CODE
16390>(float sec);</CODE
16391></P
16392><P
16393></P
16394></DIV
16395><P
16396>Puts the script to sleep for <CODE
16397CLASS="parameter"
16398>sec</CODE
16399>
16400 seconds.</P
16401></DIV
16402><DIV
16403CLASS="section"
16404><HR><H2
16405CLASS="section"
16406><A
16407NAME="AEN4335"
16408>A.266. llSqrt</A
16409></H2
16410><DIV
16411CLASS="funcsynopsis"
16412><P
16413></P
16414><A
16415NAME="AEN4337"
16416></A
16417><P
16418><CODE
16419><CODE
16420CLASS="FUNCDEF"
16421>float llSqrt</CODE
16422>(float val);</CODE
16423></P
16424><P
16425></P
16426></DIV
16427><P
16428>Returns the square root of <CODE
16429CLASS="parameter"
16430>val</CODE
16431>. If
16432 <CODE
16433CLASS="parameter"
16434>val</CODE
16435> is less than 0.0, this function returns
16436 0.0 and raises a math runtime error.</P
16437></DIV
16438><DIV
16439CLASS="section"
16440><HR><H2
16441CLASS="section"
16442><A
16443NAME="AEN4346"
16444>A.267. llStartAnimation</A
16445></H2
16446><DIV
16447CLASS="funcsynopsis"
16448><P
16449></P
16450><A
16451NAME="AEN4348"
16452></A
16453><P
16454><CODE
16455><CODE
16456CLASS="FUNCDEF"
16457>llStartAnimation</CODE
16458>(string anim);</CODE
16459></P
16460><P
16461></P
16462></DIV
16463><P
16464>This function starts animation <CODE
16465CLASS="parameter"
16466>anim</CODE
16467>
16468 for the avatar that owns the object.</P
16469><P
16470></P
16471><DIV
16472CLASS="variablelist"
16473><P
16474><B
16475>Valid strings for <CODE
16476CLASS="parameter"
16477>anim</CODE
16478></B
16479></P
16480><DL
16481><DT
16482>hold_R_bazooka, hold_R_handgun, hold_R_rifle</DT
16483><DD
16484><P
16485>Holds the appropriately shaped weapon in the
16486 right hand. Automatically switches to the aims (below) when
16487 user enters mouse look</P
16488></DD
16489><DT
16490>aim_R_bazooka, aim_R_handgun, aim_R_rifle</DT
16491><DD
16492><P
16493>Aims the appropriately shaped weapon along the
16494 direction the avatar is looking.</P
16495></DD
16496><DT
16497>away</DT
16498><DD
16499><P
16500>Flops over in "away from keyboard"
16501 state.</P
16502></DD
16503><DT
16504>backflip</DT
16505><DD
16506><P
16507>Performs a backflip.</P
16508></DD
16509><DT
16510>bow</DT
16511><DD
16512><P
16513>Bows at waist.</P
16514></DD
16515><DT
16516>brush</DT
16517><DD
16518><P
16519>Brushes dirt from shirt.</P
16520></DD
16521><DT
16522>clap</DT
16523><DD
16524><P
16525>Applauds.</P
16526></DD
16527><DT
16528>courtbow</DT
16529><DD
16530><P
16531>Bows with a courtly flourish.</P
16532></DD
16533><DT
16534>crouch</DT
16535><DD
16536><P
16537>Crouches in place.</P
16538></DD
16539><DT
16540>crouchwalk</DT
16541><DD
16542><P
16543>Walks in place while crouching.</P
16544></DD
16545><DT
16546>dance1, dance2, dance3, dance4, dance5, dance6, dance7, dance8</DT
16547><DD
16548><P
16549>Various dance maneuvers.</P
16550></DD
16551><DT
16552>falldown</DT
16553><DD
16554><P
16555>Freefall falling animation.</P
16556></DD
16557><DT
16558>female_walk</DT
16559><DD
16560><P
16561>Walks with hip sway.</P
16562></DD
16563><DT
16564>fly</DT
16565><DD
16566><P
16567>Flies forward.</P
16568></DD
16569><DT
16570>flyslow</DT
16571><DD
16572><P
16573>Flies forward at a less aggressive
16574 angle.</P
16575></DD
16576><DT
16577>hello</DT
16578><DD
16579><P
16580>Waves.</P
16581></DD
16582><DT
16583>hold_throw_R</DT
16584><DD
16585><P
16586>Hold object in right hand, prepared to throw
16587 it.</P
16588></DD
16589><DT
16590>hover</DT
16591><DD
16592><P
16593>Hovers in place.</P
16594></DD
16595><DT
16596>hover_down</DT
16597><DD
16598><P
16599>Pretends to hover straight
16600 down.</P
16601></DD
16602><DT
16603>hover_up</DT
16604><DD
16605><P
16606>Pretends to hover straight
16607 up.</P
16608></DD
16609><DT
16610>jump</DT
16611><DD
16612><P
16613>Midair jump position.</P
16614></DD
16615><DT
16616>kick_roundhouse_R</DT
16617><DD
16618><P
16619>Roundhouse kick with right
16620 leg.</P
16621></DD
16622><DT
16623>land</DT
16624><DD
16625><P
16626>Lands after flying.</P
16627></DD
16628><DT
16629>prejump</DT
16630><DD
16631><P
16632>Prepares to jump.</P
16633></DD
16634><DT
16635>punch_L</DT
16636><DD
16637><P
16638>Punch with left hand.</P
16639></DD
16640><DT
16641>punch_R</DT
16642><DD
16643><P
16644>Punch with right hand.</P
16645></DD
16646><DT
16647>punch_onetwo</DT
16648><DD
16649><P
16650>Punch with one hand then the
16651 other.</P
16652></DD
16653><DT
16654>run</DT
16655><DD
16656><P
16657>Runs in place.</P
16658></DD
16659><DT
16660>salute</DT
16661><DD
16662><P
16663>Salutes with right hand.</P
16664></DD
16665><DT
16666>sit</DT
16667><DD
16668><P
16669>Sits on object at knee
16670 height.</P
16671></DD
16672><DT
16673>sit_ground</DT
16674><DD
16675><P
16676>Sits down on ground.</P
16677></DD
16678><DT
16679>slowwalk</DT
16680><DD
16681><P
16682>Walks in place slowly.</P
16683></DD
16684><DT
16685>smoke_idle</DT
16686><DD
16687><P
16688>Leans on imaginary prop while holding
16689 cigarette.</P
16690></DD
16691><DT
16692>smoke_inhale</DT
16693><DD
16694><P
16695>Leans on imaginary prop and smokes a
16696 cigarette.</P
16697></DD
16698><DT
16699>smoke_throw_down</DT
16700><DD
16701><P
16702>Leans on imaginary prop, throws down a
16703 cigarette, and stamps it out.</P
16704></DD
16705><DT
16706>snapshot</DT
16707><DD
16708><P
16709>Pantomimes taking a picture.</P
16710></DD
16711><DT
16712>soft_land</DT
16713><DD
16714><P
16715>Stumbles a bit as if
16716 landing.</P
16717></DD
16718><DT
16719>stand</DT
16720><DD
16721><P
16722>Stands in place.</P
16723></DD
16724><DT
16725>standup</DT
16726><DD
16727><P
16728>Falls on face and stands up.</P
16729></DD
16730><DT
16731>stride</DT
16732><DD
16733><P
16734>Legs extended as if stepping off of a
16735 ledge.</P
16736></DD
16737><DT
16738>sword_strike_R</DT
16739><DD
16740><P
16741>Strike with sword in right
16742 hand.</P
16743></DD
16744><DT
16745>talk</DT
16746><DD
16747><P
16748>Head moves as if talking.</P
16749></DD
16750><DT
16751>throw_R</DT
16752><DD
16753><P
16754>Throws object in right hand.</P
16755></DD
16756><DT
16757>tryon_shirt</DT
16758><DD
16759><P
16760>Turns around and models a new
16761 shirt.</P
16762></DD
16763><DT
16764>turnleft</DT
16765><DD
16766><P
16767>Pretends to turn left.</P
16768></DD
16769><DT
16770>turnright</DT
16771><DD
16772><P
16773>Pretends to turn right.</P
16774></DD
16775><DT
16776>type</DT
16777><DD
16778><P
16779>Makes typing motion.</P
16780></DD
16781><DT
16782>uphillwalk</DT
16783><DD
16784><P
16785>Walks uphill in place.</P
16786></DD
16787><DT
16788>walk</DT
16789><DD
16790><P
16791>Walks in place.</P
16792></DD
16793><DT
16794>whisper</DT
16795><DD
16796><P
16797>Whispers behind hand.</P
16798></DD
16799><DT
16800>whistle</DT
16801><DD
16802><P
16803>Whistles with hands in
16804 mouth.</P
16805></DD
16806><DT
16807>yell</DT
16808><DD
16809><P
16810>Shouts between cupped hands.</P
16811></DD
16812></DL
16813></DIV
16814></DIV
16815><DIV
16816CLASS="section"
16817><HR><H2
16818CLASS="section"
16819><A
16820NAME="AEN4578"
16821>A.268. llStopAnimation</A
16822></H2
16823><DIV
16824CLASS="funcsynopsis"
16825><P
16826></P
16827><A
16828NAME="AEN4580"
16829></A
16830><P
16831><CODE
16832><CODE
16833CLASS="FUNCDEF"
16834>llStopAnimation</CODE
16835>(string anim);</CODE
16836></P
16837><P
16838></P
16839></DIV
16840><P
16841>Stop animation <CODE
16842CLASS="parameter"
16843>anim</CODE
16844> for avatar that
16845 owns object.</P
16846></DIV
16847><DIV
16848CLASS="section"
16849><HR><H2
16850CLASS="section"
16851><A
16852NAME="AEN4588"
16853>A.269. llStopHover</A
16854></H2
16855><DIV
16856CLASS="funcsynopsis"
16857><P
16858></P
16859><A
16860NAME="AEN4590"
16861></A
16862><P
16863><CODE
16864><CODE
16865CLASS="FUNCDEF"
16866>llStopHover</CODE
16867>(void);</CODE
16868></P
16869><P
16870></P
16871></DIV
16872><P
16873>Stop hover to a height.</P
16874></DIV
16875><DIV
16876CLASS="section"
16877><HR><H2
16878CLASS="section"
16879><A
16880NAME="AEN4596"
16881>A.270. llStopLookAt</A
16882></H2
16883><DIV
16884CLASS="funcsynopsis"
16885><P
16886></P
16887><A
16888NAME="AEN4598"
16889></A
16890><P
16891><CODE
16892><CODE
16893CLASS="FUNCDEF"
16894>llStopLookAt</CODE
16895>(void);</CODE
16896></P
16897><P
16898></P
16899></DIV
16900><P
16901>Stop causing object to look at target.</P
16902></DIV
16903><DIV
16904CLASS="section"
16905><HR><H2
16906CLASS="section"
16907><A
16908NAME="AEN4604"
16909>A.271. llStopMoveToTarget</A
16910></H2
16911><DIV
16912CLASS="funcsynopsis"
16913><P
16914></P
16915><A
16916NAME="AEN4606"
16917></A
16918><P
16919><CODE
16920><CODE
16921CLASS="FUNCDEF"
16922>llStopMoveToTarget</CODE
16923>(void);</CODE
16924></P
16925><P
16926></P
16927></DIV
16928><P
16929>Stops critically damped motion.</P
16930></DIV
16931><DIV
16932CLASS="section"
16933><HR><H2
16934CLASS="section"
16935><A
16936NAME="AEN4612"
16937>A.272. llStopPointAt</A
16938></H2
16939><DIV
16940CLASS="funcsynopsis"
16941><P
16942></P
16943><A
16944NAME="AEN4614"
16945></A
16946><P
16947><CODE
16948><CODE
16949CLASS="FUNCDEF"
16950>llStopPointAt</CODE
16951>(void);</CODE
16952></P
16953><P
16954></P
16955></DIV
16956><P
16957>Stop avatar that owns object pointing.</P
16958></DIV
16959><DIV
16960CLASS="section"
16961><HR><H2
16962CLASS="section"
16963><A
16964NAME="AEN4620"
16965>A.273. llStopSound</A
16966></H2
16967><DIV
16968CLASS="funcsynopsis"
16969><P
16970></P
16971><A
16972NAME="AEN4622"
16973></A
16974><P
16975><CODE
16976><CODE
16977CLASS="FUNCDEF"
16978>llStopSound</CODE
16979>(void);</CODE
16980></P
16981><P
16982></P
16983></DIV
16984><P
16985>Stops a currently playing attached sound started with <A
16986HREF="#AEN3184"
16987>llPlaySound</A
16988> or <A
16989HREF="#AEN2773"
16990>llLoopSound</A
16991>. Has no effect on
16992 sounds started with <A
16993HREF="#AEN4756"
16994>llTriggerSound</A
16995>.</P
16996></DIV
16997><DIV
16998CLASS="section"
16999><HR><H2
17000CLASS="section"
17001><A
17002NAME="AEN4631"
17003>A.274. llStringLength</A
17004></H2
17005><DIV
17006CLASS="funcsynopsis"
17007><P
17008></P
17009><A
17010NAME="AEN4633"
17011></A
17012><P
17013><CODE
17014><CODE
17015CLASS="FUNCDEF"
17016>integer llStringLength</CODE
17017>(string src);</CODE
17018></P
17019><P
17020></P
17021></DIV
17022><P
17023>Returns the number of characters in
17024 <CODE
17025CLASS="parameter"
17026>src</CODE
17027>.</P
17028></DIV
17029><DIV
17030CLASS="section"
17031><HR><H2
17032CLASS="section"
17033><A
17034NAME="AEN4641"
17035>A.275. llSubStringIndex</A
17036></H2
17037><DIV
17038CLASS="funcsynopsis"
17039><P
17040></P
17041><A
17042NAME="AEN4643"
17043></A
17044><P
17045><CODE
17046><CODE
17047CLASS="FUNCDEF"
17048>integer llSubStringIndex</CODE
17049>(string source, string pattern);</CODE
17050></P
17051><P
17052></P
17053></DIV
17054><P
17055>Finds index in source where pattern first appears. Returns
17056 -1 if no match is found.</P
17057></DIV
17058><DIV
17059CLASS="section"
17060><HR><H2
17061CLASS="section"
17062><A
17063NAME="AEN4652"
17064>A.276. llStringToBase64</A
17065></H2
17066><DIV
17067CLASS="funcsynopsis"
17068><P
17069></P
17070><A
17071NAME="AEN4654"
17072></A
17073><P
17074><CODE
17075><CODE
17076CLASS="FUNCDEF"
17077>string llStringToBase64</CODE
17078>(string str);</CODE
17079></P
17080><P
17081></P
17082></DIV
17083><P
17084>Converts a string to the Base 64 representation of the string.</P
17085></DIV
17086><DIV
17087CLASS="section"
17088><HR><H2
17089CLASS="section"
17090><A
17091NAME="AEN4661"
17092>A.277. llTakeControls</A
17093></H2
17094><DIV
17095CLASS="funcsynopsis"
17096><P
17097></P
17098><A
17099NAME="AEN4663"
17100></A
17101><P
17102><CODE
17103><CODE
17104CLASS="FUNCDEF"
17105>llTakeControls</CODE
17106>(integer controls, integer accept, integer pass_on);</CODE
17107></P
17108><P
17109></P
17110></DIV
17111><P
17112>If (<CODE
17113CLASS="parameter"
17114>accept</CODE
17115> ==
17116 (<CODE
17117CLASS="parameter"
17118>controls</CODE
17119> &#38; input)), send input to
17120 object. If the boolean <CODE
17121CLASS="parameter"
17122>pass_on</CODE
17123> is <A
17124HREF="#AEN5295"
17125>TRUE</A
17126>, also send input to
17127 avatar.</P
17128></DIV
17129><DIV
17130CLASS="section"
17131><HR><H2
17132CLASS="section"
17133><A
17134NAME="AEN4678"
17135>A.278. llTan</A
17136></H2
17137><DIV
17138CLASS="funcsynopsis"
17139><P
17140></P
17141><A
17142NAME="AEN4680"
17143></A
17144><P
17145><CODE
17146><CODE
17147CLASS="FUNCDEF"
17148>float llTan</CODE
17149>(float theta);</CODE
17150></P
17151><P
17152></P
17153></DIV
17154><P
17155>Returns the tangent of <CODE
17156CLASS="parameter"
17157>theta</CODE
17158>
17159 radians.</P
17160></DIV
17161><DIV
17162CLASS="section"
17163><HR><H2
17164CLASS="section"
17165><A
17166NAME="AEN4688"
17167>A.279. llTarget</A
17168></H2
17169><DIV
17170CLASS="funcsynopsis"
17171><P
17172></P
17173><A
17174NAME="AEN4690"
17175></A
17176><P
17177><CODE
17178><CODE
17179CLASS="FUNCDEF"
17180>integer llTarget</CODE
17181>(vector position, float range);</CODE
17182></P
17183><P
17184></P
17185></DIV
17186><P
17187>Set object position within <CODE
17188CLASS="parameter"
17189>range</CODE
17190> of
17191 <CODE
17192CLASS="parameter"
17193>position</CODE
17194> as a target and returns an integer
17195 ID for the target.</P
17196></DIV
17197><DIV
17198CLASS="section"
17199><HR><H2
17200CLASS="section"
17201><A
17202NAME="AEN4701"
17203>A.280. llTargetOmega</A
17204></H2
17205><DIV
17206CLASS="funcsynopsis"
17207><P
17208></P
17209><A
17210NAME="AEN4703"
17211></A
17212><P
17213><CODE
17214><CODE
17215CLASS="FUNCDEF"
17216>llTargetOmega</CODE
17217>(vector axis, float spinrate, float gain);</CODE
17218></P
17219><P
17220></P
17221></DIV
17222><P
17223>Attempt to spin at <CODE
17224CLASS="parameter"
17225>spinrate</CODE
17226> with
17227 strength <CODE
17228CLASS="parameter"
17229>gain</CODE
17230> on
17231 <CODE
17232CLASS="parameter"
17233>axis</CODE
17234>. A <CODE
17235CLASS="parameter"
17236>spinrate</CODE
17237> of
17238 0.0 cancels the spin. This function works in object local
17239 coordinates for child objects and works in world coordinates for
17240 root objects.</P
17241></DIV
17242><DIV
17243CLASS="section"
17244><HR><H2
17245CLASS="section"
17246><A
17247NAME="AEN4718"
17248>A.281. llTargetRemove</A
17249></H2
17250><DIV
17251CLASS="funcsynopsis"
17252><P
17253></P
17254><A
17255NAME="AEN4720"
17256></A
17257><P
17258><CODE
17259><CODE
17260CLASS="FUNCDEF"
17261>llTargetRemove</CODE
17262>(integer tnumber);</CODE
17263></P
17264><P
17265></P
17266></DIV
17267><P
17268>Remove target number <CODE
17269CLASS="parameter"
17270>tnumber</CODE
17271>.</P
17272></DIV
17273><DIV
17274CLASS="section"
17275><HR><H2
17276CLASS="section"
17277><A
17278NAME="AEN4728"
17279>A.282. llTeleportAgentHome</A
17280></H2
17281><DIV
17282CLASS="funcsynopsis"
17283><P
17284></P
17285><A
17286NAME="AEN4730"
17287></A
17288><P
17289><CODE
17290><CODE
17291CLASS="FUNCDEF"
17292>llTeleportAgentHome</CODE
17293>(key id);</CODE
17294></P
17295><P
17296></P
17297></DIV
17298><P
17299>Teleport agent on the owner's land to agent's home
17300 location.</P
17301></DIV
17302><DIV
17303CLASS="section"
17304><HR><H2
17305CLASS="section"
17306><A
17307NAME="AEN4737"
17308>A.283. llToLower</A
17309></H2
17310><DIV
17311CLASS="funcsynopsis"
17312><P
17313></P
17314><A
17315NAME="AEN4739"
17316></A
17317><P
17318><CODE
17319><CODE
17320CLASS="FUNCDEF"
17321>llToLower</CODE
17322>();</CODE
17323></P
17324><P
17325></P
17326></DIV
17327><P
17328></P
17329></DIV
17330><DIV
17331CLASS="section"
17332><HR><H2
17333CLASS="section"
17334><A
17335NAME="AEN4746"
17336>A.284. llToUpper</A
17337></H2
17338><DIV
17339CLASS="funcsynopsis"
17340><P
17341></P
17342><A
17343NAME="AEN4748"
17344></A
17345><P
17346><CODE
17347><CODE
17348CLASS="FUNCDEF"
17349>string llToUpper</CODE
17350>(string src);</CODE
17351></P
17352><P
17353></P
17354></DIV
17355><P
17356>Returns <CODE
17357CLASS="parameter"
17358>src</CODE
17359> in all lower case.</P
17360></DIV
17361><DIV
17362CLASS="section"
17363><HR><H2
17364CLASS="section"
17365><A
17366NAME="AEN4756"
17367>A.285. llTriggerSound</A
17368></H2
17369><DIV
17370CLASS="funcsynopsis"
17371><P
17372></P
17373><A
17374NAME="AEN4758"
17375></A
17376><P
17377><CODE
17378><CODE
17379CLASS="FUNCDEF"
17380>llTriggerSound</CODE
17381>(string sound, float volume);</CODE
17382></P
17383><P
17384></P
17385></DIV
17386><P
17387>Plays a transient sound NOT attached to an object. The sound
17388 plays from a stationary position located at the center of the
17389 object at the time of the trigger. There is no limit to the number
17390 of triggered sounds which can be generated by an object, and
17391 calling <A
17392HREF="#AEN4756"
17393>llTriggerSound</A
17394>
17395 does not affect the attached sounds created by <A
17396HREF="#AEN3184"
17397>llPlaySound</A
17398> and <A
17399HREF="#AEN2773"
17400>llLoopSound</A
17401>. This is very useful
17402 for things like collision noises, explosions, etc. There is no
17403 way to stop or alter the volume of a sound triggered by
17404 this function.</P
17405></DIV
17406><DIV
17407CLASS="section"
17408><HR><H2
17409CLASS="section"
17410><A
17411NAME="AEN4770"
17412>A.286. llTriggerSoundLimited</A
17413></H2
17414><DIV
17415CLASS="funcsynopsis"
17416><P
17417></P
17418><A
17419NAME="AEN4772"
17420></A
17421><P
17422><CODE
17423><CODE
17424CLASS="FUNCDEF"
17425>llTriggerSoundLimited</CODE
17426>(string sound, float volume, vector tne, vector bsw);</CODE
17427></P
17428><P
17429></P
17430></DIV
17431><P
17432>Plays a transient sound NOT attached to an object with its
17433 audible range limited by the axis aligned bounding box define by
17434 <CODE
17435CLASS="parameter"
17436>tne</CODE
17437> (top-north-eash) and
17438 <CODE
17439CLASS="parameter"
17440>bsw</CODE
17441> (bottom-south-west). The sound plays
17442 from a stationary position located at the center of the object at
17443 the time of the trigger. There is no limit to the number of
17444 triggered sounds which can be generated by an object, and calling
17445 <A
17446HREF="#AEN4756"
17447>llTriggerSound</A
17448> does not
17449 affect the attached sounds created by <A
17450HREF="#AEN3184"
17451>llPlaySound</A
17452> and <A
17453HREF="#AEN2773"
17454>llLoopSound</A
17455>. This is very useful
17456 for things like collision noises, explosions, etc. There is no way
17457 to stop or alter the volume of a sound triggered by this
17458 function.</P
17459></DIV
17460><DIV
17461CLASS="section"
17462><HR><H2
17463CLASS="section"
17464><A
17465NAME="AEN4790"
17466>A.287. llUnescapeURL</A
17467></H2
17468><DIV
17469CLASS="funcsynopsis"
17470><P
17471></P
17472><A
17473NAME="AEN4792"
17474></A
17475><P
17476><CODE
17477><CODE
17478CLASS="FUNCDEF"
17479>string llUnescapeURL</CODE
17480>(string url);</CODE
17481></P
17482><P
17483></P
17484></DIV
17485><P
17486>Returns the string that is the URL unescaped version of <CODE
17487CLASS="parameter"
17488>url</CODE
17489>,
17490 replacing %20 with spaces etc.</P
17491></DIV
17492><DIV
17493CLASS="section"
17494><HR><H2
17495CLASS="section"
17496><A
17497NAME="AEN4800"
17498>A.288. llUnSit</A
17499></H2
17500><DIV
17501CLASS="funcsynopsis"
17502><P
17503></P
17504><A
17505NAME="AEN4802"
17506></A
17507><P
17508><CODE
17509><CODE
17510CLASS="FUNCDEF"
17511>llUnSit</CODE
17512>(key id);</CODE
17513></P
17514><P
17515></P
17516></DIV
17517><P
17518>If agent identified by <CODE
17519CLASS="parameter"
17520>id</CODE
17521> is sitting
17522 on the object the script is attached to or is over land owned by
17523 the objects owner, the agent is forced to stand up.</P
17524></DIV
17525><DIV
17526CLASS="section"
17527><HR><H2
17528CLASS="section"
17529><A
17530NAME="AEN4810"
17531>A.289. llVecDist</A
17532></H2
17533><DIV
17534CLASS="funcsynopsis"
17535><P
17536></P
17537><A
17538NAME="AEN4812"
17539></A
17540><P
17541><CODE
17542><CODE
17543CLASS="FUNCDEF"
17544>float llVecDist</CODE
17545>(vector a, vector b);</CODE
17546></P
17547><P
17548></P
17549></DIV
17550><P
17551>Returns the distance from <CODE
17552CLASS="parameter"
17553>a</CODE
17554> to
17555 <CODE
17556CLASS="parameter"
17557>b</CODE
17558></P
17559></DIV
17560><DIV
17561CLASS="section"
17562><HR><H2
17563CLASS="section"
17564><A
17565NAME="AEN4823"
17566>A.290. llVecMag</A
17567></H2
17568><DIV
17569CLASS="funcsynopsis"
17570><P
17571></P
17572><A
17573NAME="AEN4825"
17574></A
17575><P
17576><CODE
17577><CODE
17578CLASS="FUNCDEF"
17579>float llVecMag</CODE
17580>(vector vec);</CODE
17581></P
17582><P
17583></P
17584></DIV
17585><P
17586>Returns the magnitude of <CODE
17587CLASS="parameter"
17588>vec</CODE
17589>.</P
17590></DIV
17591><DIV
17592CLASS="section"
17593><HR><H2
17594CLASS="section"
17595><A
17596NAME="AEN4833"
17597>A.291. llVecNorm</A
17598></H2
17599><DIV
17600CLASS="funcsynopsis"
17601><P
17602></P
17603><A
17604NAME="AEN4835"
17605></A
17606><P
17607><CODE
17608><CODE
17609CLASS="FUNCDEF"
17610>vector llVecNorm</CODE
17611>(vector vec);</CODE
17612></P
17613><P
17614></P
17615></DIV
17616><P
17617>Returns normalized <CODE
17618CLASS="parameter"
17619>vec</CODE
17620>.</P
17621></DIV
17622><DIV
17623CLASS="section"
17624><HR><H2
17625CLASS="section"
17626><A
17627NAME="AEN4843"
17628>A.292. llVolumeDetect</A
17629></H2
17630><DIV
17631CLASS="funcsynopsis"
17632><P
17633></P
17634><A
17635NAME="AEN4845"
17636></A
17637><P
17638><CODE
17639><CODE
17640CLASS="FUNCDEF"
17641>llVolumeDetect</CODE
17642>(integer detect);</CODE
17643></P
17644><P
17645></P
17646></DIV
17647><P
17648>When detect = TRUE, this makes the entire link set the script is attached to phantom but if another object interpenetrates it, it will get a collision_start event. When an object stops interpenetrating, a collision_end event is generated. While the other is interpenetrating, collision events are NOT generated. The script must be applied to the root object of the link set to get the collision events. Collision filters work normally.</P
17649></DIV
17650><DIV
17651CLASS="section"
17652><HR><H2
17653CLASS="section"
17654><A
17655NAME="AEN4852"
17656>A.293. llWater</A
17657></H2
17658><DIV
17659CLASS="funcsynopsis"
17660><P
17661></P
17662><A
17663NAME="AEN4854"
17664></A
17665><P
17666><CODE
17667><CODE
17668CLASS="FUNCDEF"
17669>float llWater</CODE
17670>(vector offset);</CODE
17671></P
17672><P
17673></P
17674></DIV
17675><P
17676>Returns the water height at the object position +
17677 <CODE
17678CLASS="parameter"
17679>offset</CODE
17680>.</P
17681></DIV
17682><DIV
17683CLASS="section"
17684><HR><H2
17685CLASS="section"
17686><A
17687NAME="AEN4862"
17688>A.294. llWhisper</A
17689></H2
17690><DIV
17691CLASS="funcsynopsis"
17692><P
17693></P
17694><A
17695NAME="AEN4864"
17696></A
17697><P
17698><CODE
17699><CODE
17700CLASS="FUNCDEF"
17701>llWhisper</CODE
17702>(integer channel, string text);</CODE
17703></P
17704><P
17705></P
17706></DIV
17707><P
17708>Whisper <CODE
17709CLASS="parameter"
17710>text</CODE
17711> on
17712 <CODE
17713CLASS="parameter"
17714>channel</CODE
17715>. Channel 0 is the public chat
17716 channel that all avatars see as chat text. Channels 1 to
17717 2,147,483,648 are private channels that are not sent to avatars
17718 but other scripts can listen for through the <A
17719HREF="#AEN2665"
17720>llListen</A
17721> api.</P
17722></DIV
17723><DIV
17724CLASS="section"
17725><HR><H2
17726CLASS="section"
17727><A
17728NAME="AEN4876"
17729>A.295. llWind</A
17730></H2
17731><DIV
17732CLASS="funcsynopsis"
17733><P
17734></P
17735><A
17736NAME="AEN4878"
17737></A
17738><P
17739><CODE
17740><CODE
17741CLASS="FUNCDEF"
17742>vector llWind</CODE
17743>(vector offset);</CODE
17744></P
17745><P
17746></P
17747></DIV
17748><P
17749>Returns the wind velocity below the object position +
17750 <CODE
17751CLASS="parameter"
17752>offset</CODE
17753>.</P
17754></DIV
17755><DIV
17756CLASS="section"
17757><HR><H2
17758CLASS="section"
17759><A
17760NAME="AEN4886"
17761>A.296. llXorBase64Strings</A
17762></H2
17763><DIV
17764CLASS="funcsynopsis"
17765><P
17766></P
17767><A
17768NAME="AEN4888"
17769></A
17770><P
17771><CODE
17772><CODE
17773CLASS="FUNCDEF"
17774>string llXorBase64Strings</CODE
17775>(string s1, string s2);</CODE
17776></P
17777><P
17778></P
17779></DIV
17780><P
17781>Performs an exclusive or on two Base 64 strings and returns
17782 a Base 64 string. The <CODE
17783CLASS="parameter"
17784>s2</CODE
17785> parameter repeats if
17786 it is shorter than <CODE
17787CLASS="parameter"
17788>s1</CODE
17789>.</P
17790></DIV
17791></DIV
17792><DIV
17793CLASS="appendix"
17794><HR><H1
17795><A
17796NAME="AEN4899"
17797></A
17798>Appendix B. Events</H1
17799><P
17800>Every state must have at least one handler. You can choose to
17801 handle an event by defining one of the reserved event
17802 handlers named here.</P
17803><DIV
17804CLASS="section"
17805><HR><H2
17806CLASS="section"
17807><A
17808NAME="AEN4902"
17809>B.1. at_rot_target</A
17810></H2
17811><DIV
17812CLASS="funcsynopsis"
17813><P
17814></P
17815><A
17816NAME="AEN4904"
17817></A
17818><P
17819><CODE
17820><CODE
17821CLASS="FUNCDEF"
17822>at_rot_target</CODE
17823>(integer number, rotation target_rotation, rotation our_rotation);</CODE
17824></P
17825><P
17826></P
17827></DIV
17828><P
17829>This event is triggered when a script comes within a defined
17830 angle of a target rotation. The range is set by a call to <A
17831HREF="#AEN3579"
17832>llRotTarget</A
17833>.</P
17834></DIV
17835><DIV
17836CLASS="section"
17837><HR><H2
17838CLASS="section"
17839><A
17840NAME="AEN4916"
17841>B.2. at_target</A
17842></H2
17843><DIV
17844CLASS="funcsynopsis"
17845><P
17846></P
17847><A
17848NAME="AEN4918"
17849></A
17850><P
17851><CODE
17852><CODE
17853CLASS="FUNCDEF"
17854>not_at_target</CODE
17855>(integer number, vector target_position, vector our_position);</CODE
17856></P
17857><P
17858></P
17859></DIV
17860><P
17861>This event is triggered when a script comes within a defined
17862 range from a target position. The range and position are set by a
17863 call to <A
17864HREF="#AEN4688"
17865>llTarget</A
17866>.</P
17867></DIV
17868><DIV
17869CLASS="section"
17870><HR><H2
17871CLASS="section"
17872><A
17873NAME="AEN4930"
17874>B.3. attach</A
17875></H2
17876><DIV
17877CLASS="funcsynopsis"
17878><P
17879></P
17880><A
17881NAME="AEN4932"
17882></A
17883><P
17884><CODE
17885><CODE
17886CLASS="FUNCDEF"
17887>attach</CODE
17888>(key attached);</CODE
17889></P
17890><P
17891></P
17892></DIV
17893><P
17894>This event is triggered whenever a object with this script
17895 is attached or detached from an avatar. If it is attached,
17896 attached is the key of the avatar it is attached to, otherwise
17897 attached is <A
17898HREF="#AEN6070"
17899>NULL_KEY</A
17900>.</P
17901></DIV
17902><DIV
17903CLASS="section"
17904><HR><H2
17905CLASS="section"
17906><A
17907NAME="AEN4940"
17908>B.4. changed</A
17909></H2
17910><DIV
17911CLASS="funcsynopsis"
17912><P
17913></P
17914><A
17915NAME="AEN4942"
17916></A
17917><P
17918><CODE
17919><CODE
17920CLASS="FUNCDEF"
17921>changed</CODE
17922>(integer changed);</CODE
17923></P
17924><P
17925></P
17926></DIV
17927><P
17928>Triggered when various events change the object. The
17929 <CODE
17930CLASS="parameter"
17931>changed</CODE
17932> will be a bitfield of <A
17933HREF="#AEN5690"
17934>change constants</A
17935>.</P
17936></DIV
17937><DIV
17938CLASS="section"
17939><HR><H2
17940CLASS="section"
17941><A
17942NAME="AEN4951"
17943>B.5. collision</A
17944></H2
17945><DIV
17946CLASS="funcsynopsis"
17947><P
17948></P
17949><A
17950NAME="AEN4953"
17951></A
17952><P
17953><CODE
17954><CODE
17955CLASS="FUNCDEF"
17956>collision</CODE
17957>(integer total_number);</CODE
17958></P
17959><P
17960></P
17961></DIV
17962><P
17963>This event is raised while another object is colliding with
17964 the object the script is attached to. The number of detected
17965 objects is passed to the script. Information on those objects may
17966 be gathered via the <A
17967HREF="#lib_lldetected"
17968>llDetected*</A
17969> library
17970 functions. (Collisions are also generated if a user walks into an
17971 object.)</P
17972></DIV
17973><DIV
17974CLASS="section"
17975><HR><H2
17976CLASS="section"
17977><A
17978NAME="AEN4961"
17979>B.6. collision_end</A
17980></H2
17981><DIV
17982CLASS="funcsynopsis"
17983><P
17984></P
17985><A
17986NAME="AEN4963"
17987></A
17988><P
17989><CODE
17990><CODE
17991CLASS="FUNCDEF"
17992>collision_end</CODE
17993>(integer total_number);</CODE
17994></P
17995><P
17996></P
17997></DIV
17998><P
17999>This event is raised when another object stops colliding
18000 with the object the script is attached to. The number of detected
18001 objects is passed to the script. Information on those objects may
18002 be gathered via the <A
18003HREF="#lib_lldetected"
18004>llDetected*</A
18005> library
18006 functions. (Collisions are also generated if a user walks into an
18007 object.)</P
18008></DIV
18009><DIV
18010CLASS="section"
18011><HR><H2
18012CLASS="section"
18013><A
18014NAME="AEN4971"
18015>B.7. collision_start</A
18016></H2
18017><DIV
18018CLASS="funcsynopsis"
18019><P
18020></P
18021><A
18022NAME="AEN4973"
18023></A
18024><P
18025><CODE
18026><CODE
18027CLASS="FUNCDEF"
18028>collision_start</CODE
18029>(integer total_number);</CODE
18030></P
18031><P
18032></P
18033></DIV
18034><P
18035>This event is raised when another object begins to collide
18036 with the object the script is attached to. The number of detected
18037 objects is passed to the script. Information on those objects may
18038 be gathered via the <A
18039HREF="#lib_lldetected"
18040>llDetected*</A
18041> library
18042 functions. (Collisions are also generated if a user walks into an
18043 object.)</P
18044></DIV
18045><DIV
18046CLASS="section"
18047><HR><H2
18048CLASS="section"
18049><A
18050NAME="AEN4981"
18051>B.8. control</A
18052></H2
18053><DIV
18054CLASS="funcsynopsis"
18055><P
18056></P
18057><A
18058NAME="AEN4983"
18059></A
18060><P
18061><CODE
18062><CODE
18063CLASS="FUNCDEF"
18064>control</CODE
18065>(key name, integer levels, integer edges);</CODE
18066></P
18067><P
18068></P
18069></DIV
18070><P
18071>Once a script has the ability to grab control inputs from
18072 the avatar, this event will be used to pass the commands into the
18073 script. The <CODE
18074CLASS="parameter"
18075>levels</CODE
18076> and
18077 <CODE
18078CLASS="parameter"
18079>edges</CODE
18080> are bitfields of <A
18081HREF="#AEN5643"
18082>control constants</A
18083>.</P
18084></DIV
18085><DIV
18086CLASS="section"
18087><HR><H2
18088CLASS="section"
18089><A
18090NAME="AEN4997"
18091>B.9. dataserver</A
18092></H2
18093><DIV
18094CLASS="funcsynopsis"
18095><P
18096></P
18097><A
18098NAME="AEN4999"
18099></A
18100><P
18101><CODE
18102><CODE
18103CLASS="FUNCDEF"
18104>dataserver</CODE
18105>(key requested, string data);</CODE
18106></P
18107><P
18108></P
18109></DIV
18110><P
18111>This event is triggered when the requested data is returned
18112 to the script. Data may be requested by the <A
18113HREF="#AEN3346"
18114>llRequestAgentData</A
18115>, the <A
18116HREF="#AEN3391"
18117>llRequestSimulatorData</A
18118>, the
18119 <A
18120HREF="#AEN3363"
18121>llRequestInventoryData</A
18122>,
18123 and the <A
18124HREF="#AEN1946"
18125>llGetNotecardLine</A
18126> function
18127 calls.</P
18128></DIV
18129><DIV
18130CLASS="section"
18131><HR><H2
18132CLASS="section"
18133><A
18134NAME="AEN5012"
18135>B.10. email</A
18136></H2
18137><DIV
18138CLASS="funcsynopsis"
18139><P
18140></P
18141><A
18142NAME="AEN5014"
18143></A
18144><P
18145><CODE
18146><CODE
18147CLASS="FUNCDEF"
18148>email</CODE
18149>(string time, string address, string subject, string body, integer remaining);</CODE
18150></P
18151><P
18152></P
18153></DIV
18154><P
18155>This event is triggered when an email sent to this script
18156 arrives. The <CODE
18157CLASS="parameter"
18158>remaining</CODE
18159> tells how many more
18160 emails are known as still pending.</P
18161></DIV
18162><DIV
18163CLASS="section"
18164><HR><H2
18165CLASS="section"
18166><A
18167NAME="AEN5030"
18168>B.11. land_collision</A
18169></H2
18170><DIV
18171CLASS="funcsynopsis"
18172><P
18173></P
18174><A
18175NAME="AEN5032"
18176></A
18177><P
18178><CODE
18179><CODE
18180CLASS="FUNCDEF"
18181>land_collision</CODE
18182>(vector position);</CODE
18183></P
18184><P
18185></P
18186></DIV
18187><P
18188>This event is raised when the object the script is attached
18189 to is colliding with the ground.</P
18190></DIV
18191><DIV
18192CLASS="section"
18193><HR><H2
18194CLASS="section"
18195><A
18196NAME="AEN5039"
18197>B.12. land_collision_end</A
18198></H2
18199><DIV
18200CLASS="funcsynopsis"
18201><P
18202></P
18203><A
18204NAME="AEN5041"
18205></A
18206><P
18207><CODE
18208><CODE
18209CLASS="FUNCDEF"
18210>land_collision_end</CODE
18211>(vector position);</CODE
18212></P
18213><P
18214></P
18215></DIV
18216><P
18217>This event is raised when the object the script is attached
18218 to stops colliding with the ground.</P
18219></DIV
18220><DIV
18221CLASS="section"
18222><HR><H2
18223CLASS="section"
18224><A
18225NAME="AEN5048"
18226>B.13. land_collision_start</A
18227></H2
18228><DIV
18229CLASS="funcsynopsis"
18230><P
18231></P
18232><A
18233NAME="AEN5050"
18234></A
18235><P
18236><CODE
18237><CODE
18238CLASS="FUNCDEF"
18239>land_collision_start</CODE
18240>(vector position);</CODE
18241></P
18242><P
18243></P
18244></DIV
18245><P
18246>This event is raised when the object the script is attached
18247 to begins to collide with the ground.</P
18248></DIV
18249><DIV
18250CLASS="section"
18251><HR><H2
18252CLASS="section"
18253><A
18254NAME="AEN5057"
18255>B.14. link_message</A
18256></H2
18257><DIV
18258CLASS="funcsynopsis"
18259><P
18260></P
18261><A
18262NAME="AEN5059"
18263></A
18264><P
18265><CODE
18266><CODE
18267CLASS="FUNCDEF"
18268>link_message</CODE
18269>(integer sender_number, integer number, string message, key id);</CODE
18270></P
18271><P
18272></P
18273></DIV
18274><P
18275>Triggered when object receives a link message via <A
18276HREF="#AEN2919"
18277>llMessageLinked</A
18278> library
18279 function call.</P
18280></DIV
18281><DIV
18282CLASS="section"
18283><HR><H2
18284CLASS="section"
18285><A
18286NAME="AEN5073"
18287>B.15. listen</A
18288></H2
18289><DIV
18290CLASS="funcsynopsis"
18291><P
18292></P
18293><A
18294NAME="AEN5075"
18295></A
18296><P
18297><CODE
18298><CODE
18299CLASS="FUNCDEF"
18300>listen</CODE
18301>(integer channel, string name, key id, string message);</CODE
18302></P
18303><P
18304></P
18305></DIV
18306><P
18307>This event is raised whenever a chat message matching the
18308 constraints passed in the <A
18309HREF="#AEN2665"
18310>llListen</A
18311>
18312 command is heard. The <CODE
18313CLASS="parameter"
18314>name</CODE
18315> and
18316 <CODE
18317CLASS="parameter"
18318>id</CODE
18319> of the speaker as well as the
18320 <CODE
18321CLASS="parameter"
18322>message</CODE
18323> are passed in as parameters.
18324 Channel 0 is the public chat channel that all avatars see as chat
18325 text. Channels 1 through 2,147,483,648 are private channels that
18326 are not sent to avatars but other scripts can listen on those
18327 channels.</P
18328></DIV
18329><DIV
18330CLASS="section"
18331><HR><H2
18332CLASS="section"
18333><A
18334NAME="AEN5092"
18335>B.16. money</A
18336></H2
18337><DIV
18338CLASS="funcsynopsis"
18339><P
18340></P
18341><A
18342NAME="AEN5094"
18343></A
18344><P
18345><CODE
18346><CODE
18347CLASS="FUNCDEF"
18348>money</CODE
18349>(key giver, integer amount);</CODE
18350></P
18351><P
18352></P
18353></DIV
18354><P
18355>This event is triggered when user
18356 <CODE
18357CLASS="parameter"
18358>giver</CODE
18359> has given an
18360 <CODE
18361CLASS="parameter"
18362>amount</CODE
18363> of Linden dollars to the
18364 object.</P
18365></DIV
18366><DIV
18367CLASS="section"
18368><HR><H2
18369CLASS="section"
18370><A
18371NAME="AEN5105"
18372>B.17. moving_end</A
18373></H2
18374><DIV
18375CLASS="funcsynopsis"
18376><P
18377></P
18378><A
18379NAME="AEN5107"
18380></A
18381><P
18382><CODE
18383><CODE
18384CLASS="FUNCDEF"
18385>moving_end</CODE
18386>(void);</CODE
18387></P
18388><P
18389></P
18390></DIV
18391><P
18392>Triggered whenever a object with this script stops
18393 moving.</P
18394></DIV
18395><DIV
18396CLASS="section"
18397><HR><H2
18398CLASS="section"
18399><A
18400NAME="AEN5113"
18401>B.18. moving_start</A
18402></H2
18403><DIV
18404CLASS="funcsynopsis"
18405><P
18406></P
18407><A
18408NAME="AEN5115"
18409></A
18410><P
18411><CODE
18412><CODE
18413CLASS="FUNCDEF"
18414>moving_start</CODE
18415>(void);</CODE
18416></P
18417><P
18418></P
18419></DIV
18420><P
18421>Triggered whenever a object with this script starts
18422 moving.</P
18423></DIV
18424><DIV
18425CLASS="section"
18426><HR><H2
18427CLASS="section"
18428><A
18429NAME="AEN5121"
18430>B.19. no_sensor</A
18431></H2
18432><DIV
18433CLASS="funcsynopsis"
18434><P
18435></P
18436><A
18437NAME="AEN5123"
18438></A
18439><P
18440><CODE
18441><CODE
18442CLASS="FUNCDEF"
18443>no_sensor</CODE
18444>(void);</CODE
18445></P
18446><P
18447></P
18448></DIV
18449><P
18450>This event is raised when sensors are active (via the <A
18451HREF="#AEN3693"
18452>llSensor</A
18453> library call) but are not
18454 sensing anything.</P
18455></DIV
18456><DIV
18457CLASS="section"
18458><HR><H2
18459CLASS="section"
18460><A
18461NAME="AEN5130"
18462>B.20. not_at_rot_target</A
18463></H2
18464><DIV
18465CLASS="funcsynopsis"
18466><P
18467></P
18468><A
18469NAME="AEN5132"
18470></A
18471><P
18472><CODE
18473><CODE
18474CLASS="FUNCDEF"
18475>not_at_rot_target</CODE
18476>(void);</CODE
18477></P
18478><P
18479></P
18480></DIV
18481><P
18482>When a target is set via the <A
18483HREF="#AEN3579"
18484>llRotTarget</A
18485> library call, but the
18486 script is outside the specified angle this event is raised.</P
18487></DIV
18488><DIV
18489CLASS="section"
18490><HR><H2
18491CLASS="section"
18492><A
18493NAME="AEN5139"
18494>B.21. not_at_target</A
18495></H2
18496><DIV
18497CLASS="funcsynopsis"
18498><P
18499></P
18500><A
18501NAME="AEN5141"
18502></A
18503><P
18504><CODE
18505><CODE
18506CLASS="FUNCDEF"
18507>not_at_target</CODE
18508>(void);</CODE
18509></P
18510><P
18511></P
18512></DIV
18513><P
18514>When a target is set via the <A
18515HREF="#AEN4688"
18516>llTarget</A
18517> library call, but the
18518 script is outside the specified range this event is raised.</P
18519></DIV
18520><DIV
18521CLASS="section"
18522><HR><H2
18523CLASS="section"
18524><A
18525NAME="AEN5148"
18526>B.22. object_rez</A
18527></H2
18528><DIV
18529CLASS="funcsynopsis"
18530><P
18531></P
18532><A
18533NAME="AEN5150"
18534></A
18535><P
18536><CODE
18537><CODE
18538CLASS="FUNCDEF"
18539>object_rez</CODE
18540>(key id);</CODE
18541></P
18542><P
18543></P
18544></DIV
18545><P
18546>Triggered when object rezzes another object from its
18547 inventory via the <A
18548HREF="#AEN3461"
18549>llRezObject</A
18550> api. The
18551 <CODE
18552CLASS="parameter"
18553>id</CODE
18554> is the globally unique key for the
18555 object.</P
18556></DIV
18557><DIV
18558CLASS="section"
18559><HR><H2
18560CLASS="section"
18561><A
18562NAME="AEN5159"
18563>B.23. on_rez</A
18564></H2
18565><DIV
18566CLASS="funcsynopsis"
18567><P
18568></P
18569><A
18570NAME="AEN5161"
18571></A
18572><P
18573><CODE
18574><CODE
18575CLASS="FUNCDEF"
18576>on_rez</CODE
18577>(integer start_param);</CODE
18578></P
18579><P
18580></P
18581></DIV
18582><P
18583>Triggered whenever a object is rezzed from inventory or by
18584 another object. The <CODE
18585CLASS="parameter"
18586>start_param</CODE
18587> is the
18588 parameter passed in from the call to <A
18589HREF="#AEN3461"
18590>llRezObject</A
18591> or <A
18592HREF="#AEN3434"
18593>llRezAtRoot</A
18594>.</P
18595></DIV
18596><DIV
18597CLASS="section"
18598><HR><H2
18599CLASS="section"
18600><A
18601NAME="AEN5171"
18602>B.24. run_time_permissions</A
18603></H2
18604><DIV
18605CLASS="funcsynopsis"
18606><P
18607></P
18608><A
18609NAME="AEN5173"
18610></A
18611><P
18612><CODE
18613><CODE
18614CLASS="FUNCDEF"
18615>run_time_permissions</CODE
18616>(integer permissions);</CODE
18617></P
18618><P
18619></P
18620></DIV
18621><P
18622>Scripts need permission from either the owner or the avatar
18623 they wish to act on before they perform certain functions, such as
18624 debiting money from their owner's account, triggering an animation
18625 on an avatar, or capturing control inputs. The <A
18626HREF="#AEN3375"
18627>llRequestPermissions</A
18628>
18629 library function is used to request these permissions and the
18630 various <A
18631HREF="#AEN5360"
18632>permissions integer
18633 constants</A
18634> can be supplied. The integer returned to this
18635 event handler contains the current set of permissions flags, so if
18636 <CODE
18637CLASS="parameter"
18638>permissions</CODE
18639> equal 0 then no permissions are
18640 set.</P
18641></DIV
18642><DIV
18643CLASS="section"
18644><HR><H2
18645CLASS="section"
18646><A
18647NAME="AEN5183"
18648>B.25. sensor</A
18649></H2
18650><DIV
18651CLASS="funcsynopsis"
18652><P
18653></P
18654><A
18655NAME="AEN5185"
18656></A
18657><P
18658><CODE
18659><CODE
18660CLASS="FUNCDEF"
18661>sensor</CODE
18662>(integer total_number);</CODE
18663></P
18664><P
18665></P
18666></DIV
18667><P
18668>This event is raised whenever objects matching the
18669 constraints of the <A
18670HREF="#AEN3693"
18671>llSensor</A
18672>
18673 command are detected. The number of detected objects is passed to
18674 the script in the <CODE
18675CLASS="parameter"
18676>total_number</CODE
18677>
18678 parameter. A maximum of 16 objects are passed to this event.
18679 Information on those objects may be gathered via the
18680 <A
18681HREF="#lib_lldetected"
18682>llDetected*</A
18683> library
18684 functions.</P
18685></DIV
18686><DIV
18687CLASS="section"
18688><HR><H2
18689CLASS="section"
18690><A
18691NAME="AEN5195"
18692>B.26. state_entry</A
18693></H2
18694><DIV
18695CLASS="funcsynopsis"
18696><P
18697></P
18698><A
18699NAME="AEN5197"
18700></A
18701><P
18702><CODE
18703><CODE
18704CLASS="FUNCDEF"
18705>state_entry</CODE
18706>(void);</CODE
18707></P
18708><P
18709></P
18710></DIV
18711><P
18712>The state_entry event occurs whenever a new state is
18713 entered, including program start, and is always the first event
18714 handled.</P
18715></DIV
18716><DIV
18717CLASS="section"
18718><HR><H2
18719CLASS="section"
18720><A
18721NAME="AEN5203"
18722>B.27. state_exit</A
18723></H2
18724><DIV
18725CLASS="funcsynopsis"
18726><P
18727></P
18728><A
18729NAME="AEN5205"
18730></A
18731><P
18732><CODE
18733><CODE
18734CLASS="FUNCDEF"
18735>state_exit</CODE
18736>(void);</CODE
18737></P
18738><P
18739></P
18740></DIV
18741><P
18742>The state_exit event occurs whenever the state command is
18743 used to transition to another state. It is handled before the new
18744 state's state_entry event.</P
18745></DIV
18746><DIV
18747CLASS="section"
18748><HR><H2
18749CLASS="section"
18750><A
18751NAME="AEN5211"
18752>B.28. timer</A
18753></H2
18754><DIV
18755CLASS="funcsynopsis"
18756><P
18757></P
18758><A
18759NAME="AEN5213"
18760></A
18761><P
18762><CODE
18763><CODE
18764CLASS="FUNCDEF"
18765>timer</CODE
18766>(void);</CODE
18767></P
18768><P
18769></P
18770></DIV
18771><P
18772>This event is raised at regular intervals set by the <A
18773HREF="#AEN4188"
18774>llSetTimerEvent</A
18775> library
18776 function.</P
18777></DIV
18778><DIV
18779CLASS="section"
18780><HR><H2
18781CLASS="section"
18782><A
18783NAME="AEN5220"
18784>B.29. touch</A
18785></H2
18786><DIV
18787CLASS="funcsynopsis"
18788><P
18789></P
18790><A
18791NAME="AEN5222"
18792></A
18793><P
18794><CODE
18795><CODE
18796CLASS="FUNCDEF"
18797>touch</CODE
18798>(integer total_number);</CODE
18799></P
18800><P
18801></P
18802></DIV
18803><P
18804>This event is raised while a user is touching the object the
18805 script is attached to. The number of touching objects is passed to
18806 the script in the <CODE
18807CLASS="parameter"
18808>total_number</CODE
18809>
18810 parameter. Information on those objects may be gathered via the
18811 <A
18812HREF="#lib_lldetected"
18813>llDetected*</A
18814> library
18815 functions.</P
18816></DIV
18817><DIV
18818CLASS="section"
18819><HR><H2
18820CLASS="section"
18821><A
18822NAME="AEN5231"
18823>B.30. touch_end</A
18824></H2
18825><DIV
18826CLASS="funcsynopsis"
18827><P
18828></P
18829><A
18830NAME="AEN5233"
18831></A
18832><P
18833><CODE
18834><CODE
18835CLASS="FUNCDEF"
18836>touch_end</CODE
18837>(integer total_number);</CODE
18838></P
18839><P
18840></P
18841></DIV
18842><P
18843>This event is raised when a user stops touching the object
18844 the script is attached to. The number of touching objects is
18845 passed to the script in the <CODE
18846CLASS="parameter"
18847>total_number</CODE
18848>
18849 parameter. Information on those objects may be gathered via the
18850 <A
18851HREF="#lib_lldetected"
18852>llDetected*</A
18853> library
18854 functions.</P
18855></DIV
18856><DIV
18857CLASS="section"
18858><HR><H2
18859CLASS="section"
18860><A
18861NAME="AEN5242"
18862>B.31. touch_start</A
18863></H2
18864><DIV
18865CLASS="funcsynopsis"
18866><P
18867></P
18868><A
18869NAME="AEN5244"
18870></A
18871><P
18872><CODE
18873><CODE
18874CLASS="FUNCDEF"
18875>touch_start</CODE
18876>(integer total_number);</CODE
18877></P
18878><P
18879></P
18880></DIV
18881><P
18882>This event is raised when a user first touches the object
18883 the script is attached to. The number of touching objects is
18884 passed to the script in the <CODE
18885CLASS="parameter"
18886>total_number</CODE
18887>
18888 parameter. Information on those objects may be gathered via the
18889 <A
18890HREF="#lib_lldetected"
18891>llDetected*</A
18892> library
18893 functions.</P
18894></DIV
18895><DIV
18896CLASS="section"
18897><HR><H2
18898CLASS="section"
18899><A
18900NAME="AEN5253"
18901>B.32. remote_data</A
18902></H2
18903><DIV
18904CLASS="funcsynopsis"
18905><P
18906></P
18907><A
18908NAME="AEN5255"
18909></A
18910><P
18911><CODE
18912><CODE
18913CLASS="FUNCDEF"
18914>remote_data</CODE
18915>(integer type, key channel, key message_id, string sender, integer ival, string sval);</CODE
18916></P
18917><P
18918></P
18919></DIV
18920><P
18921>This event is raised when a user creates an XML-RPC
18922 channel via <A
18923HREF="#AEN3011"
18924>llOpenRemoteDataChannel</A
18925>,
18926 a remote XML-RPC server replies to a <A
18927HREF="#AEN3680"
18928>llSendRemoteData</A
18929>,
18930 or a remote XML-RPC client sends in an XML-RPC request. In the open case,
18931 <CODE
18932CLASS="parameter"
18933>type</CODE
18934> = REMOTE_DATA_CHANNEL, <CODE
18935CLASS="parameter"
18936>channel</CODE
18937> = NULL_KEY,
18938 <CODE
18939CLASS="parameter"
18940>message_id</CODE
18941> = NULL_KEY, <CODE
18942CLASS="parameter"
18943>sender</CODE
18944> is an empty string,
18945 <CODE
18946CLASS="parameter"
18947>ival</CODE
18948> = 0, and <CODE
18949CLASS="parameter"
18950>sval</CODE
18951> is an empty string. In the reply case,
18952 <CODE
18953CLASS="parameter"
18954>type</CODE
18955> = REMOTE_DATA_REPLY, <CODE
18956CLASS="parameter"
18957>channel</CODE
18958> is set to the channel that the request was sent on,
18959 <CODE
18960CLASS="parameter"
18961>message_id</CODE
18962> is set to the id of the message, <CODE
18963CLASS="parameter"
18964>sender</CODE
18965> is an empty string,
18966 <CODE
18967CLASS="parameter"
18968>ival</CODE
18969> = 0, and <CODE
18970CLASS="parameter"
18971>sval</CODE
18972> is a string. In the remote request case,
18973 <CODE
18974CLASS="parameter"
18975>type</CODE
18976> = REMOTE_DATA_REQUEST, <CODE
18977CLASS="parameter"
18978>channel</CODE
18979> is set to the channel that sent the message,
18980 <CODE
18981CLASS="parameter"
18982>message_id</CODE
18983> is set to the id of the message, <CODE
18984CLASS="parameter"
18985>sender</CODE
18986> is set by the sender,
18987 <CODE
18988CLASS="parameter"
18989>ival</CODE
18990> is an integer, and <CODE
18991CLASS="parameter"
18992>sval</CODE
18993> is a string.
18994 parameter.</P
18995></DIV
18996></DIV
18997><DIV
18998CLASS="appendix"
18999><HR><H1
19000><A
19001NAME="AEN5292"
19002></A
19003>Appendix C. Constants</H1
19004><P
19005>To ease scripting, many useful constants are defined by
19006 LSL.</P
19007><DIV
19008CLASS="section"
19009><HR><H2
19010CLASS="section"
19011><A
19012NAME="AEN5295"
19013>C.1. Boolean Constants</A
19014></H2
19015><P
19016>The boolean constants represent the values for TRUE and
19017 FALSE. LSL represents booleans as integer values 1 and 0
19018 respectively. Since there is no boolean type these constants act
19019 as a scripting aid usually employed for testing variables which
19020 conceptually represent boolean values.</P
19021><P
19022><P
19023></P
19024><UL
19025><LI
19026><P
19027>TRUE</P
19028></LI
19029><LI
19030><P
19031>FALSE</P
19032></LI
19033></UL
19034></P
19035></DIV
19036><DIV
19037CLASS="section"
19038><HR><H2
19039CLASS="section"
19040><A
19041NAME="AEN5304"
19042>C.2. Status Constants</A
19043></H2
19044><P
19045>The status constants are used in the <A
19046HREF="#AEN4095"
19047>llSetStatus</A
19048> and <A
19049HREF="#AEN2184"
19050>llGetStatus</A
19051> library calls. These
19052 constants can be bitwise or'ed together when calling the library
19053 functions to set the same value to more than one status
19054 flag</P
19055><P
19056></P
19057><DIV
19058CLASS="variablelist"
19059><P
19060><B
19061>Status Constants</B
19062></P
19063><DL
19064><DT
19065>STATUS_PHYSICS</DT
19066><DD
19067><P
19068>Controls whether the object moves
19069 physically. This controls the same flag that the ui checkbox
19070 for 'Physical' controls. The default is FALSE.</P
19071></DD
19072><DT
19073>STATUS_PHANTOM</DT
19074><DD
19075><P
19076>Controls whether the object collides or
19077 not. Setting the value to TRUE makes the object non-colliding
19078 with all objects. It is a good idea to use this for most
19079 objects that move or rotate, but are non-physical. It is also
19080 useful for simulating volumetric lighting. The default is
19081 FALSE.</P
19082></DD
19083><DT
19084>STATUS_ROTATE_X, STATUS_ROTATE_Y, STATUS_ROTATE_Z</DT
19085><DD
19086><P
19087>Controls whether the object can physically rotate
19088 around the specific axis or not. This flag has no meaning
19089 for non-physical objects. Set the value to FALSE
19090 to disable rotation around that axis. The default is TRUE
19091 for a physical object.</P
19092><P
19093>A useful example to think about when visualizing the
19094 effect is a 'sit-and-spin' device. They spin around the Z
19095 axis (up) but not around the X or Y axis.</P
19096></DD
19097><DT
19098>STATUS_BLOCK_GRAB</DT
19099><DD
19100><P
19101>Controls whether the object can be grabbed. A
19102 grab is the default action when in third person, and is
19103 available as the 'hand' tool in build mode. This is useful for
19104 physical objects that you don't want other people to be able
19105 to trivially disturb. The default if FALSE</P
19106></DD
19107><DT
19108>STATUS_SANDBOX</DT
19109><DD
19110><P
19111>Controls whether the object can cross region
19112 boundaries and move more than 20 meters from its creation
19113 point. The default if FALSE.</P
19114></DD
19115><DT
19116>STATUS_DIE_AT_EDGE</DT
19117><DD
19118><P
19119>Controls whether the object is returned to the
19120 owner's inventory if it wanders off the edge of the world. It
19121 is useful to set this status TRUE for things like bullets or
19122 rockets. The default is TRUE</P
19123></DD
19124></DL
19125></DIV
19126></DIV
19127><DIV
19128CLASS="section"
19129><HR><H2
19130CLASS="section"
19131><A
19132NAME="AEN5338"
19133>C.3. Object Type Constants</A
19134></H2
19135><P
19136>These constants can be combined using the binary '|'
19137 operator and are used in the <A
19138HREF="#AEN3693"
19139>llSensor</A
19140> and related calls.</P
19141><P
19142></P
19143><DIV
19144CLASS="variablelist"
19145><P
19146><B
19147>Object Type Constants</B
19148></P
19149><DL
19150><DT
19151>AGENT</DT
19152><DD
19153><P
19154>Objects in world that are agents.</P
19155></DD
19156><DT
19157>ACTIVE</DT
19158><DD
19159><P
19160>Objects in world that are running a script or
19161 currently physically moving.</P
19162></DD
19163><DT
19164>PASSIVE</DT
19165><DD
19166><P
19167>Static in-world objects.</P
19168></DD
19169><DT
19170>SCRIPTED</DT
19171><DD
19172><P
19173>Scripted in-world objects.</P
19174></DD
19175></DL
19176></DIV
19177></DIV
19178><DIV
19179CLASS="section"
19180><HR><H2
19181CLASS="section"
19182><A
19183NAME="AEN5360"
19184>C.4. Permission Constants</A
19185></H2
19186><P
19187>The permission constants are used for passing values to
19188 <A
19189HREF="#AEN3375"
19190>llRequestPermissions</A
19191>,
19192 determining the value of <A
19193HREF="#AEN2048"
19194>llGetPermissions</A
19195>, and
19196 explicitly passed to the <A
19197HREF="#AEN5171"
19198>run_time_permissions</A
19199>
19200 event. For many of the basic library functions to work, a
19201 specific permission must be enabled. The permission constants can
19202 be or'ed together to be used in conjunction.</P
19203><P
19204></P
19205><DIV
19206CLASS="variablelist"
19207><P
19208><B
19209>Permission Constants</B
19210></P
19211><DL
19212><DT
19213>PERMISSION_DEBIT</DT
19214><DD
19215><P
19216>If this permission is enabled, the object can
19217 successfully call <A
19218HREF="#AEN2342"
19219>llGiveMoney</A
19220> to debit the
19221 owner's account.</P
19222></DD
19223><DT
19224>PERMISSION_TAKE_CONTROLS</DT
19225><DD
19226><P
19227>If this permission enabled, the object can
19228 successfully call the <A
19229HREF="#AEN4661"
19230>llTakeControls</A
19231> library
19232 call.</P
19233></DD
19234><DT
19235>PERMISSION_REMAP_CONTROLS</DT
19236><DD
19237><P
19238>(not yet implemented)</P
19239></DD
19240><DT
19241>PERMISSION_TRIGGER_ANIMATION</DT
19242><DD
19243><P
19244>If this permission is enabled, the object can
19245 successfully call <A
19246HREF="#AEN4346"
19247>llStartAnimation</A
19248> for the
19249 avatar that owns this object.</P
19250></DD
19251><DT
19252><A
19253NAME="const_permission_attach"
19254></A
19255>PERMISSION_ATTACH</DT
19256><DD
19257><P
19258>If this permission is enabled, the object can
19259 successfully call <A
19260HREF="#AEN1119"
19261>llAttachToAvatar</A
19262> to attach
19263 to the given avatar.</P
19264></DD
19265><DT
19266>PERMISSION_RELEASE_OWNERSHIP</DT
19267><DD
19268><P
19269>(not yet implemented)</P
19270></DD
19271><DT
19272><A
19273NAME="const_permission_change_links"
19274></A
19275>PERMISSION_CHANGE_LINKS</DT
19276><DD
19277><P
19278>If this permission is enabled, the object can
19279 successfully call <A
19280HREF="#AEN1292"
19281>llCreateLink</A
19282>, <A
19283HREF="#AEN1191"
19284>llBreakLink</A
19285>, and <A
19286HREF="#AEN1182"
19287>llBreakAllLinks</A
19288> to change
19289 links to other objects.</P
19290></DD
19291><DT
19292>PERMISSION_CHANGE_JOINTS</DT
19293><DD
19294><P
19295>(not yet implemented)</P
19296></DD
19297><DT
19298>PERMISSION_CHANGE_PERMISSIONS</DT
19299><DD
19300><P
19301>(not yet implemented)</P
19302></DD
19303></DL
19304></DIV
19305></DIV
19306><DIV
19307CLASS="section"
19308><HR><H2
19309CLASS="section"
19310><A
19311NAME="AEN5411"
19312>C.5. Inventory Constants</A
19313></H2
19314><P
19315>These constants can be used to refer to a specific inventory
19316 type in calls to <A
19317HREF="#AEN1789"
19318>llGetInventoryNumber</A
19319> and
19320 <A
19321HREF="#AEN1774"
19322>llGetInventoryName</A
19323>. They
19324 are also returned by <A
19325HREF="#AEN1816"
19326>llGetInventoryType</A
19327>.
19328 </P
19329><P
19330></P
19331><DIV
19332CLASS="variablelist"
19333><P
19334><B
19335>Inventory Constants</B
19336></P
19337><DL
19338><DT
19339>INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_OBJECT, INVENTORY_SCRIPT, INVENTORY_LANDMARK, INVENTORY_CLOTHING, INVENTORY_NOTECARD, INVENTORY_BODYPART, INVENTORY_ANIMATION, INVENTORY_GESTURE, INVENTORY_ALL, INVENTORY_NONE</DT
19340><DD
19341><P
19342>Each constant refers to the named type of
19343 inventory.</P
19344></DD
19345></DL
19346></DIV
19347></DIV
19348><DIV
19349CLASS="section"
19350><HR><H2
19351CLASS="section"
19352><A
19353NAME="AEN5434"
19354>C.6. Pay Price Constants</A
19355></H2
19356><P
19357>These constants can be used in <A
19358HREF="#AEN1789"
19359>llSetPayPrice</A
19360></P
19361><P
19362></P
19363><DIV
19364CLASS="variablelist"
19365><P
19366><B
19367>Pay Price Constants</B
19368></P
19369><DL
19370><DT
19371>PAY_HIDE</DT
19372><DD
19373><P
19374>Do not show this quick pay button.</P
19375></DD
19376><DT
19377>PAY_DEFAULT</DT
19378><DD
19379><P
19380>Use the default value for this quick pay button.</P
19381></DD
19382></DL
19383></DIV
19384></DIV
19385><DIV
19386CLASS="section"
19387><HR><H2
19388CLASS="section"
19389><A
19390NAME="AEN5448"
19391>C.7. Attachment Constants</A
19392></H2
19393><P
19394>These constants are used to refer to attachment points in
19395 calls to <A
19396HREF="#AEN1119"
19397>llAttachToAvatar</A
19398>.</P
19399><P
19400></P
19401><DIV
19402CLASS="variablelist"
19403><P
19404><B
19405>Attachment Constants</B
19406></P
19407><DL
19408><DT
19409>ATTACH_CHEST</DT
19410><DD
19411><P
19412>Attach to the avatar chest.</P
19413></DD
19414><DT
19415>ATTACH_HEAD</DT
19416><DD
19417><P
19418>Attach to the avatar head.</P
19419></DD
19420><DT
19421>ATTACH_LSHOULDER</DT
19422><DD
19423><P
19424>Attach to the avatar left shoulder.</P
19425></DD
19426><DT
19427>ATTACH_RSHOULDER</DT
19428><DD
19429><P
19430>Attach to the avatar right shoulder.</P
19431></DD
19432><DT
19433>ATTACH_LHAND</DT
19434><DD
19435><P
19436>Attach to the avatar left hand.</P
19437></DD
19438><DT
19439>ATTACH_RHAND</DT
19440><DD
19441><P
19442>Attach to the avatar right hand.</P
19443></DD
19444><DT
19445>ATTACH_LFOOT</DT
19446><DD
19447><P
19448>Attach to the avatar left foot.</P
19449></DD
19450><DT
19451>ATTACH_RFOOT</DT
19452><DD
19453><P
19454>Attach to the avatar right foot.</P
19455></DD
19456><DT
19457>ATTACH_BACK</DT
19458><DD
19459><P
19460>Attach to the avatar back.</P
19461></DD
19462><DT
19463>ATTACH_PELVIS</DT
19464><DD
19465><P
19466>Attach to the avatar pelvis.</P
19467></DD
19468><DT
19469>ATTACH_MOUTH</DT
19470><DD
19471><P
19472>Attach to the avatar mouth.</P
19473></DD
19474><DT
19475>ATTACH_CHIN</DT
19476><DD
19477><P
19478>Attach to the avatar chin.</P
19479></DD
19480><DT
19481>ATTACH_LEAR</DT
19482><DD
19483><P
19484>Attach to the avatar left ear.</P
19485></DD
19486><DT
19487>ATTACH_REAR</DT
19488><DD
19489><P
19490>Attach to the avatar right ear.</P
19491></DD
19492><DT
19493>ATTACH_LEYE</DT
19494><DD
19495><P
19496>Attach to the avatar left eye.</P
19497></DD
19498><DT
19499>ATTACH_REYE</DT
19500><DD
19501><P
19502>Attach to the avatar right eye.</P
19503></DD
19504><DT
19505>ATTACH_NOSE</DT
19506><DD
19507><P
19508>Attach to the avatar nose.</P
19509></DD
19510><DT
19511>ATTACH_RUARM</DT
19512><DD
19513><P
19514>Attach to the avatar right upper arm.</P
19515></DD
19516><DT
19517>ATTACH_RLARM</DT
19518><DD
19519><P
19520>Attach to the avatar right lower arm.</P
19521></DD
19522><DT
19523>ATTACH_LUARM</DT
19524><DD
19525><P
19526>Attach to the avatar left upper arm.</P
19527></DD
19528><DT
19529>ATTACH_LLARM</DT
19530><DD
19531><P
19532>Attach to the avatar left lower arm.</P
19533></DD
19534><DT
19535>ATTACH_RHIP</DT
19536><DD
19537><P
19538>Attach to the avatar right hip.</P
19539></DD
19540><DT
19541>ATTACH_RULEG</DT
19542><DD
19543><P
19544>Attach to the avatar right upper leg.</P
19545></DD
19546><DT
19547>ATTACH_RLLEG</DT
19548><DD
19549><P
19550>Attach to the avatar right lower leg.</P
19551></DD
19552><DT
19553>ATTACH_LHIP</DT
19554><DD
19555><P
19556>Attach to the avatar left hip.</P
19557></DD
19558><DT
19559>ATTACH_LULEG</DT
19560><DD
19561><P
19562>Attach to the avatar lower upper leg.</P
19563></DD
19564><DT
19565>ATTACH_LLLEG</DT
19566><DD
19567><P
19568>Attach to the avatar lower left leg.</P
19569></DD
19570><DT
19571>ATTACH_BELLY</DT
19572><DD
19573><P
19574>Attach to the avatar belly.</P
19575></DD
19576><DT
19577>ATTACH_RPEC</DT
19578><DD
19579><P
19580>Attach to the avatar right pectoral.</P
19581></DD
19582><DT
19583>ATTACH_LPEC</DT
19584><DD
19585><P
19586>Attach to the avatar left pectoral.</P
19587></DD
19588></DL
19589></DIV
19590></DIV
19591><DIV
19592CLASS="section"
19593><HR><H2
19594CLASS="section"
19595><A
19596NAME="AEN5574"
19597>C.8. Land Constants</A
19598></H2
19599><P
19600>These constants are only used in calls to <A
19601HREF="#AEN2949"
19602>llModifyLand</A
19603>. The constants
19604 are equivalent to the similarly labelled user interface elements
19605 for editing land in the viewer.</P
19606><P
19607></P
19608><DIV
19609CLASS="variablelist"
19610><P
19611><B
19612>Land Constants</B
19613></P
19614><DL
19615><DT
19616>LAND_LEVEL</DT
19617><DD
19618><P
19619>Action to make the land flat and level.</P
19620></DD
19621><DT
19622>LAND_RAISE</DT
19623><DD
19624><P
19625>Action to raise the land.</P
19626></DD
19627><DT
19628>LAND_LOWER</DT
19629><DD
19630><P
19631>Action to lower the land.</P
19632></DD
19633><DT
19634>LAND_SMOOTH</DT
19635><DD
19636><P
19637>Action to smooth the land.</P
19638></DD
19639><DT
19640>LAND_NOISE</DT
19641><DD
19642><P
19643>Action to push the land toward a pseudo-random
19644 heightfield.</P
19645></DD
19646><DT
19647>LAND_REVERT</DT
19648><DD
19649><P
19650>Action to push the land toward the original
19651 shape from when it was first terraformed.</P
19652></DD
19653><DT
19654>LAND_SMALL_BRUSH</DT
19655><DD
19656><P
19657>Use a small brush size.</P
19658></DD
19659><DT
19660>LAND_MEDIUM_BRUSH</DT
19661><DD
19662><P
19663>Use a medium brush size.</P
19664></DD
19665><DT
19666>LAND_LARGE_BRUSH</DT
19667><DD
19668><P
19669>Use a large brush size.</P
19670></DD
19671></DL
19672></DIV
19673></DIV
19674><DIV
19675CLASS="section"
19676><HR><H2
19677CLASS="section"
19678><A
19679NAME="AEN5616"
19680>C.9. Link Constants</A
19681></H2
19682><P
19683>These constants are used in calls to <A
19684HREF="#AEN3906"
19685>llSetLinkColor</A
19686> and <A
19687HREF="#AEN2919"
19688>llMessageLinked</A
19689>.</P
19690><P
19691></P
19692><DIV
19693CLASS="variablelist"
19694><P
19695><B
19696>Link Constants</B
19697></P
19698><DL
19699><DT
19700>LINK_SET</DT
19701><DD
19702><P
19703>This targets every object in the linked
19704 set.</P
19705></DD
19706><DT
19707>LINK_ROOT</DT
19708><DD
19709><P
19710>This targets the root of the linked
19711 set.</P
19712></DD
19713><DT
19714>LINK_ALL_OTHERS</DT
19715><DD
19716><P
19717>This targets every object in the linked set
19718 except the object with the script.</P
19719></DD
19720><DT
19721>LINK_ALL_CHILDREN</DT
19722><DD
19723><P
19724>This targets every object except the root in
19725 the linked set.</P
19726></DD
19727><DT
19728>LINK_THIS</DT
19729><DD
19730><P
19731>This targets the object making the call only.
19732 </P
19733></DD
19734></DL
19735></DIV
19736></DIV
19737><DIV
19738CLASS="section"
19739><HR><H2
19740CLASS="section"
19741><A
19742NAME="AEN5643"
19743>C.10. Control Constants</A
19744></H2
19745><P
19746>These constants are used in <A
19747HREF="#AEN4661"
19748>llTakeControls</A
19749> as well as the
19750 <A
19751HREF="#AEN4981"
19752>control</A
19753> event handler.</P
19754><P
19755></P
19756><DIV
19757CLASS="variablelist"
19758><P
19759><B
19760>Control Constants</B
19761></P
19762><DL
19763><DT
19764>CONTROL_FWD</DT
19765><DD
19766><P
19767>Test for the avatar move forward
19768 control.</P
19769></DD
19770><DT
19771>CONTROL_BACK</DT
19772><DD
19773><P
19774>Test for the avatar move back
19775 control.</P
19776></DD
19777><DT
19778>CONTROL_LEFT</DT
19779><DD
19780><P
19781>Test for the avatar move left
19782 control.</P
19783></DD
19784><DT
19785>CONTROL_RIGHT</DT
19786><DD
19787><P
19788>Test for the avatar move right
19789 control.</P
19790></DD
19791><DT
19792>CONTROL_ROT_LEFT</DT
19793><DD
19794><P
19795>Test for the avatar rotate left
19796 control.</P
19797></DD
19798><DT
19799>CONTROL_ROT_RIGHT</DT
19800><DD
19801><P
19802>Test for the avatar rotate right
19803 control.</P
19804></DD
19805><DT
19806>CONTROL_UP</DT
19807><DD
19808><P
19809>Test for the avatar move up
19810 control.</P
19811></DD
19812><DT
19813>CONTROL_DOWN</DT
19814><DD
19815><P
19816>Test for the avatar move down
19817 control.</P
19818></DD
19819><DT
19820>CONTROL_LBUTTON</DT
19821><DD
19822><P
19823>Test for the avatar left button
19824 control.</P
19825></DD
19826><DT
19827>CONTROL_ML_BUTTON</DT
19828><DD
19829><P
19830>Test for the avatar left button control while
19831 in mouse look.</P
19832></DD
19833></DL
19834></DIV
19835></DIV
19836><DIV
19837CLASS="section"
19838><HR><H2
19839CLASS="section"
19840><A
19841NAME="AEN5690"
19842>C.11. Change Constants</A
19843></H2
19844><P
19845>These constants are used in the <A
19846HREF="#AEN4940"
19847>changed</A
19848> event handler.</P
19849><P
19850></P
19851><DIV
19852CLASS="variablelist"
19853><P
19854><B
19855>Change Constants</B
19856></P
19857><DL
19858><DT
19859>CHANGED_INVENTORY</DT
19860><DD
19861><P
19862>The object inventory has changed.</P
19863></DD
19864><DT
19865>CHANGED_ALLOWED_DROP</DT
19866><DD
19867><P
19868>The object inventory has changed because an item
19869 was added through the <A
19870HREF="#AEN1047"
19871>llAllowInventoryDrop</A
19872>
19873 interface.</P
19874></DD
19875><DT
19876>CHANGED_COLOR</DT
19877><DD
19878><P
19879>The object color has changed.</P
19880></DD
19881><DT
19882>CHANGED_SHAPE</DT
19883><DD
19884><P
19885>The object shape has changed, eg, a box to a
19886 cylinder</P
19887></DD
19888><DT
19889>CHANGED_SCALE</DT
19890><DD
19891><P
19892>The object scale has changed.</P
19893></DD
19894><DT
19895>CHANGED_TEXTURE</DT
19896><DD
19897><P
19898>The texture offset, scale rotation, or simply
19899 the object texture has changed.</P
19900></DD
19901><DT
19902>CHANGED_LINK</DT
19903><DD
19904><P
19905>The object has linked or its links were
19906 broken.</P
19907></DD
19908><DT
19909>CHANGED_REGION</DT
19910><DD
19911><P
19912>The object has changed regions.</P
19913></DD
19914><DT
19915>CHANGED_TELEPORT</DT
19916><DD
19917><P
19918>The object has been teleported.</P
19919></DD
19920></DL
19921></DIV
19922></DIV
19923><DIV
19924CLASS="section"
19925><HR><H2
19926CLASS="section"
19927><A
19928NAME="AEN5733"
19929>C.12. Type Constants</A
19930></H2
19931><P
19932>These constants are used to determine the variable type
19933 stored in a heterogeneous list. The value returned from <A
19934HREF="#AEN1875"
19935>llGetListEntryType</A
19936> can be
19937 used for comparison against these constants.</P
19938><P
19939></P
19940><DIV
19941CLASS="variablelist"
19942><P
19943><B
19944>Type Constants</B
19945></P
19946><DL
19947><DT
19948>TYPE_INTEGER</DT
19949><DD
19950><P
19951>The list entry is an integer.</P
19952></DD
19953><DT
19954>TYPE_FLOAT</DT
19955><DD
19956><P
19957>The list entry is a float.</P
19958></DD
19959><DT
19960>TYPE_STRING</DT
19961><DD
19962><P
19963>The list entry is a string.</P
19964></DD
19965><DT
19966>TYPE_KEY</DT
19967><DD
19968><P
19969>The list entry is a key.</P
19970></DD
19971><DT
19972>TYPE_VECTOR</DT
19973><DD
19974><P
19975>The list entry is a vector.</P
19976></DD
19977><DT
19978>TYPE_ROTATION</DT
19979><DD
19980><P
19981>The list entry is a rotation.</P
19982></DD
19983><DT
19984>TYPE_INVALID</DT
19985><DD
19986><P
19987>The list entry is invalid.</P
19988></DD
19989></DL
19990></DIV
19991></DIV
19992><DIV
19993CLASS="section"
19994><HR><H2
19995CLASS="section"
19996><A
19997NAME="AEN5767"
19998>C.13. Agent Info Constants</A
19999></H2
20000><P
20001>Each of these constants represents a bit in the integer
20002 returned from the <A
20003HREF="#AEN1605"
20004>llGetAgentInfo</A
20005> function and can
20006 be used in an expression to determine the specified information
20007 about an agent.</P
20008><P
20009></P
20010><DIV
20011CLASS="variablelist"
20012><P
20013><B
20014>Agent Info Constants</B
20015></P
20016><DL
20017><DT
20018>AGENT_FLYING</DT
20019><DD
20020><P
20021>The agent is flying.</P
20022></DD
20023><DT
20024>AGENT_ATTACHMENTS</DT
20025><DD
20026><P
20027>The agent has attachments.</P
20028></DD
20029><DT
20030>AGENT_SCRIPTED</DT
20031><DD
20032><P
20033>The agent has scripted attachments.</P
20034></DD
20035><DT
20036>AGENT_SITTING</DT
20037><DD
20038><P
20039>The agent is sitting.</P
20040></DD
20041><DT
20042>AGENT_ON_OBJECT</DT
20043><DD
20044><P
20045>The agent is sitting on an object.</P
20046></DD
20047><DT
20048>AGENT_WALKING</DT
20049><DD
20050><P
20051>The agent is walking.</P
20052></DD
20053><DT
20054>AGENT_IN_AIR</DT
20055><DD
20056><P
20057>The agent is in the air.</P
20058></DD
20059><DT
20060>AGENT_MOUSELOOK</DT
20061><DD
20062><P
20063>The agent is in mouselook.</P
20064></DD
20065><DT
20066>AGENT_AWAY</DT
20067><DD
20068><P
20069>The agent is away (AFK).</P
20070></DD
20071><DT
20072>AGENT_TYPING</DT
20073><DD
20074><P
20075>The agent is typing.</P
20076></DD
20077><DT
20078>AGENT_CROUCHING</DT
20079><DD
20080><P
20081>The agent is crouching.</P
20082></DD
20083></DL
20084></DIV
20085></DIV
20086><DIV
20087CLASS="section"
20088><HR><H2
20089CLASS="section"
20090><A
20091NAME="AEN5817"
20092>C.14. Texture Animation
20093 Constants</A
20094></H2
20095><P
20096>These constants are used in the <A
20097HREF="#AEN4140"
20098>llSetTextureAnim</A
20099> api to
20100 control the animation mode.</P
20101><P
20102></P
20103><DIV
20104CLASS="variablelist"
20105><P
20106><B
20107>Texture Animation Constants</B
20108></P
20109><DL
20110><DT
20111>ANIM_ON</DT
20112><DD
20113><P
20114>Texture animation is on.</P
20115></DD
20116><DT
20117>LOOP</DT
20118><DD
20119><P
20120>Loop the texture animation.</P
20121></DD
20122><DT
20123>REVERSE</DT
20124><DD
20125><P
20126>Play animation in reverse direction.</P
20127></DD
20128><DT
20129>PING_PONG</DT
20130><DD
20131><P
20132>play animation going forwards, then
20133 backwards.</P
20134></DD
20135><DT
20136>SMOOTH</DT
20137><DD
20138><P
20139>slide in the X direction, instead of playing
20140 separate frames.</P
20141></DD
20142><DT
20143>ROTATE</DT
20144><DD
20145><P
20146>Animate texture rotation.</P
20147></DD
20148><DT
20149>SCALE</DT
20150><DD
20151><P
20152>Animate the texture scale.</P
20153></DD
20154></DL
20155></DIV
20156></DIV
20157><DIV
20158CLASS="section"
20159><HR><H2
20160CLASS="section"
20161><A
20162NAME="AEN5851"
20163>C.15. Particle System Constants</A
20164></H2
20165><P
20166>These constants are used in calls to the <A
20167HREF="#AEN3149"
20168>llParticleSystem</A
20169> api to
20170 specify parameters.</P
20171><P
20172></P
20173><DIV
20174CLASS="variablelist"
20175><P
20176><B
20177>Particle System Parameters</B
20178></P
20179><DL
20180><DT
20181>PSYS_PART_FLAGS</DT
20182><DD
20183><P
20184>Each particle that is emitted by the particle system
20185 is simulated based on the following flags. To use multiple
20186 flags, bitwise or (|) them together.</P
20187><P
20188></P
20189><DIV
20190CLASS="variablelist"
20191><P
20192><B
20193>PSYS_PART_FLAGS Values</B
20194></P
20195><DL
20196><DT
20197>PSYS_PART_INTERP_COLOR_MASK</DT
20198><DD
20199><P
20200>Interpolate both the color and alpha
20201 from the start value to the end
20202 value.</P
20203></DD
20204><DT
20205>PSYS_PART_INTERP_SCALE_MASK</DT
20206><DD
20207><P
20208>Interpolate the particle scale from
20209 the start value to the end value.</P
20210></DD
20211><DT
20212>PSYS_PART_WIND_MASK</DT
20213><DD
20214><P
20215>Particles have their velocity damped
20216 towards the wind velocity.</P
20217></DD
20218><DT
20219>PSYS_PART_BOUNCE_MASK</DT
20220><DD
20221><P
20222>Particles bounce off of a plane at the
20223 object's Z height.</P
20224></DD
20225><DT
20226>PSYS_PART_FOLLOW_SRC_MASK</DT
20227><DD
20228><P
20229>The particle position is relative to
20230 the source object's position.</P
20231></DD
20232><DT
20233>PSYS_PART_FOLLOW_VELOCITY_MASK</DT
20234><DD
20235><P
20236>The particle orientation is rotated so
20237 the vertical axis faces towards the particle
20238 velocity.</P
20239></DD
20240><DT
20241>PSYS_PART_TARGET_POS_MASK</DT
20242><DD
20243><P
20244>The particle heads towards the
20245 location of the target object as defined by
20246 PSYS_SRC_TARGET_KEY.</P
20247></DD
20248><DT
20249>PSYS_PART_EMISSIVE_MASK</DT
20250><DD
20251><P
20252>The particle glows.</P
20253></DD
20254><DT
20255>PSYS_PART_RANDOM_ACCEL_MASK</DT
20256><DD
20257><P
20258>(not implemented)</P
20259></DD
20260><DT
20261>PSYS_PART_RANDOM_VEL_MASK</DT
20262><DD
20263><P
20264>(not implemented)</P
20265></DD
20266><DT
20267>PSYS_PART_TRAIL_MASK</DT
20268><DD
20269><P
20270>(not implemented)</P
20271></DD
20272></DL
20273></DIV
20274></DD
20275><DT
20276>PSYS_SRC_PATTERN</DT
20277><DD
20278><P
20279>The pattern which is used to generate particles. Use
20280 one of the following values:</P
20281><P
20282></P
20283><DIV
20284CLASS="variablelist"
20285><P
20286><B
20287>PSYS_SRC_PATTERN Values</B
20288></P
20289><DL
20290><DT
20291>PSYS_SRC_PATTERN_DROP</DT
20292><DD
20293><P
20294>Drop particles at the source
20295 position.</P
20296></DD
20297><DT
20298>PSYS_SRC_PATTERN_EXPLODE</DT
20299><DD
20300><P
20301>Shoot particles out in all directions,
20302 using the burst parameters.</P
20303></DD
20304><DT
20305>PSYS_SRC_PATTERN_ANGLE</DT
20306><DD
20307><P
20308>Shoot particles across a 2 dimensional
20309 area defined by the arc created from
20310 PSYS_SRC_OUTERANGLE. There will be an open area
20311 defined by PSYS_SRC_INNERANGLE within the larger
20312 arc.</P
20313></DD
20314><DT
20315>PSYS_SRC_PATTERN_ANGLE_CONE</DT
20316><DD
20317><P
20318>Shoot particles out in a 3 dimensional
20319 cone with an outer arc of PSYS_SRC_OUTERANGLE and an
20320 inner open area defined by
20321 PSYS_SRC_INNERANGLE.</P
20322></DD
20323></DL
20324></DIV
20325></DD
20326><DT
20327>PSYS_PART_START_COLOR</DT
20328><DD
20329><P
20330>a vector &#60;r,g,b&#62; which determines the starting
20331 color of the object.</P
20332></DD
20333><DT
20334>PSYS_PART_START_ALPHA</DT
20335><DD
20336><P
20337>a float which determines the starting alpha of
20338 the object.</P
20339></DD
20340><DT
20341>PSYS_PART_END_COLOR</DT
20342><DD
20343><P
20344>a vector &#60;r, g, b&#62; which determines the ending
20345 color of the object.</P
20346></DD
20347><DT
20348>PSYS_PART_END_ALPHA</DT
20349><DD
20350><P
20351>a float which determines the ending alpha of
20352 the object.</P
20353></DD
20354><DT
20355>PSYS_PART_START_SCALE</DT
20356><DD
20357><P
20358>a vector &#60;sx, sy, z&#62;, which is the starting
20359 size of the particle billboard in meters (z is
20360 ignored).</P
20361></DD
20362><DT
20363>PSYS_PART_END_SCALE</DT
20364><DD
20365><P
20366>a vector &#60;sx, sy, z&#62;, which is the ending size
20367 of the particle billboard in meters (z is
20368 ignored).</P
20369></DD
20370><DT
20371>PSYS_PART_MAX_AGE</DT
20372><DD
20373><P
20374>age in seconds of a particle at which it
20375 dies.</P
20376></DD
20377><DT
20378>PSYS_SRC_ACCEL</DT
20379><DD
20380><P
20381>a vector &#60;x, y, z&#62; which is the acceleration
20382 to apply on particles.</P
20383></DD
20384><DT
20385>PSYS_SRC_TEXTURE</DT
20386><DD
20387><P
20388>an asset name for the texture to use for the
20389 particles.</P
20390></DD
20391><DT
20392>PSYS_SRC_BURST_RATE</DT
20393><DD
20394><P
20395>how often to release a particle burst (float
20396 seconds).</P
20397></DD
20398><DT
20399>PSYS_SRC_INNERANGLE</DT
20400><DD
20401><P
20402>specifies the inner angle of the arc created
20403 by the PSYS_SRC_PATTERN_ANGLE or
20404 PSYS_SRC_PATTERN_ANGLE_CONE source pattern. The area
20405 specified will not have particles in it..</P
20406></DD
20407><DT
20408>PSYS_SRC_OUTERANGLE</DT
20409><DD
20410><P
20411>specifies the outer angle of the arc created
20412 by the PSYS_SRC_PATTERN_ANGLE or
20413 PSYS_SRC_PATTERN_ANGLE_CONE source pattern. The area
20414 between the outer and inner angle will be filled with
20415 particles..</P
20416></DD
20417><DT
20418>PSYS_SRC_BURST_PART_COUNT</DT
20419><DD
20420><P
20421>how many particles to release in a
20422 burst.</P
20423></DD
20424><DT
20425>PSYS_SRC_BURST_RADIUS</DT
20426><DD
20427><P
20428>what distance from the center of the object to
20429 create the particles.</P
20430></DD
20431><DT
20432>PSYS_SRC_BURST_SPEED_MIN</DT
20433><DD
20434><P
20435>minimum speed that a particle should be
20436 moving.</P
20437></DD
20438><DT
20439>PSYS_SRC_BURST_SPEED_MAX</DT
20440><DD
20441><P
20442>maximum speed that a particle should be
20443 moving.</P
20444></DD
20445><DT
20446>PSYS_SRC_MAX_AGE</DT
20447><DD
20448><P
20449>how long this particle system should last, 0.0
20450 means forever.</P
20451></DD
20452><DT
20453>PSYS_SRC_TARGET_KEY</DT
20454><DD
20455><P
20456>the key of a target object to move towards if
20457 PSYS_PART_TARGET_POS_MASK is enabled.</P
20458></DD
20459><DT
20460>PSYS_SRC_OMEGA</DT
20461><DD
20462><P
20463>Sets the angular velocity to rotate the axis
20464 that SRC_PATTERN_ANGLE and SRC_PATTERN_ANGLE_CONE
20465 use..</P
20466></DD
20467></DL
20468></DIV
20469></DIV
20470><DIV
20471CLASS="section"
20472><HR><H2
20473CLASS="section"
20474><A
20475NAME="AEN6005"
20476>C.16. Agent Data Constants</A
20477></H2
20478><P
20479>These constants are used in calls to the <A
20480HREF="#AEN3346"
20481>llRequestAgentData</A
20482> api to
20483 collect information about an agent which will be provided in the
20484 <A
20485HREF="#AEN4997"
20486>dataserver event</A
20487>.</P
20488><P
20489></P
20490><DIV
20491CLASS="variablelist"
20492><P
20493><B
20494>Agent Data Constants</B
20495></P
20496><DL
20497><DT
20498>DATA_ONLINE</DT
20499><DD
20500><P
20501>"1" for online "0" for
20502 offline.</P
20503></DD
20504><DT
20505>DATA_NAME</DT
20506><DD
20507><P
20508>The name of the agent.</P
20509></DD
20510><DT
20511>DATA_BORN</DT
20512><DD
20513><P
20514>The date the agent was born returned in ISO
20515 8601 format of YYYY-MM-DD.</P
20516></DD
20517><DT
20518>DATA_RATING</DT
20519><DD
20520><P
20521>Returns the agent ratings as a comma separated
20522 string of six integers. They are:
20523 <P
20524></P
20525><OL
20526TYPE="1"
20527><LI
20528><P
20529>Positive rated behavior</P
20530></LI
20531><LI
20532><P
20533>Negative rated behavior</P
20534></LI
20535><LI
20536><P
20537>Positive rated appearance</P
20538></LI
20539><LI
20540><P
20541>Negative rated appearance</P
20542></LI
20543><LI
20544><P
20545>Positive rated building</P
20546></LI
20547><LI
20548><P
20549>Negative rated building</P
20550></LI
20551></OL
20552>
20553 </P
20554></DD
20555></DL
20556></DIV
20557></DIV
20558><DIV
20559CLASS="section"
20560><HR><H2
20561CLASS="section"
20562><A
20563NAME="AEN6041"
20564>C.17. Float Constants</A
20565></H2
20566><P
20567>LSL provides a small collection of floating point constants
20568 for use in float arithmetic. These constants are usually employed
20569 while performing trigonometric calculations, but are sometimes
20570 useful for other applications such as specifying arc radians to
20571 sensor or particle system functions.</P
20572><P
20573></P
20574><DIV
20575CLASS="variablelist"
20576><P
20577><B
20578>Float Constants</B
20579></P
20580><DL
20581><DT
20582>PI</DT
20583><DD
20584><P
20585>3.14159265 - The radians of a
20586 hemicircle.</P
20587></DD
20588><DT
20589>TWO_PI</DT
20590><DD
20591><P
20592>6.28318530 - The radians of a
20593 circle.</P
20594></DD
20595><DT
20596>PI_BY_TWO</DT
20597><DD
20598><P
20599>1.57079633 - The radians of a quarter
20600 circle.</P
20601></DD
20602><DT
20603>DEG_TO_RAD</DT
20604><DD
20605><P
20606>0.01745329 - Number of radians per degree.
20607 You can use this to convert degrees to radians by multiplying
20608 the degrees by this number.</P
20609></DD
20610><DT
20611>RAD_TO_DEG</DT
20612><DD
20613><P
20614>57.2957795 - Number of degrees per radian. You
20615 can use this number to convert radians to degrees by
20616 multiplying the radians by this number.</P
20617></DD
20618><DT
20619>SQRT2</DT
20620><DD
20621><P
20622>1.41421356 - The square root of 2.</P
20623></DD
20624></DL
20625></DIV
20626></DIV
20627><DIV
20628CLASS="section"
20629><HR><H2
20630CLASS="section"
20631><A
20632NAME="AEN6070"
20633>C.18. Key Constant</A
20634></H2
20635><P
20636>There is only one key constant which acts as an invalid
20637 key: NULL_KEY.</P
20638></DIV
20639><DIV
20640CLASS="section"
20641><HR><H2
20642CLASS="section"
20643><A
20644NAME="AEN6073"
20645>C.19. Miscellaneous Integer Constants</A
20646></H2
20647><P
20648>There is one uncategorized integer constant which is used in
20649 some of the texturing and coloring api: ALL_SIDES</P
20650></DIV
20651><DIV
20652CLASS="section"
20653><HR><H2
20654CLASS="section"
20655><A
20656NAME="AEN6076"
20657>C.20. Miscellaneous String
20658 Constants</A
20659></H2
20660><P
20661>There is one uncategorized string constant
20662 which is used in the <A
20663HREF="#AEN4997"
20664>dataserver</A
20665> event:
20666 EOF</P
20667></DIV
20668><DIV
20669CLASS="section"
20670><HR><H2
20671CLASS="section"
20672><A
20673NAME="AEN6080"
20674>C.21. Vector Constant</A
20675></H2
20676><P
20677>There is only one vector constant which acts as a zero
20678 vector: ZERO_VECTOR = &#60;0,0,0&#62;.</P
20679></DIV
20680><DIV
20681CLASS="section"
20682><HR><H2
20683CLASS="section"
20684><A
20685NAME="AEN6083"
20686>C.22. Rotation Constant</A
20687></H2
20688><P
20689>There is only one rotation constant which acts as a zero
20690 rotation: ZERO_ROTATION = &#60;0,0,0,1&#62;.</P
20691></DIV
20692><DIV
20693CLASS="section"
20694><HR><H2
20695CLASS="section"
20696><A
20697NAME="AEN6086"
20698>C.23. Simulator Data Constants</A
20699></H2
20700><P
20701>These constants are used in calls to the <A
20702HREF="#AEN3391"
20703>llRequestSimulatorData</A
20704> api to
20705 collect information about a simulator which will be provided in the
20706 <A
20707HREF="#AEN4997"
20708>dataserver event</A
20709>.</P
20710><P
20711></P
20712><DIV
20713CLASS="variablelist"
20714><P
20715><B
20716>Simulator Data Constants</B
20717></P
20718><DL
20719><DT
20720>DATA_SIM_POS</DT
20721><DD
20722><P
20723>The global position of the simulator. Cast the
20724 value to a vector.</P
20725></DD
20726><DT
20727>DATA_SIM_STATUS</DT
20728><DD
20729><P
20730>The status of the simulator. Currently, this may be one of the following:
20731 <P
20732></P
20733><UL
20734><LI
20735STYLE="list-style-type: opencircle"
20736><P
20737>up</P
20738></LI
20739><LI
20740STYLE="list-style-type: opencircle"
20741><P
20742>down</P
20743></LI
20744><LI
20745STYLE="list-style-type: opencircle"
20746><P
20747>stopping</P
20748></LI
20749><LI
20750STYLE="list-style-type: opencircle"
20751><P
20752>starting</P
20753></LI
20754><LI
20755STYLE="list-style-type: opencircle"
20756><P
20757>crashed</P
20758></LI
20759></UL
20760>
20761 </P
20762></DD
20763></DL
20764></DIV
20765></DIV
20766><DIV
20767CLASS="section"
20768><HR><H2
20769CLASS="section"
20770><A
20771NAME="AEN6112"
20772>C.24. Vehicle Parameters</A
20773></H2
20774><P
20775></P
20776><DIV
20777CLASS="variablelist"
20778><P
20779><B
20780>Parameters</B
20781></P
20782><DL
20783><DT
20784><A
20785HREF="#AEN956"
20786>VEHICLE_LINEAR_FRICTION_TIMESCALE</A
20787></DT
20788><DD
20789><P
20790>A vector of timescales for exponential decay of the
20791 vehicle's linear velocity along its preferred axes of motion (at, left,
20792 up). Range = [0.07, inf) seconds for each element of the vector.
20793 </P
20794></DD
20795><DT
20796><A
20797HREF="#AEN956"
20798>VEHICLE_ANGULAR_FRICTION_TIMESCALE</A
20799></DT
20800><DD
20801><P
20802>A vector of timescales for exponential decay of the
20803 vehicle's angular velocity about its preferred axes of motion (at,
20804 left, up). Range = [0.07, inf) seconds for each element of the vector.
20805 </P
20806></DD
20807><DT
20808><A
20809HREF="#AEN866"
20810>VEHICLE_LINEAR_MOTOR_DIRECTION</A
20811></DT
20812><DD
20813><P
20814>The direction and magnitude (in preferred frame) of the
20815 vehicle's linear motor. The vehicle will accelerate (or decelerate if
20816 necessary) to match its velocity to its motor. Range of magnitude =
20817 [0, 30] meters/second.
20818 </P
20819></DD
20820><DT
20821><A
20822HREF="#AEN866"
20823>VEHICLE_LINEAR_MOTOR_OFFSET</A
20824></DT
20825><DD
20826><P
20827>The offset point from the vehicle's center of mass at which
20828 the linear motor's impulse is applied. This allows the linear motor
20829 to also cause rotational torque. Range of magnitude = [0, 100]
20830 meters.</P
20831></DD
20832><DT
20833><A
20834HREF="#AEN866"
20835>VEHICLE_LINEAR_MOTOR_TIMESCALE</A
20836></DT
20837><DD
20838><P
20839>The timescale for exponential approach to full
20840 linear motor velocity.</P
20841></DD
20842><DT
20843><A
20844HREF="#AEN866"
20845>VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE</A
20846></DT
20847><DD
20848><P
20849>The timescale for exponential decay of the linear
20850 motor's magnitude.</P
20851></DD
20852><DT
20853><A
20854HREF="#AEN898"
20855>VEHICLE_ANGULAR_MOTOR_DIRECTION</A
20856></DT
20857><DD
20858><P
20859>The direction and magnitude (in preferred frame)
20860 of the vehicle's angular motor.The vehicle will accelerate (or
20861 decelerate if necessary) to match its velocity to its
20862 motor.</P
20863></DD
20864><DT
20865><A
20866HREF="#AEN898"
20867>VEHICLE_ANGULAR_MOTOR_TIMESCALE</A
20868></DT
20869><DD
20870><P
20871>The timescale for exponential approach to full
20872 angular motor velocity.</P
20873></DD
20874><DT
20875><A
20876HREF="#AEN898"
20877>VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE</A
20878></DT
20879><DD
20880><P
20881>The timescale for exponential decay of the angular
20882 motor's magnitude.</P
20883></DD
20884><DT
20885><A
20886HREF="#AEN979"
20887>VEHICLE_HOVER_HEIGHT</A
20888></DT
20889><DD
20890><P
20891>The height (above the terrain or water, or global)
20892 at which the vehicle will try to hover.</P
20893></DD
20894><DT
20895><A
20896HREF="#AEN979"
20897>VEHICLE_HOVER_EFFICIENCY</A
20898></DT
20899><DD
20900><P
20901>A slider between minimum (0.0 = bouncy) and
20902 maximum (1.0 = fast as possible) damped motion of the hover
20903 behavior.</P
20904></DD
20905><DT
20906><A
20907HREF="#AEN979"
20908>VEHICLE_HOVER_TIMESCALE</A
20909></DT
20910><DD
20911><P
20912>The period of bounce (or timescale of exponential
20913 approach, depending on the hover efficiency) for the vehicle to
20914 hover to the proper height.</P
20915></DD
20916><DT
20917><A
20918HREF="#AEN972"
20919>VEHICLE_BUOYANCY</A
20920></DT
20921><DD
20922><P
20923>A slider between minimum (0.0) and maximum
20924 anti-gravity (1.0).</P
20925></DD
20926><DT
20927><A
20928HREF="#vehicle_linear_deflection"
20929>VEHICLE_LINEAR_DEFLECTION_EFFICIENCY</A
20930></DT
20931><DD
20932><P
20933>A slider between minimum (0.0) and maximum (1.0)
20934 deflection of linear velocity. That is, it's a simple scalar for
20935 modulating the strength of linear deflection.</P
20936></DD
20937><DT
20938><A
20939HREF="#vehicle_linear_deflection"
20940>VEHICLE_LINEAR_DEFLECTION_TIMESCALE</A
20941></DT
20942><DD
20943><P
20944>The timescale for exponential success of linear
20945 deflection. It is another way to specify how much time
20946 it takes for the vehicle's linear velocity to be redirected to
20947 it's preferred axis of motion.</P
20948></DD
20949><DT
20950><A
20951HREF="#vehicle_angular_deflection"
20952>VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY</A
20953></DT
20954><DD
20955><P
20956>A slider between minimum (0.0) and maximum (1.0)
20957 deflection of angular orientation. That is, it's a simple scalar
20958 for modulating the strength of angular deflection such that the
20959 vehicle's preferred axis of motion points toward it's real
20960 velocity.</P
20961></DD
20962><DT
20963><A
20964HREF="#vehicle_angular_deflection"
20965>VEHICLE_ANGULAR_DEFLECTION_TIMESCALE</A
20966></DT
20967><DD
20968><P
20969>The timescale for exponential success of angular
20970 deflection. It's another way to specify the strength
20971 of the vehicle's tendency to reorient itself so that it's
20972 preferred axis of motion agrees with it's true
20973 velocity.</P
20974></DD
20975><DT
20976><A
20977HREF="#AEN938"
20978>VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY</A
20979></DT
20980><DD
20981><P
20982>A slider between minimum (0.0 = wobbly) and
20983 maximum (1.0 = firm as possible) stability of the vehicle to keep
20984 itself upright.</P
20985></DD
20986><DT
20987><A
20988HREF="#AEN938"
20989>VEHICLE_VERTICAL_ATTRACTION_TIMESCALE</A
20990></DT
20991><DD
20992><P
20993>The period of wobble, or timescale for exponential
20994 approach, of the vehicle to rotate such that it's preferred
20995 "up" axis is oriented along the world's "up"
20996 axis.</P
20997></DD
20998><DT
20999><A
21000HREF="#AEN949"
21001>VEHICLE_BANKING_EFFICIENCY</A
21002></DT
21003><DD
21004><P
21005>A slider between anti (-1.0), none (0.0), and
21006 maximum (1.0) banking strength.</P
21007></DD
21008><DT
21009><A
21010HREF="#AEN949"
21011>VEHICLE_BANKING_MIX</A
21012></DT
21013><DD
21014><P
21015>A slider between static (0.0) and dynamic (1.0)
21016 banking. "Static" means the banking scales only with the
21017 angle of roll, whereas "dynamic" is a term that also
21018 scales with the vehicle's linear speed.</P
21019></DD
21020><DT
21021><A
21022HREF="#AEN949"
21023>VEHICLE_BANKING_TIMESCALE</A
21024></DT
21025><DD
21026><P
21027>The timescale for banking to exponentially
21028 approach it's maximum effect. This is another way to scale the
21029 strength of the banking effect, however it affects the term that
21030 is proportional to the difference between what the banking
21031 behavior is trying to do, and what the vehicle is actually
21032 doing.</P
21033></DD
21034><DT
21035><A
21036HREF="#AEN990"
21037>VEHICLE_REFERENCE_FRAME</A
21038></DT
21039><DD
21040><P
21041>A rotation of the vehicle's preferred axes of
21042 motion and orientation (at, left, up) with respect to the
21043 vehicle's local frame (x, y, z).</P
21044></DD
21045></DL
21046></DIV
21047></DIV
21048><DIV
21049CLASS="section"
21050><HR><H2
21051CLASS="section"
21052><A
21053NAME="AEN6231"
21054>C.25. Vehicle Flags</A
21055></H2
21056><P
21057></P
21058><DIV
21059CLASS="variablelist"
21060><P
21061><B
21062>Flags</B
21063></P
21064><DL
21065><DT
21066><A
21067NAME="const_vehicle_flag_no_deflection_up"
21068></A
21069>VEHICLE_FLAG_NO_DEFLECTION_UP</DT
21070><DD
21071><P
21072>This flag prevents
21073 <A
21074HREF="#vehicle_linear_deflection"
21075>linear deflection</A
21076>
21077 parallel to world z-axis. This is useful for preventing ground
21078 vehicles with large linear deflection, like bumper cars, from climbing
21079 their linear deflection into the sky.</P
21080></DD
21081><DT
21082><A
21083NAME="const_vehicle_flag_limit_roll_only"
21084></A
21085>VEHICLE_FLAG_LIMIT_ROLL_ONLY</DT
21086><DD
21087><P
21088>For vehicles with
21089 <A
21090HREF="#AEN938"
21091>vertical attractor</A
21092>
21093 that want to be able to climb/dive, for instance, airplanes that want
21094 to use the <A
21095HREF="#AEN949"
21096>banking</A
21097>
21098 feature.</P
21099></DD
21100><DT
21101><A
21102NAME="const_vehicle_flag_hover_water_only"
21103></A
21104>VEHICLE_FLAG_HOVER_WATER_ONLY</DT
21105><DD
21106><P
21107>Ignore terrain height when
21108 <A
21109HREF="#AEN979"
21110>hovering</A
21111>.</P
21112></DD
21113><DT
21114><A
21115NAME="const_vehicle_flag_hover_terrain_only"
21116></A
21117>VEHICLE_FLAG_HOVER_TERRAIN_ONLY</DT
21118><DD
21119><P
21120>Ignore water height when
21121 <A
21122HREF="#AEN979"
21123>hovering</A
21124>.</P
21125></DD
21126><DT
21127><A
21128NAME="const_vehicle_flag_hover_global_height"
21129></A
21130>VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT</DT
21131><DD
21132><P
21133><A
21134HREF="#AEN979"
21135>Hover</A
21136> at
21137 global height instead of height above ground or water.</P
21138></DD
21139><DT
21140><A
21141NAME="const_vehicle_flag_hover_up_only"
21142></A
21143>VEHICLE_FLAG_HOVER_UP_ONLY</DT
21144><DD
21145><P
21146><A
21147HREF="#AEN979"
21148>Hover</A
21149> doesn't
21150 push down. Use this flag for hovering
21151 vehicles that should be able to jump above their
21152 <A
21153HREF="#vehicle_hover_height"
21154>hover height</A
21155>.
21156 </P
21157></DD
21158><DT
21159>VEHICLE_FLAG_LIMIT_MOTOR_UP</DT
21160><DD
21161><P
21162>Prevents ground vehicles from motoring into the
21163 sky. This flag has a subtle effect when used with conjunction
21164 with <A
21165HREF="#AEN949"
21166>banking</A
21167>: the strength
21168 of the banking will decay when the vehicle no longer experiences
21169 collisions. The decay timescale is the same as
21170 <A
21171HREF="#vehicle_banking_timescale"
21172>VEHICLE_BANKING_TIMESCALE
21173 </A
21174>. This is to help prevent ground vehicles from steering
21175 when they are in mid jump.
21176 </P
21177></DD
21178><DT
21179><A
21180NAME="const_vehicle_flag_mouselook_steer"
21181></A
21182>VEHICLE_FLAG_MOUSELOOK_STEER</DT
21183><DD
21184><P
21185>Steer the vehicle using the mouse. Use this
21186 flag to make the angular motor try to make the vehicle
21187 turn such that its <A
21188HREF="#vehicle_roll_pitch_yaw"
21189>local
21190 x-axis</A
21191> points in the same direction as
21192 the client-side camera.</P
21193></DD
21194><DT
21195><A
21196NAME="const_vehicle_flag_mouselook_bank"
21197></A
21198>VEHICLE_FLAG_MOUSELOOK_BANK</DT
21199><DD
21200><P
21201>Same as above, but relies on
21202 <A
21203HREF="#AEN949"
21204>banking</A
21205>. It remaps
21206 left-right motions of the client camera (also known as "yaw") to
21207 rotations about the vehicle's <A
21208HREF="#vehicle_roll_pitch_yaw"
21209>&#13; local x-axis</A
21210>.
21211 </P
21212></DD
21213><DT
21214><A
21215NAME="const_vehicle_flag_camera_decoupled"
21216></A
21217>VEHICLE_FLAG_CAMERA_DECOUPLED</DT
21218><DD
21219><P
21220>Makes mouselook camera rotate independently of
21221 the vehicle. By default the client mouselook camera will rotate
21222 about with the vehicle, however when this flag is set the camera
21223 direction is independent of the vehicle's rotation.
21224 </P
21225></DD
21226></DL
21227></DIV
21228></DIV
21229><DIV
21230CLASS="section"
21231><HR><H2
21232CLASS="section"
21233><A
21234NAME="AEN6288"
21235>C.26. Vehicle Types</A
21236></H2
21237><P
21238></P
21239><DIV
21240CLASS="variablelist"
21241><P
21242><B
21243>Types</B
21244></P
21245><DL
21246><DT
21247>VEHICLE_TYPE_SLED</DT
21248><DD
21249><P
21250>Simple vehicle that bumps along the ground, and likes to move along
21251 it's local x-axis.</P
21252><DIV
21253CLASS="informalexample"
21254><P
21255></P
21256><A
21257NAME="AEN6296"
21258></A
21259><PRE
21260CLASS="programlisting"
21261>&#13;// most friction for left-right, least for up-down
21262llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;30, 1, 1000&#62; );
21263
21264// no angular friction
21265llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, &#60;1000, 1000, 1000&#62; );
21266
21267// no linear motor
21268llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21269llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1000 );
21270llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 120 );
21271
21272// no angular motor
21273llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21274llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1000 );
21275llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 120 );
21276
21277// no hover (but with timescale of 10 sec if enabled)
21278llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21279llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 10 );
21280llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 10 );
21281llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 );
21282
21283// maximum linear deflection with timescale of 1 second
21284llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 );
21285llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1 );
21286
21287// no angular deflection
21288llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 );
21289llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 );
21290
21291// no vertical attractor (doesn't mind flipping over)
21292llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 );
21293llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1000 );
21294
21295// no banking
21296llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 0 );
21297llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 );
21298llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 10 );
21299
21300// default rotation of local frame
21301llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21302
21303// remove these flags
21304llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY
21305 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21306 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
21307 | VEHICLE_FLAG_HOVER_UP_ONLY );
21308
21309// set these flags (the limit_roll flag will have no effect
21310// until banking is enabled, if ever)
21311llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21312 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21313 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21314 </PRE
21315><P
21316></P
21317></DIV
21318></DD
21319><DT
21320>VEHICLE_TYPE_CAR</DT
21321><DD
21322><P
21323>Another vehicle that bounces along the ground but
21324 needs the motors to be driven from external controls or <A
21325HREF="#AEN5211"
21326>timer</A
21327> events.</P
21328><DIV
21329CLASS="informalexample"
21330><P
21331></P
21332><A
21333NAME="AEN6303"
21334></A
21335><PRE
21336CLASS="programlisting"
21337>&#13;// most friction for left-right, least for up-down
21338llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;100, 2, 1000&#62; );
21339
21340// no angular friction
21341llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, &#60;1000, 1000, 1000&#62; );
21342
21343// linear motor wins after about a second, decays after about a minute
21344llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21345llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1 );
21346llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21347
21348// angular motor wins after a second, decays in less time than that
21349llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21350llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1 );
21351llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.8 );
21352
21353// no hover
21354llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21355llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0 );
21356llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 1000 );
21357llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 );
21358
21359// maximum linear deflection with timescale of 2 seconds
21360llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 );
21361llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 2 );
21362
21363// no angular deflection
21364llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 );
21365llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 );
21366
21367// critically damped vertical attractor
21368llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 );
21369llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 10 );
21370
21371// weak negative critically damped banking
21372llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.2 );
21373llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 );
21374llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 );
21375
21376// default rotation of local frame
21377llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21378
21379// remove these flags
21380llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY
21381 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21382 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT);
21383
21384// set these flags
21385llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21386 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21387 | VEHICLE_FLAG_HOVER_UP_ONLY
21388 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21389 </PRE
21390><P
21391></P
21392></DIV
21393></DD
21394><DT
21395>VEHICLE_TYPE_BOAT</DT
21396><DD
21397><P
21398>Hovers over water with lots of friction and some angular deflection.</P
21399><DIV
21400CLASS="informalexample"
21401><P
21402></P
21403><A
21404NAME="AEN6309"
21405></A
21406><PRE
21407CLASS="programlisting"
21408>&#13;// least for forward-back, most friction for up-down
21409llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;10, 3, 2&#62; );
21410
21411// uniform angular friction (setting it as a scalar rather than a vector)
21412llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 10 );
21413
21414// linear motor wins after about five seconds, decays after about a minute
21415llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21416llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 5 );
21417llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21418
21419// angular motor wins after four seconds, decays in same amount of time
21420llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21421llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 4 );
21422llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 4 );
21423
21424// hover
21425llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21426llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.5 );
21427llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 2.0 );
21428llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 );
21429
21430// halfway linear deflection with timescale of 3 seconds
21431llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5 );
21432llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 3 );
21433
21434// angular deflection
21435llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.5 );
21436llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 5 );
21437
21438// somewhat bouncy vertical attractor
21439llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5 );
21440llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 5 );
21441
21442// weak negative damped banking
21443llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.3 );
21444llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.8 );
21445llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 );
21446
21447// default rotation of local frame
21448llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21449
21450// remove these flags
21451llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21452 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21453 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT);
21454
21455// set these flags
21456llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21457 | VEHICLE_FLAG_HOVER_WATER_ONLY
21458 | VEHICLE_FLAG_HOVER_UP_ONLY
21459 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21460 </PRE
21461><P
21462></P
21463></DIV
21464></DD
21465><DT
21466>VEHICLE_TYPE_AIRPLANE</DT
21467><DD
21468><P
21469>Uses linear deflection for lift, no hover, and banking to turn.</P
21470><DIV
21471CLASS="informalexample"
21472><P
21473></P
21474><A
21475NAME="AEN6315"
21476></A
21477><PRE
21478CLASS="programlisting"
21479>&#13;// very little friction along forward-back axis
21480llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;200, 10, 5&#62; );
21481
21482// uniform angular friction
21483llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 20 );
21484
21485// linear motor
21486llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21487llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 2 );
21488llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21489
21490// angular motor
21491llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21492llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 4 );
21493llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 8 );
21494
21495// no hover
21496llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21497llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.5 );
21498llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 1000 );
21499llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 );
21500
21501// linear deflection
21502llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5 );
21503llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.5 );
21504
21505// angular deflection
21506llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 1.0 );
21507llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 2.0 );
21508
21509// vertical attractor
21510llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.9 );
21511llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2 );
21512
21513// banking
21514llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 1 );
21515llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.7 );
21516llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 2 );
21517
21518// default rotation of local frame
21519llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21520
21521// remove these flags
21522llRemoveVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21523 | VEHICLE_FLAG_HOVER_WATER_ONLY
21524 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21525 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
21526 | VEHICLE_FLAG_HOVER_UP_ONLY
21527 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21528
21529// set these flags
21530llSetVehicleFlags( VEHICLE_FLAG_LIMIT_ROLL_ONLY );
21531 </PRE
21532><P
21533></P
21534></DIV
21535></DD
21536><DT
21537>VEHICLE_TYPE_BALLOON</DT
21538><DD
21539><P
21540>Hover, and friction, but no deflection.</P
21541><DIV
21542CLASS="informalexample"
21543><P
21544></P
21545><A
21546NAME="AEN6321"
21547></A
21548><PRE
21549CLASS="programlisting"
21550>&#13;// uniform linear friction
21551llSetVehicleFloatParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, 5 );
21552
21553// uniform angular friction
21554llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 10 );
21555
21556// linear motor
21557llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21558llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 5 );
21559llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21560
21561// angular motor
21562llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21563llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 6 );
21564llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 10 );
21565
21566// hover
21567llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 5 );
21568llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.8 );
21569llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 10 );
21570llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 );
21571
21572// no linear deflection
21573llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0 );
21574llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 5 );
21575
21576// no angular deflection
21577llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 );
21578llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 5 );
21579
21580// no vertical attractor
21581llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 );
21582llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1000 );
21583
21584// no banking
21585llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 0 );
21586llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.7 );
21587llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 5 );
21588
21589// default rotation of local frame
21590llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21591
21592// remove all flags
21593llRemoveVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21594 | VEHICLE_FLAG_HOVER_WATER_ONLY
21595 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21596 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21597 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
21598 | VEHICLE_FLAG_HOVER_UP_ONLY
21599 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21600 </PRE
21601><P
21602></P
21603></DIV
21604></DD
21605></DL
21606></DIV
21607></DIV
21608><DIV
21609CLASS="section"
21610><HR><H2
21611CLASS="section"
21612><A
21613NAME="AEN6323"
21614>C.27. Primitive Constants</A
21615></H2
21616><P
21617>These constants are used in calls to the <A
21618HREF="#AEN4020"
21619>llSetPrimitiveParams</A
21620> and <A
21621HREF="#AEN2075"
21622>llGetPrimitiveParams</A
21623> api to
21624 specify parameters.</P
21625><P
21626></P
21627><DIV
21628CLASS="variablelist"
21629><P
21630><B
21631>Primitive Parameters</B
21632></P
21633><DL
21634><DT
21635>PRIM_TYPE</DT
21636><DD
21637><P
21638>This allows the various primitive shape parameters to be controlled. PRIM_TYPE must be followed by
21639 appropriate arguments based on which type is selected.</P
21640><P
21641></P
21642><DIV
21643CLASS="variablelist"
21644><P
21645><B
21646>PRIM_TYPE Values</B
21647></P
21648><DL
21649><DT
21650>PRIM_TYPE_BOX</DT
21651><DD
21652><P
21653>Sets the primitive to a box, followed by integer hole shape, vector cut, float hollow, vector twist, vector top size, and vector top shear.</P
21654></DD
21655><DT
21656>PRIM_TYPE_CYLINDER</DT
21657><DD
21658><P
21659>Sets the primitive to a cylinder, followed by integer hole shape, vector cut, float hollow, vector twist, vector top size, and vector top shear.</P
21660></DD
21661><DT
21662>PRIM_TYPE_PRISM</DT
21663><DD
21664><P
21665>Sets the primitive to a prism, followed by integer hole shape, vector cut, float hollow, vector twist, vector top size, and vector top shear.</P
21666></DD
21667><DT
21668>PRIM_TYPE_SPHERE</DT
21669><DD
21670><P
21671>Sets the primitive to a sphere, followed by integer hole shape, vector cut, float hollow, vector twist, and vector dimple.</P
21672></DD
21673><DT
21674>PRIM_TYPE_TORUS</DT
21675><DD
21676><P
21677>Sets the primitive to a torus, followed by integer hole shape, vector cut, float hollow, vector twist, vector hole size, vector top shear, vector advanced cut, vector taper, float revolutions, float radius offset, and float skew.</P
21678></DD
21679><DT
21680>PRIM_TYPE_TUBE</DT
21681><DD
21682><P
21683>Sets the primitive to a tube, followed by integer hole shape, vector cut, float hollow, vector twist, vector hole size, vector top shear, vector advanced cut, vector taper, float revolutions, float radius offset, and float skew.</P
21684></DD
21685><DT
21686>PRIM_TYPE_RING</DT
21687><DD
21688><P
21689>Sets the primitive to a ring, followed by integer hole shape, vector cut, float hollow, vector twist, vector hole size, vector top shear, vector advanced cut, vector taper, float revolutions, float radius offset, and float skew.</P
21690></DD
21691></DL
21692></DIV
21693><P
21694>Choose hole shape from one of PRIM_HOLE_DEFAULT, PRIM_HOLE_CIRCLE, PRIM_HOLE_SQUARE, or PRIM_HOLE_TRIANGLE.</P
21695></DD
21696><DT
21697>PRIM_MATERIAL</DT
21698><DD
21699><P
21700>Choose material from one of PRIM_MATERIAL_STONE, PRIM_MATERIAL_METAL, PRIM_MATERIAL_GLASS,
21701 PRIM_MATERIAL_WOOD, PRIM_MATERIAL_FLESH, PRIM_MATERIAL_PLASTIC, PRIM_MATERIAL_RUBBER, or PRIM_MATERIAL_LIGHT.</P
21702></DD
21703><DT
21704>PRIM_PHYSICS</DT
21705><DD
21706><P
21707>Set physics to TRUE or FALSE.</P
21708></DD
21709><DT
21710>PRIM_TEMP_ON_REZ</DT
21711><DD
21712><P
21713>Set temporary on rez to TRUE or FALSE.</P
21714></DD
21715><DT
21716>PRIM_PHANTOM</DT
21717><DD
21718><P
21719>Set phantom to TRUE or FALSE.</P
21720></DD
21721><DT
21722>PRIM_POSITION</DT
21723><DD
21724><P
21725>Sets the position with a vector.</P
21726></DD
21727><DT
21728>PRIM_SIZE</DT
21729><DD
21730><P
21731>Sets the size with a vector.</P
21732></DD
21733><DT
21734>PRIM_ROTATION</DT
21735><DD
21736><P
21737>Sets the rotation with a rotation.</P
21738></DD
21739><DT
21740>PRIM_TEXTURE</DT
21741><DD
21742><P
21743>Followed by an integer face, key id, vector repeats, vector offsets, and float rotation in radians.</P
21744></DD
21745><DT
21746>PRIM_COLOR</DT
21747><DD
21748><P
21749>Followed by an integer face, vector color, and float alpha.</P
21750></DD
21751><DT
21752>PRIM_BUMP_SHINY</DT
21753><DD
21754><P
21755>Followed by an integer face, one of PRIM_SHINY_NONE, PRIM_SHINY_LOW, PRIM_SHINY_MEDIUM, or PRIM_SHINY_HIGH,
21756 and one of PRIM_BUMP_NONE, PRIM_BUMP_BRIGHT, PRIM_BUMP_DARK, PRIM_BUMP_WOOD, PRIM_BUMP_BARK,
21757 PRIM_BUMP_BRICKS, PRIM_BUMP_CHECKER, PRIM_BUMP_CONCRETE, PRIM_BUMP_TILE, PRIM_BUMP_STONE, PRIM_BUMP_DISKS,
21758 PRIM_BUMP_GRAVEL, PRIM_BUMP_BLOBS, PRIM_BUMP_SIDING, PRIM_BUMP_LARGETILE, PRIM_BUMP_STUCCO, PRIM_BUMP_SUCTION,
21759 or PRIM_BUMP_WEAVE.</P
21760></DD
21761><DT
21762>PRIM_GLOW</DT
21763><DD
21764><P
21765>Followed by an integer face and a float glow value (in range 0.0 to 1.0).</P
21766></DD
21767></DL
21768></DIV
21769></DIV
21770><DIV
21771CLASS="section"
21772><HR><H2
21773CLASS="section"
21774><A
21775NAME="AEN6409"
21776>C.28. XML-RPC Constants</A
21777></H2
21778><P
21779>These constants are passed to the remote_data event: REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, and REMOTE_DATA_REPLY.</P
21780></DIV
21781><DIV
21782CLASS="section"
21783><HR><H2
21784CLASS="section"
21785><A
21786NAME="AEN6412"
21787>C.29. Permission Mask Constants</A
21788></H2
21789><P
21790>These MASK_* constants are used as arguments to <A
21791HREF="#AEN2009"
21792>llGetObjectPermMask</A
21793> and <A
21794HREF="#AEN1801"
21795>llGetInventoryPermMask</A
21796>. These functions return combinations of PERM_* constants.</P
21797><P
21798></P
21799><DIV
21800CLASS="variablelist"
21801><P
21802><B
21803>Mask and Permission Constants</B
21804></P
21805><DL
21806><DT
21807>MASK_BASE</DT
21808><DD
21809><P
21810>Specifies base permissions. These permissions are identical to owner permissions except in the case that the object is locked. When an object is locked, owner permissions are stripped of move/modify rights (thus, the 'locking'). On unlock, owner permissions revert back to base permissions.</P
21811></DD
21812><DT
21813>MASK_OWNER</DT
21814><DD
21815><P
21816>Specifies owner permissions. These are never more permissive than base permissions.</P
21817></DD
21818><DT
21819>MASK_GROUP</DT
21820><DD
21821><P
21822>Specifies group permissions. These are never more permissive than owner permissions.</P
21823></DD
21824><DT
21825>MASK_EVERYONE</DT
21826><DD
21827><P
21828>Specifies everyone permissions. These are never more permissive than owner permissions.</P
21829></DD
21830><DT
21831>MASK_NEXT</DT
21832><DD
21833><P
21834>Specifies next owner permissions. These are never more permissive than base permissions.</P
21835></DD
21836><DT
21837>PERM_MOVE</DT
21838><DD
21839><P
21840>Set if movement is allowed.</P
21841></DD
21842><DT
21843>PERM_MODIFY</DT
21844><DD
21845><P
21846>Set if modification is allowed.</P
21847></DD
21848><DT
21849>PERM_COPY</DT
21850><DD
21851><P
21852>Set if copying is allowed.</P
21853></DD
21854><DT
21855>PERM_TRANSFER</DT
21856><DD
21857><P
21858>Set if transfers are allowed.</P
21859></DD
21860><DT
21861>PERM_ALL</DT
21862><DD
21863><P
21864>This is returned if all other PERM_* are set.</P
21865></DD
21866></DL
21867></DIV
21868></DIV
21869><DIV
21870CLASS="section"
21871><HR><H2
21872CLASS="section"
21873><A
21874NAME="AEN6459"
21875>C.30. Parcel Media Constants</A
21876></H2
21877><P
21878>These constants are passed to the <A
21879HREF="#AEN3031"
21880>llParcelMediaCommand</A
21881> to control playback of movies and other multimedia within a land parcel.</P
21882><P
21883></P
21884><DIV
21885CLASS="variablelist"
21886><P
21887><B
21888>Parcel Media Constants</B
21889></P
21890><DL
21891><DT
21892>PARCEL_MEDIA_COMMAND_STOP</DT
21893><DD
21894><P
21895>Stop the media stream and go back to the first frame.</P
21896></DD
21897><DT
21898>PARCEL_MEDIA_COMMAND_PAUSE</DT
21899><DD
21900><P
21901>Pause the media stream (stop playing but stay on current frame).</P
21902></DD
21903><DT
21904>PARCEL_MEDIA_COMMAND_PLAY</DT
21905><DD
21906><P
21907>Start the media stream playing from the current frame and stop when the end is reached.</P
21908></DD
21909><DT
21910>PARCEL_MEDIA_COMMAND_LOOP_SET</DT
21911><DD
21912><P
21913>Used to get or set the parcel's media looping variable.
21914 </P
21915></DD
21916><DT
21917>PARCEL_MEDIA_COMMAND_TEXTURE</DT
21918><DD
21919><P
21920>Use this to get or set the parcel's media texture.
21921 </P
21922></DD
21923><DT
21924>PARCEL_MEDIA_COMMAND_URL</DT
21925><DD
21926><P
21927>Used to get or set the parcel's media url.
21928 </P
21929></DD
21930><DT
21931>PARCEL_MEDIA_COMMAND_TYPE</DT
21932><DD
21933><P
21934>Used to get or set the parcel's media mimetype.
21935 </P
21936></DD
21937><DT
21938>PARCEL_MEDIA_COMMAND_DESC</DT
21939><DD
21940><P
21941>Used to get or set the parcel's media description.
21942 </P
21943></DD
21944><DT
21945>PARCEL_MEDIA_COMMAND_SIZE</DT
21946><DD
21947><P
21948>Used to get or set the parcel's media pixel size.
21949 </P
21950></DD
21951><DT
21952>PARCEL_MEDIA_COMMAND_TIME</DT
21953><DD
21954><P
21955>Move a media stream to a specific time.
21956 </P
21957></DD
21958><DT
21959>PARCEL_MEDIA_COMMAND_AGENT</DT
21960><DD
21961><P
21962>Applies the media command to the specified agent only.
21963 </P
21964></DD
21965><DT
21966>PARCEL_MEDIA_COMMAND_UNLOAD</DT
21967><DD
21968><P
21969>Completely unloads the movie and restores the original texture.
21970 </P
21971></DD
21972><DT
21973>PARCEL_MEDIA_COMMAND_AUTO_ALIGN</DT
21974><DD
21975><P
21976>Sets the parcel option 'Auto scale content'.
21977 </P
21978></DD
21979><DT
21980>PARCEL_MEDIA_COMMAND_LOOP</DT
21981><DD
21982><P
21983>This command has been depricated in favor of the PARCEL_MEDIA_COMMAND_LOOP_SET above.
21984 </P
21985></DD
21986></DL
21987></DIV
21988></DIV
21989><DIV
21990CLASS="section"
21991><HR><H2
21992CLASS="section"
21993><A
21994NAME="AEN6521"
21995>C.31. Click Action Constants</A
21996></H2
21997><P
21998>These constants are passed to <A
21999HREF="#AEN3791"
22000>llSetClickAction</A
22001> to define default behavior when a resident clicks upon a prim.</P
22002><P
22003></P
22004><DIV
22005CLASS="variablelist"
22006><P
22007><B
22008>Click Action Constants</B
22009></P
22010><DL
22011><DT
22012>CLICK_ACTION_NONE</DT
22013><DD
22014><P
22015>Disables the click action for this prim.</P
22016></DD
22017><DT
22018>CLICK_ACTION_TOUCH</DT
22019><DD
22020><P
22021>Sets the click-action behavior of this prim to touch.</P
22022></DD
22023><DT
22024>CLICK_ACTION_SIT</DT
22025><DD
22026><P
22027>Sets the click-action behavior of this prim to sit.</P
22028></DD
22029><DT
22030>CLICK_ACTION_BUY</DT
22031><DD
22032><P
22033>Sets the click-action behavior of this prim to buy.</P
22034></DD
22035><DT
22036>CLICK_ACTION_PAY</DT
22037><DD
22038><P
22039>Sets the click-action behavior of this prim to pay.</P
22040></DD
22041><DT
22042>CLICK_ACTION_OPEN</DT
22043><DD
22044><P
22045>Sets the click-action behavior of this prim to open.</P
22046></DD
22047><DT
22048>CLICK_ACTION_PLAY</DT
22049><DD
22050><P
22051>Sets the click-action behavior of this prim to play.</P
22052></DD
22053><DT
22054>CLICK_ACTION_OPEN_MEDIA</DT
22055><DD
22056><P
22057>Sets the click-action behavior of this prim to open-media.</P
22058></DD
22059><DT
22060>CLICK_ACTION_SIT</DT
22061><DD
22062><P
22063>Sets the click-action behavior of this prim to sit.</P
22064></DD
22065><DT
22066>CLICK_ACTION_SIT</DT
22067><DD
22068><P
22069>Sets the click-action behavior of this prim to sit.</P
22070></DD
22071></DL
22072></DIV
22073></DIV
22074></DIV
22075></DIV
22076></BODY
22077></HTML
22078> \ No newline at end of file