aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/lsl_guide.html
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:46 -0500
committerJacek Antonelli2008-08-15 23:44:46 -0500
commit38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4 (patch)
treeadca584755d22ca041a2dbfc35d4eca01f70b32c /linden/indra/newview/lsl_guide.html
parentREADME.txt (diff)
downloadmeta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.zip
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.gz
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.bz2
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.xz
Second Life viewer sources 1.13.2.12
Diffstat (limited to 'linden/indra/newview/lsl_guide.html')
-rw-r--r--linden/indra/newview/lsl_guide.html21801
1 files changed, 21801 insertions, 0 deletions
diff --git a/linden/indra/newview/lsl_guide.html b/linden/indra/newview/lsl_guide.html
new file mode 100644
index 0000000..e0faf7b
--- /dev/null
+++ b/linden/indra/newview/lsl_guide.html
@@ -0,0 +1,21801 @@
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; 2003 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="#AEN3088"
1326>llParcelMediaQuery</A
1327></DT
1328><DT
1329>A.175. <A
1330HREF="#AEN3102"
1331>llParseString2List</A
1332></DT
1333><DT
1334>A.176. <A
1335HREF="#AEN3124"
1336>llParseStringKeepNulls</A
1337></DT
1338><DT
1339>A.177. <A
1340HREF="#AEN3146"
1341>llParticleSystem</A
1342></DT
1343><DT
1344>A.178. <A
1345HREF="#AEN3159"
1346>llPassCollisions</A
1347></DT
1348><DT
1349>A.179. <A
1350HREF="#AEN3170"
1351>llPassTouches</A
1352></DT
1353><DT
1354>A.180. <A
1355HREF="#AEN3181"
1356>llPlaySound</A
1357></DT
1358><DT
1359>A.181. <A
1360HREF="#AEN3195"
1361>llPlaySoundSlave</A
1362></DT
1363><DT
1364>A.182. <A
1365HREF="#AEN3207"
1366>llPointAt</A
1367></DT
1368><DT
1369>A.183. <A
1370HREF="#AEN3217"
1371>llPow</A
1372></DT
1373><DT
1374>A.184. <A
1375HREF="#AEN3230"
1376>llPreloadSound</A
1377></DT
1378><DT
1379>A.185. <A
1380HREF="#AEN3240"
1381>llPushObject</A
1382></DT
1383><DT
1384>A.186. <A
1385HREF="#AEN3258"
1386>llReleaseControls</A
1387></DT
1388><DT
1389>A.187. <A
1390HREF="#AEN3268"
1391>llRemoteDataReply</A
1392></DT
1393><DT
1394>A.188. <A
1395HREF="#AEN3281"
1396>llRemoteDataSetRegion</A
1397></DT
1398><DT
1399>A.189. <A
1400HREF="#AEN3289"
1401>llRemoteLoadScript</A
1402></DT
1403><DT
1404>A.190. <A
1405HREF="#AEN3297"
1406>llRemoteLoadScriptPin</A
1407></DT
1408><DT
1409>A.191. <A
1410HREF="#AEN3322"
1411>llRemoveInventory</A
1412></DT
1413><DT
1414>A.192. <A
1415HREF="#AEN3332"
1416>llRemoveVehicleFlags</A
1417></DT
1418><DT
1419>A.193. <A
1420HREF="#AEN3343"
1421>llRequestAgentData</A
1422></DT
1423><DT
1424>A.194. <A
1425HREF="#AEN3360"
1426>llRequestInventoryData</A
1427></DT
1428><DT
1429>A.195. <A
1430HREF="#AEN3372"
1431>llRequestPermissions</A
1432></DT
1433><DT
1434>A.196. <A
1435HREF="#AEN3388"
1436>llRequestSimulatorData</A
1437></DT
1438><DT
1439>A.197. <A
1440HREF="#AEN3405"
1441>llResetScript</A
1442></DT
1443><DT
1444>A.198. <A
1445HREF="#AEN3413"
1446>llResetOtherScript</A
1447></DT
1448><DT
1449>A.199. <A
1450HREF="#AEN3423"
1451>llResetTime</A
1452></DT
1453><DT
1454>A.200. <A
1455HREF="#AEN3431"
1456>llRezAtRoot</A
1457></DT
1458><DT
1459>A.201. <A
1460HREF="#AEN3458"
1461>llRezObject</A
1462></DT
1463><DT
1464>A.202. <A
1465HREF="#AEN3483"
1466>llRot2Angle</A
1467></DT
1468><DT
1469>A.203. <A
1470HREF="#AEN3493"
1471>llRot2Axis</A
1472></DT
1473><DT
1474>A.204. <A
1475HREF="#AEN3503"
1476>llRot2Euler</A
1477></DT
1478><DT
1479>A.205. <A
1480HREF="#AEN3513"
1481>llRot2Fwd</A
1482></DT
1483><DT
1484>A.206. <A
1485HREF="#AEN3523"
1486>llRot2Left</A
1487></DT
1488><DT
1489>A.207. <A
1490HREF="#AEN3533"
1491>llRot2Up</A
1492></DT
1493><DT
1494>A.208. <A
1495HREF="#AEN3543"
1496>llRotBetween</A
1497></DT
1498><DT
1499>A.209. <A
1500HREF="#AEN3556"
1501>llRotLookAt</A
1502></DT
1503><DT
1504>A.210. <A
1505HREF="#AEN3576"
1506>llRotTarget</A
1507></DT
1508><DT
1509>A.211. <A
1510HREF="#AEN3590"
1511>llRotTargetRemove</A
1512></DT
1513><DT
1514>A.212. <A
1515HREF="#AEN3600"
1516>llRotateTexture</A
1517></DT
1518><DT
1519>A.213. <A
1520HREF="#AEN3615"
1521>llRound</A
1522></DT
1523><DT
1524>A.214. <A
1525HREF="#AEN3625"
1526>llSameGroup</A
1527></DT
1528><DT
1529>A.215. <A
1530HREF="#AEN3637"
1531>llSay</A
1532></DT
1533><DT
1534>A.216. <A
1535HREF="#AEN3651"
1536>llScaleTexture</A
1537></DT
1538><DT
1539>A.217. <A
1540HREF="#AEN3668"
1541>llScriptDanger</A
1542></DT
1543><DT
1544>A.218. <A
1545HREF="#AEN3677"
1546>llSendRemoteData</A
1547></DT
1548><DT
1549>A.219. <A
1550HREF="#AEN3690"
1551>llSensor</A
1552></DT
1553><DT
1554>A.220. <A
1555HREF="#AEN3717"
1556>llSensorRemove</A
1557></DT
1558><DT
1559>A.221. <A
1560HREF="#AEN3725"
1561>llSensorRepeat</A
1562></DT
1563><DT
1564>A.222. <A
1565HREF="#AEN3755"
1566>llSetAlpha</A
1567></DT
1568><DT
1569>A.223. <A
1570HREF="#AEN3770"
1571>llSetBuoyancy</A
1572></DT
1573><DT
1574>A.224. <A
1575HREF="#AEN3779"
1576>llSetCameraAtOffset</A
1577></DT
1578><DT
1579>A.225. <A
1580HREF="#AEN3788"
1581>llForceMouselook</A
1582></DT
1583><DT
1584>A.226. <A
1585HREF="#AEN3797"
1586>llSetCameraEyeOffset</A
1587></DT
1588><DT
1589>A.227. <A
1590HREF="#AEN3806"
1591>llSetColor</A
1592></DT
1593><DT
1594>A.228. <A
1595HREF="#AEN3820"
1596>llSetDamage</A
1597></DT
1598><DT
1599>A.229. <A
1600HREF="#AEN3829"
1601>llSetForce</A
1602></DT
1603><DT
1604>A.230. <A
1605HREF="#AEN3843"
1606>llSetForceAndTorque</A
1607></DT
1608><DT
1609>A.231. <A
1610HREF="#AEN3860"
1611>llSetHoverHeight</A
1612></DT
1613><DT
1614>A.232. <A
1615HREF="#AEN3875"
1616>llSetLinkAlpha</A
1617></DT
1618><DT
1619>A.233. <A
1620HREF="#AEN3894"
1621>llSetLinkColor</A
1622></DT
1623><DT
1624>A.234. <A
1625HREF="#AEN3913"
1626>llSetLocalRot</A
1627></DT
1628><DT
1629>A.235. <A
1630HREF="#AEN3922"
1631>llSetObjectDesc</A
1632></DT
1633><DT
1634>A.236. <A
1635HREF="#AEN3932"
1636>llSetObjectName</A
1637></DT
1638><DT
1639>A.237. <A
1640HREF="#AEN3942"
1641>llSetParcelMusicURL</A
1642></DT
1643><DT
1644>A.238. <A
1645HREF="#AEN3952"
1646>llSetPayPrice</A
1647></DT
1648><DT
1649>A.239. <A
1650HREF="#AEN3964"
1651>llSetPos</A
1652></DT
1653><DT
1654>A.240. <A
1655HREF="#AEN3973"
1656>llSetPrimitiveParams</A
1657></DT
1658><DT
1659>A.241. <A
1660HREF="#AEN3987"
1661>llSetRemoteScriptAccessPin</A
1662></DT
1663><DT
1664>A.242. <A
1665HREF="#AEN3996"
1666>llSetRot</A
1667></DT
1668><DT
1669>A.243. <A
1670HREF="#AEN4005"
1671>llSetScale</A
1672></DT
1673><DT
1674>A.244. <A
1675HREF="#AEN4014"
1676>llSetScriptState</A
1677></DT
1678><DT
1679>A.245. <A
1680HREF="#AEN4025"
1681>llSetSitText</A
1682></DT
1683><DT
1684>A.246. <A
1685HREF="#AEN4035"
1686>llSetSoundQueueing</A
1687></DT
1688><DT
1689>A.247. <A
1690HREF="#AEN4048"
1691>llSetStatus</A
1692></DT
1693><DT
1694>A.248. <A
1695HREF="#AEN4063"
1696>llSetText</A
1697></DT
1698><DT
1699>A.249. <A
1700HREF="#AEN4079"
1701>llSetTexture</A
1702></DT
1703><DT
1704>A.250. <A
1705HREF="#AEN4093"
1706>llSetTextureAnim</A
1707></DT
1708><DT
1709>A.251. <A
1710HREF="#AEN4141"
1711>llSetTimerEvent</A
1712></DT
1713><DT
1714>A.252. <A
1715HREF="#AEN4153"
1716>llSetTorque</A
1717></DT
1718><DT
1719>A.253. <A
1720HREF="#AEN4167"
1721>llSetTouchText</A
1722></DT
1723><DT
1724>A.254. <A
1725HREF="#AEN4177"
1726>llSetVehicleFlags</A
1727></DT
1728><DT
1729>A.255. <A
1730HREF="#AEN4188"
1731>llSetVehicleFloatParam</A
1732></DT
1733><DT
1734>A.256. <A
1735HREF="#AEN4202"
1736>llSetVehicleType</A
1737></DT
1738><DT
1739>A.257. <A
1740HREF="#AEN4213"
1741>llSetVehicleRotationParam</A
1742></DT
1743><DT
1744>A.258. <A
1745HREF="#AEN4227"
1746>llSetVehicleVectorParam</A
1747></DT
1748><DT
1749>A.259. <A
1750HREF="#AEN4241"
1751>llShout</A
1752></DT
1753><DT
1754>A.260. <A
1755HREF="#AEN4255"
1756>llSin</A
1757></DT
1758><DT
1759>A.261. <A
1760HREF="#AEN4265"
1761>llSitTarget</A
1762></DT
1763><DT
1764>A.262. <A
1765HREF="#AEN4278"
1766>llSleep</A
1767></DT
1768><DT
1769>A.263. <A
1770HREF="#AEN4288"
1771>llSqrt</A
1772></DT
1773><DT
1774>A.264. <A
1775HREF="#AEN4299"
1776>llStartAnimation</A
1777></DT
1778><DT
1779>A.265. <A
1780HREF="#AEN4531"
1781>llStopAnimation</A
1782></DT
1783><DT
1784>A.266. <A
1785HREF="#AEN4541"
1786>llStopHover</A
1787></DT
1788><DT
1789>A.267. <A
1790HREF="#AEN4549"
1791>llStopLookAt</A
1792></DT
1793><DT
1794>A.268. <A
1795HREF="#AEN4557"
1796>llStopMoveToTarget</A
1797></DT
1798><DT
1799>A.269. <A
1800HREF="#AEN4565"
1801>llStopPointAt</A
1802></DT
1803><DT
1804>A.270. <A
1805HREF="#AEN4573"
1806>llStopSound</A
1807></DT
1808><DT
1809>A.271. <A
1810HREF="#AEN4584"
1811>llStringLength</A
1812></DT
1813><DT
1814>A.272. <A
1815HREF="#AEN4594"
1816>llSubStringIndex</A
1817></DT
1818><DT
1819>A.273. <A
1820HREF="#AEN4605"
1821>llStringToBase64</A
1822></DT
1823><DT
1824>A.274. <A
1825HREF="#AEN4614"
1826>llTakeControls</A
1827></DT
1828><DT
1829>A.275. <A
1830HREF="#AEN4631"
1831>llTan</A
1832></DT
1833><DT
1834>A.276. <A
1835HREF="#AEN4641"
1836>llTarget</A
1837></DT
1838><DT
1839>A.277. <A
1840HREF="#AEN4654"
1841>llTargetOmega</A
1842></DT
1843><DT
1844>A.278. <A
1845HREF="#AEN4671"
1846>llTargetRemove</A
1847></DT
1848><DT
1849>A.279. <A
1850HREF="#AEN4681"
1851>llTeleportAgentHome</A
1852></DT
1853><DT
1854>A.280. <A
1855HREF="#AEN4690"
1856>llToLower</A
1857></DT
1858><DT
1859>A.281. <A
1860HREF="#AEN4699"
1861>llToUpper</A
1862></DT
1863><DT
1864>A.282. <A
1865HREF="#AEN4709"
1866>llTriggerSound</A
1867></DT
1868><DT
1869>A.283. <A
1870HREF="#AEN4723"
1871>llTriggerSoundLimited</A
1872></DT
1873><DT
1874>A.284. <A
1875HREF="#AEN4743"
1876>llUnescapeURL</A
1877></DT
1878><DT
1879>A.285. <A
1880HREF="#AEN4753"
1881>llUnSit</A
1882></DT
1883><DT
1884>A.286. <A
1885HREF="#AEN4763"
1886>llVecDist</A
1887></DT
1888><DT
1889>A.287. <A
1890HREF="#AEN4776"
1891>llVecMag</A
1892></DT
1893><DT
1894>A.288. <A
1895HREF="#AEN4786"
1896>llVecNorm</A
1897></DT
1898><DT
1899>A.289. <A
1900HREF="#AEN4796"
1901>llVolumeDetect</A
1902></DT
1903><DT
1904>A.290. <A
1905HREF="#AEN4805"
1906>llWater</A
1907></DT
1908><DT
1909>A.291. <A
1910HREF="#AEN4815"
1911>llWhisper</A
1912></DT
1913><DT
1914>A.292. <A
1915HREF="#AEN4829"
1916>llWind</A
1917></DT
1918><DT
1919>A.293. <A
1920HREF="#AEN4839"
1921>llXorBase64Strings</A
1922></DT
1923></DL
1924></DD
1925><DT
1926>B. <A
1927HREF="#AEN4852"
1928>Events</A
1929></DT
1930><DD
1931><DL
1932><DT
1933>B.1. <A
1934HREF="#AEN4855"
1935>at_rot_target</A
1936></DT
1937><DT
1938>B.2. <A
1939HREF="#AEN4869"
1940>at_target</A
1941></DT
1942><DT
1943>B.3. <A
1944HREF="#AEN4883"
1945>attach</A
1946></DT
1947><DT
1948>B.4. <A
1949HREF="#AEN4893"
1950>changed</A
1951></DT
1952><DT
1953>B.5. <A
1954HREF="#AEN4904"
1955>collision</A
1956></DT
1957><DT
1958>B.6. <A
1959HREF="#AEN4914"
1960>collision_end</A
1961></DT
1962><DT
1963>B.7. <A
1964HREF="#AEN4924"
1965>collision_start</A
1966></DT
1967><DT
1968>B.8. <A
1969HREF="#AEN4934"
1970>control</A
1971></DT
1972><DT
1973>B.9. <A
1974HREF="#AEN4950"
1975>dataserver</A
1976></DT
1977><DT
1978>B.10. <A
1979HREF="#AEN4965"
1980>email</A
1981></DT
1982><DT
1983>B.11. <A
1984HREF="#AEN4983"
1985>land_collision</A
1986></DT
1987><DT
1988>B.12. <A
1989HREF="#AEN4992"
1990>land_collision_end</A
1991></DT
1992><DT
1993>B.13. <A
1994HREF="#AEN5001"
1995>land_collision_start</A
1996></DT
1997><DT
1998>B.14. <A
1999HREF="#AEN5010"
2000>link_message</A
2001></DT
2002><DT
2003>B.15. <A
2004HREF="#AEN5026"
2005>listen</A
2006></DT
2007><DT
2008>B.16. <A
2009HREF="#AEN5045"
2010>money</A
2011></DT
2012><DT
2013>B.17. <A
2014HREF="#AEN5058"
2015>moving_end</A
2016></DT
2017><DT
2018>B.18. <A
2019HREF="#AEN5066"
2020>moving_start</A
2021></DT
2022><DT
2023>B.19. <A
2024HREF="#AEN5074"
2025>no_sensor</A
2026></DT
2027><DT
2028>B.20. <A
2029HREF="#AEN5083"
2030>not_at_rot_target</A
2031></DT
2032><DT
2033>B.21. <A
2034HREF="#AEN5092"
2035>not_at_target</A
2036></DT
2037><DT
2038>B.22. <A
2039HREF="#AEN5101"
2040>object_rez</A
2041></DT
2042><DT
2043>B.23. <A
2044HREF="#AEN5112"
2045>on_rez</A
2046></DT
2047><DT
2048>B.24. <A
2049HREF="#AEN5124"
2050>run_time_permissions</A
2051></DT
2052><DT
2053>B.25. <A
2054HREF="#AEN5136"
2055>sensor</A
2056></DT
2057><DT
2058>B.26. <A
2059HREF="#AEN5148"
2060>state_entry</A
2061></DT
2062><DT
2063>B.27. <A
2064HREF="#AEN5156"
2065>state_exit</A
2066></DT
2067><DT
2068>B.28. <A
2069HREF="#AEN5164"
2070>timer</A
2071></DT
2072><DT
2073>B.29. <A
2074HREF="#AEN5173"
2075>touch</A
2076></DT
2077><DT
2078>B.30. <A
2079HREF="#AEN5184"
2080>touch_end</A
2081></DT
2082><DT
2083>B.31. <A
2084HREF="#AEN5195"
2085>touch_start</A
2086></DT
2087><DT
2088>B.32. <A
2089HREF="#AEN5206"
2090>remote_data</A
2091></DT
2092></DL
2093></DD
2094><DT
2095>C. <A
2096HREF="#AEN5245"
2097>Constants</A
2098></DT
2099><DD
2100><DL
2101><DT
2102>C.1. <A
2103HREF="#AEN5248"
2104>Boolean Constants</A
2105></DT
2106><DT
2107>C.2. <A
2108HREF="#AEN5257"
2109>Status Constants</A
2110></DT
2111><DT
2112>C.3. <A
2113HREF="#AEN5291"
2114>Object Type Constants</A
2115></DT
2116><DT
2117>C.4. <A
2118HREF="#AEN5313"
2119>Permission Constants</A
2120></DT
2121><DT
2122>C.5. <A
2123HREF="#AEN5364"
2124>Inventory Constants</A
2125></DT
2126><DT
2127>C.6. <A
2128HREF="#AEN5387"
2129>Pay Price Constants</A
2130></DT
2131><DT
2132>C.7. <A
2133HREF="#AEN5401"
2134>Attachment Constants</A
2135></DT
2136><DT
2137>C.8. <A
2138HREF="#AEN5527"
2139>Land Constants</A
2140></DT
2141><DT
2142>C.9. <A
2143HREF="#AEN5569"
2144>Link Constants</A
2145></DT
2146><DT
2147>C.10. <A
2148HREF="#AEN5596"
2149>Control Constants</A
2150></DT
2151><DT
2152>C.11. <A
2153HREF="#AEN5643"
2154>Change Constants</A
2155></DT
2156><DT
2157>C.12. <A
2158HREF="#AEN5686"
2159>Type Constants</A
2160></DT
2161><DT
2162>C.13. <A
2163HREF="#AEN5720"
2164>Agent Info Constants</A
2165></DT
2166><DT
2167>C.14. <A
2168HREF="#AEN5770"
2169>Texture Animation
2170 Constants</A
2171></DT
2172><DT
2173>C.15. <A
2174HREF="#AEN5804"
2175>Particle System Constants</A
2176></DT
2177><DT
2178>C.16. <A
2179HREF="#AEN5958"
2180>Agent Data Constants</A
2181></DT
2182><DT
2183>C.17. <A
2184HREF="#AEN5994"
2185>Float Constants</A
2186></DT
2187><DT
2188>C.18. <A
2189HREF="#AEN6023"
2190>Key Constant</A
2191></DT
2192><DT
2193>C.19. <A
2194HREF="#AEN6026"
2195>Miscellaneous Integer Constants</A
2196></DT
2197><DT
2198>C.20. <A
2199HREF="#AEN6029"
2200>Miscellaneous String
2201 Constants</A
2202></DT
2203><DT
2204>C.21. <A
2205HREF="#AEN6033"
2206>Vector Constant</A
2207></DT
2208><DT
2209>C.22. <A
2210HREF="#AEN6036"
2211>Rotation Constant</A
2212></DT
2213><DT
2214>C.23. <A
2215HREF="#AEN6039"
2216>Simulator Data Constants</A
2217></DT
2218><DT
2219>C.24. <A
2220HREF="#AEN6065"
2221>Vehicle Parameters</A
2222></DT
2223><DT
2224>C.25. <A
2225HREF="#AEN6184"
2226>Vehicle Flags</A
2227></DT
2228><DT
2229>C.26. <A
2230HREF="#AEN6241"
2231>Vehicle Types</A
2232></DT
2233><DT
2234>C.27. <A
2235HREF="#AEN6276"
2236>Primitive Constants</A
2237></DT
2238><DT
2239>C.28. <A
2240HREF="#AEN6358"
2241>XML-RPC Constants</A
2242></DT
2243><DT
2244>C.29. <A
2245HREF="#AEN6361"
2246>Permission Mask Constants</A
2247></DT
2248><DT
2249>C.30. <A
2250HREF="#AEN6408"
2251>Parcel Media Constants (Movies)</A
2252></DT
2253></DL
2254></DD
2255></DL
2256></DIV
2257><DIV
2258CLASS="LOT"
2259><DL
2260CLASS="LOT"
2261><DT
2262><B
2263>List of Tables</B
2264></DT
2265><DT
2266>3-1. <A
2267HREF="#AEN148"
2268>Binary Arithmetic Operators</A
2269></DT
2270><DT
2271>3-2. <A
2272HREF="#AEN188"
2273>Boolean Operators</A
2274></DT
2275><DT
2276>3-3. <A
2277HREF="#AEN220"
2278>Bitwise Operators</A
2279></DT
2280><DT
2281>3-4. <A
2282HREF="#AEN258"
2283>Vector Arithmetic Operators</A
2284></DT
2285><DT
2286>3-5. <A
2287HREF="#AEN282"
2288>Rotation Arithmetic Operators</A
2289></DT
2290><DT
2291>6-1. <A
2292HREF="#AEN456"
2293>Trigonometry Functions</A
2294></DT
2295><DT
2296>6-2. <A
2297HREF="#AEN505"
2298>Vector Functions</A
2299></DT
2300><DT
2301>6-3. <A
2302HREF="#AEN521"
2303>Rotation Functions</A
2304></DT
2305><DT
2306>7-1. <A
2307HREF="#AEN565"
2308>String Functions</A
2309></DT
2310><DT
2311>8-1. <A
2312HREF="#AEN609"
2313>List Functions</A
2314></DT
2315><DT
2316>9-1. <A
2317HREF="#AEN674"
2318>In World Functions</A
2319></DT
2320><DT
2321>9-2. <A
2322HREF="#AEN699"
2323>Messaging Functions</A
2324></DT
2325><DT
2326>10-1. <A
2327HREF="#AEN719"
2328>Inventory Functions</A
2329></DT
2330></DL
2331></DIV
2332><DIV
2333CLASS="chapter"
2334><HR><H1
2335><A
2336NAME="AEN27"
2337></A
2338>Chapter 1. Introduction</H1
2339><P
2340>The Linden Scripting Language (LSL) is a simple, powerful
2341 language used to attach behaviors to the objects found in Second
2342 Life. It follows the familiar syntax of a c/Java style language,
2343 with an implicit state machine for every script.</P
2344><P
2345>Multiple scripts may also be attached to the same object,
2346 allowing a style of small, single-function scripts to evolve. This
2347 leads to scripts that perform specific functions ("hover", "follow",
2348 etc.) and allows them to be combined to form new behaviors.</P
2349><P
2350>The text of the script is compiled into an executable byte
2351 code, much like Java. This byte code is then run within a virtual
2352 machine on the simulator. Each script receives a time slice of the
2353 total simulator time allocated to scripts, so a simulator with many
2354 scripts would allow each individual script less time rather than
2355 degrading its own performance. In addition, each script executes
2356 within its own chunk of memory, preventing scripts from writing into
2357 protected simulator memory or into other scripts, making it much
2358 harder for scripts to crash the simulator.</P
2359><P
2360>This tutorial introduces the reader to the basic features of
2361 LSL, how to edit and apply your scripts, and a complete reference
2362 for standard linden constants, events, and library functions.</P
2363></DIV
2364><DIV
2365CLASS="chapter"
2366><HR><H1
2367><A
2368NAME="AEN33"
2369></A
2370>Chapter 2. Getting Started</H1
2371><P
2372>You're probably wondering what you can do with LSL, and how
2373 quickly you can do it. We'll start with some simple examples, dissect
2374 them, and introduce you the script development process while
2375 we're at it.</P
2376><DIV
2377CLASS="section"
2378><HR><H2
2379CLASS="section"
2380><A
2381NAME="AEN36"
2382>2.1. Hello Avatar</A
2383></H2
2384><P
2385>Continuing a long tradition of getting started by looking at
2386 a script that says "Hello", we'll do just that. Though obviously
2387 not a particularly useful example on it's own, this example will
2388 introduce us to:</P
2389><P
2390></P
2391><UL
2392><LI
2393><P
2394>Creating a basic script</P
2395></LI
2396><LI
2397><P
2398>Script states</P
2399></LI
2400><LI
2401><P
2402>Calling functions</P
2403></LI
2404><LI
2405><P
2406>Script events</P
2407></LI
2408><LI
2409><P
2410>Applying a script to an object</P
2411></LI
2412></UL
2413><DIV
2414CLASS="section"
2415><HR><H3
2416CLASS="section"
2417><A
2418NAME="AEN50"
2419>2.1.1. Creating the Script</A
2420></H3
2421><P
2422>Start by opening your inventory and selecting 'Create|New
2423 Script' from the inventory pull down menu. This will create an
2424 empty script called 'New Script' in your 'Scripts'
2425 folder. Double click on the text or icon of the script to open
2426 the script in the built in editor. When you open the script, the
2427 viewer will automatically insert a basic skeleton for lsl. It
2428 should look like:</P
2429><P
2430><PRE
2431CLASS="programlisting"
2432>&#13;default
2433{
2434 state_entry()
2435 {
2436 llSay(0, "Hello, Avatar!");
2437 }
2438
2439 touch_start(integer total_number)
2440 {
2441 llSay(0, "Touched.");
2442 }
2443}
2444 </PRE
2445></P
2446><P
2447>A casual inspection of this script reveals that this script
2448 probably says 'Hello, Avatar!' when it enters some state, and it
2449 says 'Touched.' when it is touched. But since this is also
2450 probably the first time you have seen a script we'll dissect this
2451 short listing, explaining each segment individually.</P
2452></DIV
2453><DIV
2454CLASS="section"
2455><HR><H3
2456CLASS="section"
2457><A
2458NAME="AEN56"
2459>2.1.2. Default State</A
2460></H3
2461><P
2462><DIV
2463CLASS="informalexample"
2464><P
2465></P
2466><A
2467NAME="AEN59"
2468></A
2469><PRE
2470CLASS="programlisting"
2471>&#13;default
2472{
2473...
2474}
2475 </PRE
2476><P
2477></P
2478></DIV
2479></P
2480><P
2481>All LSL scripts have a simple implicit state machine with
2482 one or more states. All scripts must have a default state, so
2483 if there is only one state, it will be the 'default'
2484 state. When a script is first started or reset, it will start
2485 out in the default state.</P
2486><P
2487>The default state is declared by placing the default at
2488 the root level of the document, and marking the beginning with
2489 an open brace '{' and ending with a close brace '}'. Because of
2490 it's privileged status, you do not declare that it is fact a
2491 state like you normally would with other states.</P
2492><P
2493>Every time you enter a state, the script engine will
2494 automatically call the state_entry() event and execute the code
2495 found there. On state exit, the script engine will automatically
2496 call the state_exit() event before calling the next state's
2497 state_entry handler. In our example, we call the
2498 <A
2499HREF="#AEN3637"
2500>llSay()</A
2501>
2502 function in state_entry() and do not bother to define a
2503 state_exit() handler. the state entry and exit handlers are a
2504 convenient place to initialize state data and clean up state
2505 specific data such as listen event callback.</P
2506><P
2507>You can read more about the default state, and how to
2508 create and utilize other states in the <A
2509HREF="#AEN427"
2510>states chapter</A
2511>.</P
2512></DIV
2513><DIV
2514CLASS="section"
2515><HR><H3
2516CLASS="section"
2517><A
2518NAME="AEN67"
2519>2.1.3. Functions</A
2520></H3
2521><P
2522>The language comes with well over 200 <A
2523HREF="#AEN999"
2524>built in functions</A
2525> which allow scripts and
2526 objects to interact with their environment. All of the built in
2527 functions start with 'll'.</P
2528><P
2529>The example calls the <A
2530HREF="#AEN3637"
2531>llSay()</A
2532>
2533 function twice, which is used to emit text on the specified channel.
2534 </P
2535><DIV
2536CLASS="funcsynopsis"
2537><P
2538></P
2539><A
2540NAME="AEN73"
2541></A
2542><P
2543><CODE
2544><CODE
2545CLASS="FUNCDEF"
2546>llSay</CODE
2547>(
2548 integer channel
2549 string text
2550 );</CODE
2551></P
2552><P
2553></P
2554></DIV
2555><P
2556>Say text on channel. Channel 0 is the public chat channel
2557 that all avatars see as chat text. Channels 1 to 2,147,483,648
2558 are private channels that aren't sent to avatars but other
2559 scripts can listen for.</P
2560><P
2561>You can define your own functions as long as the name does
2562 not conflict with a reserved word, built in constant, or built
2563 in function.</P
2564></DIV
2565><DIV
2566CLASS="section"
2567><HR><H3
2568CLASS="section"
2569><A
2570NAME="AEN82"
2571>2.1.4. Touch Event</A
2572></H3
2573><P
2574><DIV
2575CLASS="informalexample"
2576><P
2577></P
2578><A
2579NAME="AEN85"
2580></A
2581><PRE
2582CLASS="programlisting"
2583>&#13;touch_start(integer total_number)
2584{
2585 llSay(0, "Touched.");
2586}
2587 </PRE
2588><P
2589></P
2590></DIV
2591></P
2592><P
2593>There are many <A
2594HREF="#AEN4852"
2595>events</A
2596> that can
2597 be detected in your scripts by declaring a handler. The
2598 <A
2599HREF="#AEN5195"
2600> touch_start()</A
2601>
2602 event is raised when a
2603 user touches the object through the user interface.</P
2604></DIV
2605><DIV
2606CLASS="section"
2607><HR><H3
2608CLASS="section"
2609><A
2610NAME="AEN90"
2611>2.1.5. Try it Out</A
2612></H3
2613><P
2614>Now that we have seen the default script, and examined it
2615 in some detail, it is time to see the script in action. Save
2616 the script by clicking on <SPAN
2617CLASS="guibutton"
2618>Save</SPAN
2619>. During
2620 the save process, the editor will save the text of the script
2621 and compile the script into bytecode and then save that. When
2622 you see message 'Compile successful!' in the preview window, you
2623 know the compile and save is done.</P
2624><P
2625>To test the script you will have to apply it to an object
2626 in the world. Create a new object in the world by
2627 <SPAN
2628CLASS="mousebutton"
2629>context clicking</SPAN
2630> in the main world
2631 view and selecting <SPAN
2632CLASS="guimenu"
2633>Create</SPAN
2634>. When the wand
2635 appears, you can create a simple primitive by
2636 <SPAN
2637CLASS="mousebutton"
2638>clicking</SPAN
2639> in the world. Once the
2640 object appears, you can drag your newly created script onto the
2641 object to start the script.</P
2642><P
2643>Soon after dragging the script onto the object, you will
2644 see the message <SAMP
2645CLASS="computeroutput"
2646>Object: Hello
2647 Avatar!</SAMP
2648></P
2649><P
2650>Make sure the touch event is working by
2651 <SPAN
2652CLASS="mousebutton"
2653>clicking</SPAN
2654> on the object. You should
2655 see the message <SAMP
2656CLASS="computeroutput"
2657>Touched printed into the chat
2658 history.</SAMP
2659></P
2660></DIV
2661></DIV
2662><DIV
2663CLASS="section"
2664><HR><H2
2665CLASS="section"
2666><A
2667NAME="AEN103"
2668>2.2. Using The Built-In Editor</A
2669></H2
2670><P
2671>The built in editor comes with most of the typical features
2672 you would expect from a basic text editor. Highlight text with the
2673 mouse, or by holding down the shift key while using the arrow
2674 keys. You can cut, copy, paste, and delete your selection using
2675 the 'Edit' pull down menu or by pressing the usual shortcut
2676 key.</P
2677></DIV
2678><DIV
2679CLASS="section"
2680><HR><H2
2681CLASS="section"
2682><A
2683NAME="AEN106"
2684>2.3. Using Alternative Editors</A
2685></H2
2686><P
2687>Since the built-in editor supports pasting text from the
2688 clipboard, you can employ a different editor to edit your scripts,
2689 copying them into Second Life when you're ready to save them.</P
2690></DIV
2691></DIV
2692><DIV
2693CLASS="chapter"
2694><HR><H1
2695><A
2696NAME="AEN109"
2697></A
2698>Chapter 3. Basics</H1
2699><P
2700>Now that we have seen a very simple script in action, we need
2701 to look at the our toolchest for writing scripts. The next set of
2702 tools we will consider are the basic building blocks for programming
2703 a script, and will be used in every non-trivial script you write.</P
2704><DIV
2705CLASS="section"
2706><HR><H2
2707CLASS="section"
2708><A
2709NAME="AEN112"
2710>3.1. Comments</A
2711></H2
2712><P
2713>Commenting your scripts is a good idea, and will help when
2714 you update and modify the script, or when you adapt parts of it
2715 into other scripts. Unless the meaning is obvious, you should add
2716 comments:</P
2717><P
2718><P
2719></P
2720><UL
2721><LI
2722><P
2723>at the start of the script to explain the
2724 purpose of the script</P
2725></LI
2726><LI
2727><P
2728>before every global variable to describe what
2729 it holds</P
2730></LI
2731><LI
2732><P
2733>before every global function to describe what
2734 it does</P
2735></LI
2736><LI
2737><P
2738>sprinkled through your script wherever the code
2739 solves a problem that took you more than a few minutes to
2740 figure out.</P
2741></LI
2742></UL
2743></P
2744><P
2745>LSL uses Java/C++ style single line comments.</P
2746><P
2747><DIV
2748CLASS="informalexample"
2749><P
2750></P
2751><A
2752NAME="AEN127"
2753></A
2754><PRE
2755CLASS="programlisting"
2756>&#13;// This script toggles a the rotation of an object
2757
2758// g_is_rotating stores the current state of the rotation. TRUE is
2759// rotating, FALSE otherwise.
2760integer g_is_rotating = FALSE;
2761default
2762{
2763 // toggle state during the touch handler
2764 touch(integer num)
2765 {
2766 if(g_is_rotating)
2767 {
2768 // turn off rotation
2769 llTargetOmega(&#60;0,0,1&#62;, 0, 0);
2770 g_is_rotating = FALSE;
2771 }
2772 else
2773 {
2774 // rotate around the positive z axis - up.
2775 llTargetOmega(&#60;0,0,1&#62;, 4, 1);
2776 g_is_rotating = TRUE;
2777 }
2778 }
2779}
2780 </PRE
2781><P
2782></P
2783></DIV
2784></P
2785></DIV
2786><DIV
2787CLASS="section"
2788><HR><H2
2789CLASS="section"
2790><A
2791NAME="AEN129"
2792>3.2. Arithmetic Operations</A
2793></H2
2794><P
2795>Most of the common arithmetic operations are supported in
2796 lsl, and follow the C/Java syntax.</P
2797><DIV
2798CLASS="section"
2799><HR><H3
2800CLASS="section"
2801><A
2802NAME="AEN132"
2803>3.2.1. Assignment</A
2804></H3
2805><P
2806>The most common arithmetic operation is assignment,
2807 denoted with the '=' sign. Loosely translated, it means, take
2808 what you find on the right hand side of the equal sign and
2809 assign it to the left hand side. Any expression that evaluates
2810 to a basic type can be used as the right hand side of an
2811 assignment, but the left hand side must be a normal
2812 variable.</P
2813><P
2814>All basic types support assignment '=', equality '==' and
2815 inequality '!=' operators.</P
2816><P
2817><DIV
2818CLASS="informalexample"
2819><P
2820></P
2821><A
2822NAME="AEN137"
2823></A
2824><PRE
2825CLASS="programlisting"
2826>&#13;// variables to hold a information about the target
2827key g_target;
2828vector g_target_postion;
2829float g_target_distance;
2830
2831// function that demonstrates assignment
2832set_globals(key target, vector pos)
2833{
2834 g_target = target;
2835 g_target_position = pos;
2836
2837 // assignment from the return value of a function
2838 vector my_pos = llGetPos();
2839 g_target_distance = llVecDist(g_target_position, my_pos);
2840}
2841 </PRE
2842><P
2843></P
2844></DIV
2845></P
2846></DIV
2847><DIV
2848CLASS="section"
2849><HR><H3
2850CLASS="section"
2851><A
2852NAME="AEN139"
2853>3.2.2. Hexadecimal Entry</A
2854></H3
2855><P
2856>Integers may be entered in hex form (e.g. 0xffff). For example:</P
2857><P
2858><DIV
2859CLASS="informalexample"
2860><P
2861></P
2862><A
2863NAME="AEN143"
2864></A
2865><PRE
2866CLASS="programlisting"
2867>&#13;integer Mask = 0xff; // Equivalent to integer Mask = 255;
2868integer Bit = 0x0100 // Equivalent to integer Mask = 256;
2869 </PRE
2870><P
2871></P
2872></DIV
2873></P
2874></DIV
2875><DIV
2876CLASS="section"
2877><HR><H3
2878CLASS="section"
2879><A
2880NAME="AEN145"
2881>3.2.3. Binary Arithmetic Operators</A
2882></H3
2883><P
2884>Binary arithmetic operators behave like a function call
2885 that accepts two parameters of the same type, and then return
2886 that type; however, the syntax is slightly different.</P
2887><DIV
2888CLASS="table"
2889><A
2890NAME="AEN148"
2891></A
2892><P
2893><B
2894>Table 3-1. Binary Arithmetic Operators</B
2895></P
2896><TABLE
2897BORDER="1"
2898CLASS="CALSTABLE"
2899><COL><COL><THEAD
2900><TR
2901><TH
2902>Operator</TH
2903><TH
2904>Meaning</TH
2905></TR
2906></THEAD
2907><TBODY
2908><TR
2909><TD
2910>+</TD
2911><TD
2912>Addition</TD
2913></TR
2914><TR
2915><TD
2916>-</TD
2917><TD
2918>Subtraction</TD
2919></TR
2920><TR
2921><TD
2922>*</TD
2923><TD
2924>Multiplication</TD
2925></TR
2926><TR
2927><TD
2928>/</TD
2929><TD
2930>Division</TD
2931></TR
2932><TR
2933><TD
2934>%</TD
2935><TD
2936>Modulo (remainder)</TD
2937></TR
2938><TR
2939><TD
2940>^</TD
2941><TD
2942>Exclusive OR</TD
2943></TR
2944><TR
2945><TD
2946>&#60;&#60;</TD
2947><TD
2948>Shift Left</TD
2949></TR
2950><TR
2951><TD
2952>&#62;&#62;</TD
2953><TD
2954>Shift Right</TD
2955></TR
2956></TBODY
2957></TABLE
2958></DIV
2959><P
2960>Where noted, each type may have a special interpretation
2961 of a binary arithmetic operator. See the <A
2962HREF="#AEN237"
2963>lsl types</A
2964> section for more
2965 details.</P
2966><P
2967><DIV
2968CLASS="informalexample"
2969><P
2970></P
2971><A
2972NAME="AEN183"
2973></A
2974><PRE
2975CLASS="programlisting"
2976>&#13; </PRE
2977><P
2978></P
2979></DIV
2980></P
2981></DIV
2982><DIV
2983CLASS="section"
2984><HR><H3
2985CLASS="section"
2986><A
2987NAME="AEN185"
2988>3.2.4. Boolean Operators</A
2989></H3
2990><P
2991></P
2992><DIV
2993CLASS="table"
2994><A
2995NAME="AEN188"
2996></A
2997><P
2998><B
2999>Table 3-2. Boolean Operators</B
3000></P
3001><TABLE
3002BORDER="1"
3003CLASS="CALSTABLE"
3004><COL><COL><THEAD
3005><TR
3006><TH
3007>Operator</TH
3008><TH
3009>Meaning</TH
3010></TR
3011></THEAD
3012><TBODY
3013><TR
3014><TD
3015>&#60;</TD
3016><TD
3017>Operator returns TRUE if the left hand side is less
3018 than the right hand side.</TD
3019></TR
3020><TR
3021><TD
3022>&#62;</TD
3023><TD
3024>Operator returns TRUE if the left hand side is greater
3025 than the right hand side.</TD
3026></TR
3027><TR
3028><TD
3029>&#60;=</TD
3030><TD
3031>Operator returns TRUE if the left hand side is less
3032 than or equal to the right hand side.</TD
3033></TR
3034><TR
3035><TD
3036>&#62;=</TD
3037><TD
3038>Operator returns TRUE if the left hand side is greater
3039 than or equal to the right hand side.</TD
3040></TR
3041><TR
3042><TD
3043>&#38;&#38;</TD
3044><TD
3045>Operator returns TRUE if the left hand side and right
3046 hand side are both true.</TD
3047></TR
3048><TR
3049><TD
3050>||</TD
3051><TD
3052>Operator returns TRUE if either the left hand or right
3053 hand side are true.</TD
3054></TR
3055><TR
3056><TD
3057>!</TD
3058><TD
3059>Unary operator returns the logical negation of the
3060 expression to the right.</TD
3061></TR
3062></TBODY
3063></TABLE
3064></DIV
3065></DIV
3066><DIV
3067CLASS="section"
3068><HR><H3
3069CLASS="section"
3070><A
3071NAME="AEN217"
3072>3.2.5. Bitwise Operators</A
3073></H3
3074><P
3075></P
3076><DIV
3077CLASS="table"
3078><A
3079NAME="AEN220"
3080></A
3081><P
3082><B
3083>Table 3-3. Bitwise Operators</B
3084></P
3085><TABLE
3086BORDER="1"
3087CLASS="CALSTABLE"
3088><COL><COL><THEAD
3089><TR
3090><TH
3091>Operator</TH
3092><TH
3093>Meaning</TH
3094></TR
3095></THEAD
3096><TBODY
3097><TR
3098><TD
3099>&#38;</TD
3100><TD
3101>Returns the bitwise and of the left and right hand
3102 side.</TD
3103></TR
3104><TR
3105><TD
3106>|</TD
3107><TD
3108>Returns the bitwise or of the left and right hand
3109 side.</TD
3110></TR
3111><TR
3112><TD
3113>~</TD
3114><TD
3115>Unary operator returns the bitwise complement of the
3116 expression to the right.</TD
3117></TR
3118></TBODY
3119></TABLE
3120></DIV
3121></DIV
3122></DIV
3123><DIV
3124CLASS="section"
3125><HR><H2
3126CLASS="section"
3127><A
3128NAME="AEN237"
3129>3.3. Types</A
3130></H2
3131><P
3132>Variables, return values, and parameters have type
3133 information. LSL provides a small set of basic types that are used
3134 throughout the language.</P
3135><P
3136></P
3137><DIV
3138CLASS="variablelist"
3139><P
3140><B
3141>LSL Types</B
3142></P
3143><DL
3144><DT
3145>integer</DT
3146><DD
3147><P
3148>A signed, 32-bit integer value with valid range from
3149 -2147483648 to 2147483647.</P
3150></DD
3151><DT
3152>float</DT
3153><DD
3154><P
3155>An IEEE 32-bit floating point value with
3156 values ranging from 1.175494351E-38 to
3157 3.402823466E+38.</P
3158></DD
3159><DT
3160>key</DT
3161><DD
3162><P
3163>A unique identifier that can be used to
3164 reference objects and agents in Second Life.</P
3165></DD
3166><DT
3167>vector</DT
3168><DD
3169><P
3170>3 floats that are used together as a single
3171 item. A vector can be used to represent a 3 dimensional
3172 position, direction, velocity, force, impulse, or a
3173 color. Each component can be accessed via '.x', '.y', and
3174 '.z'.</P
3175><DIV
3176CLASS="table"
3177><A
3178NAME="AEN258"
3179></A
3180><P
3181><B
3182>Table 3-4. Vector Arithmetic Operators</B
3183></P
3184><TABLE
3185BORDER="1"
3186CLASS="CALSTABLE"
3187><COL><COL><THEAD
3188><TR
3189><TH
3190>Operator</TH
3191><TH
3192>Meaning</TH
3193></TR
3194></THEAD
3195><TBODY
3196><TR
3197><TD
3198>+</TD
3199><TD
3200>Add two vectors together</TD
3201></TR
3202><TR
3203><TD
3204>-</TD
3205><TD
3206>Subtract one vector from another</TD
3207></TR
3208><TR
3209><TD
3210>*</TD
3211><TD
3212>Vector dot product</TD
3213></TR
3214><TR
3215><TD
3216>%</TD
3217><TD
3218>Vector cross product</TD
3219></TR
3220></TBODY
3221></TABLE
3222></DIV
3223></DD
3224><DT
3225>rotation</DT
3226><DD
3227><P
3228>4 floats that are used together as a single
3229 item to represent a rotation. This data is interpreted as a
3230 quaternion. Each component can be accessed via '.x', '.y',
3231 '.z', and '.s'.</P
3232><DIV
3233CLASS="table"
3234><A
3235NAME="AEN282"
3236></A
3237><P
3238><B
3239>Table 3-5. Rotation Arithmetic Operators</B
3240></P
3241><TABLE
3242BORDER="1"
3243CLASS="CALSTABLE"
3244><COL><COL><THEAD
3245><TR
3246><TH
3247>Operator</TH
3248><TH
3249>Meaning</TH
3250></TR
3251></THEAD
3252><TBODY
3253><TR
3254><TD
3255>+</TD
3256><TD
3257>Add two rotations together</TD
3258></TR
3259><TR
3260><TD
3261>-</TD
3262><TD
3263>Subtract one rotation from another</TD
3264></TR
3265><TR
3266><TD
3267>*</TD
3268><TD
3269>Rotate the first rotation by the second</TD
3270></TR
3271><TR
3272><TD
3273>/</TD
3274><TD
3275>Rotate the first rotation by the inverse of the second</TD
3276></TR
3277></TBODY
3278></TABLE
3279></DIV
3280></DD
3281><DT
3282>list</DT
3283><DD
3284><P
3285>A heterogeneous list of the other data types. Lists are
3286 created via comma separated values of the other data types
3287 enclosed by '[' and ']'.</P
3288><P
3289><DIV
3290CLASS="informalexample"
3291><P
3292></P
3293><A
3294NAME="AEN307"
3295></A
3296><PRE
3297CLASS="programlisting"
3298>&#13;string StringVar = "Hello, Carbon Unit";
3299list MyList = [ 1234, ZERO_ROTATION, StringVar ];
3300 </PRE
3301><P
3302></P
3303></DIV
3304>
3305 Yields the list: <SAMP
3306CLASS="computeroutput"
3307>[ 1234, &#60;0,0,0,1&#62;, "Hello,
3308 Carbon Unit" ]</SAMP
3309>
3310 </P
3311><P
3312>Lists can be combined with other lists. For example:
3313 <DIV
3314CLASS="informalexample"
3315><P
3316></P
3317><A
3318NAME="AEN311"
3319></A
3320><PRE
3321CLASS="programlisting"
3322>&#13;MyList = 3.14159 + MyList;
3323 </PRE
3324><P
3325></P
3326></DIV
3327>
3328 Yields the list: <SAMP
3329CLASS="computeroutput"
3330>[ 3.14159, 1234, &#60;0,0,0,1&#62;,
3331 "Hello, Carbon Unit" ]</SAMP
3332>
3333 And similarly,
3334 <DIV
3335CLASS="informalexample"
3336><P
3337></P
3338><A
3339NAME="AEN314"
3340></A
3341><PRE
3342CLASS="programlisting"
3343>&#13;MyList = MyList + MyList;
3344 </PRE
3345><P
3346></P
3347></DIV
3348>
3349 Yields: <SAMP
3350CLASS="computeroutput"
3351>[ 3.14159, 1234, &#60;0,0,0,1&#62;, "Hello,
3352 Carbon Unit", 3.14159, 1234, &#60;0,0,0,1&#62;, "Hello, Carbon Unit"
3353 ]</SAMP
3354>
3355 </P
3356><P
3357>Library functions exist used to copy data from lists,
3358 sort lists, copy/remove sublists.</P
3359></DD
3360></DL
3361></DIV
3362><DIV
3363CLASS="section"
3364><HR><H3
3365CLASS="section"
3366><A
3367NAME="AEN318"
3368>3.3.1. Type Conversion</A
3369></H3
3370><P
3371>Type conversion can either occur implicitly or explicitly.
3372 Explicit type casts are accomplished using C syntax:
3373 <DIV
3374CLASS="informalexample"
3375><P
3376></P
3377><A
3378NAME="AEN321"
3379></A
3380><PRE
3381CLASS="programlisting"
3382>&#13;float foo_float = 1.0;
3383integer foo_int = (integer)foo_float;
3384 </PRE
3385><P
3386></P
3387></DIV
3388>
3389 </P
3390><DIV
3391CLASS="section"
3392><HR><H4
3393CLASS="section"
3394><A
3395NAME="AEN323"
3396>3.3.1.1. Implicit Casting</A
3397></H4
3398><P
3399>LSL only supports two implicit type casts: integer to
3400 float and string to key. Thus, any place you see a float
3401 specified you can supply an integer, and any place you see a
3402 key specified, you can supply a string.</P
3403></DIV
3404><DIV
3405CLASS="section"
3406><HR><H4
3407CLASS="section"
3408><A
3409NAME="AEN326"
3410>3.3.1.2. Explicit Casting</A
3411></H4
3412><P
3413>LSL supports the following explicit casts:
3414 <P
3415></P
3416><UL
3417><LI
3418STYLE="list-style-type: opencircle"
3419><P
3420>Integer to String</P
3421></LI
3422><LI
3423STYLE="list-style-type: opencircle"
3424><P
3425>Float to Integer</P
3426></LI
3427><LI
3428STYLE="list-style-type: opencircle"
3429><P
3430>Float to String</P
3431></LI
3432><LI
3433STYLE="list-style-type: opencircle"
3434><P
3435>Vector to String</P
3436></LI
3437><LI
3438STYLE="list-style-type: opencircle"
3439><P
3440>Rotation to String</P
3441></LI
3442><LI
3443STYLE="list-style-type: opencircle"
3444><P
3445>Integer to List</P
3446></LI
3447><LI
3448STYLE="list-style-type: opencircle"
3449><P
3450>Float to List</P
3451></LI
3452><LI
3453STYLE="list-style-type: opencircle"
3454><P
3455>Key to List</P
3456></LI
3457><LI
3458STYLE="list-style-type: opencircle"
3459><P
3460>String to List</P
3461></LI
3462><LI
3463STYLE="list-style-type: opencircle"
3464><P
3465>Vector to List</P
3466></LI
3467><LI
3468STYLE="list-style-type: opencircle"
3469><P
3470>Rotation to List</P
3471></LI
3472><LI
3473STYLE="list-style-type: opencircle"
3474><P
3475>String to Integer</P
3476></LI
3477><LI
3478STYLE="list-style-type: opencircle"
3479><P
3480>String to Float</P
3481></LI
3482><LI
3483STYLE="list-style-type: opencircle"
3484><P
3485>String to Vector</P
3486></LI
3487><LI
3488STYLE="list-style-type: opencircle"
3489><P
3490>String to Rotation</P
3491></LI
3492></UL
3493>
3494 </P
3495></DIV
3496></DIV
3497></DIV
3498><DIV
3499CLASS="section"
3500><HR><H2
3501CLASS="section"
3502><A
3503NAME="AEN360"
3504>3.4. Global Functions</A
3505></H2
3506><P
3507>Global functions are also declared much like Java/C, with
3508 the exception that no 'void' return value exists. Instead, if no
3509 return value is needed, just don't specify one:
3510
3511 <DIV
3512CLASS="informalexample"
3513><P
3514></P
3515><A
3516NAME="AEN363"
3517></A
3518><PRE
3519CLASS="programlisting"
3520>&#13;make_physical_and_spin(vector torque)
3521{
3522 // double the torque
3523 vector double_torque = 2.0*torque;
3524 llSetStatus(STATUS_PHYSICS, TRUE);
3525 llApplyTorque(double_torque);
3526}
3527 </PRE
3528><P
3529></P
3530></DIV
3531></P
3532></DIV
3533><DIV
3534CLASS="section"
3535><HR><H2
3536CLASS="section"
3537><A
3538NAME="AEN365"
3539>3.5. Global Variables</A
3540></H2
3541><P
3542>Global variables and functions are accessible from anywhere
3543 in the file. Global variables are declared much like Java or C,
3544 although only one declaration may be made per line:
3545 <DIV
3546CLASS="informalexample"
3547><P
3548></P
3549><A
3550NAME="AEN368"
3551></A
3552><PRE
3553CLASS="programlisting"
3554>&#13;vector gStartPosition;
3555 </PRE
3556><P
3557></P
3558></DIV
3559></P
3560><P
3561>Global variables may also be initialized if desired,
3562 although uninitialized global and local variables are initialized
3563 to legal zero values:
3564 <DIV
3565CLASS="informalexample"
3566><P
3567></P
3568><A
3569NAME="AEN371"
3570></A
3571><PRE
3572CLASS="programlisting"
3573>&#13;vector gStartPosition = &#60;10.0,10.0,10.0&#62;
3574 </PRE
3575><P
3576></P
3577></DIV
3578></P
3579></DIV
3580><DIV
3581CLASS="section"
3582><HR><H2
3583CLASS="section"
3584><A
3585NAME="AEN373"
3586>3.6. Local Variables</A
3587></H2
3588><P
3589>Local variables are scoped below their declaration within
3590 the block of code they are declared in and may be declared within
3591 any block of code. Thus the following code is legal and will work
3592 like C:
3593 <DIV
3594CLASS="informalexample"
3595><P
3596></P
3597><A
3598NAME="AEN376"
3599></A
3600><PRE
3601CLASS="programlisting"
3602>&#13;integer test_function()
3603{
3604 // Test vector that we can use anywhere in the function
3605 vector test = &#60;1,2,3&#62;;
3606 integer j;
3607 for (j = 0; j &#60; 10; j++)
3608 {
3609 // This vector is a different variable than the one declared above
3610 // This IS NOT good coding practice
3611 vector test = &#60;j, j, j&#62;;
3612 }
3613 // this test fails
3614 if (test == &#60;9,9,9&#62;)
3615 {
3616 // never reached
3617 }
3618}
3619 </PRE
3620><P
3621></P
3622></DIV
3623></P
3624></DIV
3625></DIV
3626><DIV
3627CLASS="chapter"
3628><HR><H1
3629><A
3630NAME="AEN378"
3631></A
3632>Chapter 4. Flow Control</H1
3633><P
3634>LSL comes with a complete complement of constructs meant to
3635 deal with conditional processing, looping, as well as simply jumping
3636 to a different point in the script.</P
3637><DIV
3638CLASS="section"
3639><HR><H2
3640CLASS="section"
3641><A
3642NAME="AEN381"
3643>4.1. Conditional Statements</A
3644></H2
3645><P
3646>The 'if' statement operates and has the
3647 same syntax as the Java/C version.</P
3648><P
3649><DIV
3650CLASS="informalexample"
3651><P
3652></P
3653><A
3654NAME="AEN385"
3655></A
3656><PRE
3657CLASS="programlisting"
3658>&#13;check_message(string message)
3659{
3660 if(message == "open")
3661 {
3662 open();
3663 }
3664 else if(message == "close")
3665 {
3666 close();
3667 }
3668 else
3669 {
3670 llSay(0, "Unknown command: " + message);
3671 }
3672}
3673 </PRE
3674><P
3675></P
3676></DIV
3677></P
3678><P
3679>The statements between the open and close curly brace are
3680 performed if the conditional inside the parentheses evaluates to a
3681 non-zero integer. Once a conditional is determined to be true
3682 (non-zero), no further processing of 'else' conditionals will be
3683 considered. The <A
3684HREF="#AEN6023"
3685>NULL_KEY</A
3686> constant
3687 is counted as FALSE by conditional expressions.</P
3688><P
3689>There can be zero or more 'else if' statements, and an
3690 optional final 'else' to handle the case when none of the if
3691 statements evaluate to a non-zero integer.</P
3692><P
3693>The usual set of integer arithmetic and comparison operators
3694 are available.</P
3695><P
3696><DIV
3697CLASS="informalexample"
3698><P
3699></P
3700><A
3701NAME="AEN392"
3702></A
3703><PRE
3704CLASS="programlisting"
3705>&#13;// a function that accepts some information about its environment and
3706// determines the 'best' next step. This kind of code might be
3707// part of a simple box meant to move close to an agent and attach to
3708// them once near. This code sample relies on the standard linden
3709// library functions as well as two other methods not defined here.
3710assess_next_step(integer perm, integer attached, integer balance, float dist)
3711{
3712 string msg;
3713 if(!attached)
3714 {
3715 if((perm &#38; PERMISSION_ATTACH) &#38;&#38; (dist &#60; 10.0))
3716 {
3717 attach();
3718 }
3719 else if((dist &#62; 10.0) || ((dist &#62; 20.0) &#38;&#38; (balance &#62; 1000)))
3720 {
3721 move_closer();
3722 }
3723 else
3724 {
3725 llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
3726 }
3727 }
3728}
3729 </PRE
3730><P
3731></P
3732></DIV
3733></P
3734></DIV
3735><DIV
3736CLASS="section"
3737><HR><H2
3738CLASS="section"
3739><A
3740NAME="AEN394"
3741>4.2. Loop Constructs</A
3742></H2
3743><P
3744>Loops are a basic building block of most useful programming
3745 languages, and LSL offers the same loop constructs as found in
3746 Java or C.</P
3747><DIV
3748CLASS="section"
3749><HR><H3
3750CLASS="section"
3751><A
3752NAME="AEN397"
3753>4.2.1. for loop</A
3754></H3
3755><P
3756>A for loop is most useful for when you know how many times
3757 you need to iterate over an operation. Just like a Java or C for
3758 loop, the parentheses have three parts, the initializer, the
3759 continuation condition, and the increment. The loop continues
3760 while the middle term evaluates to true, and the increment step
3761 is performed at the end of every loop.</P
3762><P
3763><DIV
3764CLASS="informalexample"
3765><P
3766></P
3767><A
3768NAME="AEN401"
3769></A
3770><PRE
3771CLASS="programlisting"
3772>&#13;// move a non-physical block smoothly upward (positive z) the total
3773// distance specified divided into steps discrete moves.
3774move_up(float distance, integer steps)
3775{
3776 float step_distance = distance / (float)steps;
3777 vector offset = &#60;0.0, 0.0, step_distance&#62;;
3778 vector base_pos = llGetPos();
3779 integer i;
3780 for(i = 0; i &#60;= steps; ++i)
3781 {
3782 llSetPos(base_pos + i * offset);
3783 llSleep(0.1);
3784 }
3785}
3786 </PRE
3787><P
3788></P
3789></DIV
3790></P
3791></DIV
3792><DIV
3793CLASS="section"
3794><HR><H3
3795CLASS="section"
3796><A
3797NAME="AEN403"
3798>4.2.2. do-while loop</A
3799></H3
3800><P
3801>The do-while loop construct is most useful when you are
3802 sure that you want to perform an operation at least once, but
3803 you are not sure how many times you want to loop. The syntax is
3804 the same as you would find in a Java or C program. A simple
3805 English translation would be 'do the code inside the curly braces
3806 and continue doing it if the statement after the while is
3807 true.</P
3808><P
3809><DIV
3810CLASS="informalexample"
3811><P
3812></P
3813><A
3814NAME="AEN407"
3815></A
3816><PRE
3817CLASS="programlisting"
3818>&#13;// output the name of all inventory items attached to this object
3819talk_about_inventory(integer type)
3820{
3821 string name;
3822 integer i = 0;
3823 integer continue = TRUE;
3824 do
3825 {
3826 name = llGetInventoryName(type, i);
3827 if(llStringLength(name) &#62; 0)
3828 {
3829 llSay(0, "Inventory " + (string)i + ": " + name);
3830 }
3831 else
3832 {
3833 llSay(0, "No more inventory items");
3834 continue = FALSE;
3835 }
3836 } while(continue);
3837}
3838 </PRE
3839><P
3840></P
3841></DIV
3842></P
3843></DIV
3844><DIV
3845CLASS="section"
3846><HR><H3
3847CLASS="section"
3848><A
3849NAME="AEN409"
3850>4.2.3. while loop</A
3851></H3
3852><P
3853>The while loop behaves similarly to the do-while loop,
3854 except it allows you to exit the loop without doing a single
3855 iteration inside.</P
3856><P
3857><DIV
3858CLASS="informalexample"
3859><P
3860></P
3861><A
3862NAME="AEN413"
3863></A
3864><PRE
3865CLASS="programlisting"
3866>&#13;mention_inventory_type(integer type)
3867{
3868 integer i = llGetInventoryNumber(type);
3869 while(i--)
3870 {
3871 llSay(0, "item: " + llGetInventory(i));
3872 }
3873}
3874 </PRE
3875><P
3876></P
3877></DIV
3878></P
3879></DIV
3880></DIV
3881><DIV
3882CLASS="section"
3883><HR><H2
3884CLASS="section"
3885><A
3886NAME="AEN415"
3887>4.3. Jumps</A
3888></H2
3889><P
3890>A jump is used to move the running script to a new point
3891 inside of a function or event handler. You cannot jump into other
3892 functions or event handlers. Usually, you will want to use a jump
3893 for in situations where the if..else statements would become too
3894 cumbersome. For example, you may want to check several
3895 preconditions, and exit if any of them are not met.</P
3896><P
3897><DIV
3898CLASS="informalexample"
3899><P
3900></P
3901><A
3902NAME="AEN419"
3903></A
3904><PRE
3905CLASS="programlisting"
3906>&#13;attach_if_ready(vector target_pos)
3907{
3908 // make sure we have permission
3909 integer perm = llGetPerm();
3910 if(!(perm &#38; PERMISSION_ATTACH))
3911 {
3912 jump early_exit;
3913 }
3914
3915 // make sure we're 10 or less meters away
3916 vector pos = llGetPos()
3917 float dist = llVecDist(pos, target_pos);
3918 if(dist &#62; 10.0)
3919 {
3920 jump early_exit;
3921 }
3922
3923 // make sure we're roughly pointed toward the target.
3924 // the calculation of max_cos_theta could be precomputed
3925 // as a constant, but is manually computed here to
3926 // illustrate the math.
3927 float max_cos_theta = llCos(PI / 4.0);
3928 vector toward_target = llVecNorm(target_pos - pos);
3929 rotation rot = llGetRot();
3930 vector fwd = llRot2Fwd(rot);
3931 float cos_theta = toward_target * fwd;
3932 if(cos_theta &#62; max_cos_theta)
3933 {
3934 jump early_exit;
3935 }
3936
3937 // at this point, we've done all the checks.
3938 attach();
3939
3940 @early_exit;
3941}
3942 </PRE
3943><P
3944></P
3945></DIV
3946></P
3947></DIV
3948><DIV
3949CLASS="section"
3950><HR><H2
3951CLASS="section"
3952><A
3953NAME="AEN421"
3954>4.4. State Change</A
3955></H2
3956><P
3957>State change allow you to move through the lsl virtual
3958 machine's flexible state machine by transitioning your script to
3959 and from user defined states and the default state. You can define
3960 your own script state by placing the keyword 'state' before its
3961 name and enclosing the event handlers with open and close curly
3962 braces ('{' and '}'.) You can invoke the transition to a new state
3963 by calling it with the syntax: 'state &#60;statename&#62;'.</P
3964><P
3965><DIV
3966CLASS="informalexample"
3967><P
3968></P
3969><A
3970NAME="AEN425"
3971></A
3972><PRE
3973CLASS="programlisting"
3974>&#13;default
3975{
3976 state_entry()
3977 {
3978 llSay(0, "I am in the default state");
3979 llSetTimer(1.0);
3980 }
3981
3982 timer()
3983 {
3984 state SpinState;
3985 }
3986}
3987
3988state SpinState
3989{
3990 state_entry()
3991 {
3992 llSay(0, "I am in SpinState!");
3993 llTargetOmega(&#60;0,0,1&#62;, 4, 1.0);
3994 llSetTimer(2.0);
3995 }
3996
3997 timer()
3998 {
3999 state default;
4000 }
4001
4002 state_exit()
4003 {
4004 llTargetOmega(&#60;0,0,1&#62;, 0, 0.0);
4005 }
4006}
4007 </PRE
4008><P
4009></P
4010></DIV
4011></P
4012></DIV
4013></DIV
4014><DIV
4015CLASS="chapter"
4016><HR><H1
4017><A
4018NAME="AEN427"
4019></A
4020>Chapter 5. States</H1
4021><P
4022>All scripts must have a 'default' state, which is the first
4023 state entered when the script starts. States contain event handlers
4024 that are triggered by the LSL virtual machine. All states must
4025 supply at least one event handler - it's not really a state without
4026 one.</P
4027><P
4028>When state changes, all callback settings are retained and all
4029 pending events are cleared.</P
4030><DIV
4031CLASS="section"
4032><HR><H2
4033CLASS="section"
4034><A
4035NAME="AEN431"
4036>5.1. state_entry()</A
4037></H2
4038><P
4039>The <A
4040HREF="#AEN5148"
4041>state_entry</A
4042>
4043 event occurs whenever a new state is
4044 entered, including program start, and is always the first event
4045 handled. No data is passed to this event handler.</P
4046><P
4047>You will usually want to set callbacks for things such as
4048 timers and sensor in the state_entry() callback of the state to
4049 put your object into a useful condition for that state.</P
4050><P
4051>Warning: It is a common mistake to assume that the state_entry()
4052 callback is called when you rez an object out of your
4053 inventory. When you derez an object into your inventory the
4054 current state of the script is saved, so there will not be a
4055 call to state_entry() during the rez. If you need to provide
4056 startup code every time an object is created, you should create
4057 a global function and call it from both state_entry() and the
4058 on_rez() callbacks.</P
4059><P
4060><DIV
4061CLASS="informalexample"
4062><P
4063></P
4064><A
4065NAME="AEN438"
4066></A
4067><PRE
4068CLASS="programlisting"
4069>&#13;// global initialization function.
4070init()
4071{
4072 // Set up a listen callback for whoever owns this object.
4073 key owner = llGetOwner();
4074 llListen(0, "", owner, "");
4075}
4076
4077default
4078{
4079 state_entry()
4080 {
4081 init();
4082 }
4083
4084 on_rez(integer start_param)
4085 {
4086 init();
4087 }
4088
4089 listen(integer channel, string name, key id, string message)
4090 {
4091 llSay(0, "Hi " + name + "! You own me.");
4092 }
4093}
4094 </PRE
4095><P
4096></P
4097></DIV
4098></P
4099></DIV
4100><DIV
4101CLASS="section"
4102><HR><H2
4103CLASS="section"
4104><A
4105NAME="AEN440"
4106>5.2. state_exit()</A
4107></H2
4108><P
4109>You will want to provide a <A
4110HREF="#AEN5156"
4111>&#13; state_exit()</A
4112> if you need to clean
4113 up any events that you have requested in the current state, but do
4114 not expect in the next state.</P
4115><P
4116><DIV
4117CLASS="informalexample"
4118><P
4119></P
4120><A
4121NAME="AEN445"
4122></A
4123><PRE
4124CLASS="programlisting"
4125>&#13;default
4126{
4127 state_entry()
4128 {
4129 state TimerState;
4130 }
4131}
4132
4133state TimerState
4134{
4135 state_entry()
4136 {
4137 // set a timer event for 5 seconds in the future.
4138 llSetTimerEvent(5.0);
4139 }
4140
4141 timer()
4142 {
4143 llSay(0, "timer");
4144 state ListenState;
4145 }
4146
4147 state_exit()
4148 {
4149 // turn off future timer events.
4150 llSetTimerEvent(0.0);
4151 }
4152}
4153
4154integer g_listen_control;
4155
4156state ListenState
4157{
4158 state_entry()
4159 {
4160 // listen for anything on the public channel
4161 g_listen_control = llListen(0, "", NULL_KEY, "");
4162 }
4163
4164 listen(integer channel, string name, key id, string message)
4165 {
4166 llSay(0, "listen");
4167 state TimerState;
4168 }
4169
4170 state_exit()
4171 {
4172 // turn off the listener
4173 llListenRemove(g_listen_control);
4174 }
4175}
4176 </PRE
4177><P
4178></P
4179></DIV
4180></P
4181><P
4182>The <A
4183HREF="#AEN5156"
4184>state_exit()</A
4185>
4186 handler is not called when an object is
4187 being deleted - all callbacks, handlers, sounds, etc, will be
4188 cleaned up automatically for you.</P
4189></DIV
4190><DIV
4191CLASS="section"
4192><HR><H2
4193CLASS="section"
4194><A
4195NAME="AEN449"
4196>5.3. States vs. Global variables</A
4197></H2
4198><P
4199>A state and a set of global variables can serve the same
4200 purpose, and each can be expressed in terms of the other. In
4201 general, you should prefer the use of states over global variables
4202 since states allow you to immediately assume script state without
4203 making comparisons. The less comparisons a script makes, the more
4204 regular code statements it can run.</P
4205></DIV
4206></DIV
4207><DIV
4208CLASS="chapter"
4209><HR><H1
4210><A
4211NAME="AEN452"
4212></A
4213>Chapter 6. Math</H1
4214><DIV
4215CLASS="section"
4216><H2
4217CLASS="section"
4218><A
4219NAME="AEN454"
4220>6.1. Tables of Functions</A
4221></H2
4222><DIV
4223CLASS="table"
4224><A
4225NAME="AEN456"
4226></A
4227><P
4228><B
4229>Table 6-1. Trigonometry Functions</B
4230></P
4231><TABLE
4232BORDER="1"
4233CLASS="CALSTABLE"
4234><COL><THEAD
4235><TR
4236><TH
4237>Function</TH
4238></TR
4239></THEAD
4240><TBODY
4241><TR
4242><TD
4243><A
4244HREF="#AEN1002"
4245>llAbs</A
4246></TD
4247></TR
4248><TR
4249><TD
4250><A
4251HREF="#AEN1012"
4252>llAcos</A
4253></TD
4254></TR
4255><TR
4256><TD
4257><A
4258HREF="#AEN1096"
4259>llAsin</A
4260></TD
4261></TR
4262><TR
4263><TD
4264><A
4265HREF="#AEN1106"
4266>llAtan2</A
4267></TD
4268></TR
4269><TR
4270><TD
4271><A
4272HREF="#AEN1212"
4273>llCeil</A
4274></TD
4275></TR
4276><TR
4277><TD
4278><A
4279HREF="#AEN1282"
4280>llCos</A
4281></TD
4282></TR
4283><TR
4284><TD
4285><A
4286HREF="#AEN1559"
4287>llFabs</A
4288></TD
4289></TR
4290><TR
4291><TD
4292><A
4293HREF="#AEN1569"
4294>llFloor</A
4295></TD
4296></TR
4297><TR
4298><TD
4299><A
4300HREF="#AEN1579"
4301>llFrand</A
4302></TD
4303></TR
4304><TR
4305><TD
4306><A
4307HREF="#AEN3217"
4308>llPow</A
4309></TD
4310></TR
4311><TR
4312><TD
4313><A
4314HREF="#AEN3615"
4315>llRound</A
4316></TD
4317></TR
4318><TR
4319><TD
4320><A
4321HREF="#AEN4255"
4322>llSin</A
4323></TD
4324></TR
4325><TR
4326><TD
4327><A
4328HREF="#AEN4288"
4329>llSqrt</A
4330></TD
4331></TR
4332><TR
4333><TD
4334><A
4335HREF="#AEN4631"
4336>llTan</A
4337></TD
4338></TR
4339></TBODY
4340></TABLE
4341></DIV
4342><DIV
4343CLASS="table"
4344><A
4345NAME="AEN505"
4346></A
4347><P
4348><B
4349>Table 6-2. Vector Functions</B
4350></P
4351><TABLE
4352BORDER="1"
4353CLASS="CALSTABLE"
4354><COL><THEAD
4355><TR
4356><TH
4357>Function</TH
4358></TR
4359></THEAD
4360><TBODY
4361><TR
4362><TD
4363><A
4364HREF="#AEN4763"
4365>llVecDist</A
4366></TD
4367></TR
4368><TR
4369><TD
4370><A
4371HREF="#AEN4776"
4372>llVecMag</A
4373></TD
4374></TR
4375><TR
4376><TD
4377><A
4378HREF="#AEN4786"
4379>llVecNorm</A
4380></TD
4381></TR
4382></TBODY
4383></TABLE
4384></DIV
4385><DIV
4386CLASS="table"
4387><A
4388NAME="AEN521"
4389></A
4390><P
4391><B
4392>Table 6-3. Rotation Functions</B
4393></P
4394><TABLE
4395BORDER="1"
4396CLASS="CALSTABLE"
4397><COL><THEAD
4398><TR
4399><TH
4400>Function</TH
4401></TR
4402></THEAD
4403><TBODY
4404><TR
4405><TD
4406><A
4407HREF="#AEN1057"
4408>llAngleBetween</A
4409></TD
4410></TR
4411><TR
4412><TD
4413><A
4414HREF="#AEN1144"
4415>llAxes2Rot</A
4416></TD
4417></TR
4418><TR
4419><TD
4420><A
4421HREF="#AEN1160"
4422>llAxisAngle2Rot</A
4423></TD
4424></TR
4425><TR
4426><TD
4427><A
4428HREF="#AEN1549"
4429>llEuler2Rot</A
4430></TD
4431></TR
4432><TR
4433><TD
4434><A
4435HREF="#AEN3483"
4436>llRot2Angle</A
4437></TD
4438></TR
4439><TR
4440><TD
4441><A
4442HREF="#AEN3493"
4443>llRot2Axis</A
4444></TD
4445></TR
4446><TR
4447><TD
4448><A
4449HREF="#AEN3503"
4450>llRot2Euler</A
4451></TD
4452></TR
4453><TR
4454><TD
4455><A
4456HREF="#AEN3513"
4457>llRot2Fwd</A
4458></TD
4459></TR
4460><TR
4461><TD
4462><A
4463HREF="#AEN3523"
4464>llRot2Left</A
4465></TD
4466></TR
4467><TR
4468><TD
4469><A
4470HREF="#AEN3533"
4471>llRot2Up</A
4472></TD
4473></TR
4474><TR
4475><TD
4476><A
4477HREF="#AEN3543"
4478>llRotBetween</A
4479></TD
4480></TR
4481></TBODY
4482></TABLE
4483></DIV
4484></DIV
4485></DIV
4486><DIV
4487CLASS="chapter"
4488><HR><H1
4489><A
4490NAME="AEN561"
4491></A
4492>Chapter 7. Strings</H1
4493><DIV
4494CLASS="section"
4495><H2
4496CLASS="section"
4497><A
4498NAME="AEN563"
4499>7.1. Tables of Functions</A
4500></H2
4501><DIV
4502CLASS="table"
4503><A
4504NAME="AEN565"
4505></A
4506><P
4507><B
4508>Table 7-1. String Functions</B
4509></P
4510><TABLE
4511BORDER="1"
4512CLASS="CALSTABLE"
4513><COL><THEAD
4514><TR
4515><TH
4516>Function</TH
4517></TR
4518></THEAD
4519><TBODY
4520><TR
4521><TD
4522><A
4523HREF="#AEN1173"
4524>llBase64ToString</A
4525></TD
4526></TR
4527><TR
4528><TD
4529><A
4530HREF="#AEN1326"
4531>llDeleteSubString</A
4532></TD
4533></TR
4534><TR
4535><TD
4536><A
4537HREF="#AEN2195"
4538>llGetSubString</A
4539></TD
4540></TR
4541><TR
4542><TD
4543><A
4544HREF="#AEN2415"
4545>llInsertString</A
4546></TD
4547></TR
4548><TR
4549><TD
4550><A
4551HREF="#AEN2902"
4552>llMD5String</A
4553></TD
4554></TR
4555><TR
4556><TD
4557><A
4558HREF="#AEN4584"
4559>llStringLength</A
4560></TD
4561></TR
4562><TR
4563><TD
4564><A
4565HREF="#AEN4594"
4566>llSubStringIndex</A
4567></TD
4568></TR
4569><TR
4570><TD
4571><A
4572HREF="#AEN4605"
4573>llStringToBase64</A
4574></TD
4575></TR
4576><TR
4577><TD
4578><A
4579HREF="#AEN4690"
4580>llToLower</A
4581></TD
4582></TR
4583><TR
4584><TD
4585><A
4586HREF="#AEN4699"
4587>llToUpper</A
4588></TD
4589></TR
4590><TR
4591><TD
4592><A
4593HREF="#AEN4839"
4594>llXorBase64Strings</A
4595></TD
4596></TR
4597></TBODY
4598></TABLE
4599></DIV
4600></DIV
4601></DIV
4602><DIV
4603CLASS="chapter"
4604><HR><H1
4605><A
4606NAME="AEN605"
4607></A
4608>Chapter 8. Lists</H1
4609><DIV
4610CLASS="section"
4611><H2
4612CLASS="section"
4613><A
4614NAME="AEN607"
4615>8.1. Tables of Functions</A
4616></H2
4617><DIV
4618CLASS="table"
4619><A
4620NAME="AEN609"
4621></A
4622><P
4623><B
4624>Table 8-1. List Functions</B
4625></P
4626><TABLE
4627BORDER="1"
4628CLASS="CALSTABLE"
4629><COL><THEAD
4630><TR
4631><TH
4632>Function</TH
4633></TR
4634></THEAD
4635><TBODY
4636><TR
4637><TD
4638><A
4639HREF="#AEN1202"
4640>llCSV2List</A
4641></TD
4642></TR
4643><TR
4644><TD
4645><A
4646HREF="#AEN1306"
4647>llDeleteSubList</A
4648></TD
4649></TR
4650><TR
4651><TD
4652><A
4653HREF="#AEN1875"
4654>llGetListEntryType</A
4655></TD
4656></TR
4657><TR
4658><TD
4659><A
4660HREF="#AEN1889"
4661>llGetListLength</A
4662></TD
4663></TR
4664><TR
4665><TD
4666><A
4667HREF="#AEN2454"
4668>llList2CSV</A
4669></TD
4670></TR
4671><TR
4672><TD
4673><A
4674HREF="#AEN2464"
4675>llList2Float</A
4676></TD
4677></TR
4678><TR
4679><TD
4680><A
4681HREF="#AEN2477"
4682>llList2Integer</A
4683></TD
4684></TR
4685><TR
4686><TD
4687><A
4688HREF="#AEN2490"
4689>llList2Key</A
4690></TD
4691></TR
4692><TR
4693><TD
4694><A
4695HREF="#AEN2503"
4696>llList2List</A
4697></TD
4698></TR
4699><TR
4700><TD
4701><A
4702HREF="#AEN2526"
4703>llList2ListStrided</A
4704></TD
4705></TR
4706><TR
4707><TD
4708><A
4709HREF="#AEN2544"
4710>llList2Rot</A
4711></TD
4712></TR
4713><TR
4714><TD
4715><A
4716HREF="#AEN2557"
4717>llList2String</A
4718></TD
4719></TR
4720><TR
4721><TD
4722><A
4723HREF="#AEN2570"
4724>llList2Vector</A
4725></TD
4726></TR
4727><TR
4728><TD
4729><A
4730HREF="#AEN2583"
4731>llListFindList</A
4732></TD
4733></TR
4734><TR
4735><TD
4736><A
4737HREF="#AEN2598"
4738>llListInsertList</A
4739></TD
4740></TR
4741><TR
4742><TD
4743><A
4744HREF="#AEN2614"
4745>llListRandomize</A
4746></TD
4747></TR
4748><TR
4749><TD
4750><A
4751HREF="#AEN2648"
4752>llListSort</A
4753></TD
4754></TR
4755><TR
4756><TD
4757><A
4758HREF="#AEN3102"
4759>llParseString2List</A
4760></TD
4761></TR
4762></TBODY
4763></TABLE
4764></DIV
4765></DIV
4766></DIV
4767><DIV
4768CLASS="chapter"
4769><HR><H1
4770><A
4771NAME="AEN670"
4772></A
4773>Chapter 9. Communication</H1
4774><DIV
4775CLASS="section"
4776><H2
4777CLASS="section"
4778><A
4779NAME="AEN672"
4780>9.1. Tables of Functions</A
4781></H2
4782><DIV
4783CLASS="table"
4784><A
4785NAME="AEN674"
4786></A
4787><P
4788><B
4789>Table 9-1. In World Functions</B
4790></P
4791><TABLE
4792BORDER="1"
4793CLASS="CALSTABLE"
4794><COL><THEAD
4795><TR
4796><TH
4797>Function</TH
4798></TR
4799></THEAD
4800><TBODY
4801><TR
4802><TD
4803><A
4804HREF="#AEN2665"
4805>llListen</A
4806></TD
4807></TR
4808><TR
4809><TD
4810><A
4811HREF="#AEN2686"
4812>llListenControl</A
4813></TD
4814></TR
4815><TR
4816><TD
4817><A
4818HREF="#AEN2701"
4819>llListenRemove</A
4820></TD
4821></TR
4822><TR
4823><TD
4824><A
4825HREF="#AEN3637"
4826>llSay</A
4827></TD
4828></TR
4829><TR
4830><TD
4831><A
4832HREF="#AEN4241"
4833>llShout</A
4834></TD
4835></TR
4836><TR
4837><TD
4838><A
4839HREF="#AEN4815"
4840>llWhisper</A
4841></TD
4842></TR
4843></TBODY
4844></TABLE
4845></DIV
4846><DIV
4847CLASS="table"
4848><A
4849NAME="AEN699"
4850></A
4851><P
4852><B
4853>Table 9-2. Messaging Functions</B
4854></P
4855><TABLE
4856BORDER="1"
4857CLASS="CALSTABLE"
4858><COL><THEAD
4859><TR
4860><TH
4861>Function</TH
4862></TR
4863></THEAD
4864><TBODY
4865><TR
4866><TD
4867><A
4868HREF="#AEN1533"
4869>llEmail</A
4870></TD
4871></TR
4872><TR
4873><TD
4874><A
4875HREF="#AEN1933"
4876>llGetNextEmail</A
4877></TD
4878></TR
4879><TR
4880><TD
4881><A
4882HREF="#AEN2431"
4883>llInstantMessage</A
4884></TD
4885></TR
4886></TBODY
4887></TABLE
4888></DIV
4889></DIV
4890></DIV
4891><DIV
4892CLASS="chapter"
4893><HR><H1
4894><A
4895NAME="AEN715"
4896></A
4897>Chapter 10. Inventory</H1
4898><DIV
4899CLASS="section"
4900><H2
4901CLASS="section"
4902><A
4903NAME="AEN717"
4904>10.1. Tables of Functions</A
4905></H2
4906><DIV
4907CLASS="table"
4908><A
4909NAME="AEN719"
4910></A
4911><P
4912><B
4913>Table 10-1. Inventory Functions</B
4914></P
4915><TABLE
4916BORDER="1"
4917CLASS="CALSTABLE"
4918><COL><THEAD
4919><TR
4920><TH
4921>Function</TH
4922></TR
4923></THEAD
4924><TBODY
4925><TR
4926><TD
4927><A
4928HREF="#AEN1047"
4929>llAllowInventoryDrop</A
4930></TD
4931></TR
4932><TR
4933><TD
4934><A
4935HREF="#AEN1754"
4936>llGetInventoryCreator</A
4937></TD
4938></TR
4939><TR
4940><TD
4941><A
4942HREF="#AEN1764"
4943>llGetInventoryKey</A
4944></TD
4945></TR
4946><TR
4947><TD
4948><A
4949HREF="#AEN1774"
4950>llGetInventoryName</A
4951></TD
4952></TR
4953><TR
4954><TD
4955><A
4956HREF="#AEN1816"
4957>llGetInventoryType</A
4958></TD
4959></TR
4960><TR
4961><TD
4962><A
4963HREF="#AEN1789"
4964>llGetInventoryNumber</A
4965></TD
4966></TR
4967><TR
4968><TD
4969><A
4970HREF="#AEN1801"
4971>llGetInventoryPermMask</A
4972></TD
4973></TR
4974><TR
4975><TD
4976><A
4977HREF="#AEN1946"
4978>llGetNotecardLine</A
4979></TD
4980></TR
4981><TR
4982><TD
4983><A
4984HREF="#AEN2314"
4985>llGiveInventory</A
4986></TD
4987></TR
4988><TR
4989><TD
4990><A
4991HREF="#AEN2326"
4992>llGiveInventoryList</A
4993></TD
4994></TR
4995><TR
4996><TD
4997><A
4998HREF="#AEN3322"
4999>llRemoveInventory</A
5000></TD
5001></TR
5002><TR
5003><TD
5004><A
5005HREF="#AEN3360"
5006>llRequestInventoryData</A
5007></TD
5008></TR
5009><TR
5010><TD
5011><A
5012HREF="#AEN3458"
5013>llRezObject</A
5014></TD
5015></TR
5016><TR
5017><TD
5018><A
5019HREF="#AEN3431"
5020>llRezAtRoot</A
5021></TD
5022></TR
5023></TBODY
5024></TABLE
5025></DIV
5026></DIV
5027></DIV
5028><DIV
5029CLASS="chapter"
5030><HR><H1
5031><A
5032NAME="AEN768"
5033></A
5034>Chapter 11. Vehicles</H1
5035><P
5036>Custom Vehicles can be constructed and controlled using the LSL.
5037 This chapter will cover the basics of how vehicles work, the
5038 terms used when describing vehicles, and a more thorough examination
5039 of the api available.</P
5040><P
5041>There are several ways to make scripted objects move
5042 themselves around. One way is to turn the object into a
5043 "vehicle". This feature is versatile enough to make things
5044 that slide, hover, fly, and float. Some of the behaviors that can be
5045 enabled are:</P
5046><P
5047><P
5048></P
5049><UL
5050><LI
5051STYLE="list-style-type: opencircle"
5052><P
5053>deflection of linear and angular velocity to
5054 preferred axis of motion</P
5055></LI
5056><LI
5057STYLE="list-style-type: opencircle"
5058><P
5059>&#13; <A
5060HREF="#AEN956"
5061>asymmetric linear
5062 and angular friction</A
5063></P
5064></LI
5065><LI
5066STYLE="list-style-type: opencircle"
5067><P
5068>&#13; <A
5069HREF="#AEN979"
5070>hovering</A
5071> over terrain/water or
5072 at a global height</P
5073></LI
5074><LI
5075STYLE="list-style-type: opencircle"
5076><P
5077>&#13; <A
5078HREF="#AEN949"
5079>banking</A
5080> on turns
5081 </P
5082></LI
5083><LI
5084STYLE="list-style-type: opencircle"
5085><P
5086>&#13; <A
5087HREF="#AEN866"
5088>linear</A
5089> and
5090 <A
5091HREF="#AEN898"
5092>angular</A
5093> motor for
5094 <A
5095HREF="#AEN853"
5096>push and turning</A
5097>
5098 </P
5099></LI
5100></UL
5101></P
5102><DIV
5103CLASS="section"
5104><HR><H2
5105CLASS="section"
5106><A
5107NAME="AEN790"
5108>11.1. Overview</A
5109></H2
5110><P
5111>Each scripted object can have one vehicle behavior that is
5112 configurable through the <A
5113HREF="#AEN4202"
5114>llSetVehicleType</A
5115>, <A
5116HREF="#AEN4188"
5117>llSetVehicleFloatParam</A
5118>,
5119 <A
5120HREF="#AEN4227"
5121>llSetVehicleVectorParam</A
5122>,
5123 <A
5124HREF="#AEN4213"
5125>llSetVehicleRotationParam</A
5126>,
5127 <A
5128HREF="#AEN4177"
5129>llSetVehicleFlags</A
5130>,
5131 and <A
5132HREF="#AEN3332"
5133>llRemoveVehicleFlags</A
5134>
5135 library calls.</P
5136><P
5137>These script calls are described in more detail below, but
5138 the important thing to notice here is that the vehicle behavior
5139 has several parameters that can be adjusted to change how the
5140 vehicle handles. Depending on the values chosen the vehicle can
5141 veer like a boat in water, or ride like a sled on rails.</P
5142><P
5143>Setting the vehicle flags allow you to make exceptions to
5144 some default behaviors. Some of these flags only have an effect
5145 when certain behaviors are enabled. For example, the
5146 VEHICLE_FLAG_HOVER_WATER_ONLY will make the vehicle ignore the
5147 height of the terrain, however it only makes a difference if the
5148 vehicle is hovering.</P
5149></DIV
5150><DIV
5151CLASS="section"
5152><HR><H2
5153CLASS="section"
5154><A
5155NAME="AEN801"
5156>11.2. Warnings</A
5157></H2
5158><P
5159>Vehicles are a work in progress and will
5160 likely experience changes in future versions of Second Life.
5161 Some of the details of vehicle behavior may be changed
5162 as necessary to ensure stability
5163 and user safety. In particular, many of the limits and defaults
5164 described in the appendices will probably change and should not be
5165 relied upon in the long term.</P
5166><P
5167>It is not recommended that you mix vehicle behavior with
5168 some of the other script calls that provide impulse and forces to
5169 the object, especially <A
5170HREF="#AEN3770"
5171>llSetBuoyancy</A
5172>, <A
5173HREF="#AEN3829"
5174>llSetForce</A
5175>, <A
5176HREF="#AEN4153"
5177>llSetTorque</A
5178>, and <A
5179HREF="#AEN3860"
5180>llSetHoverHeight</A
5181>.</P
5182><P
5183>While the following methods probably don't cause any
5184 instabilities, their behavior may conflict with vehicles and cause
5185 undesired and/or inconsistent results, so use <A
5186HREF="#AEN2753"
5187>llLookAt</A
5188>, <A
5189HREF="#AEN3556"
5190>llRotLookAt</A
5191>, <A
5192HREF="#AEN2980"
5193>llMoveToTarget</A
5194>, and <A
5195HREF="#AEN4654"
5196>llTargetOmega</A
5197> at your own
5198 risk.</P
5199><P
5200>If you think you have found a bug relating to how vehicle's
5201 work, one way to submit the problem is to give a copy of the
5202 vehicle and script to Andrew Linden with comments or a notecard
5203 describing the problem. Please name all submissions "Bugged
5204 Vehicle XX" where XX are your Second Life initials. The
5205 vehicle and script will be examined at the earliest
5206 convenience.</P
5207></DIV
5208><DIV
5209CLASS="section"
5210><HR><H2
5211CLASS="section"
5212><A
5213NAME="AEN815"
5214>11.3. Definitions</A
5215></H2
5216><P
5217>&#13; The terms "roll", "pitch", and
5218 "yaw" are often used to describe the modes of rotations
5219 that can happen to a airplane or boat. They correspond to
5220 rotations about the local x-, y-, and z-axis respectively.</P
5221><P
5222><DIV
5223CLASS="informalexample"
5224><P
5225></P
5226><A
5227NAME="AEN819"
5228></A
5229><PRE
5230CLASS="programlisting"
5231>&#13; z-axis .
5232 yaw-axis /|\
5233 | __. y-axis
5234 ._ ___| /| pitch-axis
5235 _||\ \\ |\. /
5236 \|| \_______\_|__\_/_______
5237 | _ _ o o o o o o o |\_ ______\ x-axis
5238 // ./_______,----,__________) / roll-axis
5239 /_,/ // ./
5240 /__,/
5241 </PRE
5242><P
5243></P
5244></DIV
5245></P
5246><P
5247>&#13; The right-hand-rule, often introduced in beginning physics
5248 courses, is used to define the direction of positive rotation
5249 about any axis. As an example of how to use the right hand rule,
5250 consider a positive rotation about the roll axis. To help
5251 visualize how such a rotation would move the airplane, place your
5252 right thumb parallel to the plane's roll-axis such that the thumb
5253 points in the positive x-direction, then curl the four fingers
5254 into a fist. Your fingers will be pointing in the direction that
5255 the plane will spin.</P
5256><P
5257><DIV
5258CLASS="informalexample"
5259><P
5260></P
5261><A
5262NAME="AEN823"
5263></A
5264><PRE
5265CLASS="programlisting"
5266>&#13; .-.--.--.--. __
5267 / / / / _ \ / \
5268 (-(- (- (- ( | _________|______\ axis of
5269 \.\._\._\._) | | / rotation
5270 | \:__,---. \|/
5271 | | + positive
5272 \ .,_.___.' rotation
5273 \_ ^ `.__,/
5274 | /
5275 | |
5276 </PRE
5277><P
5278></P
5279></DIV
5280></P
5281><P
5282>&#13; Many of the parameters that control a vehicle's behavior are
5283 of the form: VEHICLE_BEHAVIOR_TIMESCALE. A behavior's
5284 "timescale" can usually be understood as the time for
5285 the behavior to push, twist, or otherwise affect the vehicle such
5286 that the difference between what it is doing, and what it is
5287 supposed to be doing, has been reduced to 1/e of what it was,
5288 where "e" is the natural exponent (approximately
5289 2.718281828). In other words, it is the timescale for exponential
5290 decay toward full compliance to the desired behavior. When you
5291 want the vehicle to be very responsive use a short timescale of
5292 one second or less, and if you want to disable a behavior then set
5293 the timescale to a very large number like 300 (5 minutes) or
5294 more. Note, for stability reasons, there is usually a limit to how
5295 small a timescale is allowed to be, and is usually on the order of
5296 a tenth of a second. Setting a timescale to zero is safe and is
5297 always equivalent to setting it to its minimum. Any feature with a
5298 timescale can be effectively disabled by setting the timescale so
5299 large that it would take them all day to have any
5300 effect.</P
5301></DIV
5302><DIV
5303CLASS="section"
5304><HR><H2
5305CLASS="section"
5306><A
5307NAME="AEN826"
5308>11.4. Setting the Vehicle Type</A
5309></H2
5310><P
5311>Before any vehicle parameters can be set the vehicle
5312 behavior must first be enabled. It is enabled by calling <A
5313HREF="#AEN4202"
5314>llSetVehicleType</A
5315> with any
5316 VEHICLE_TYPE_*, except VEHICLE_TYPE_NONE which will disable the
5317 vehicle. See the <A
5318HREF="#AEN6241"
5319>vehicle type
5320 constants</A
5321> section for currently available types. More types
5322 will be available soon.</P
5323><P
5324>Setting the vehicle type is necessary for enabling the
5325 vehicle behavior and sets all of the parameters to its default
5326 values. For each vehicle type listed we provide the corresponding
5327 equivalent code in long format. Is is
5328 <SPAN
5329CLASS="emphasis"
5330><I
5331CLASS="emphasis"
5332>important</I
5333></SPAN
5334> to realize that the defaults are
5335 <SPAN
5336CLASS="emphasis"
5337><I
5338CLASS="emphasis"
5339>not</I
5340></SPAN
5341> the optimal settings for any of these
5342 vehicle types and that they will definitely be changed in the
5343 future. Do not rely on these values to be constant until
5344 specified.</P
5345><P
5346>Should you want to make a unique or experimental vehicle you
5347 will still have to enable the vehicle behavior with one of the
5348 default types first, after which you will be able to change any of
5349 the parameters or flags within the allowed ranges.</P
5350><P
5351>Setting the vehicle type does not automatically take
5352 controls or otherwise move the object. However should you enable
5353 the vehicle behavior while the object is free to move and parked
5354 on a hill then it may start to slide away.</P
5355><P
5356>We're looking for new and better default vehicle types. If
5357 you think you've found a set of parameters that make a better car,
5358 boat, or any other default type of vehicle then you may submit
5359 your proposed list of settings to Andrew Linden via a script or
5360 notecard.</P
5361></DIV
5362><DIV
5363CLASS="section"
5364><HR><H2
5365CLASS="section"
5366><A
5367NAME="AEN837"
5368>11.5. Linear and Angular Deflection</A
5369></H2
5370><P
5371>A common feature of real vehicles is their tendency to move
5372 along "preferred axes of motion". That is, due to
5373 their wheels, wings, shape, or method of propulsion they tend to
5374 push or redirect themselves along axes that are static in the
5375 vehicle's local frame. This general feature defines a
5376 class of vehicles and included in this category a common
5377 dart is a "vehicle": it
5378 has fins in the back such that if it were to tumble in the air it
5379 would eventually align itself to move point-forward -- we'll call
5380 this alignment effect <SPAN
5381CLASS="emphasis"
5382><I
5383CLASS="emphasis"
5384>angular
5385 deflection</I
5386></SPAN
5387>.</P
5388><P
5389>A wheeled craft exhibits a
5390 different effect: when a
5391 skateboard is pushed in some direction it will tend to redirect
5392 the resultant motion along that which it is free to roll -- we'll
5393 call this effect <SPAN
5394CLASS="emphasis"
5395><I
5396CLASS="emphasis"
5397>&#13; linear deflection</I
5398></SPAN
5399>.</P
5400><P
5401>So a typical Second Life vehicle is an object that
5402 exhibits linear and/or angular deflection along the
5403 "preferential axes of motion". The default
5404 preferential axes of motion are the local x- (at), y- (left), and
5405 z- (up) axes of the <SPAN
5406CLASS="emphasis"
5407><I
5408CLASS="emphasis"
5409>local frame</I
5410></SPAN
5411> of the
5412 vehicle's root primitive. The deflection behaviors relate to the
5413 x-axis (at): linear deflection will tend to rotate its velocity
5414 until it points along it's positive local x-axis while the
5415 angular deflection will tend to reorient the vehicle such that
5416 it's x-axis points in the direction that it is moving. The other
5417 axes are relevant to vehicle behaviors that are described later,
5418 such as the
5419 <A
5420HREF="#AEN938"
5421>vertical attractor</A
5422>
5423 which tries to keep a vehicle's
5424 local z-axis pointed toward the world z-axis (up). The vehicle
5425 axes can be rotated relative to the object's actual local axes by
5426 using the
5427 <A
5428HREF="#AEN990"
5429>VEHICLE_REFERENCE_FRAME</A
5430>
5431 parameter, however that is an
5432 advanced feature and is covered in detail in a later section of
5433 these documents.</P
5434><P
5435>Depending on the vehicle it might be desirable to have lots
5436 of linear and/or angular deflection or not. The speed of the
5437 deflections are controlled by setting the relevant parameters
5438 using the <A
5439HREF="#AEN4188"
5440>llSetVehicleFloatParam</A
5441>
5442 script call. Each variety of deflection has a
5443 "timescale" parameter that determines how quickly a
5444 full deflection happens. Basically the timescale it the time
5445 coefficient for exponential decay toward full deflection. So, a
5446 vehicle that deflects quickly should have a small timescale. For
5447 instance, a typical dart might have a angular deflection
5448 timescale of a couple of seconds but a linear deflection of
5449 several seconds; it will tend to reorient itself before it
5450 changes direction. To set the deflection timescales of a dart
5451 you might use the lines below:</P
5452><P
5453><DIV
5454CLASS="informalexample"
5455><P
5456></P
5457><A
5458NAME="AEN850"
5459></A
5460><PRE
5461CLASS="programlisting"
5462>&#13;llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 2.0);
5463llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 6.0);
5464 </PRE
5465><P
5466></P
5467></DIV
5468></P
5469><P
5470> Each variety of deflection has an "efficiency"
5471 parameter that is a slider between 0.0 and 1.0. Unlike the other
5472 efficiency parameters of other vehicle behaviors, the deflection
5473 efficiencies do not slide between "bouncy" and
5474 "damped", but instead slide from "no deflection
5475 whatsoever" (0.0) to "maximum deflection" (1.0).
5476 That is, they behave much like the deflection timescales, however
5477 they are normalized to the range between 0.0 and 1.0.</P
5478></DIV
5479><DIV
5480CLASS="section"
5481><HR><H2
5482CLASS="section"
5483><A
5484NAME="AEN853"
5485>11.6. Moving and Steering the Vehicle</A
5486></H2
5487><P
5488>Once enabled, a vehicle can be pushed and rotated by
5489 external forces and/or from script calls such as
5490 <A
5491HREF="#AEN1070"
5492>llApplyImpulse</A
5493>,
5494 however linear and angular motors have been built in
5495 to make motion smoother and easier to control.
5496 Their directions can be set using the
5497 <A
5498HREF="#AEN4227"
5499>llSetVehicleVectorParam</A
5500>
5501 call. For example, to make the vehicle try to move at 5
5502 meters/second along its local x-axis (the default look-at
5503 direction) you would put the following line in your script:</P
5504><P
5505><DIV
5506CLASS="informalexample"
5507><P
5508></P
5509><A
5510NAME="AEN859"
5511></A
5512><PRE
5513CLASS="programlisting"
5514>&#13;llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;5, 0, 0&#62;);
5515 </PRE
5516><P
5517></P
5518></DIV
5519></P
5520><P
5521>The motor strength is not the full story, since you can also
5522 control how fast the motor engages (VEHICLE_LINEAR_MOTOR_TIMESCALE)
5523 and there is a parameter that causes the motor's effectiveness to
5524 decay over time (VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE).</P
5525><P
5526>Steering the vehicle involves setting the
5527 VEHICLE_ANGULAR_MOTOR_DIRECTION and related parameters.
5528 It is also possible to set some flags that allow the angular
5529 motor slave to your camera view when in mouselook.</P
5530><P
5531>For more details about the vehicle motors
5532 read the sections on the <A
5533HREF="#AEN866"
5534>linear
5535 </A
5536> and <A
5537HREF="#AEN898"
5538>angular</A
5539>
5540 motors below.</P
5541></DIV
5542><DIV
5543CLASS="section"
5544><HR><H2
5545CLASS="section"
5546><A
5547NAME="AEN866"
5548>11.7. The Linear Motor</A
5549></H2
5550><P
5551>The parameters that control the linear motor are:</P
5552><P
5553><P
5554></P
5555><UL
5556><LI
5557STYLE="list-style-type: opencircle"
5558><P
5559>&#13; VEHICLE_LINEAR_MOTOR_DIRECTION</P
5560><P
5561>A vector.
5562 It is the velocity (meters/sec) that the vehicle will
5563 try to attain. It points in the vehicle's local frame, and has a
5564 maximum length of 40.</P
5565></LI
5566><LI
5567STYLE="list-style-type: opencircle"
5568><P
5569>&#13; VEHICLE_LINEAR_MOTOR_OFFSET</P
5570><P
5571>A vector.
5572 It is the offset point from the vehicle's center of mass at which
5573 the linear motor's impulse is applied. This allows the linear motor
5574 to also cause rotational torque. It is in the vehicle's local
5575 frame and its maximum length is 100 meters! No need to worry
5576 about stability -- if the vehicle starts to spin too fast
5577 (greater than about 4*PI radians per second) then angular
5578 velocity damping will kick in. The reason the offset is allowed
5579 to be so large is so that it can compete with the other vehicle
5580 behaviors such as <A
5581HREF="#vehicle_angular_deflection"
5582>angular deflection</A
5583>
5584 and the <A
5585HREF="#AEN938"
5586>vertical
5587 attractor</A
5588>. Some of the other vehicle behaviors may
5589 drastically reduce the effective torque from the linear motor
5590 offset, in which case a longer leverage arm may help.</P
5591></LI
5592><LI
5593STYLE="list-style-type: opencircle"
5594><P
5595>&#13; VEHICLE_LINEAR_MOTOR_TIMESCALE</P
5596><P
5597>A float. Determines how long it takes for the motor to
5598 push the vehicle to full speed. Its minimum value is approximately
5599 0.06 seconds.</P
5600></LI
5601><LI
5602STYLE="list-style-type: opencircle"
5603><P
5604>&#13; VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE</P
5605><P
5606>A float. The effectiveness of the motor will exponentially
5607 decay over this timescale, but the effectiveness will be reset
5608 whenever the motor's value is explicitly set. The maximum value
5609 of this decay timescale is 120 seconds,
5610 and this timescale is always in effect.</P
5611></LI
5612></UL
5613></P
5614><P
5615>The flags that affect the linear motor are:</P
5616><P
5617><P
5618></P
5619><UL
5620><LI
5621STYLE="list-style-type: opencircle"
5622><P
5623>VEHICLE_FLAG_LIMIT_MOTOR_UP</P
5624><P
5625>Useful for "ground vehicles".
5626 Setting this flag will clamp the z-component of the linear
5627 motor (in world frame) to prevent it from defeating gravity.</P
5628></LI
5629></UL
5630></P
5631><P
5632>Setting the motor speed is not enough to enable all
5633 interesting vehicles. For example, some will want a car that
5634 immediately gets up to the speed they want, while others will want
5635 a boat that slowly climbs up to its maximum velocity. To control
5636 this effect the VEHICLE_LINEAR_MOTOR_TIMESCALE parameter can be
5637 used. Basically the "timescale" of a motor is the
5638 time constant for the vehicle to exponentially accelerate toward
5639 its full speed.</P
5640><P
5641>What would happen if you were to accidentally set the
5642 vehicle's linear velocity to maximum possible speed and then let
5643 go? It would run away and never stop, right? Not necessarily: an
5644 automatic "motor decay" has been built in such that all
5645 motors will gradually decrease their effectiveness after being
5646 set.</P
5647><P
5648>Each time the linear motor's vector is set its
5649 "grip"
5650 immediately starts to decay exponentially with a timescale
5651 determined by the VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, such
5652 that after enough time the motor ceases to have any effect.
5653 This decay timescale serves two purposes. First, since it
5654 <SPAN
5655CLASS="emphasis"
5656><I
5657CLASS="emphasis"
5658>cannot</I
5659></SPAN
5660> be set longer than 120 seconds,
5661 and is <SPAN
5662CLASS="emphasis"
5663><I
5664CLASS="emphasis"
5665>always</I
5666></SPAN
5667> enabled it
5668 guarantees that a vehicle will not push itself about forever
5669 in the absence
5670 of active control (from keyboard commands or some logic loop in
5671 the script). Second, it can be used to push some vehicles around
5672 using a simple impulse model. That is, rather than setting the
5673 motor "on" or "off" depending on whether
5674 a particular key is pressed "down" or "up"
5675 the decay timescale can be set short and the motor can be set
5676 "on" whenever the key transitions from "up"
5677 to "down" and allowed to automatically decay.</P
5678><P
5679> Since the motor's effectiveness is reset whenever the
5680 motor's vector is set, then setting it to a vector of length zero
5681 is different from allowing it to decay completely. The first case
5682 will cause the vehicle to try to reach zero velocity, while the
5683 second will leave the motor impotent.</P
5684><P
5685>The two motor timescales have very similar names, but have
5686 different effects, so try not to get them confused.
5687 VEHICLE_LINEAR_MOTOR_TIMESCALE is the time for motor to
5688 "win", and VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE is the
5689 time for the motor's "effectiveness" to decay toward
5690 zero. If you set one when you think you are changing the other
5691 you will have frustrating results. Also, if the motor's decay
5692 timescale is shorter than the regular timescale, then the
5693 effective magnitude of the motor vector will be
5694 diminished.</P
5695></DIV
5696><DIV
5697CLASS="section"
5698><HR><H2
5699CLASS="section"
5700><A
5701NAME="AEN898"
5702>11.8. The Angular Motor</A
5703></H2
5704><P
5705>The parameters that control the angular motor are:</P
5706><P
5707><P
5708></P
5709><UL
5710><LI
5711STYLE="list-style-type: opencircle"
5712><P
5713>&#13; VEHICLE_ANGULAR_MOTOR_DIRECTION</P
5714><P
5715>A vector. It is the angular velocity (radians/sec)
5716 that the vehicle will try to rotate. It points in the vehicle's
5717 local frame, and has a maximum value of 4*PI (two revolutions
5718 per second).</P
5719></LI
5720><LI
5721STYLE="list-style-type: opencircle"
5722><P
5723>&#13; VEHICLE_ANGULAR_MOTOR_TIMESCALE</P
5724><P
5725>A float. Determines how long it takes for the motor to
5726 spin the vehicle to full speed. Its minimum value is approximately
5727 0.06 seconds.</P
5728></LI
5729><LI
5730STYLE="list-style-type: opencircle"
5731><P
5732>&#13; VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE</P
5733><P
5734>A float. The effectiveness of the motor will exponentially
5735 decay over this timescale, but the effectiveness will be reset
5736 whenever the motor's value is explicitly set. The maximum value
5737 of this decay timescale is 120 seconds,
5738 and this timescale is always in effect.</P
5739></LI
5740></UL
5741></P
5742><P
5743>Like the linear motor the angular motor can be set explicitly,
5744 and has magnitude/direction, a timescale, and a decay timescale. </P
5745><P
5746>When it comes to actually steering a vehicle there are
5747 several ways to do it. One way would be for the script to grab
5748 keyboard input and to explicitly turn the motor on/off based on
5749 which keys are pressed. When steering this way you probably
5750 don't want it to turn very far or for very long. One way to do
5751 it using the angular motor would be to leave the decay timescale
5752 long, enable a significant amount of angular friction (to
5753 quickly slow the vehicle down when the motor is turned off) then
5754 set the angular motor to a large vector on a key press, and set
5755 it to zero when the key is released. That has the effect of
5756 making the vehicle unresponsive to external collisions, due to
5757 the angular friction.</P
5758><P
5759>Another way to do it is to set the
5760 VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE to a short value and push
5761 the vehicle about with a more impulsive method that sets the
5762 motor fast on a key press down (and optionally setting the motor
5763 to zero on a key up) relying on the automatic exponential decay
5764 of the motor's effectiveness rather than a constant angular
5765 friction.</P
5766><P
5767>Finally, it may be possible to discard the angular motor
5768 entirely and use the VEHICLE_LINEAR_MOTOR_OFFSET. Whenever the
5769 offset has a component that is perpendicular to the direction
5770 of the linear motor the vehicle will rotate as it travels.
5771 Note, with the incorrect values for offset and strength the
5772 linear motor effect can easily cause the vehicle to tumble
5773 and spin uncontrollably, so experiement with small offsets
5774 first!.</P
5775><P
5776>Setting the angular motor to zero magnitude is different
5777 from allowing it to decay. When the motor completely decays
5778 it no longer affects the motion of the vehicle, however setting
5779 it to zero will reset the "grip" of the vehicle and
5780 will make the vehicle try to achieve zero angular velocity.
5781 </P
5782><P
5783>Many real vehicles bank (roll about their
5784 forward axis) to effect a turn, such as motorcycles and airplanes.
5785 To make it easier to build banking vehicles there is
5786 <A
5787HREF="#AEN949"
5788>banking behavior</A
5789>
5790 available which can be controlled by setting other parameters and is
5791 described in more detail here.</P
5792><P
5793>It is also possible to make a
5794 <A
5795HREF="#AEN921"
5796>vehicle turn in response
5797 to changing the camera view</A
5798>
5799 (right now this only works in mouselook).</P
5800></DIV
5801><DIV
5802CLASS="section"
5803><HR><H2
5804CLASS="section"
5805><A
5806NAME="AEN921"
5807>11.9. Using the Camera to Steer</A
5808></H2
5809><P
5810>The vehicle can be instructed to rotate its forward axis
5811 to point in the same direction as the camera view. This
5812 is achieved by setting some flags that change how the
5813 VEHICLE_ANGULAR_MOTOR_DIRECTION is interpreted. When used properly
5814 this feature has the advantage of being able to provide simple
5815 and stable steering that is resilient to bad render frame rates
5816 on the client. </P
5817><P
5818>The flags that affect the angular motor are:</P
5819><P
5820><P
5821></P
5822><UL
5823><LI
5824STYLE="list-style-type: opencircle"
5825><P
5826>&#13; VEHICLE_FLAG_MOUSELOOK_STEER</P
5827><P
5828>Steer the vehicle using the mouse. Use this flag to make
5829 the angular motor try to make the vehicle
5830 turn such that its local x-axis points in the same direction as
5831 the client-side camera.</P
5832></LI
5833><LI
5834STYLE="list-style-type: opencircle"
5835><P
5836>&#13; VEHICLE_FLAG_MOUSELOOK_BANK</P
5837><P
5838>Same as above, but relies on banking. It remaps left-right
5839 motions of the client camera (also known as "yaw") to rotations about
5840 the vehicle's local x-axis (also known as "roll"). </P
5841></LI
5842><LI
5843STYLE="list-style-type: opencircle"
5844><P
5845>&#13; VEHICLE_FLAG_CAMERA_DECOUPLED</P
5846><P
5847>Makes mouselook camera rotate independently of the vehicle.
5848 By default the client mouselook camera will rotate about
5849 with the vehicle, however when this flag is set the camera
5850 direction is independent of the vehicle's rotation.</P
5851></LI
5852></UL
5853></P
5854><P
5855>When using the VEHICLE_FLAG_MOUSELOOK_STEER (or
5856 VEHICLE_FLAG_MOUSELOOK_BANK) the meaning of the
5857 VEHICLE_ANGULAR_MOTOR_DIRECTION parameter subtly changes. Instead
5858 of representing the "angular velocity" of the motor
5859 the components of the parameter scale the "measured angular
5860 velocity" (as determined by the rotation between
5861 the client's camera view direction and the forward-axis of the vehicle)
5862 to compute the "final angular velocity". That is,
5863 suppose you set the angular motor to &#60;0, 0, 5&#62;, then moved the
5864 camera view to be PI/4 radians to the left of the vehicle's forward axis,
5865 and down PI/8 toward the ground.
5866 The measured angular velocity would be &#60;0, -PI/8, PI/4&#62;
5867 radians/second, but the final velocity would be &#60;0, 0, 5*PI/4&#62;...
5868 the vehicle will turn left, but will not dip its nose down.
5869 Thus, by setting a component of the VEHICLE_ANGULAR_MOTOR_DIRECTION
5870 to zero, one can negate the pitch or yaw response of the motor,
5871 or even scale one to be much more responsive than the other.
5872 </P
5873><P
5874>The VEHICLE_ANGULAR_MOTOR_TIMESCALE still has an effect when
5875 using mouselook control, and scales the global responsiveness of the
5876 angular motor. The VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, on the other
5877 hand, is ignored when using mouselook controls.</P
5878></DIV
5879><DIV
5880CLASS="section"
5881><HR><H2
5882CLASS="section"
5883><A
5884NAME="AEN938"
5885>11.10. The Vertical Attractor</A
5886></H2
5887><P
5888>Some vehicles, like boats, should always keep their up-side
5889 up. This can be done by enabling the "vertical
5890 attractor" behavior that springs the vehicle's local z-axis
5891 to the world z-axis (a.k.a. "up"). To take advantage of
5892 this feature you would set the VEHICLE_VERTICAL_ATTRACTION_TIMESCALE
5893 to control the period of the spring frequency, and then set the
5894 VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY to control the damping. An
5895 efficiency of 0.0 will cause the spring to wobble around its
5896 equilibrium, while an efficiency of 1.0 will cause the spring to
5897 reach it's equilibrium with exponential decay.</P
5898><P
5899><DIV
5900CLASS="informalexample"
5901><P
5902></P
5903><A
5904NAME="AEN942"
5905></A
5906><PRE
5907CLASS="programlisting"
5908>&#13;llSetVehicleVectorParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 4.0);
5909llSetVehicleVectorParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5);
5910 </PRE
5911><P
5912></P
5913></DIV
5914></P
5915><P
5916>The vertical attractor is disabled by setting its timescale
5917 to anything larger than 300 seconds.</P
5918><P
5919>Note that by default the vertical attractor will prevent the
5920 vehicle from diving and climbing. So, if you wanted to make a
5921 airplane you would probably want to unlock the attractor around the
5922 pitch axis by setting the VEHICLE_FLAG_LIMIT_ROLL_ONLY bit:</P
5923><P
5924><DIV
5925CLASS="informalexample"
5926><P
5927></P
5928><A
5929NAME="AEN947"
5930></A
5931><PRE
5932CLASS="programlisting"
5933>&#13;llSetVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY);
5934 </PRE
5935><P
5936></P
5937></DIV
5938></P
5939></DIV
5940><DIV
5941CLASS="section"
5942><HR><H2
5943CLASS="section"
5944><A
5945NAME="AEN949"
5946>11.11. Banking</A
5947></H2
5948><P
5949>The <A
5950HREF="#AEN938"
5951>&#13; vertical attractor</A
5952> feature must be enabled in order for
5953 the banking behavior to function. The way banking works is this: a
5954 rotation around the vehicle's roll-axis will produce a angular
5955 velocity around the yaw-axis, causing the vehicle to turn. The
5956 magnitude of the yaw effect will be proportional to the
5957 VEHICLE_BANKING_EFFICIENCY, the angle of the roll rotation, and
5958 sometimes the vehicle's velocity along it's preferred axis of
5959 motion.</P
5960><P
5961>The VEHICLE_BANKING_EFFICIENCY can vary between -1 and +1. When
5962 it's positive then any positive rotation (by the right-hand rule)
5963 about the roll-axis will effect a (negative) torque around the
5964 yaw-axis, making it turn to the right -- that is the vehicle will
5965 lean into the turn, which is how real airplanes and motorcycle's
5966 work. Negating the banking coefficient will make it so that the
5967 vehicle leans to the outside of the turn (not very
5968 "physical" but might allow interesting vehicles so why
5969 not?).</P
5970><P
5971>The VEHICLE_BANKING_MIX is a fake (i.e. non-physical)
5972 parameter that is useful for making banking vehicles do what you
5973 want rather than what the laws of physics allow. For example,
5974 consider a real motorcycle... it must be moving forward in order
5975 for it to turn while banking, however video-game motorcycles are
5976 often configured to turn in place when at a dead stop -- because
5977 they're often easier to control that way using the limited
5978 interface of the keyboard or game controller. The
5979 VEHICLE_BANKING_MIX enables combinations of both realistic and
5980 non-realistic banking by functioning as a slider between a banking
5981 that is correspondingly totally static (0.0) and totally dynamic
5982 (1.0). By "static" we mean that the banking effect
5983 depends only on the vehicle's rotation about it's roll-axis
5984 compared to "dynamic" where the banking is also
5985 proportional to it's velocity along it's roll-axis. Finding the
5986 best value of the "mixture" will probably require trial
5987 and error.</P
5988><P
5989>The time it takes for the
5990 banking behavior to defeat a
5991 pre-existing angular velocity about the world z-axis is determined
5992 by the VEHICLE_BANKING_TIMESCALE. So if you want the vehicle to
5993 bank quickly then give it a banking timescale of about a second or
5994 less, otherwise you can make a sluggish vehicle by giving it a
5995 timescale of several seconds.</P
5996></DIV
5997><DIV
5998CLASS="section"
5999><HR><H2
6000CLASS="section"
6001><A
6002NAME="AEN956"
6003>11.12. Friction Timescales</A
6004></H2
6005><P
6006>&#13; VEHICLE_LINEAR_FRICTION_TIMESCALE is a vector parameter that
6007 defines the timescales for the vehicle to come to a complete stop
6008 along the three local axes of the
6009 <A
6010HREF="#AEN990"
6011>vehicle's reference frame</A
6012>.
6013 The timescale along each axis is independent of the others.
6014 For example, a sliding ground car would probably have very little
6015 friction along its x- and z-axes (so it can easily slide forward
6016 and fall down) while there would usually significant friction
6017 along its y-axis:</P
6018><P
6019><DIV
6020CLASS="informalexample"
6021><P
6022></P
6023><A
6024NAME="AEN961"
6025></A
6026><PRE
6027CLASS="programlisting"
6028>&#13;llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;1000, 1000, 3&#62;);
6029 </PRE
6030><P
6031></P
6032></DIV
6033></P
6034><P
6035>Remember that a longer timescale corresponds to a weaker
6036 friction, hence to effectively disable all linear friction you
6037 would set all of the timescales to large values.</P
6038><P
6039>Setting the linear friction as a scalar is allowed, and has
6040 the effect of setting all of the timescales to the same
6041 value. Both code snippets below are equivalent, and both make friction
6042 negligible:</P
6043><P
6044><DIV
6045CLASS="informalexample"
6046><P
6047></P
6048><A
6049NAME="AEN966"
6050></A
6051><PRE
6052CLASS="programlisting"
6053>&#13;// set all linear friction timescales to 1000
6054llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;1000, 1000, 1000&#62;);
6055 </PRE
6056><P
6057></P
6058></DIV
6059></P
6060><P
6061><DIV
6062CLASS="informalexample"
6063><P
6064></P
6065><A
6066NAME="AEN969"
6067></A
6068><PRE
6069CLASS="programlisting"
6070>&#13;// same as above, but fewer characters
6071llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 1000);
6072 </PRE
6073><P
6074></P
6075></DIV
6076></P
6077><P
6078>&#13; VEHICLE_ANGULAR_FRICTION_TIMESCALE is also a vector
6079 parameter that defines the timescales for the vehicle to stop
6080 rotating about the x-, y-, and z-axes, and are set and disabled in
6081 the same way as the linear friction.</P
6082></DIV
6083><DIV
6084CLASS="section"
6085><HR><H2
6086CLASS="section"
6087><A
6088NAME="AEN972"
6089>11.13. Buoyancy</A
6090></H2
6091><P
6092>The vehicle has a built-in buoyancy feature that is
6093 independent of the <A
6094HREF="#AEN3770"
6095>llSetBuoyancy</A
6096> call. It
6097 is recommended that the two buoyancies do not mix! To make
6098 a vehicle buoyant, set the VEHICLE_BUOYANCY parameter to something
6099 between -1.0 (extra gravity) to 1.0 (full anti-gravity).
6100 </P
6101><P
6102>The buoyancy behavior is independent of hover, however
6103 in order for hover to work without a large offset of the
6104 VEHICLE_HOVER_HEIGHT, the VEHICLE_BUOYANCY should be set to 1.0.
6105 </P
6106><P
6107>It is not recommended that you mix vehicle buoyancy with
6108 the <A
6109HREF="#AEN3770"
6110>llSetBuoyancy</A
6111> script call.
6112 It would probably cause the object to fly up into space.</P
6113></DIV
6114><DIV
6115CLASS="section"
6116><HR><H2
6117CLASS="section"
6118><A
6119NAME="AEN979"
6120>11.14. Hover</A
6121></H2
6122><P
6123>The hover behavior is enabled by setting the
6124 VEHICLE_HOVER_TIMESCALE to a value less than 300 seconds; larger
6125 timescales totally disable it. Most vehicles will work
6126 best with short hover timescales of a few seconds or less.
6127 The shorter the timescale, the faster the vehicle will
6128 slave to is target height. Note, that if the values of
6129 VEHICLE_LINEAR_FRICTION_TIMESCALE may affect the speed of
6130 the hover.</P
6131><P
6132>Hover is independent of buoyancy, however the
6133 VEHICLE_BUOYANCY should be set to 1.0, otherwise the vehicle
6134 will not lift itself off of the ground until the
6135 VEHICLE_HOVER_HEIGHT is made large enough to counter the
6136 acceleration of gravity, and the vehicle will never float
6137 all the way to its target height. </P
6138><P
6139>The VEHICLE_HOVER_EFFICIENCY can be thought of as a slider
6140 between bouncy (0.0) and smoothed (1.0). When in the
6141 bouncy range the vehicle will tend to hover a little lower than
6142 its target height and the VEHICLE_HOVER_TIMESCALE will be
6143 approximately the oscillation period of the bounce (the real
6144 period will tend to be a little longer than the timescale).</P
6145><P
6146>For performance reasons, until improvements are made to the
6147 Second Life physics engine the vehicles can only hover over the
6148 terrain and water, so they will not be able to hover above
6149 objects made out of primitives, such as bridges and houses. By
6150 default the hover behavior will float over terrain and water,
6151 however this can be changed by setting some flags: </P
6152><P
6153>If you wanted to make a boat you should set the
6154 <A
6155HREF="#const_vehicle_flag_hover_water_only"
6156>&#13; VEHICLE_HOVER_WATER_ONLY </A
6157> flag, or if you wanted to drive a hover
6158 tank under water you would use the
6159 <A
6160HREF="#const_vehicle_flag_hover_terrain_only"
6161>&#13; VEHICLE_HOVER_TERRAIN_ONLY </A
6162> flag instead.
6163 Finally, if you wanted to make a submarine or a balloon you would use the
6164 <A
6165HREF="#const_vehicle_flag_hover_global_height"
6166>&#13; VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT</A
6167>. Note that
6168 the flags are independent of each other and that setting two
6169 contradictory flags will have undefined behavior. The flags are
6170 set using the script call llSetVehicleFlags().</P
6171><P
6172>The VEHICLE_HOVER_HEIGHT determines
6173 how high the vehicle
6174 will hover over the terrain and/or water, or the global height,
6175 and has a maximum value of 100 meters. Note that for hovering
6176 purposes the "center" of the vehicle is its "center of mass"
6177 which is not always obvious to the untrained eye, and it
6178 changes when avatar's sit on the vehicle.</P
6179></DIV
6180><DIV
6181CLASS="section"
6182><HR><H2
6183CLASS="section"
6184><A
6185NAME="AEN990"
6186>11.15. Reference Frame</A
6187></H2
6188><P
6189>The vehicle relies on the x- (at), y- (left), and z- (up)
6190 axes in order to figure out which way it prefers to move and
6191 which end is up. By default these axes are identical to the
6192 local axes of the root primitive of the object, however this
6193 means that the vehicle's root primitive must, by default, be
6194 oriented to agree with the designed at, left, and up axes of the
6195 vehicle. But, what if the vehicle object was already pre-built
6196 with the root primitive in some non-trivial orientation
6197 relative to where the vehicle as a whole should move? This is
6198 where the VEHICLE_REFERENCE_FRAME parameter becomes useful; the
6199 vehicle's axes can be arbitrarily reoriented by setting this
6200 parameter. </P
6201><P
6202>As an example, suppose you had built a rocket out of a big
6203 cylinder, a cone for the nose, and some stretched cut boxes for
6204 the fins, then linked them all together with the cylinder as the
6205 root primitive. Ideally the rocket would move nose-first,
6206 however the cylinder's axis of symmetry is its local z-axis while
6207 the default "at-axis" of the vehicle, the axis it will
6208 want to deflect to forward under angular deflection, is the local
6209 x-axis and points out from the curved surface of the cylinder.
6210 The script code below will rotate the vehicle's axes such that
6211 the local z-axis becomes the "at-axis" and the local
6212 negative x-axis becomes the "up-axis":</P
6213><P
6214><DIV
6215CLASS="informalexample"
6216><P
6217></P
6218><A
6219NAME="AEN995"
6220></A
6221><PRE
6222CLASS="programlisting"
6223>&#13;// rotate the vehicle frame -PI/2 about the local y-axis (left-axis)
6224rotation rot = llEuler2Rot(0, PI/2, 0);
6225llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, rot);
6226</PRE
6227><P
6228></P
6229></DIV
6230></P
6231><P
6232>Another example of how the reference frame parameter could
6233 be used is to consider flying craft that uses the vertical
6234 attractor for stability during flying but wants to use VTOL
6235 (vertical takeoff and landing). During flight the craft's dorsal
6236 axis should point up, but during landing its nose-axis should be
6237 up. To land the vehicle: while the
6238 <A
6239HREF="#AEN938"
6240>vertical attractor</A
6241>
6242 is in effect, rotate the existing VEHICLE_REFERENCE_FRAME by +PI/2
6243 about the left-axis, then the vehicle will pitch up such that
6244 it's nose points toward the sky. The vehicle could be allowed to
6245 fall to the landing pad under friction, or a decreasing hover
6246 effect. </P
6247></DIV
6248></DIV
6249><DIV
6250CLASS="appendix"
6251><HR><H1
6252><A
6253NAME="AEN999"
6254></A
6255>Appendix A. Linden Library Functions</H1
6256><P
6257>Complete listing of the Linden Library function calls
6258 available in lsl.</P
6259><DIV
6260CLASS="section"
6261><HR><H2
6262CLASS="section"
6263><A
6264NAME="AEN1002"
6265>A.1. llAbs</A
6266></H2
6267><DIV
6268CLASS="funcsynopsis"
6269><P
6270></P
6271><A
6272NAME="AEN1004"
6273></A
6274><P
6275><CODE
6276><CODE
6277CLASS="FUNCDEF"
6278>integer llAbs</CODE
6279>(integer val);</CODE
6280></P
6281><P
6282></P
6283></DIV
6284><P
6285>Returns the absolute value of
6286 <CODE
6287CLASS="parameter"
6288>val</CODE
6289>.</P
6290></DIV
6291><DIV
6292CLASS="section"
6293><HR><H2
6294CLASS="section"
6295><A
6296NAME="AEN1012"
6297>A.2. llAcos</A
6298></H2
6299><DIV
6300CLASS="funcsynopsis"
6301><P
6302></P
6303><A
6304NAME="AEN1014"
6305></A
6306><P
6307><CODE
6308><CODE
6309CLASS="FUNCDEF"
6310>float llAcos</CODE
6311>(float val);</CODE
6312></P
6313><P
6314></P
6315></DIV
6316><P
6317>Returns the arccosine in radians of
6318 <CODE
6319CLASS="parameter"
6320>val</CODE
6321>.</P
6322></DIV
6323><DIV
6324CLASS="section"
6325><HR><H2
6326CLASS="section"
6327><A
6328NAME="AEN1022"
6329>A.3. llAddToLandPassList</A
6330></H2
6331><DIV
6332CLASS="funcsynopsis"
6333><P
6334></P
6335><A
6336NAME="AEN1024"
6337></A
6338><P
6339><CODE
6340><CODE
6341CLASS="FUNCDEF"
6342>llAddToLandPassList</CODE
6343>(key avatar, float hours);</CODE
6344></P
6345><P
6346></P
6347></DIV
6348><P
6349>Add <CODE
6350CLASS="parameter"
6351>avatar</CODE
6352> to the land pass list for
6353 <CODE
6354CLASS="parameter"
6355>hours</CODE
6356>.</P
6357></DIV
6358><DIV
6359CLASS="section"
6360><HR><H2
6361CLASS="section"
6362><A
6363NAME="AEN1035"
6364>A.4. llAdjustSoundVolume</A
6365></H2
6366><DIV
6367CLASS="funcsynopsis"
6368><P
6369></P
6370><A
6371NAME="AEN1037"
6372></A
6373><P
6374><CODE
6375><CODE
6376CLASS="FUNCDEF"
6377>llAdjustSoundVolume</CODE
6378>(float volume);</CODE
6379></P
6380><P
6381></P
6382></DIV
6383><P
6384>Adjusts the volume of the currently playing attached sound
6385 started with <A
6386HREF="#AEN3181"
6387>llPlaySound</A
6388> or
6389 <A
6390HREF="#AEN2773"
6391>llLoopSound</A
6392>. This function
6393 Has no effect on sounds started with <A
6394HREF="#AEN4709"
6395>llTriggerSound</A
6396>.</P
6397></DIV
6398><DIV
6399CLASS="section"
6400><HR><H2
6401CLASS="section"
6402><A
6403NAME="AEN1047"
6404>A.5. llAllowInventoryDrop</A
6405></H2
6406><DIV
6407CLASS="funcsynopsis"
6408><P
6409></P
6410><A
6411NAME="AEN1049"
6412></A
6413><P
6414><CODE
6415><CODE
6416CLASS="FUNCDEF"
6417>llAllowInventoryDrop</CODE
6418>(integer add);</CODE
6419></P
6420><P
6421></P
6422></DIV
6423><P
6424>If <CODE
6425CLASS="parameter"
6426>add</CODE
6427> == TRUE, users that do no have
6428 object modify permissions can still drop inventory items onto
6429 object.</P
6430></DIV
6431><DIV
6432CLASS="section"
6433><HR><H2
6434CLASS="section"
6435><A
6436NAME="AEN1057"
6437>A.6. llAngleBetween</A
6438></H2
6439><DIV
6440CLASS="funcsynopsis"
6441><P
6442></P
6443><A
6444NAME="AEN1059"
6445></A
6446><P
6447><CODE
6448><CODE
6449CLASS="FUNCDEF"
6450>float llAngleBetween</CODE
6451>(rotation a, rotation b);</CODE
6452></P
6453><P
6454></P
6455></DIV
6456><P
6457>Returns the angle in radians between rotations
6458 <CODE
6459CLASS="parameter"
6460>a</CODE
6461> and <CODE
6462CLASS="parameter"
6463>b</CODE
6464>.</P
6465></DIV
6466><DIV
6467CLASS="section"
6468><HR><H2
6469CLASS="section"
6470><A
6471NAME="AEN1070"
6472>A.7. llApplyImpulse</A
6473></H2
6474><DIV
6475CLASS="funcsynopsis"
6476><P
6477></P
6478><A
6479NAME="AEN1072"
6480></A
6481><P
6482><CODE
6483><CODE
6484CLASS="FUNCDEF"
6485>llApplyImpulse</CODE
6486>(vector force, integer local);</CODE
6487></P
6488><P
6489></P
6490></DIV
6491><P
6492>Applies the <CODE
6493CLASS="parameter"
6494>impulse</CODE
6495> in local
6496 coordinates if <CODE
6497CLASS="parameter"
6498>local</CODE
6499> == TRUE. Otherwise the
6500 impulse is applied in global coordinates. This function only works
6501 on physical objects.</P
6502></DIV
6503><DIV
6504CLASS="section"
6505><HR><H2
6506CLASS="section"
6507><A
6508NAME="AEN1083"
6509>A.8. llApplyRotationalImpulse</A
6510></H2
6511><DIV
6512CLASS="funcsynopsis"
6513><P
6514></P
6515><A
6516NAME="AEN1085"
6517></A
6518><P
6519><CODE
6520><CODE
6521CLASS="FUNCDEF"
6522>llApplyRotationalImpulse</CODE
6523>(vector force, integer local);</CODE
6524></P
6525><P
6526></P
6527></DIV
6528><P
6529>Applies a rotational <CODE
6530CLASS="parameter"
6531>impulse</CODE
6532> force in
6533 local coordinates if <CODE
6534CLASS="parameter"
6535>local</CODE
6536> ==
6537 TRUE. Otherwise the impulse is applied in global coordinates. This
6538 function only works on physical objects.</P
6539></DIV
6540><DIV
6541CLASS="section"
6542><HR><H2
6543CLASS="section"
6544><A
6545NAME="AEN1096"
6546>A.9. llAsin</A
6547></H2
6548><DIV
6549CLASS="funcsynopsis"
6550><P
6551></P
6552><A
6553NAME="AEN1098"
6554></A
6555><P
6556><CODE
6557><CODE
6558CLASS="FUNCDEF"
6559>float llAsin</CODE
6560>(float val);</CODE
6561></P
6562><P
6563></P
6564></DIV
6565><P
6566>Returns the arcsine in radians of
6567 <CODE
6568CLASS="parameter"
6569>val</CODE
6570>.</P
6571></DIV
6572><DIV
6573CLASS="section"
6574><HR><H2
6575CLASS="section"
6576><A
6577NAME="AEN1106"
6578>A.10. llAtan2</A
6579></H2
6580><DIV
6581CLASS="funcsynopsis"
6582><P
6583></P
6584><A
6585NAME="AEN1108"
6586></A
6587><P
6588><CODE
6589><CODE
6590CLASS="FUNCDEF"
6591>float llAtan2</CODE
6592>(float y, float x);</CODE
6593></P
6594><P
6595></P
6596></DIV
6597><P
6598>returns the arctangent2 of <CODE
6599CLASS="parameter"
6600>y</CODE
6601>,
6602 <CODE
6603CLASS="parameter"
6604>x</CODE
6605></P
6606></DIV
6607><DIV
6608CLASS="section"
6609><HR><H2
6610CLASS="section"
6611><A
6612NAME="AEN1119"
6613>A.11. llAttachToAvatar</A
6614></H2
6615><DIV
6616CLASS="funcsynopsis"
6617><P
6618></P
6619><A
6620NAME="AEN1121"
6621></A
6622><P
6623><CODE
6624><CODE
6625CLASS="FUNCDEF"
6626>llAttachToAvatar</CODE
6627>(key avatar, integer attachment);</CODE
6628></P
6629><P
6630></P
6631></DIV
6632><P
6633>Attach to <CODE
6634CLASS="parameter"
6635>avatar</CODE
6636> at point <A
6637HREF="#AEN5401"
6638><CODE
6639CLASS="parameter"
6640>attachment</CODE
6641></A
6642>.
6643 Requires the <A
6644HREF="#const_permission_attach"
6645>PERMISSION_ATTACH</A
6646> runtime
6647 permission.</P
6648></DIV
6649><DIV
6650CLASS="section"
6651><HR><H2
6652CLASS="section"
6653><A
6654NAME="AEN1134"
6655>A.12. llAvatarOnSitTarget</A
6656></H2
6657><DIV
6658CLASS="funcsynopsis"
6659><P
6660></P
6661><A
6662NAME="AEN1136"
6663></A
6664><P
6665><CODE
6666><CODE
6667CLASS="FUNCDEF"
6668>key llAvatarOnSitTarget</CODE
6669>(void);</CODE
6670></P
6671><P
6672></P
6673></DIV
6674><P
6675>If an avatar is sitting on the sit target, return
6676 the avatar's key, <A
6677HREF="#AEN6023"
6678>NULL_KEY</A
6679> otherwise.
6680 This only will detect avatars sitting on sit targets defined with <A
6681HREF="#AEN4265"
6682>llSitTarget</A
6683>.</P
6684></DIV
6685><DIV
6686CLASS="section"
6687><HR><H2
6688CLASS="section"
6689><A
6690NAME="AEN1144"
6691>A.13. llAxes2Rot</A
6692></H2
6693><DIV
6694CLASS="funcsynopsis"
6695><P
6696></P
6697><A
6698NAME="AEN1146"
6699></A
6700><P
6701><CODE
6702><CODE
6703CLASS="FUNCDEF"
6704>rotation llAxes2Rot</CODE
6705>(vector fwd, vector left, vector up);</CODE
6706></P
6707><P
6708></P
6709></DIV
6710><P
6711>Returns the rotation represented by coordinate axes
6712 <CODE
6713CLASS="parameter"
6714>fwd</CODE
6715>, <CODE
6716CLASS="parameter"
6717>left</CODE
6718>, and
6719 <CODE
6720CLASS="parameter"
6721>up</CODE
6722>.</P
6723></DIV
6724><DIV
6725CLASS="section"
6726><HR><H2
6727CLASS="section"
6728><A
6729NAME="AEN1160"
6730>A.14. llAxisAngle2Rot</A
6731></H2
6732><DIV
6733CLASS="funcsynopsis"
6734><P
6735></P
6736><A
6737NAME="AEN1162"
6738></A
6739><P
6740><CODE
6741><CODE
6742CLASS="FUNCDEF"
6743>rotation llAxisAngle2Rot</CODE
6744>(vector axis, float angle);</CODE
6745></P
6746><P
6747></P
6748></DIV
6749><P
6750>Returns the rotation generated <CODE
6751CLASS="parameter"
6752>angle</CODE
6753>
6754 about <CODE
6755CLASS="parameter"
6756>axis</CODE
6757>.</P
6758></DIV
6759><DIV
6760CLASS="section"
6761><HR><H2
6762CLASS="section"
6763><A
6764NAME="AEN1173"
6765>A.15. llBase64ToString</A
6766></H2
6767><DIV
6768CLASS="funcsynopsis"
6769><P
6770></P
6771><A
6772NAME="AEN1175"
6773></A
6774><P
6775><CODE
6776><CODE
6777CLASS="FUNCDEF"
6778>string llBase64ToString</CODE
6779>(string str);</CODE
6780></P
6781><P
6782></P
6783></DIV
6784><P
6785>Converts a Base 64 string to a conventional string. If the
6786 conversion creates any unprintable characters, they are converted to
6787 spaces.</P
6788></DIV
6789><DIV
6790CLASS="section"
6791><HR><H2
6792CLASS="section"
6793><A
6794NAME="AEN1182"
6795>A.16. llBreakAllLinks</A
6796></H2
6797><DIV
6798CLASS="funcsynopsis"
6799><P
6800></P
6801><A
6802NAME="AEN1184"
6803></A
6804><P
6805><CODE
6806><CODE
6807CLASS="FUNCDEF"
6808>llBreakAllLinks</CODE
6809>(void);</CODE
6810></P
6811><P
6812></P
6813></DIV
6814><P
6815>Delinks all objects in the link set. Requires the permission
6816 <A
6817HREF="#const_permission_change_links"
6818>PERMISSION_CHANGE_LINKS</A
6819>
6820 be set.</P
6821></DIV
6822><DIV
6823CLASS="section"
6824><HR><H2
6825CLASS="section"
6826><A
6827NAME="AEN1191"
6828>A.17. llBreakLink</A
6829></H2
6830><DIV
6831CLASS="funcsynopsis"
6832><P
6833></P
6834><A
6835NAME="AEN1193"
6836></A
6837><P
6838><CODE
6839><CODE
6840CLASS="FUNCDEF"
6841>llBreakLink</CODE
6842>(integer linknum);</CODE
6843></P
6844><P
6845></P
6846></DIV
6847><P
6848>Delinks the object with the given
6849 <CODE
6850CLASS="parameter"
6851>link</CODE
6852> number. Requires permission <A
6853HREF="#const_permission_change_links"
6854>PERMISSION_CHANGE_LINKS</A
6855>
6856 be set.</P
6857></DIV
6858><DIV
6859CLASS="section"
6860><HR><H2
6861CLASS="section"
6862><A
6863NAME="AEN1202"
6864>A.18. llCSV2List</A
6865></H2
6866><DIV
6867CLASS="funcsynopsis"
6868><P
6869></P
6870><A
6871NAME="AEN1204"
6872></A
6873><P
6874><CODE
6875><CODE
6876CLASS="FUNCDEF"
6877>list llCSV2List</CODE
6878>(string src);</CODE
6879></P
6880><P
6881></P
6882></DIV
6883><P
6884>Create a list from a string of comma separated values
6885 specified in <CODE
6886CLASS="parameter"
6887>src</CODE
6888>.</P
6889></DIV
6890><DIV
6891CLASS="section"
6892><HR><H2
6893CLASS="section"
6894><A
6895NAME="AEN1212"
6896>A.19. llCeil</A
6897></H2
6898><DIV
6899CLASS="funcsynopsis"
6900><P
6901></P
6902><A
6903NAME="AEN1214"
6904></A
6905><P
6906><CODE
6907><CODE
6908CLASS="FUNCDEF"
6909>integer llCeil</CODE
6910>(float val);</CODE
6911></P
6912><P
6913></P
6914></DIV
6915><P
6916>Returns largest integer value &#62;=
6917 <CODE
6918CLASS="parameter"
6919>val</CODE
6920>.</P
6921></DIV
6922><DIV
6923CLASS="section"
6924><HR><H2
6925CLASS="section"
6926><A
6927NAME="AEN1222"
6928>A.20. llCloseRemoteDataChannel</A
6929></H2
6930><DIV
6931CLASS="funcsynopsis"
6932><P
6933></P
6934><A
6935NAME="AEN1224"
6936></A
6937><P
6938><CODE
6939><CODE
6940CLASS="FUNCDEF"
6941>llCloseRemoteDataChannel</CODE
6942>(key channel);</CODE
6943></P
6944><P
6945></P
6946></DIV
6947><P
6948>Closes XML-RPC channel.</P
6949></DIV
6950><DIV
6951CLASS="section"
6952><HR><H2
6953CLASS="section"
6954><A
6955NAME="AEN1231"
6956>A.21. llCloud</A
6957></H2
6958><DIV
6959CLASS="funcsynopsis"
6960><P
6961></P
6962><A
6963NAME="AEN1233"
6964></A
6965><P
6966><CODE
6967><CODE
6968CLASS="FUNCDEF"
6969>float llCloud</CODE
6970>(vector offset);</CODE
6971></P
6972><P
6973></P
6974></DIV
6975><P
6976>Returns the cloud density at the object position +
6977 <CODE
6978CLASS="parameter"
6979>offset</CODE
6980>.</P
6981></DIV
6982><DIV
6983CLASS="section"
6984><HR><H2
6985CLASS="section"
6986><A
6987NAME="AEN1241"
6988>A.22. llCollisionFilter</A
6989></H2
6990><DIV
6991CLASS="funcsynopsis"
6992><P
6993></P
6994><A
6995NAME="AEN1243"
6996></A
6997><P
6998><CODE
6999><CODE
7000CLASS="FUNCDEF"
7001>llCollisionFilter</CODE
7002>(string name, key id, integer accept);</CODE
7003></P
7004><P
7005></P
7006></DIV
7007><P
7008>If <CODE
7009CLASS="parameter"
7010>accept</CODE
7011> == TRUE, only accept
7012 collisions with objects <CODE
7013CLASS="parameter"
7014>name</CODE
7015> and
7016 <CODE
7017CLASS="parameter"
7018>id</CODE
7019>, otherwise with objects not
7020 <CODE
7021CLASS="parameter"
7022>name</CODE
7023> or <CODE
7024CLASS="parameter"
7025>id</CODE
7026>. Specify
7027 an empty string or <A
7028HREF="#AEN6023"
7029>NULL_KEY</A
7030> to
7031 not filter on the corresponding parameter.</P
7032></DIV
7033><DIV
7034CLASS="section"
7035><HR><H2
7036CLASS="section"
7037><A
7038NAME="AEN1260"
7039>A.23. llCollisionSound</A
7040></H2
7041><DIV
7042CLASS="funcsynopsis"
7043><P
7044></P
7045><A
7046NAME="AEN1262"
7047></A
7048><P
7049><CODE
7050><CODE
7051CLASS="FUNCDEF"
7052>llCollisionSound</CODE
7053>(string impact_sound, float impact_volume);</CODE
7054></P
7055><P
7056></P
7057></DIV
7058><P
7059>Suppress default collision sounds, replace default impact
7060 sounds with <CODE
7061CLASS="parameter"
7062>impact_sound</CODE
7063> found in the
7064 object inventory. Supply an empty string to suppress collision
7065 sounds.</P
7066></DIV
7067><DIV
7068CLASS="section"
7069><HR><H2
7070CLASS="section"
7071><A
7072NAME="AEN1272"
7073>A.24. llCollisionSprite</A
7074></H2
7075><DIV
7076CLASS="funcsynopsis"
7077><P
7078></P
7079><A
7080NAME="AEN1274"
7081></A
7082><P
7083><CODE
7084><CODE
7085CLASS="FUNCDEF"
7086>llCollisionSprite</CODE
7087>(string impact_sprite);</CODE
7088></P
7089><P
7090></P
7091></DIV
7092><P
7093>Suppress default collision sprites, replace default impact
7094 sprite with <CODE
7095CLASS="parameter"
7096>impact_sprite</CODE
7097> found in the
7098 object inventory. Supply an empty string to just suppress.</P
7099></DIV
7100><DIV
7101CLASS="section"
7102><HR><H2
7103CLASS="section"
7104><A
7105NAME="AEN1282"
7106>A.25. llCos</A
7107></H2
7108><DIV
7109CLASS="funcsynopsis"
7110><P
7111></P
7112><A
7113NAME="AEN1284"
7114></A
7115><P
7116><CODE
7117><CODE
7118CLASS="FUNCDEF"
7119>float llCos</CODE
7120>(float theta);</CODE
7121></P
7122><P
7123></P
7124></DIV
7125><P
7126>Returns the cosine of <CODE
7127CLASS="parameter"
7128>theta</CODE
7129>
7130 radians.</P
7131></DIV
7132><DIV
7133CLASS="section"
7134><HR><H2
7135CLASS="section"
7136><A
7137NAME="AEN1292"
7138>A.26. llCreateLink</A
7139></H2
7140><DIV
7141CLASS="funcsynopsis"
7142><P
7143></P
7144><A
7145NAME="AEN1294"
7146></A
7147><P
7148><CODE
7149><CODE
7150CLASS="FUNCDEF"
7151>llCreateLink</CODE
7152>(key target, integer parent);</CODE
7153></P
7154><P
7155></P
7156></DIV
7157><P
7158>Attempt to link object script is attached to and
7159 <CODE
7160CLASS="parameter"
7161>target</CODE
7162>. Requires permission <A
7163HREF="#const_permission_change_links"
7164>PERMISSION_CHANGE_LINKS</A
7165>
7166 be set. If <CODE
7167CLASS="parameter"
7168>parent</CODE
7169> == TRUE, object script is
7170 attached to is the root.</P
7171></DIV
7172><DIV
7173CLASS="section"
7174><HR><H2
7175CLASS="section"
7176><A
7177NAME="AEN1306"
7178>A.27. llDeleteSubList</A
7179></H2
7180><DIV
7181CLASS="funcsynopsis"
7182><P
7183></P
7184><A
7185NAME="AEN1308"
7186></A
7187><P
7188><CODE
7189><CODE
7190CLASS="FUNCDEF"
7191>list llDeleteSubList</CODE
7192>(list src, integer start, integer end);</CODE
7193></P
7194><P
7195></P
7196></DIV
7197><P
7198>Remove the slice from the list and return the remainder.
7199 The <CODE
7200CLASS="parameter"
7201>start</CODE
7202> and <CODE
7203CLASS="parameter"
7204>end</CODE
7205>
7206 are inclusive, so 0, length - 1 would delete the entire list and
7207 0,0 would delete the first list entry. Using negative numbers for
7208 <CODE
7209CLASS="parameter"
7210>start</CODE
7211> and/or <CODE
7212CLASS="parameter"
7213>end</CODE
7214>
7215 causes the index to count backwards from the length of the list,
7216 so 0,-1 would delete the entire list. If
7217 <CODE
7218CLASS="parameter"
7219>start</CODE
7220> is larger than
7221 <CODE
7222CLASS="parameter"
7223>end</CODE
7224> the list deleted is the exclusion of the
7225 entries, so 6,4 would delete the entire list except for the
7226 5<SUP
7227>th</SUP
7228> list entry.</P
7229></DIV
7230><DIV
7231CLASS="section"
7232><HR><H2
7233CLASS="section"
7234><A
7235NAME="AEN1326"
7236>A.28. llDeleteSubString</A
7237></H2
7238><DIV
7239CLASS="funcsynopsis"
7240><P
7241></P
7242><A
7243NAME="AEN1328"
7244></A
7245><P
7246><CODE
7247><CODE
7248CLASS="FUNCDEF"
7249>string llDeleteSubString</CODE
7250>(string src, integer start, integer end);</CODE
7251></P
7252><P
7253></P
7254></DIV
7255><P
7256>Removes the indicated substring and returns the result. The
7257 <CODE
7258CLASS="parameter"
7259>start</CODE
7260> and <CODE
7261CLASS="parameter"
7262>end</CODE
7263> are
7264 inclusive, so 0,length-1 would delete the entire string and 0,0
7265 would delete the first character. Using negative numbers for
7266 <CODE
7267CLASS="parameter"
7268>start</CODE
7269> and/or <CODE
7270CLASS="parameter"
7271>end</CODE
7272>
7273 causes the index to count backwards from the length of the string,
7274 so 0,-1 would delete the entire string. If
7275 <CODE
7276CLASS="parameter"
7277>start</CODE
7278> is larger than end the sub string is
7279 the exclusion of the entries, so 6,4 would delete the entire
7280 string except for the 5<SUP
7281>th</SUP
7282>
7283 character.</P
7284></DIV
7285><DIV
7286CLASS="section"
7287><HR><H2
7288CLASS="section"
7289><A
7290NAME="AEN1345"
7291>A.29. llDetachFromAvatar</A
7292></H2
7293><DIV
7294CLASS="funcsynopsis"
7295><P
7296></P
7297><A
7298NAME="AEN1347"
7299></A
7300><P
7301><CODE
7302><CODE
7303CLASS="FUNCDEF"
7304>llDetachFromAvatar</CODE
7305>(key avatar);</CODE
7306></P
7307><P
7308></P
7309></DIV
7310><P
7311>Drop off of <CODE
7312CLASS="parameter"
7313>avatar</CODE
7314>.</P
7315></DIV
7316><DIV
7317CLASS="section"
7318><HR><H2
7319CLASS="section"
7320><A
7321NAME="lib_lldetected"
7322>A.30. llDetectedGrab</A
7323></H2
7324><DIV
7325CLASS="funcsynopsis"
7326><P
7327></P
7328><A
7329NAME="AEN1357"
7330></A
7331><P
7332><CODE
7333><CODE
7334CLASS="FUNCDEF"
7335>vector llDetectedGrab</CODE
7336>(integer number);</CODE
7337></P
7338><P
7339></P
7340></DIV
7341><P
7342>Returns the grab offset of detected object
7343 <CODE
7344CLASS="parameter"
7345>number</CODE
7346>. Returns &#60;0,0,0&#62; if number is
7347 not valid sensed object.</P
7348></DIV
7349><DIV
7350CLASS="section"
7351><HR><H2
7352CLASS="section"
7353><A
7354NAME="AEN1365"
7355>A.31. llDetectedGroup</A
7356></H2
7357><DIV
7358CLASS="funcsynopsis"
7359><P
7360></P
7361><A
7362NAME="AEN1367"
7363></A
7364><P
7365><CODE
7366><CODE
7367CLASS="FUNCDEF"
7368>integer llDetectedGroup</CODE
7369>(integer number);</CODE
7370></P
7371><P
7372></P
7373></DIV
7374><P
7375>Returns TRUE if detected object
7376 <CODE
7377CLASS="parameter"
7378>number</CODE
7379> is part of same group as
7380 owner.</P
7381></DIV
7382><DIV
7383CLASS="section"
7384><HR><H2
7385CLASS="section"
7386><A
7387NAME="AEN1375"
7388>A.32. llDetectedKey</A
7389></H2
7390><DIV
7391CLASS="funcsynopsis"
7392><P
7393></P
7394><A
7395NAME="AEN1377"
7396></A
7397><P
7398><CODE
7399><CODE
7400CLASS="FUNCDEF"
7401>key llDetectedKey</CODE
7402>(integer number);</CODE
7403></P
7404><P
7405></P
7406></DIV
7407><P
7408>Returns the key of detected object
7409 <CODE
7410CLASS="parameter"
7411>number</CODE
7412>. Returns <A
7413HREF="#AEN6023"
7414>NULL_KEY</A
7415> if number is not valid sensed
7416 object.</P
7417></DIV
7418><DIV
7419CLASS="section"
7420><HR><H2
7421CLASS="section"
7422><A
7423NAME="AEN1386"
7424>A.33. llDetectedLinkNumber</A
7425></H2
7426><DIV
7427CLASS="funcsynopsis"
7428><P
7429></P
7430><A
7431NAME="AEN1388"
7432></A
7433><P
7434><CODE
7435><CODE
7436CLASS="FUNCDEF"
7437>integer llDetectedLinkNumber</CODE
7438>(integer number);</CODE
7439></P
7440><P
7441></P
7442></DIV
7443><P
7444>Returns the link position of the triggered event for
7445 touches. 0 for a non-linked object, 1 for the root of a linked
7446 object, 2 for the first child, etc.</P
7447></DIV
7448><DIV
7449CLASS="section"
7450><HR><H2
7451CLASS="section"
7452><A
7453NAME="AEN1395"
7454>A.34. llDetectedName</A
7455></H2
7456><DIV
7457CLASS="funcsynopsis"
7458><P
7459></P
7460><A
7461NAME="AEN1397"
7462></A
7463><P
7464><CODE
7465><CODE
7466CLASS="FUNCDEF"
7467>string llDetectedName</CODE
7468>(integer number);</CODE
7469></P
7470><P
7471></P
7472></DIV
7473><P
7474>Returns the name of detected object
7475 <CODE
7476CLASS="parameter"
7477>number</CODE
7478>. Returns empty string if
7479 <CODE
7480CLASS="parameter"
7481>number</CODE
7482> is not valid sensed object.</P
7483></DIV
7484><DIV
7485CLASS="section"
7486><HR><H2
7487CLASS="section"
7488><A
7489NAME="AEN1406"
7490>A.35. llDetectedOwner</A
7491></H2
7492><DIV
7493CLASS="funcsynopsis"
7494><P
7495></P
7496><A
7497NAME="AEN1408"
7498></A
7499><P
7500><CODE
7501><CODE
7502CLASS="FUNCDEF"
7503>key llDetectedOwner</CODE
7504>(integer number);</CODE
7505></P
7506><P
7507></P
7508></DIV
7509><P
7510>Returns the key of detected <CODE
7511CLASS="parameter"
7512>number</CODE
7513>
7514 object's owner. Returns invalid key if
7515 <CODE
7516CLASS="parameter"
7517>number</CODE
7518> is not valid sensed object.</P
7519></DIV
7520><DIV
7521CLASS="section"
7522><HR><H2
7523CLASS="section"
7524><A
7525NAME="AEN1417"
7526>A.36. llDetectedPos</A
7527></H2
7528><DIV
7529CLASS="funcsynopsis"
7530><P
7531></P
7532><A
7533NAME="AEN1419"
7534></A
7535><P
7536><CODE
7537><CODE
7538CLASS="FUNCDEF"
7539>vector llDetectedPos</CODE
7540>(integer number);</CODE
7541></P
7542><P
7543></P
7544></DIV
7545><P
7546>Returns the position of detected object
7547 <CODE
7548CLASS="parameter"
7549>number</CODE
7550>. Returns &#60;0,0,0&#62; if
7551 <CODE
7552CLASS="parameter"
7553>number</CODE
7554> is not valid sensed object.</P
7555></DIV
7556><DIV
7557CLASS="section"
7558><HR><H2
7559CLASS="section"
7560><A
7561NAME="AEN1428"
7562>A.37. llDetectedRot</A
7563></H2
7564><DIV
7565CLASS="funcsynopsis"
7566><P
7567></P
7568><A
7569NAME="AEN1430"
7570></A
7571><P
7572><CODE
7573><CODE
7574CLASS="FUNCDEF"
7575>rotation llDetectedRot</CODE
7576>(integer number);</CODE
7577></P
7578><P
7579></P
7580></DIV
7581><P
7582>Returns the rotation of detected object
7583 <CODE
7584CLASS="parameter"
7585>number</CODE
7586>. Returns &#60;0,0,0,1&#62; if
7587 <CODE
7588CLASS="parameter"
7589>number</CODE
7590> is not valid sensed object).</P
7591></DIV
7592><DIV
7593CLASS="section"
7594><HR><H2
7595CLASS="section"
7596><A
7597NAME="AEN1439"
7598>A.38. llDetectedType</A
7599></H2
7600><DIV
7601CLASS="funcsynopsis"
7602><P
7603></P
7604><A
7605NAME="AEN1441"
7606></A
7607><P
7608><CODE
7609><CODE
7610CLASS="FUNCDEF"
7611>integer llDetectedType</CODE
7612>(integer number);</CODE
7613></P
7614><P
7615></P
7616></DIV
7617><P
7618>Returns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of
7619 detected object <CODE
7620CLASS="parameter"
7621>number</CODE
7622>. Returns 0 if
7623 <CODE
7624CLASS="parameter"
7625>number</CODE
7626> is not valid sensed object. Note
7627 that <CODE
7628CLASS="parameter"
7629>number</CODE
7630> is a bitfield, so comparisons
7631 need to be a bitwise and check. eg:
7632<DIV
7633CLASS="informalexample"
7634><P
7635></P
7636><A
7637NAME="AEN1451"
7638></A
7639><PRE
7640CLASS="programlisting"
7641>&#13;integer type = llDetectedType(0);
7642if (type &#38; AGENT)
7643{
7644 // ...do stuff with the agent
7645}
7646</PRE
7647><P
7648></P
7649></DIV
7650>
7651 </P
7652></DIV
7653><DIV
7654CLASS="section"
7655><HR><H2
7656CLASS="section"
7657><A
7658NAME="AEN1453"
7659>A.39. llDetectedVel</A
7660></H2
7661><DIV
7662CLASS="funcsynopsis"
7663><P
7664></P
7665><A
7666NAME="AEN1455"
7667></A
7668><P
7669><CODE
7670><CODE
7671CLASS="FUNCDEF"
7672>vector llDetectedVel</CODE
7673>(integer number);</CODE
7674></P
7675><P
7676></P
7677></DIV
7678><P
7679>Returns the velocity of detected object
7680 <CODE
7681CLASS="parameter"
7682>number</CODE
7683>. Returns &#60;0,0,0&#62; if
7684 <CODE
7685CLASS="parameter"
7686>number</CODE
7687> is not valid sensed object.</P
7688></DIV
7689><DIV
7690CLASS="section"
7691><HR><H2
7692CLASS="section"
7693><A
7694NAME="AEN1464"
7695>A.40. llDialog</A
7696></H2
7697><DIV
7698CLASS="funcsynopsis"
7699><P
7700></P
7701><A
7702NAME="AEN1466"
7703></A
7704><P
7705><CODE
7706><CODE
7707CLASS="FUNCDEF"
7708>llDialog</CODE
7709>(key avatar, string message, list buttons, integer channel);</CODE
7710></P
7711><P
7712></P
7713></DIV
7714><P
7715>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.
7716<DIV
7717CLASS="informalexample"
7718><P
7719></P
7720><A
7721NAME="AEN1479"
7722></A
7723><PRE
7724CLASS="programlisting"
7725>&#13;LLDialog(who, "Are you a boy or a girl?", [ "Boy", "Girl" ], 4913);
7726LLDialog(who, "This shows only an OK button.", [], 192);
7727llDialog(who, "This chats so you can hear it.", ["Hooray"], 0);
7728</PRE
7729><P
7730></P
7731></DIV
7732>
7733 </P
7734></DIV
7735><DIV
7736CLASS="section"
7737><HR><H2
7738CLASS="section"
7739><A
7740NAME="AEN1481"
7741>A.41. llDie</A
7742></H2
7743><DIV
7744CLASS="funcsynopsis"
7745><P
7746></P
7747><A
7748NAME="AEN1483"
7749></A
7750><P
7751><CODE
7752><CODE
7753CLASS="FUNCDEF"
7754>llDie</CODE
7755>(void);</CODE
7756></P
7757><P
7758></P
7759></DIV
7760><P
7761>Delete the object which holds the script.</P
7762></DIV
7763><DIV
7764CLASS="section"
7765><HR><H2
7766CLASS="section"
7767><A
7768NAME="AEN1489"
7769>A.42. llDumpList2String</A
7770></H2
7771><DIV
7772CLASS="funcsynopsis"
7773><P
7774></P
7775><A
7776NAME="AEN1491"
7777></A
7778><P
7779><CODE
7780><CODE
7781CLASS="FUNCDEF"
7782>string llDumpList2String</CODE
7783>(list src, string separator);</CODE
7784></P
7785><P
7786></P
7787></DIV
7788><P
7789>Write the list out in a single string using separator between values.</P
7790></DIV
7791><DIV
7792CLASS="section"
7793><HR><H2
7794CLASS="section"
7795><A
7796NAME="AEN1500"
7797>A.43. llEscapeURL</A
7798></H2
7799><DIV
7800CLASS="funcsynopsis"
7801><P
7802></P
7803><A
7804NAME="AEN1502"
7805></A
7806><P
7807><CODE
7808><CODE
7809CLASS="FUNCDEF"
7810>string llEscapeURL</CODE
7811>(string url);</CODE
7812></P
7813><P
7814></P
7815></DIV
7816><P
7817>Returns the string that is the URL escaped version of <CODE
7818CLASS="parameter"
7819>url</CODE
7820>,
7821 replacing spaces with %20 etc.</P
7822></DIV
7823><DIV
7824CLASS="section"
7825><HR><H2
7826CLASS="section"
7827><A
7828NAME="AEN1510"
7829>A.44. llEdgeOfWorld</A
7830></H2
7831><DIV
7832CLASS="funcsynopsis"
7833><P
7834></P
7835><A
7836NAME="AEN1512"
7837></A
7838><P
7839><CODE
7840><CODE
7841CLASS="FUNCDEF"
7842>integer llEdgeOfWorld</CODE
7843>(vector pos, vector dir);</CODE
7844></P
7845><P
7846></P
7847></DIV
7848><P
7849>Returns TRUE if the line along <CODE
7850CLASS="parameter"
7851>dir</CODE
7852>
7853 from <CODE
7854CLASS="parameter"
7855>pos</CODE
7856> hits the edge of the world in the
7857 current simulator and returns FALSE if that edge crosses into
7858 another simulator.</P
7859></DIV
7860><DIV
7861CLASS="section"
7862><HR><H2
7863CLASS="section"
7864><A
7865NAME="AEN1523"
7866>A.45. llEjectFromLand</A
7867></H2
7868><DIV
7869CLASS="funcsynopsis"
7870><P
7871></P
7872><A
7873NAME="AEN1525"
7874></A
7875><P
7876><CODE
7877><CODE
7878CLASS="FUNCDEF"
7879>llEjectFromLand</CODE
7880>(key pest);</CODE
7881></P
7882><P
7883></P
7884></DIV
7885><P
7886>Ejects <CODE
7887CLASS="parameter"
7888>pest</CODE
7889> from land that you
7890 own.</P
7891></DIV
7892><DIV
7893CLASS="section"
7894><HR><H2
7895CLASS="section"
7896><A
7897NAME="AEN1533"
7898>A.46. llEmail</A
7899></H2
7900><DIV
7901CLASS="funcsynopsis"
7902><P
7903></P
7904><A
7905NAME="AEN1535"
7906></A
7907><P
7908><CODE
7909><CODE
7910CLASS="FUNCDEF"
7911>llEmail</CODE
7912>(string address, string subject, string message);</CODE
7913></P
7914><P
7915></P
7916></DIV
7917><P
7918>Sends email to <CODE
7919CLASS="parameter"
7920>address</CODE
7921> with
7922 <CODE
7923CLASS="parameter"
7924>subject</CODE
7925> and
7926 <CODE
7927CLASS="parameter"
7928>message</CODE
7929>.</P
7930></DIV
7931><DIV
7932CLASS="section"
7933><HR><H2
7934CLASS="section"
7935><A
7936NAME="AEN1549"
7937>A.47. llEuler2Rot</A
7938></H2
7939><DIV
7940CLASS="funcsynopsis"
7941><P
7942></P
7943><A
7944NAME="AEN1551"
7945></A
7946><P
7947><CODE
7948><CODE
7949CLASS="FUNCDEF"
7950>rotation llEuler2Rot</CODE
7951>(vector vec);</CODE
7952></P
7953><P
7954></P
7955></DIV
7956><P
7957>Returns the rotation represented by Euler Angle
7958 <CODE
7959CLASS="parameter"
7960>vec</CODE
7961>.</P
7962></DIV
7963><DIV
7964CLASS="section"
7965><HR><H2
7966CLASS="section"
7967><A
7968NAME="AEN1559"
7969>A.48. llFabs</A
7970></H2
7971><DIV
7972CLASS="funcsynopsis"
7973><P
7974></P
7975><A
7976NAME="AEN1561"
7977></A
7978><P
7979><CODE
7980><CODE
7981CLASS="FUNCDEF"
7982>float llFabs</CODE
7983>(float val);</CODE
7984></P
7985><P
7986></P
7987></DIV
7988><P
7989>Returns the absolute value of
7990 <CODE
7991CLASS="parameter"
7992>val</CODE
7993>.</P
7994></DIV
7995><DIV
7996CLASS="section"
7997><HR><H2
7998CLASS="section"
7999><A
8000NAME="AEN1569"
8001>A.49. llFloor</A
8002></H2
8003><DIV
8004CLASS="funcsynopsis"
8005><P
8006></P
8007><A
8008NAME="AEN1571"
8009></A
8010><P
8011><CODE
8012><CODE
8013CLASS="FUNCDEF"
8014>integer llFloor</CODE
8015>(float val);</CODE
8016></P
8017><P
8018></P
8019></DIV
8020><P
8021>Returns largest integer value &#60;=
8022 <CODE
8023CLASS="parameter"
8024>val</CODE
8025>.</P
8026></DIV
8027><DIV
8028CLASS="section"
8029><HR><H2
8030CLASS="section"
8031><A
8032NAME="AEN1579"
8033>A.50. llFrand</A
8034></H2
8035><DIV
8036CLASS="funcsynopsis"
8037><P
8038></P
8039><A
8040NAME="AEN1581"
8041></A
8042><P
8043><CODE
8044><CODE
8045CLASS="FUNCDEF"
8046>float llFrand</CODE
8047>(float mag);</CODE
8048></P
8049><P
8050></P
8051></DIV
8052><P
8053>Returns a pseudo-random number between [0,
8054 <CODE
8055CLASS="parameter"
8056>mag</CODE
8057>).</P
8058></DIV
8059><DIV
8060CLASS="section"
8061><HR><H2
8062CLASS="section"
8063><A
8064NAME="AEN1589"
8065>A.51. llGetAccel</A
8066></H2
8067><DIV
8068CLASS="funcsynopsis"
8069><P
8070></P
8071><A
8072NAME="AEN1591"
8073></A
8074><P
8075><CODE
8076><CODE
8077CLASS="FUNCDEF"
8078>vector llGetAccel</CODE
8079>(void);</CODE
8080></P
8081><P
8082></P
8083></DIV
8084><P
8085>Gets the acceleration.</P
8086></DIV
8087><DIV
8088CLASS="section"
8089><HR><H2
8090CLASS="section"
8091><A
8092NAME="AEN1597"
8093>A.52. llGetAttached</A
8094></H2
8095><DIV
8096CLASS="funcsynopsis"
8097><P
8098></P
8099><A
8100NAME="AEN1599"
8101></A
8102><P
8103><CODE
8104><CODE
8105CLASS="FUNCDEF"
8106>integer llGetAttached</CODE
8107>(void);</CODE
8108></P
8109><P
8110></P
8111></DIV
8112><P
8113>Returns the object attachment point or 0 if not attached.</P
8114></DIV
8115><DIV
8116CLASS="section"
8117><HR><H2
8118CLASS="section"
8119><A
8120NAME="AEN1605"
8121>A.53. llGetAgentInfo</A
8122></H2
8123><DIV
8124CLASS="funcsynopsis"
8125><P
8126></P
8127><A
8128NAME="AEN1607"
8129></A
8130><P
8131><CODE
8132><CODE
8133CLASS="FUNCDEF"
8134>integer llGetAgentInfo</CODE
8135>(key id);</CODE
8136></P
8137><P
8138></P
8139></DIV
8140><P
8141>Returns information about the given agent
8142 <CODE
8143CLASS="parameter"
8144>id</CODE
8145>. Returns a bitfield of <A
8146HREF="#AEN5720"
8147>agent info constants</A
8148>.</P
8149></DIV
8150><DIV
8151CLASS="section"
8152><HR><H2
8153CLASS="section"
8154><A
8155NAME="AEN1616"
8156>A.54. llGetAgentSize</A
8157></H2
8158><DIV
8159CLASS="funcsynopsis"
8160><P
8161></P
8162><A
8163NAME="AEN1618"
8164></A
8165><P
8166><CODE
8167><CODE
8168CLASS="FUNCDEF"
8169>vector llGetAgentSize</CODE
8170>(key id);</CODE
8171></P
8172><P
8173></P
8174></DIV
8175><P
8176>If the agent <CODE
8177CLASS="parameter"
8178>id</CODE
8179> is in the same sim as
8180 the object, returns the size of the avatar.</P
8181></DIV
8182><DIV
8183CLASS="section"
8184><HR><H2
8185CLASS="section"
8186><A
8187NAME="AEN1626"
8188>A.55. llGetAlpha</A
8189></H2
8190><DIV
8191CLASS="funcsynopsis"
8192><P
8193></P
8194><A
8195NAME="AEN1628"
8196></A
8197><P
8198><CODE
8199><CODE
8200CLASS="FUNCDEF"
8201>float llGetAlpha</CODE
8202>(integer face);</CODE
8203></P
8204><P
8205></P
8206></DIV
8207><P
8208>Returns the alpha of the given
8209 <CODE
8210CLASS="parameter"
8211>face</CODE
8212>. If <CODE
8213CLASS="parameter"
8214>face</CODE
8215> is
8216 <A
8217HREF="#AEN6026"
8218>ALL_SIDES</A
8219> the value returned is
8220 the mean average of all faces.</P
8221></DIV
8222><DIV
8223CLASS="section"
8224><HR><H2
8225CLASS="section"
8226><A
8227NAME="AEN1638"
8228>A.56. llGetAndResetTime</A
8229></H2
8230><DIV
8231CLASS="funcsynopsis"
8232><P
8233></P
8234><A
8235NAME="AEN1640"
8236></A
8237><P
8238><CODE
8239><CODE
8240CLASS="FUNCDEF"
8241>float llGetAndResetTime</CODE
8242>(void);</CODE
8243></P
8244><P
8245></P
8246></DIV
8247><P
8248>Returns the seconds of elapsed time from an internal timer
8249 associated with the script. The timer is reset to zero during the
8250 call. The timer is also reset on rez, simulator restart, script
8251 reset, and in calls to <A
8252HREF="#AEN3423"
8253>llResetTime</A
8254>. Use <A
8255HREF="#AEN4141"
8256>llSetTimerEvent</A
8257> if you want a
8258 reliable timing mechanism.</P
8259></DIV
8260><DIV
8261CLASS="section"
8262><HR><H2
8263CLASS="section"
8264><A
8265NAME="AEN1648"
8266>A.57. llGetAnimation</A
8267></H2
8268><DIV
8269CLASS="funcsynopsis"
8270><P
8271></P
8272><A
8273NAME="AEN1650"
8274></A
8275><P
8276><CODE
8277><CODE
8278CLASS="FUNCDEF"
8279>string llGetAnimation</CODE
8280>(key id);</CODE
8281></P
8282><P
8283></P
8284></DIV
8285><P
8286>Returns the currently playing animation for avatar
8287 <CODE
8288CLASS="parameter"
8289>id</CODE
8290>.</P
8291></DIV
8292><DIV
8293CLASS="section"
8294><HR><H2
8295CLASS="section"
8296><A
8297NAME="AEN1658"
8298>A.58. llGetAnimationList</A
8299></H2
8300><DIV
8301CLASS="funcsynopsis"
8302><P
8303></P
8304><A
8305NAME="AEN1660"
8306></A
8307><P
8308><CODE
8309><CODE
8310CLASS="FUNCDEF"
8311>list llGetAnimationList</CODE
8312>(key id);</CODE
8313></P
8314><P
8315></P
8316></DIV
8317><P
8318>Returns a list of currently playing animations for avatar
8319 <CODE
8320CLASS="parameter"
8321>id</CODE
8322>.</P
8323></DIV
8324><DIV
8325CLASS="section"
8326><HR><H2
8327CLASS="section"
8328><A
8329NAME="AEN1668"
8330>A.59. llGetBoundingBox</A
8331></H2
8332><DIV
8333CLASS="funcsynopsis"
8334><P
8335></P
8336><A
8337NAME="AEN1670"
8338></A
8339><P
8340><CODE
8341><CODE
8342CLASS="FUNCDEF"
8343>list llGetBoundingBox</CODE
8344>(key object);</CODE
8345></P
8346><P
8347></P
8348></DIV
8349><P
8350>Returns the bounding box around <CODE
8351CLASS="parameter"
8352>object</CODE
8353> (including any linked prims)
8354 relative to the root prim. Returned value is a list of the form:
8355 [ (vector) min_corner, (vector) max_corner ]</P
8356></DIV
8357><DIV
8358CLASS="section"
8359><HR><H2
8360CLASS="section"
8361><A
8362NAME="AEN1678"
8363>A.60. llGetCenterOfMass</A
8364></H2
8365><DIV
8366CLASS="funcsynopsis"
8367><P
8368></P
8369><A
8370NAME="AEN1680"
8371></A
8372><P
8373><CODE
8374><CODE
8375CLASS="FUNCDEF"
8376>vector llGetCenterOfMass</CODE
8377>(void);</CODE
8378></P
8379><P
8380></P
8381></DIV
8382><P
8383>Returns the center of mass of the root object.</P
8384></DIV
8385><DIV
8386CLASS="section"
8387><HR><H2
8388CLASS="section"
8389><A
8390NAME="AEN1686"
8391>A.61. llGetColor</A
8392></H2
8393><DIV
8394CLASS="funcsynopsis"
8395><P
8396></P
8397><A
8398NAME="AEN1688"
8399></A
8400><P
8401><CODE
8402><CODE
8403CLASS="FUNCDEF"
8404>vector llGetColor</CODE
8405>(integer face);</CODE
8406></P
8407><P
8408></P
8409></DIV
8410><P
8411>Returns the color of <CODE
8412CLASS="parameter"
8413>face</CODE
8414> as a vector
8415 of red, green, and blue values between 0 and 1. If
8416 <CODE
8417CLASS="parameter"
8418>face</CODE
8419> is <A
8420HREF="#AEN6026"
8421>ALL_SIDES</A
8422> the color returned is the
8423 mean average of each channel.</P
8424></DIV
8425><DIV
8426CLASS="section"
8427><HR><H2
8428CLASS="section"
8429><A
8430NAME="AEN1698"
8431>A.62. llGetCreator</A
8432></H2
8433><DIV
8434CLASS="funcsynopsis"
8435><P
8436></P
8437><A
8438NAME="AEN1700"
8439></A
8440><P
8441><CODE
8442><CODE
8443CLASS="FUNCDEF"
8444>key llGetCreator</CODE
8445>(void);</CODE
8446></P
8447><P
8448></P
8449></DIV
8450><P
8451>Returns the creator of the object which has the script.</P
8452></DIV
8453><DIV
8454CLASS="section"
8455><HR><H2
8456CLASS="section"
8457><A
8458NAME="AEN1706"
8459>A.63. llGetDate</A
8460></H2
8461><DIV
8462CLASS="funcsynopsis"
8463><P
8464></P
8465><A
8466NAME="AEN1708"
8467></A
8468><P
8469><CODE
8470><CODE
8471CLASS="FUNCDEF"
8472>string llGetDate</CODE
8473>(void);</CODE
8474></P
8475><P
8476></P
8477></DIV
8478><P
8479>Returns the current UTC date as YYYY-MM-DD.</P
8480></DIV
8481><DIV
8482CLASS="section"
8483><HR><H2
8484CLASS="section"
8485><A
8486NAME="AEN1714"
8487>A.64. llGetEnergy</A
8488></H2
8489><DIV
8490CLASS="funcsynopsis"
8491><P
8492></P
8493><A
8494NAME="AEN1716"
8495></A
8496><P
8497><CODE
8498><CODE
8499CLASS="FUNCDEF"
8500>float llGetEnergy</CODE
8501>(void);</CODE
8502></P
8503><P
8504></P
8505></DIV
8506><P
8507>Returns how much energy is in the object as a percentage of
8508 maximum.</P
8509></DIV
8510><DIV
8511CLASS="section"
8512><HR><H2
8513CLASS="section"
8514><A
8515NAME="AEN1722"
8516>A.65. llGetForce</A
8517></H2
8518><DIV
8519CLASS="funcsynopsis"
8520><P
8521></P
8522><A
8523NAME="AEN1724"
8524></A
8525><P
8526><CODE
8527><CODE
8528CLASS="FUNCDEF"
8529>vector llGetForce</CODE
8530>(void);</CODE
8531></P
8532><P
8533></P
8534></DIV
8535><P
8536>Returns the current force if the script is physical.</P
8537></DIV
8538><DIV
8539CLASS="section"
8540><HR><H2
8541CLASS="section"
8542><A
8543NAME="AEN1730"
8544>A.66. llGetFreeMemory</A
8545></H2
8546><DIV
8547CLASS="funcsynopsis"
8548><P
8549></P
8550><A
8551NAME="AEN1732"
8552></A
8553><P
8554><CODE
8555><CODE
8556CLASS="FUNCDEF"
8557>integer llGetFreeMemory</CODE
8558>(void);</CODE
8559></P
8560><P
8561></P
8562></DIV
8563><P
8564>Returns the available heap space for the current script.</P
8565></DIV
8566><DIV
8567CLASS="section"
8568><HR><H2
8569CLASS="section"
8570><A
8571NAME="AEN1738"
8572>A.67. llGetGeometricCenter</A
8573></H2
8574><DIV
8575CLASS="funcsynopsis"
8576><P
8577></P
8578><A
8579NAME="AEN1740"
8580></A
8581><P
8582><CODE
8583><CODE
8584CLASS="FUNCDEF"
8585>vector llGetGeometricCenter</CODE
8586>(void);</CODE
8587></P
8588><P
8589></P
8590></DIV
8591><P
8592>Returns the geometric center of the linked set the script is attached to.</P
8593></DIV
8594><DIV
8595CLASS="section"
8596><HR><H2
8597CLASS="section"
8598><A
8599NAME="AEN1746"
8600>A.68. llGetGMTclock</A
8601></H2
8602><DIV
8603CLASS="funcsynopsis"
8604><P
8605></P
8606><A
8607NAME="AEN1748"
8608></A
8609><P
8610><CODE
8611><CODE
8612CLASS="FUNCDEF"
8613>float llGetGMTclock</CODE
8614>(void);</CODE
8615></P
8616><P
8617></P
8618></DIV
8619><P
8620>Returns the time in seconds since GMT midnight.</P
8621></DIV
8622><DIV
8623CLASS="section"
8624><HR><H2
8625CLASS="section"
8626><A
8627NAME="AEN1754"
8628>A.69. llGetInventoryCreator</A
8629></H2
8630><DIV
8631CLASS="funcsynopsis"
8632><P
8633></P
8634><A
8635NAME="AEN1756"
8636></A
8637><P
8638><CODE
8639><CODE
8640CLASS="FUNCDEF"
8641>key llGetInventoryCreator</CODE
8642>(string name);</CODE
8643></P
8644><P
8645></P
8646></DIV
8647><P
8648>Returns the key for the creator of the inventory
8649 <CODE
8650CLASS="parameter"
8651>name</CODE
8652>.</P
8653></DIV
8654><DIV
8655CLASS="section"
8656><HR><H2
8657CLASS="section"
8658><A
8659NAME="AEN1764"
8660>A.70. llGetInventoryKey</A
8661></H2
8662><DIV
8663CLASS="funcsynopsis"
8664><P
8665></P
8666><A
8667NAME="AEN1766"
8668></A
8669><P
8670><CODE
8671><CODE
8672CLASS="FUNCDEF"
8673>key llGetInventoryKey</CODE
8674>(string name);</CODE
8675></P
8676><P
8677></P
8678></DIV
8679><P
8680>Returns the key of the inventory
8681 <CODE
8682CLASS="parameter"
8683>name</CODE
8684>.</P
8685></DIV
8686><DIV
8687CLASS="section"
8688><HR><H2
8689CLASS="section"
8690><A
8691NAME="AEN1774"
8692>A.71. llGetInventoryName</A
8693></H2
8694><DIV
8695CLASS="funcsynopsis"
8696><P
8697></P
8698><A
8699NAME="AEN1776"
8700></A
8701><P
8702><CODE
8703><CODE
8704CLASS="FUNCDEF"
8705>string llGetInventoryName</CODE
8706>(integer type, integer number);</CODE
8707></P
8708><P
8709></P
8710></DIV
8711><P
8712>Get the name of the inventory item
8713 <CODE
8714CLASS="parameter"
8715>number</CODE
8716> of <CODE
8717CLASS="parameter"
8718>type</CODE
8719>. Use
8720 the <A
8721HREF="#AEN5364"
8722>inventory constants</A
8723> to
8724 specify the <CODE
8725CLASS="parameter"
8726>type</CODE
8727>.</P
8728></DIV
8729><DIV
8730CLASS="section"
8731><HR><H2
8732CLASS="section"
8733><A
8734NAME="AEN1789"
8735>A.72. llGetInventoryNumber</A
8736></H2
8737><DIV
8738CLASS="funcsynopsis"
8739><P
8740></P
8741><A
8742NAME="AEN1791"
8743></A
8744><P
8745><CODE
8746><CODE
8747CLASS="FUNCDEF"
8748>integer llGetInventoryNumber</CODE
8749>(integer type);</CODE
8750></P
8751><P
8752></P
8753></DIV
8754><P
8755>Get the number of items of <CODE
8756CLASS="parameter"
8757>type</CODE
8758> in
8759 the object inventory. Use the <A
8760HREF="#AEN5364"
8761>inventory constants</A
8762> to specify
8763 the <CODE
8764CLASS="parameter"
8765>type</CODE
8766>.</P
8767></DIV
8768><DIV
8769CLASS="section"
8770><HR><H2
8771CLASS="section"
8772><A
8773NAME="AEN1801"
8774>A.73. llGetInventoryPermMask</A
8775></H2
8776><DIV
8777CLASS="funcsynopsis"
8778><P
8779></P
8780><A
8781NAME="AEN1803"
8782></A
8783><P
8784><CODE
8785><CODE
8786CLASS="FUNCDEF"
8787>integer llGetInventoryPermMask</CODE
8788>(string item, integer mask);</CODE
8789></P
8790><P
8791></P
8792></DIV
8793><P
8794>Returns the requested permission <CODE
8795CLASS="parameter"
8796>mask</CODE
8797> for the
8798 specified inventory item. See <A
8799HREF="#AEN6361"
8800>Permission Mask Constants</A
8801>
8802 for more information. Example usage:
8803<DIV
8804CLASS="informalexample"
8805><P
8806></P
8807><A
8808NAME="AEN1814"
8809></A
8810><PRE
8811CLASS="programlisting"
8812>&#13;integer JeansPerms = llGetInventoryPermMask("Black Jeans", MASK_NEXT);
8813if (JeansPerms &#38; PERM_COPY)
8814{
8815 llSay(0, "The next owner may copy the 'Black Jeans'");
8816}
8817</PRE
8818><P
8819></P
8820></DIV
8821></P
8822></DIV
8823><DIV
8824CLASS="section"
8825><HR><H2
8826CLASS="section"
8827><A
8828NAME="AEN1816"
8829>A.74. llGetInventoryType</A
8830></H2
8831><DIV
8832CLASS="funcsynopsis"
8833><P
8834></P
8835><A
8836NAME="AEN1818"
8837></A
8838><P
8839><CODE
8840><CODE
8841CLASS="FUNCDEF"
8842>integer llGetInventoryType</CODE
8843>(string name);</CODE
8844></P
8845><P
8846></P
8847></DIV
8848><P
8849>Returns the type of the inventory
8850 <CODE
8851CLASS="parameter"
8852>name</CODE
8853>. INVENTORY_NONE is returned if no
8854 inventory matching <CODE
8855CLASS="parameter"
8856>name</CODE
8857> is found. Use the <A
8858HREF="#AEN5364"
8859>inventory constants</A
8860> to compare
8861 against the return value.</P
8862></DIV
8863><DIV
8864CLASS="section"
8865><HR><H2
8866CLASS="section"
8867><A
8868NAME="AEN1828"
8869>A.75. llGetKey</A
8870></H2
8871><DIV
8872CLASS="funcsynopsis"
8873><P
8874></P
8875><A
8876NAME="AEN1830"
8877></A
8878><P
8879><CODE
8880><CODE
8881CLASS="FUNCDEF"
8882>key llGetKey</CODE
8883>(void);</CODE
8884></P
8885><P
8886></P
8887></DIV
8888><P
8889>Get the key for the object which has this script.</P
8890></DIV
8891><DIV
8892CLASS="section"
8893><HR><H2
8894CLASS="section"
8895><A
8896NAME="AEN1836"
8897>A.76. llGetLandOwnerAt</A
8898></H2
8899><DIV
8900CLASS="funcsynopsis"
8901><P
8902></P
8903><A
8904NAME="AEN1838"
8905></A
8906><P
8907><CODE
8908><CODE
8909CLASS="FUNCDEF"
8910>key llGetLandOwnerAt</CODE
8911>(vector pos);</CODE
8912></P
8913><P
8914></P
8915></DIV
8916><P
8917>Returns the key of the land owner at
8918 <CODE
8919CLASS="parameter"
8920>pos</CODE
8921> or <A
8922HREF="#AEN6023"
8923>NULL_KEY</A
8924> if public.</P
8925></DIV
8926><DIV
8927CLASS="section"
8928><HR><H2
8929CLASS="section"
8930><A
8931NAME="AEN1847"
8932>A.77. llGetLinkKey</A
8933></H2
8934><DIV
8935CLASS="funcsynopsis"
8936><P
8937></P
8938><A
8939NAME="AEN1849"
8940></A
8941><P
8942><CODE
8943><CODE
8944CLASS="FUNCDEF"
8945>key llGetLinkKey</CODE
8946>(integer linknum);</CODE
8947></P
8948><P
8949></P
8950></DIV
8951><P
8952>Returns the key of <CODE
8953CLASS="parameter"
8954>linknum</CODE
8955> in the link
8956 set.</P
8957></DIV
8958><DIV
8959CLASS="section"
8960><HR><H2
8961CLASS="section"
8962><A
8963NAME="AEN1857"
8964>A.78. llGetLinkName</A
8965></H2
8966><DIV
8967CLASS="funcsynopsis"
8968><P
8969></P
8970><A
8971NAME="AEN1859"
8972></A
8973><P
8974><CODE
8975><CODE
8976CLASS="FUNCDEF"
8977>string llGetLinkName</CODE
8978>(integer linknum);</CODE
8979></P
8980><P
8981></P
8982></DIV
8983><P
8984>Returns the name of <CODE
8985CLASS="parameter"
8986>linknum</CODE
8987> in the
8988 link set.</P
8989></DIV
8990><DIV
8991CLASS="section"
8992><HR><H2
8993CLASS="section"
8994><A
8995NAME="AEN1867"
8996>A.79. llGetLinkNumber</A
8997></H2
8998><DIV
8999CLASS="funcsynopsis"
9000><P
9001></P
9002><A
9003NAME="AEN1869"
9004></A
9005><P
9006><CODE
9007><CODE
9008CLASS="FUNCDEF"
9009>integer llGetLinkNumber</CODE
9010>(void);</CODE
9011></P
9012><P
9013></P
9014></DIV
9015><P
9016>Returns what link number in a link set the for the object
9017 which has this script. 0 means no link, 1 the root, 2 for first
9018 child, etc.</P
9019></DIV
9020><DIV
9021CLASS="section"
9022><HR><H2
9023CLASS="section"
9024><A
9025NAME="AEN1875"
9026>A.80. llGetListEntryType</A
9027></H2
9028><DIV
9029CLASS="funcsynopsis"
9030><P
9031></P
9032><A
9033NAME="AEN1877"
9034></A
9035><P
9036><CODE
9037><CODE
9038CLASS="FUNCDEF"
9039>integer llGetListEntryType</CODE
9040>(list src, integer index);</CODE
9041></P
9042><P
9043></P
9044></DIV
9045><P
9046>Returns the <A
9047HREF="#AEN5686"
9048>type</A
9049> of the
9050 variable at <CODE
9051CLASS="parameter"
9052>index</CODE
9053> in
9054 <CODE
9055CLASS="parameter"
9056>src</CODE
9057>.</P
9058></DIV
9059><DIV
9060CLASS="section"
9061><HR><H2
9062CLASS="section"
9063><A
9064NAME="AEN1889"
9065>A.81. llGetListLength</A
9066></H2
9067><DIV
9068CLASS="funcsynopsis"
9069><P
9070></P
9071><A
9072NAME="AEN1891"
9073></A
9074><P
9075><CODE
9076><CODE
9077CLASS="FUNCDEF"
9078>integer llGetListLength</CODE
9079>(list src);</CODE
9080></P
9081><P
9082></P
9083></DIV
9084><P
9085>Returns the number of elements in
9086 <CODE
9087CLASS="parameter"
9088>src</CODE
9089>.</P
9090></DIV
9091><DIV
9092CLASS="section"
9093><HR><H2
9094CLASS="section"
9095><A
9096NAME="AEN1899"
9097>A.82. llGetLocalPos</A
9098></H2
9099><DIV
9100CLASS="funcsynopsis"
9101><P
9102></P
9103><A
9104NAME="AEN1901"
9105></A
9106><P
9107><CODE
9108><CODE
9109CLASS="FUNCDEF"
9110>vector llGetLocalPos</CODE
9111>(void);</CODE
9112></P
9113><P
9114></P
9115></DIV
9116><P
9117>Returns the local position of a child object relative to the
9118 root.</P
9119></DIV
9120><DIV
9121CLASS="section"
9122><HR><H2
9123CLASS="section"
9124><A
9125NAME="AEN1907"
9126>A.83. llGetLocalRot</A
9127></H2
9128><DIV
9129CLASS="funcsynopsis"
9130><P
9131></P
9132><A
9133NAME="AEN1909"
9134></A
9135><P
9136><CODE
9137><CODE
9138CLASS="FUNCDEF"
9139>rotation llGetLocalRot</CODE
9140>(void);</CODE
9141></P
9142><P
9143></P
9144></DIV
9145><P
9146>Returns the local rotation of a child object relative to the
9147 root.</P
9148></DIV
9149><DIV
9150CLASS="section"
9151><HR><H2
9152CLASS="section"
9153><A
9154NAME="AEN1915"
9155>A.84. llGetMass</A
9156></H2
9157><DIV
9158CLASS="funcsynopsis"
9159><P
9160></P
9161><A
9162NAME="AEN1917"
9163></A
9164><P
9165><CODE
9166><CODE
9167CLASS="FUNCDEF"
9168>float llGetMass</CODE
9169>(void);</CODE
9170></P
9171><P
9172></P
9173></DIV
9174><P
9175>Returns the mass of the object in Kilograms. Most materials
9176 in Second Life are less dense than their first life counterparts,
9177 so the returned mass may be less than you might expect.</P
9178></DIV
9179><DIV
9180CLASS="section"
9181><HR><H2
9182CLASS="section"
9183><A
9184NAME="AEN1923"
9185>A.85. llGetObjectMass</A
9186></H2
9187><DIV
9188CLASS="funcsynopsis"
9189><P
9190></P
9191><A
9192NAME="AEN1925"
9193></A
9194><P
9195><CODE
9196><CODE
9197CLASS="FUNCDEF"
9198>float llGetObjectMass</CODE
9199>(key id);</CODE
9200></P
9201><P
9202></P
9203></DIV
9204><P
9205>Returns the mass of the object specified by <CODE
9206CLASS="parameter"
9207>id</CODE
9208> in Kilograms. Most materials
9209 in Second Life are less dense than their first life counterparts,
9210 so the returned mass may be less than you might expect.</P
9211></DIV
9212><DIV
9213CLASS="section"
9214><HR><H2
9215CLASS="section"
9216><A
9217NAME="AEN1933"
9218>A.86. llGetNextEmail</A
9219></H2
9220><DIV
9221CLASS="funcsynopsis"
9222><P
9223></P
9224><A
9225NAME="AEN1935"
9226></A
9227><P
9228><CODE
9229><CODE
9230CLASS="FUNCDEF"
9231>llGetNextEmail</CODE
9232>(string address, string subject);</CODE
9233></P
9234><P
9235></P
9236></DIV
9237><P
9238>Get the next waiting email with appropriate
9239 <CODE
9240CLASS="parameter"
9241>address</CODE
9242> and/or
9243 <CODE
9244CLASS="parameter"
9245>subject</CODE
9246>. If the parameters are blank, they
9247 are not used for filtering.</P
9248></DIV
9249><DIV
9250CLASS="section"
9251><HR><H2
9252CLASS="section"
9253><A
9254NAME="AEN1946"
9255>A.87. llGetNotecardLine</A
9256></H2
9257><DIV
9258CLASS="funcsynopsis"
9259><P
9260></P
9261><A
9262NAME="AEN1948"
9263></A
9264><P
9265><CODE
9266><CODE
9267CLASS="FUNCDEF"
9268>key llGetNotecardLine</CODE
9269>(string name, integer line);</CODE
9270></P
9271><P
9272></P
9273></DIV
9274><P
9275>This function fetches line number
9276 <CODE
9277CLASS="parameter"
9278>line</CODE
9279> of notecard
9280 <CODE
9281CLASS="parameter"
9282>name</CODE
9283> and returns the data through the <A
9284HREF="#AEN4950"
9285>dataserver</A
9286> event. The line count
9287 starts at zero. If the requested line is past the end of the
9288 notecard the <A
9289HREF="#AEN4950"
9290>dataserver</A
9291>
9292 event will return the constant <A
9293HREF="#AEN6029"
9294>EOF</A
9295> string. The key returned by
9296 this function is a unique identifier which will be supplied to the
9297 <A
9298HREF="#AEN4950"
9299>dataserver</A
9300> event in the
9301 <CODE
9302CLASS="parameter"
9303>requested</CODE
9304> parameter.</P
9305></DIV
9306><DIV
9307CLASS="section"
9308><HR><H2
9309CLASS="section"
9310><A
9311NAME="AEN1964"
9312>A.88. llGetNumberOfNotecardLines</A
9313></H2
9314><DIV
9315CLASS="funcsynopsis"
9316><P
9317></P
9318><A
9319NAME="AEN1966"
9320></A
9321><P
9322><CODE
9323><CODE
9324CLASS="FUNCDEF"
9325>key llGetNumberOfNotecardLines</CODE
9326>(string name);</CODE
9327></P
9328><P
9329></P
9330></DIV
9331><P
9332>This function reads the number of lines in notecard <CODE
9333CLASS="parameter"
9334>name</CODE
9335>
9336 and returns this information through the <A
9337HREF="#AEN4950"
9338>dataserver</A
9339> event.
9340 The key returned by this function is a unique identifier which will be supplied to the
9341 <A
9342HREF="#AEN4950"
9343>dataserver</A
9344> event in the <CODE
9345CLASS="parameter"
9346>requested</CODE
9347>
9348 parameter. You will need to cast the returned string to an integer.</P
9349></DIV
9350><DIV
9351CLASS="section"
9352><HR><H2
9353CLASS="section"
9354><A
9355NAME="AEN1977"
9356>A.89. llGetNumberOfPrims</A
9357></H2
9358><DIV
9359CLASS="funcsynopsis"
9360><P
9361></P
9362><A
9363NAME="AEN1979"
9364></A
9365><P
9366><CODE
9367><CODE
9368CLASS="FUNCDEF"
9369>integer llGetNumberOfPrims</CODE
9370>(void);</CODE
9371></P
9372><P
9373></P
9374></DIV
9375><P
9376>Returns the number of prims in the linked set the script is attached to.</P
9377></DIV
9378><DIV
9379CLASS="section"
9380><HR><H2
9381CLASS="section"
9382><A
9383NAME="AEN1985"
9384>A.90. llGetNumberOfSides</A
9385></H2
9386><DIV
9387CLASS="funcsynopsis"
9388><P
9389></P
9390><A
9391NAME="AEN1987"
9392></A
9393><P
9394><CODE
9395><CODE
9396CLASS="FUNCDEF"
9397>key llGetNumberOfSides</CODE
9398>(void);</CODE
9399></P
9400><P
9401></P
9402></DIV
9403><P
9404>Returns the number of sides of the current which has the
9405 script.</P
9406></DIV
9407><DIV
9408CLASS="section"
9409><HR><H2
9410CLASS="section"
9411><A
9412NAME="AEN1993"
9413>A.91. llGetObjectDesc</A
9414></H2
9415><DIV
9416CLASS="funcsynopsis"
9417><P
9418></P
9419><A
9420NAME="AEN1995"
9421></A
9422><P
9423><CODE
9424><CODE
9425CLASS="FUNCDEF"
9426>string llGetObjectDesc</CODE
9427>(void);</CODE
9428></P
9429><P
9430></P
9431></DIV
9432><P
9433>Returns the description of the object which has the script.</P
9434></DIV
9435><DIV
9436CLASS="section"
9437><HR><H2
9438CLASS="section"
9439><A
9440NAME="AEN2001"
9441>A.92. llGetObjectName</A
9442></H2
9443><DIV
9444CLASS="funcsynopsis"
9445><P
9446></P
9447><A
9448NAME="AEN2003"
9449></A
9450><P
9451><CODE
9452><CODE
9453CLASS="FUNCDEF"
9454>string llGetObjectName</CODE
9455>(void);</CODE
9456></P
9457><P
9458></P
9459></DIV
9460><P
9461>Returns the name of the object which has the script.</P
9462></DIV
9463><DIV
9464CLASS="section"
9465><HR><H2
9466CLASS="section"
9467><A
9468NAME="AEN2009"
9469>A.93. llGetObjectPermMask</A
9470></H2
9471><DIV
9472CLASS="funcsynopsis"
9473><P
9474></P
9475><A
9476NAME="AEN2011"
9477></A
9478><P
9479><CODE
9480><CODE
9481CLASS="FUNCDEF"
9482>integer llGetObjectPermMask</CODE
9483>(integer mask);</CODE
9484></P
9485><P
9486></P
9487></DIV
9488><P
9489>Returns the requested permission <CODE
9490CLASS="parameter"
9491>mask</CODE
9492> for the root object the
9493 task is attached to. See <A
9494HREF="#AEN6361"
9495>Permission Mask Constants</A
9496>
9497 for more information. Example usage:
9498<DIV
9499CLASS="informalexample"
9500><P
9501></P
9502><A
9503NAME="AEN2020"
9504></A
9505><PRE
9506CLASS="programlisting"
9507>&#13;integer ObjectPerms = llGetObjectPermMask(MASK_NEXT);
9508if (ObjectPerms &#38; PERM_COPY)
9509{
9510 llSay(0, "The next owner may copy this item");
9511}
9512</PRE
9513><P
9514></P
9515></DIV
9516></P
9517></DIV
9518><DIV
9519CLASS="section"
9520><HR><H2
9521CLASS="section"
9522><A
9523NAME="AEN2022"
9524>A.94. llGetOmega</A
9525></H2
9526><DIV
9527CLASS="funcsynopsis"
9528><P
9529></P
9530><A
9531NAME="AEN2024"
9532></A
9533><P
9534><CODE
9535><CODE
9536CLASS="FUNCDEF"
9537>vector llGetOmega</CODE
9538>(void);</CODE
9539></P
9540><P
9541></P
9542></DIV
9543><P
9544>Returns the omega.</P
9545></DIV
9546><DIV
9547CLASS="section"
9548><HR><H2
9549CLASS="section"
9550><A
9551NAME="AEN2030"
9552>A.95. llGetOwner</A
9553></H2
9554><DIV
9555CLASS="funcsynopsis"
9556><P
9557></P
9558><A
9559NAME="AEN2032"
9560></A
9561><P
9562><CODE
9563><CODE
9564CLASS="FUNCDEF"
9565>key llGetOwner</CODE
9566>(void);</CODE
9567></P
9568><P
9569></P
9570></DIV
9571><P
9572>Returns the owner of the object.</P
9573></DIV
9574><DIV
9575CLASS="section"
9576><HR><H2
9577CLASS="section"
9578><A
9579NAME="AEN2038"
9580>A.96. llGetOwnerKey</A
9581></H2
9582><DIV
9583CLASS="funcsynopsis"
9584><P
9585></P
9586><A
9587NAME="AEN2040"
9588></A
9589><P
9590><CODE
9591><CODE
9592CLASS="FUNCDEF"
9593>key llGetOwnerKey</CODE
9594>(key id);</CODE
9595></P
9596><P
9597></P
9598></DIV
9599><P
9600>Returns the owner of object
9601 <CODE
9602CLASS="parameter"
9603>id</CODE
9604>.</P
9605></DIV
9606><DIV
9607CLASS="section"
9608><HR><H2
9609CLASS="section"
9610><A
9611NAME="AEN2048"
9612>A.97. llGetPermissions</A
9613></H2
9614><DIV
9615CLASS="funcsynopsis"
9616><P
9617></P
9618><A
9619NAME="AEN2050"
9620></A
9621><P
9622><CODE
9623><CODE
9624CLASS="FUNCDEF"
9625>integer llGetPermissions</CODE
9626>(void);</CODE
9627></P
9628><P
9629></P
9630></DIV
9631><P
9632>Returns what permissions have been enabled. eg:
9633<DIV
9634CLASS="informalexample"
9635><P
9636></P
9637><A
9638NAME="AEN2056"
9639></A
9640><PRE
9641CLASS="programlisting"
9642>&#13;integer perm = llGetPermissions();
9643if((perm &#38; PERMISSION_DEBIT) == PERMISSION_DEBIT)
9644{
9645 // code goes here
9646}
9647</PRE
9648><P
9649></P
9650></DIV
9651></P
9652></DIV
9653><DIV
9654CLASS="section"
9655><HR><H2
9656CLASS="section"
9657><A
9658NAME="AEN2058"
9659>A.98. llGetPermissionsKey</A
9660></H2
9661><DIV
9662CLASS="funcsynopsis"
9663><P
9664></P
9665><A
9666NAME="AEN2060"
9667></A
9668><P
9669><CODE
9670><CODE
9671CLASS="FUNCDEF"
9672>key llGetPermissionsKey</CODE
9673>(void);</CODE
9674></P
9675><P
9676></P
9677></DIV
9678><P
9679>Returns avatar that has enabled permissions. Returns <A
9680HREF="#AEN6023"
9681>NULL_KEY</A
9682> if not enabled.</P
9683></DIV
9684><DIV
9685CLASS="section"
9686><HR><H2
9687CLASS="section"
9688><A
9689NAME="AEN2067"
9690>A.99. llGetPos</A
9691></H2
9692><DIV
9693CLASS="funcsynopsis"
9694><P
9695></P
9696><A
9697NAME="AEN2069"
9698></A
9699><P
9700><CODE
9701><CODE
9702CLASS="FUNCDEF"
9703>vector llGetPos</CODE
9704>(void);</CODE
9705></P
9706><P
9707></P
9708></DIV
9709><P
9710>Returns the position.</P
9711></DIV
9712><DIV
9713CLASS="section"
9714><HR><H2
9715CLASS="section"
9716><A
9717NAME="AEN2075"
9718>A.100. llGetPrimitiveParams</A
9719></H2
9720><DIV
9721CLASS="funcsynopsis"
9722><P
9723></P
9724><A
9725NAME="AEN2077"
9726></A
9727><P
9728><CODE
9729><CODE
9730CLASS="FUNCDEF"
9731>list llGetPrimitiveParams</CODE
9732>(list parameters);</CODE
9733></P
9734><P
9735></P
9736></DIV
9737><P
9738>Get primitive parameters specified in <CODE
9739CLASS="parameter"
9740>parameters</CODE
9741>. The
9742 <CODE
9743CLASS="parameter"
9744>parameters</CODE
9745> are identical to the rules of <A
9746HREF="#AEN3973"
9747>llSetPrimitiveParams</A
9748>, 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.
9749
9750 Valid parameters can be found in the <A
9751HREF="#AEN6276"
9752>Primitive Constants</A
9753>.
9754 Here is a simple example:
9755<DIV
9756CLASS="informalexample"
9757><P
9758></P
9759><A
9760NAME="AEN2088"
9761></A
9762><PRE
9763CLASS="programlisting"
9764>&#13;llGetPrimitiveParams([PRIM_TYPE, PRIM_MATERIAL, PRIM_COLOR, ALL_SIDES, PRIM_POSITION]);
9765</PRE
9766><P
9767></P
9768></DIV
9769>
9770 This would return a list similar to this:
9771<DIV
9772CLASS="informalexample"
9773><P
9774></P
9775><A
9776NAME="AEN2090"
9777></A
9778><PRE
9779CLASS="programlisting"
9780>&#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
9781 PRIM_MATERIAL_WOOD, // PRIM_MATERIAL
9782 0, &#60;1, 1, 1&#62;, 1.0, // PRIM_COLOR (ALL_SIDES specified, so all 6 sides returned)
9783 1, &#60;1, 0, 0&#62;, 0.5,
9784 2, &#60;0, 0, 1&#62;, 1.0,
9785 3, &#60;0, 1, 0&#62;, 1.0,
9786 4, &#60;0, 0, 0&#62;, 0.5,
9787 5, &#60;1, 1, 1&#62;, 1.0,
9788 &#60;37.341, 195.283, 31.239&#62;] // PRIM_POSITION
9789</PRE
9790><P
9791></P
9792></DIV
9793></P
9794></DIV
9795><DIV
9796CLASS="section"
9797><HR><H2
9798CLASS="section"
9799><A
9800NAME="AEN2092"
9801>A.101. llGetRegionCorner</A
9802></H2
9803><DIV
9804CLASS="funcsynopsis"
9805><P
9806></P
9807><A
9808NAME="AEN2094"
9809></A
9810><P
9811><CODE
9812><CODE
9813CLASS="FUNCDEF"
9814>llGetRegionCorner</CODE
9815>(void);</CODE
9816></P
9817><P
9818></P
9819></DIV
9820><P
9821>Returns a vector with the south west corner position of the
9822 current region.</P
9823></DIV
9824><DIV
9825CLASS="section"
9826><HR><H2
9827CLASS="section"
9828><A
9829NAME="AEN2100"
9830>A.102. llGetRegionFPS</A
9831></H2
9832><DIV
9833CLASS="funcsynopsis"
9834><P
9835></P
9836><A
9837NAME="AEN2102"
9838></A
9839><P
9840><CODE
9841><CODE
9842CLASS="FUNCDEF"
9843>llGetRegionFPS</CODE
9844>(void);</CODE
9845></P
9846><P
9847></P
9848></DIV
9849><P
9850>Returns the mean region frames per second.</P
9851></DIV
9852><DIV
9853CLASS="section"
9854><HR><H2
9855CLASS="section"
9856><A
9857NAME="AEN2108"
9858>A.103. llGetRegionName</A
9859></H2
9860><DIV
9861CLASS="funcsynopsis"
9862><P
9863></P
9864><A
9865NAME="AEN2110"
9866></A
9867><P
9868><CODE
9869><CODE
9870CLASS="FUNCDEF"
9871>string llGetRegionName</CODE
9872>(void);</CODE
9873></P
9874><P
9875></P
9876></DIV
9877><P
9878>Returns the current region name.</P
9879></DIV
9880><DIV
9881CLASS="section"
9882><HR><H2
9883CLASS="section"
9884><A
9885NAME="AEN2116"
9886>A.104. llGetRegionTimeDilation</A
9887></H2
9888><DIV
9889CLASS="funcsynopsis"
9890><P
9891></P
9892><A
9893NAME="AEN2118"
9894></A
9895><P
9896><CODE
9897><CODE
9898CLASS="FUNCDEF"
9899>float llGetRegionTimeDilation</CODE
9900>(void);</CODE
9901></P
9902><P
9903></P
9904></DIV
9905><P
9906>Returns the current time dilation as a float between 0 and 1.</P
9907></DIV
9908><DIV
9909CLASS="section"
9910><HR><H2
9911CLASS="section"
9912><A
9913NAME="AEN2124"
9914>A.105. llGetRootPosition</A
9915></H2
9916><DIV
9917CLASS="funcsynopsis"
9918><P
9919></P
9920><A
9921NAME="AEN2126"
9922></A
9923><P
9924><CODE
9925><CODE
9926CLASS="FUNCDEF"
9927>vector llGetRootPosition</CODE
9928>(void);</CODE
9929></P
9930><P
9931></P
9932></DIV
9933><P
9934>Returns the global position of the root object of the object the script is attached to.</P
9935></DIV
9936><DIV
9937CLASS="section"
9938><HR><H2
9939CLASS="section"
9940><A
9941NAME="AEN2132"
9942>A.106. llGetRootRotation</A
9943></H2
9944><DIV
9945CLASS="funcsynopsis"
9946><P
9947></P
9948><A
9949NAME="AEN2134"
9950></A
9951><P
9952><CODE
9953><CODE
9954CLASS="FUNCDEF"
9955>rotation llGetRootRotation</CODE
9956>(void);</CODE
9957></P
9958><P
9959></P
9960></DIV
9961><P
9962>Returns the global rotation of the root object of the object the script is attached to.</P
9963></DIV
9964><DIV
9965CLASS="section"
9966><HR><H2
9967CLASS="section"
9968><A
9969NAME="AEN2140"
9970>A.107. llGetRot</A
9971></H2
9972><DIV
9973CLASS="funcsynopsis"
9974><P
9975></P
9976><A
9977NAME="AEN2142"
9978></A
9979><P
9980><CODE
9981><CODE
9982CLASS="FUNCDEF"
9983>rotation llGetRot</CODE
9984>(void);</CODE
9985></P
9986><P
9987></P
9988></DIV
9989><P
9990>Returns the rotation.</P
9991></DIV
9992><DIV
9993CLASS="section"
9994><HR><H2
9995CLASS="section"
9996><A
9997NAME="AEN2148"
9998>A.108. llGetScale</A
9999></H2
10000><DIV
10001CLASS="funcsynopsis"
10002><P
10003></P
10004><A
10005NAME="AEN2150"
10006></A
10007><P
10008><CODE
10009><CODE
10010CLASS="FUNCDEF"
10011>vector llGetScale</CODE
10012>(void);</CODE
10013></P
10014><P
10015></P
10016></DIV
10017><P
10018>Returns the scale.</P
10019></DIV
10020><DIV
10021CLASS="section"
10022><HR><H2
10023CLASS="section"
10024><A
10025NAME="AEN2156"
10026>A.109. llGetScriptName</A
10027></H2
10028><DIV
10029CLASS="funcsynopsis"
10030><P
10031></P
10032><A
10033NAME="AEN2158"
10034></A
10035><P
10036><CODE
10037><CODE
10038CLASS="FUNCDEF"
10039>string llGetScriptName</CODE
10040>(void);</CODE
10041></P
10042><P
10043></P
10044></DIV
10045><P
10046>Returns the name of this script.</P
10047></DIV
10048><DIV
10049CLASS="section"
10050><HR><H2
10051CLASS="section"
10052><A
10053NAME="AEN2164"
10054>A.110. llGetStartParameter</A
10055></H2
10056><DIV
10057CLASS="funcsynopsis"
10058><P
10059></P
10060><A
10061NAME="AEN2166"
10062></A
10063><P
10064><CODE
10065><CODE
10066CLASS="FUNCDEF"
10067>integer llGetStartParameter</CODE
10068>(void);</CODE
10069></P
10070><P
10071></P
10072></DIV
10073><P
10074>Returns the start parameter passed to <A
10075HREF="#AEN3458"
10076>llRezObject</A
10077> or <A
10078HREF="#AEN3431"
10079>llRezAtRoot</A
10080>. If the object was
10081 created from agent inventory, this function returns 0.</P
10082></DIV
10083><DIV
10084CLASS="section"
10085><HR><H2
10086CLASS="section"
10087><A
10088NAME="AEN2174"
10089>A.111. llGetScriptState</A
10090></H2
10091><DIV
10092CLASS="funcsynopsis"
10093><P
10094></P
10095><A
10096NAME="AEN2176"
10097></A
10098><P
10099><CODE
10100><CODE
10101CLASS="FUNCDEF"
10102>integer llGetScriptState</CODE
10103>(string name);</CODE
10104></P
10105><P
10106></P
10107></DIV
10108><P
10109>Resets TRUE if script <CODE
10110CLASS="parameter"
10111>name</CODE
10112> is running</P
10113></DIV
10114><DIV
10115CLASS="section"
10116><HR><H2
10117CLASS="section"
10118><A
10119NAME="AEN2184"
10120>A.112. llGetStatus</A
10121></H2
10122><DIV
10123CLASS="funcsynopsis"
10124><P
10125></P
10126><A
10127NAME="AEN2186"
10128></A
10129><P
10130><CODE
10131><CODE
10132CLASS="FUNCDEF"
10133>integer llGetStatus</CODE
10134>(integer status);</CODE
10135></P
10136><P
10137></P
10138></DIV
10139><P
10140>Returns the value of <CODE
10141CLASS="parameter"
10142>status</CODE
10143>. The
10144 value will be one of the <A
10145HREF="#AEN5257"
10146>status
10147 constants</A
10148>.</P
10149></DIV
10150><DIV
10151CLASS="section"
10152><HR><H2
10153CLASS="section"
10154><A
10155NAME="AEN2195"
10156>A.113. llGetSubString</A
10157></H2
10158><DIV
10159CLASS="funcsynopsis"
10160><P
10161></P
10162><A
10163NAME="AEN2197"
10164></A
10165><P
10166><CODE
10167><CODE
10168CLASS="FUNCDEF"
10169>string llGetSubString</CODE
10170>(string src, integer start, integer end);</CODE
10171></P
10172><P
10173></P
10174></DIV
10175><P
10176>Returns the indicated substring from
10177 <CODE
10178CLASS="parameter"
10179>src</CODE
10180>. The <CODE
10181CLASS="parameter"
10182>start</CODE
10183> and
10184 <CODE
10185CLASS="parameter"
10186>end</CODE
10187> are inclusive, so 0,length-1 would
10188 capture the entire string and 0,0 would capture the first
10189 character. Using negative numbers for <CODE
10190CLASS="parameter"
10191>start</CODE
10192>
10193 and/or <CODE
10194CLASS="parameter"
10195>end</CODE
10196> causes the index to count
10197 backwards from the length of the string, so 0,-1 would capture the
10198 entire string. If start is larger than end the sub string is the
10199 exclusion of the entries, so 6,4 would give the entire string
10200 except for the 5<SUP
10201>th</SUP
10202> character.</P
10203></DIV
10204><DIV
10205CLASS="section"
10206><HR><H2
10207CLASS="section"
10208><A
10209NAME="AEN2214"
10210>A.114. llGetSunDirection</A
10211></H2
10212><DIV
10213CLASS="funcsynopsis"
10214><P
10215></P
10216><A
10217NAME="AEN2216"
10218></A
10219><P
10220><CODE
10221><CODE
10222CLASS="FUNCDEF"
10223>vector llGetSunDirection</CODE
10224>(void);</CODE
10225></P
10226><P
10227></P
10228></DIV
10229><P
10230>Returns the sun direction on the simulator.</P
10231></DIV
10232><DIV
10233CLASS="section"
10234><HR><H2
10235CLASS="section"
10236><A
10237NAME="AEN2222"
10238>A.115. llGetTexture</A
10239></H2
10240><DIV
10241CLASS="funcsynopsis"
10242><P
10243></P
10244><A
10245NAME="AEN2224"
10246></A
10247><P
10248><CODE
10249><CODE
10250CLASS="FUNCDEF"
10251>string llGetTexture</CODE
10252>(integer face);</CODE
10253></P
10254><P
10255></P
10256></DIV
10257><P
10258>Returns the texture of <CODE
10259CLASS="parameter"
10260>face</CODE
10261> if it is
10262 found in object inventory.</P
10263></DIV
10264><DIV
10265CLASS="section"
10266><HR><H2
10267CLASS="section"
10268><A
10269NAME="AEN2232"
10270>A.116. llGetTextureOffset</A
10271></H2
10272><DIV
10273CLASS="funcsynopsis"
10274><P
10275></P
10276><A
10277NAME="AEN2234"
10278></A
10279><P
10280><CODE
10281><CODE
10282CLASS="FUNCDEF"
10283>vector llGetTextureOffset</CODE
10284>(integer side);</CODE
10285></P
10286><P
10287></P
10288></DIV
10289><P
10290>Returns the texture offset of <CODE
10291CLASS="parameter"
10292>side</CODE
10293> in
10294 the x and y components of a vector.</P
10295></DIV
10296><DIV
10297CLASS="section"
10298><HR><H2
10299CLASS="section"
10300><A
10301NAME="AEN2242"
10302>A.117. llGetTextureRot</A
10303></H2
10304><DIV
10305CLASS="funcsynopsis"
10306><P
10307></P
10308><A
10309NAME="AEN2244"
10310></A
10311><P
10312><CODE
10313><CODE
10314CLASS="FUNCDEF"
10315>float llGetTextureRot</CODE
10316>(integer side);</CODE
10317></P
10318><P
10319></P
10320></DIV
10321><P
10322>Returns the texture rotation of
10323 <CODE
10324CLASS="parameter"
10325>side</CODE
10326>.</P
10327></DIV
10328><DIV
10329CLASS="section"
10330><HR><H2
10331CLASS="section"
10332><A
10333NAME="AEN2252"
10334>A.118. llGetTextureScale</A
10335></H2
10336><DIV
10337CLASS="funcsynopsis"
10338><P
10339></P
10340><A
10341NAME="AEN2254"
10342></A
10343><P
10344><CODE
10345><CODE
10346CLASS="FUNCDEF"
10347>vector llGetTextureScale</CODE
10348>(integer side);</CODE
10349></P
10350><P
10351></P
10352></DIV
10353><P
10354>Returns the texture scale of <CODE
10355CLASS="parameter"
10356>side</CODE
10357> in
10358 the x and y components of a vector.</P
10359></DIV
10360><DIV
10361CLASS="section"
10362><HR><H2
10363CLASS="section"
10364><A
10365NAME="AEN2262"
10366>A.119. llGetTime</A
10367></H2
10368><DIV
10369CLASS="funcsynopsis"
10370><P
10371></P
10372><A
10373NAME="AEN2264"
10374></A
10375><P
10376><CODE
10377><CODE
10378CLASS="FUNCDEF"
10379>float llGetTime</CODE
10380>(void);</CODE
10381></P
10382><P
10383></P
10384></DIV
10385><P
10386>Returns the seconds of elapsed time from an internal timer
10387 associated with the script. The timer is reset on rez, simulator
10388 restart, script reset, and in calls to <A
10389HREF="#AEN1638"
10390>llGetAndResetTime</A
10391> or <A
10392HREF="#AEN3423"
10393>llResetTime</A
10394>. Use <A
10395HREF="#AEN4141"
10396>llSetTimerEvent</A
10397> if you want a
10398 reliable timing mechanism.</P
10399></DIV
10400><DIV
10401CLASS="section"
10402><HR><H2
10403CLASS="section"
10404><A
10405NAME="AEN2273"
10406>A.120. llGetTimeOfDay</A
10407></H2
10408><DIV
10409CLASS="funcsynopsis"
10410><P
10411></P
10412><A
10413NAME="AEN2275"
10414></A
10415><P
10416><CODE
10417><CODE
10418CLASS="FUNCDEF"
10419>float llGetTimeOfDay</CODE
10420>(void);</CODE
10421></P
10422><P
10423></P
10424></DIV
10425><P
10426>Gets the time in seconds since midnight in Second Life.</P
10427></DIV
10428><DIV
10429CLASS="section"
10430><HR><H2
10431CLASS="section"
10432><A
10433NAME="AEN2281"
10434>A.121. llGetTimestamp</A
10435></H2
10436><DIV
10437CLASS="funcsynopsis"
10438><P
10439></P
10440><A
10441NAME="AEN2283"
10442></A
10443><P
10444><CODE
10445><CODE
10446CLASS="FUNCDEF"
10447>string llGetTimestamp</CODE
10448>(void);</CODE
10449></P
10450><P
10451></P
10452></DIV
10453><P
10454>Returns a timestamp in the format: YYYY-MM-DDThh:mm:ss.ff..fZ.</P
10455></DIV
10456><DIV
10457CLASS="section"
10458><HR><H2
10459CLASS="section"
10460><A
10461NAME="AEN2289"
10462>A.122. llGetTorque</A
10463></H2
10464><DIV
10465CLASS="funcsynopsis"
10466><P
10467></P
10468><A
10469NAME="AEN2291"
10470></A
10471><P
10472><CODE
10473><CODE
10474CLASS="FUNCDEF"
10475>vector llGetTorque</CODE
10476>(void);</CODE
10477></P
10478><P
10479></P
10480></DIV
10481><P
10482>Returns the torque if the script is physical.</P
10483></DIV
10484><DIV
10485CLASS="section"
10486><HR><H2
10487CLASS="section"
10488><A
10489NAME="AEN2297"
10490>A.123. llGetVel</A
10491></H2
10492><DIV
10493CLASS="funcsynopsis"
10494><P
10495></P
10496><A
10497NAME="AEN2299"
10498></A
10499><P
10500><CODE
10501><CODE
10502CLASS="FUNCDEF"
10503>vector llGetVel</CODE
10504>();</CODE
10505></P
10506><P
10507></P
10508></DIV
10509><P
10510>Returns the velocity.</P
10511></DIV
10512><DIV
10513CLASS="section"
10514><HR><H2
10515CLASS="section"
10516><A
10517NAME="AEN2306"
10518>A.124. llGetWallclock</A
10519></H2
10520><DIV
10521CLASS="funcsynopsis"
10522><P
10523></P
10524><A
10525NAME="AEN2308"
10526></A
10527><P
10528><CODE
10529><CODE
10530CLASS="FUNCDEF"
10531>float llGetWallclock</CODE
10532>(void);</CODE
10533></P
10534><P
10535></P
10536></DIV
10537><P
10538>Returns the time in seconds since simulator timezone
10539 midnight. Currently this is PST.</P
10540></DIV
10541><DIV
10542CLASS="section"
10543><HR><H2
10544CLASS="section"
10545><A
10546NAME="AEN2314"
10547>A.125. llGiveInventory</A
10548></H2
10549><DIV
10550CLASS="funcsynopsis"
10551><P
10552></P
10553><A
10554NAME="AEN2316"
10555></A
10556><P
10557><CODE
10558><CODE
10559CLASS="FUNCDEF"
10560>llGiveInventory</CODE
10561>(key destination, string inventory);</CODE
10562></P
10563><P
10564></P
10565></DIV
10566><P
10567>Give the named inventory item to the keyed avatar or object
10568 in the same simulator as the giver. If the recipient is an avatar,
10569 the avatar then follows the normal procedure of accepting or
10570 denying the offer. If the recipient is an object, the same
10571 permissions apply as if you were dragging inventory onto the
10572 object by hand, ie if <A
10573HREF="#AEN1047"
10574>llAllowInventoryDrop</A
10575> has
10576 been called with TRUE, any other object can pass objects to its
10577 inventory.</P
10578></DIV
10579><DIV
10580CLASS="section"
10581><HR><H2
10582CLASS="section"
10583><A
10584NAME="AEN2326"
10585>A.126. llGiveInventoryList</A
10586></H2
10587><DIV
10588CLASS="funcsynopsis"
10589><P
10590></P
10591><A
10592NAME="AEN2328"
10593></A
10594><P
10595><CODE
10596><CODE
10597CLASS="FUNCDEF"
10598>llGiveInventoryList</CODE
10599>(key destination, string category, list inventory);</CODE
10600></P
10601><P
10602></P
10603></DIV
10604><P
10605>Give the list of named inventory items to the keyed avatar
10606 or object in the same simulator as the giver. If the recipient is
10607 an avatar, the avatar then follows the normal procedure of
10608 accepting or denying the offer. The offered inventory is then
10609 placed in a folder named <CODE
10610CLASS="parameter"
10611>category</CODE
10612> in the
10613 recipients inventory. If the recipient is an object, the same
10614 permissions apply as if you were dragging inventory onto the
10615 object by hand, ie if <A
10616HREF="#AEN1047"
10617>llAllowInventoryDrop</A
10618> has
10619 been called with TRUE, any other object can pass objects to its
10620 inventory.If the recipient is an object, the
10621 <CODE
10622CLASS="parameter"
10623>category</CODE
10624> parameter is ignored.</P
10625></DIV
10626><DIV
10627CLASS="section"
10628><HR><H2
10629CLASS="section"
10630><A
10631NAME="AEN2342"
10632>A.127. llGiveMoney</A
10633></H2
10634><DIV
10635CLASS="funcsynopsis"
10636><P
10637></P
10638><A
10639NAME="AEN2344"
10640></A
10641><P
10642><CODE
10643><CODE
10644CLASS="FUNCDEF"
10645>llGiveMoney</CODE
10646>(key destination, integer amount);</CODE
10647></P
10648><P
10649></P
10650></DIV
10651><P
10652>Transfer <CODE
10653CLASS="parameter"
10654>amount</CODE
10655> from the script owner
10656 to <CODE
10657CLASS="parameter"
10658>destination</CODE
10659>. This call will fail if
10660 <A
10661HREF="#AEN5313"
10662>PERMISSION_DEBIT</A
10663> has not
10664 been set.</P
10665></DIV
10666><DIV
10667CLASS="section"
10668><HR><H2
10669CLASS="section"
10670><A
10671NAME="AEN2356"
10672>A.128. llGround</A
10673></H2
10674><DIV
10675CLASS="funcsynopsis"
10676><P
10677></P
10678><A
10679NAME="AEN2358"
10680></A
10681><P
10682><CODE
10683><CODE
10684CLASS="FUNCDEF"
10685>float llGround</CODE
10686>(vector offset);</CODE
10687></P
10688><P
10689></P
10690></DIV
10691><P
10692>Returns the ground height at the object position +
10693 <CODE
10694CLASS="parameter"
10695>offset</CODE
10696>.</P
10697></DIV
10698><DIV
10699CLASS="section"
10700><HR><H2
10701CLASS="section"
10702><A
10703NAME="AEN2366"
10704>A.129. llGroundContour</A
10705></H2
10706><DIV
10707CLASS="funcsynopsis"
10708><P
10709></P
10710><A
10711NAME="AEN2368"
10712></A
10713><P
10714><CODE
10715><CODE
10716CLASS="FUNCDEF"
10717>vector llGroundContour</CODE
10718>(vector offset);</CODE
10719></P
10720><P
10721></P
10722></DIV
10723><P
10724>Returns the ground contour at the object position +
10725 <CODE
10726CLASS="parameter"
10727>offset</CODE
10728>.</P
10729></DIV
10730><DIV
10731CLASS="section"
10732><HR><H2
10733CLASS="section"
10734><A
10735NAME="AEN2376"
10736>A.130. llGroundNormal</A
10737></H2
10738><DIV
10739CLASS="funcsynopsis"
10740><P
10741></P
10742><A
10743NAME="AEN2378"
10744></A
10745><P
10746><CODE
10747><CODE
10748CLASS="FUNCDEF"
10749>vector llGroundNormal</CODE
10750>(vector offset);</CODE
10751></P
10752><P
10753></P
10754></DIV
10755><P
10756>Returns the ground contour at the object position +
10757 <CODE
10758CLASS="parameter"
10759>offset</CODE
10760>.</P
10761></DIV
10762><DIV
10763CLASS="section"
10764><HR><H2
10765CLASS="section"
10766><A
10767NAME="AEN2386"
10768>A.131. llGroundRepel</A
10769></H2
10770><DIV
10771CLASS="funcsynopsis"
10772><P
10773></P
10774><A
10775NAME="AEN2388"
10776></A
10777><P
10778><CODE
10779><CODE
10780CLASS="FUNCDEF"
10781>llGroundRepel</CODE
10782>(float height, integer water, float tau);</CODE
10783></P
10784><P
10785></P
10786></DIV
10787><P
10788>Critically damps to <CODE
10789CLASS="parameter"
10790>height</CODE
10791> if within
10792 <CODE
10793CLASS="parameter"
10794>height</CODE
10795> * 0.5 of
10796 <CODE
10797CLASS="parameter"
10798>level</CODE
10799>. The <CODE
10800CLASS="parameter"
10801>height</CODE
10802>
10803 is above ground level if <CODE
10804CLASS="parameter"
10805>water</CODE
10806> is FALSE or
10807 above the higher of land and water if <CODE
10808CLASS="parameter"
10809>water</CODE
10810>
10811 is TRUE.</P
10812></DIV
10813><DIV
10814CLASS="section"
10815><HR><H2
10816CLASS="section"
10817><A
10818NAME="AEN2405"
10819>A.132. llGroundSlope</A
10820></H2
10821><DIV
10822CLASS="funcsynopsis"
10823><P
10824></P
10825><A
10826NAME="AEN2407"
10827></A
10828><P
10829><CODE
10830><CODE
10831CLASS="FUNCDEF"
10832>vector llGroundSlope</CODE
10833>(vector offset);</CODE
10834></P
10835><P
10836></P
10837></DIV
10838><P
10839>Returns the ground slope at the object position +
10840 <CODE
10841CLASS="parameter"
10842>offset</CODE
10843>.</P
10844></DIV
10845><DIV
10846CLASS="section"
10847><HR><H2
10848CLASS="section"
10849><A
10850NAME="AEN2415"
10851>A.133. llInsertString</A
10852></H2
10853><DIV
10854CLASS="funcsynopsis"
10855><P
10856></P
10857><A
10858NAME="AEN2417"
10859></A
10860><P
10861><CODE
10862><CODE
10863CLASS="FUNCDEF"
10864>string llInsertString</CODE
10865>(string dst, integer position, string src);</CODE
10866></P
10867><P
10868></P
10869></DIV
10870><P
10871>Inserts <CODE
10872CLASS="parameter"
10873>src</CODE
10874> into
10875 <CODE
10876CLASS="parameter"
10877>dst</CODE
10878> at <CODE
10879CLASS="parameter"
10880>position</CODE
10881> and
10882 returns the result.</P
10883></DIV
10884><DIV
10885CLASS="section"
10886><HR><H2
10887CLASS="section"
10888><A
10889NAME="AEN2431"
10890>A.134. llInstantMessage</A
10891></H2
10892><DIV
10893CLASS="funcsynopsis"
10894><P
10895></P
10896><A
10897NAME="AEN2433"
10898></A
10899><P
10900><CODE
10901><CODE
10902CLASS="FUNCDEF"
10903>llInstantMessage</CODE
10904>(key user, string message);</CODE
10905></P
10906><P
10907></P
10908></DIV
10909><P
10910>Send <CODE
10911CLASS="parameter"
10912>message</CODE
10913> to the
10914 <CODE
10915CLASS="parameter"
10916>user</CODE
10917> as an instant message.</P
10918></DIV
10919><DIV
10920CLASS="section"
10921><HR><H2
10922CLASS="section"
10923><A
10924NAME="AEN2444"
10925>A.135. llKey2Name</A
10926></H2
10927><DIV
10928CLASS="funcsynopsis"
10929><P
10930></P
10931><A
10932NAME="AEN2446"
10933></A
10934><P
10935><CODE
10936><CODE
10937CLASS="FUNCDEF"
10938>string llKey2Name</CODE
10939>(key id);</CODE
10940></P
10941><P
10942></P
10943></DIV
10944><P
10945>If object <CODE
10946CLASS="parameter"
10947>id</CODE
10948> is in the same
10949 simulator, return the name of the object.</P
10950></DIV
10951><DIV
10952CLASS="section"
10953><HR><H2
10954CLASS="section"
10955><A
10956NAME="AEN2454"
10957>A.136. llList2CSV</A
10958></H2
10959><DIV
10960CLASS="funcsynopsis"
10961><P
10962></P
10963><A
10964NAME="AEN2456"
10965></A
10966><P
10967><CODE
10968><CODE
10969CLASS="FUNCDEF"
10970>string llList2CSV</CODE
10971>(list src);</CODE
10972></P
10973><P
10974></P
10975></DIV
10976><P
10977>Create a string of comma separated values from
10978 <CODE
10979CLASS="parameter"
10980>list</CODE
10981>.</P
10982></DIV
10983><DIV
10984CLASS="section"
10985><HR><H2
10986CLASS="section"
10987><A
10988NAME="AEN2464"
10989>A.137. llList2Float</A
10990></H2
10991><DIV
10992CLASS="funcsynopsis"
10993><P
10994></P
10995><A
10996NAME="AEN2466"
10997></A
10998><P
10999><CODE
11000><CODE
11001CLASS="FUNCDEF"
11002>float llList2Float</CODE
11003>(list src, integer index);</CODE
11004></P
11005><P
11006></P
11007></DIV
11008><P
11009>Returns the float at <CODE
11010CLASS="parameter"
11011>index</CODE
11012> in the
11013 list <CODE
11014CLASS="parameter"
11015>src</CODE
11016>.</P
11017></DIV
11018><DIV
11019CLASS="section"
11020><HR><H2
11021CLASS="section"
11022><A
11023NAME="AEN2477"
11024>A.138. llList2Integer</A
11025></H2
11026><DIV
11027CLASS="funcsynopsis"
11028><P
11029></P
11030><A
11031NAME="AEN2479"
11032></A
11033><P
11034><CODE
11035><CODE
11036CLASS="FUNCDEF"
11037>integer llList2Integer</CODE
11038>(list src, integer index);</CODE
11039></P
11040><P
11041></P
11042></DIV
11043><P
11044>Returns the integer at <CODE
11045CLASS="parameter"
11046>index</CODE
11047> in the list
11048 <CODE
11049CLASS="parameter"
11050>src</CODE
11051>.</P
11052></DIV
11053><DIV
11054CLASS="section"
11055><HR><H2
11056CLASS="section"
11057><A
11058NAME="AEN2490"
11059>A.139. llList2Key</A
11060></H2
11061><DIV
11062CLASS="funcsynopsis"
11063><P
11064></P
11065><A
11066NAME="AEN2492"
11067></A
11068><P
11069><CODE
11070><CODE
11071CLASS="FUNCDEF"
11072>key llList2Key</CODE
11073>(list src, integer index);</CODE
11074></P
11075><P
11076></P
11077></DIV
11078><P
11079>Returns the key at <CODE
11080CLASS="parameter"
11081>index</CODE
11082> in the list
11083 <CODE
11084CLASS="parameter"
11085>src</CODE
11086>.</P
11087></DIV
11088><DIV
11089CLASS="section"
11090><HR><H2
11091CLASS="section"
11092><A
11093NAME="AEN2503"
11094>A.140. llList2List</A
11095></H2
11096><DIV
11097CLASS="funcsynopsis"
11098><P
11099></P
11100><A
11101NAME="AEN2505"
11102></A
11103><P
11104><CODE
11105><CODE
11106CLASS="FUNCDEF"
11107>list llList2List</CODE
11108>(list src, integer start, integer end);</CODE
11109></P
11110><P
11111></P
11112></DIV
11113><P
11114>Returns the slice of the list from
11115 <CODE
11116CLASS="parameter"
11117>start</CODE
11118> to <CODE
11119CLASS="parameter"
11120>end</CODE
11121> from
11122 the list <CODE
11123CLASS="parameter"
11124>src</CODE
11125> as a new list. The
11126 <CODE
11127CLASS="parameter"
11128>start</CODE
11129> and <CODE
11130CLASS="parameter"
11131>end</CODE
11132>
11133 parameters are inclusive, so 0,length-1 would copy the entire list
11134 and 0,0 would capture the first list entry. Using negative numbers
11135 for <CODE
11136CLASS="parameter"
11137>start</CODE
11138> and/or <CODE
11139CLASS="parameter"
11140>end</CODE
11141>
11142 causes the index to count backwards from the length of the list,
11143 so 0,-1 would capture the entire list. If
11144 <CODE
11145CLASS="parameter"
11146>start</CODE
11147> is larger than
11148 <CODE
11149CLASS="parameter"
11150>end</CODE
11151> the list returned is the exclusion of
11152 the entries, so 6,4 would give the entire list except for the
11153 5<SUP
11154>th</SUP
11155> entry.</P
11156></DIV
11157><DIV
11158CLASS="section"
11159><HR><H2
11160CLASS="section"
11161><A
11162NAME="AEN2526"
11163>A.141. llList2ListStrided</A
11164></H2
11165><DIV
11166CLASS="funcsynopsis"
11167><P
11168></P
11169><A
11170NAME="AEN2528"
11171></A
11172><P
11173><CODE
11174><CODE
11175CLASS="FUNCDEF"
11176>list llList2ListStrided</CODE
11177>(list src, integer start, integer end, integer stride);</CODE
11178></P
11179><P
11180></P
11181></DIV
11182><P
11183>Copy the strided slice of <CODE
11184CLASS="parameter"
11185>src</CODE
11186> from
11187 <CODE
11188CLASS="parameter"
11189>start</CODE
11190> to <CODE
11191CLASS="parameter"
11192>end</CODE
11193>.</P
11194></DIV
11195><DIV
11196CLASS="section"
11197><HR><H2
11198CLASS="section"
11199><A
11200NAME="AEN2544"
11201>A.142. llList2Rot</A
11202></H2
11203><DIV
11204CLASS="funcsynopsis"
11205><P
11206></P
11207><A
11208NAME="AEN2546"
11209></A
11210><P
11211><CODE
11212><CODE
11213CLASS="FUNCDEF"
11214>rotation llList2Rot</CODE
11215>(list src, integer index);</CODE
11216></P
11217><P
11218></P
11219></DIV
11220><P
11221>Returns the rotation at <CODE
11222CLASS="parameter"
11223>index</CODE
11224> in
11225 <CODE
11226CLASS="parameter"
11227>src</CODE
11228>.</P
11229></DIV
11230><DIV
11231CLASS="section"
11232><HR><H2
11233CLASS="section"
11234><A
11235NAME="AEN2557"
11236>A.143. llList2String</A
11237></H2
11238><DIV
11239CLASS="funcsynopsis"
11240><P
11241></P
11242><A
11243NAME="AEN2559"
11244></A
11245><P
11246><CODE
11247><CODE
11248CLASS="FUNCDEF"
11249>string llList2String</CODE
11250>(list src, integer index);</CODE
11251></P
11252><P
11253></P
11254></DIV
11255><P
11256>Returns the string at <CODE
11257CLASS="parameter"
11258>index</CODE
11259> in
11260 <CODE
11261CLASS="parameter"
11262>src</CODE
11263>.</P
11264></DIV
11265><DIV
11266CLASS="section"
11267><HR><H2
11268CLASS="section"
11269><A
11270NAME="AEN2570"
11271>A.144. llList2Vector</A
11272></H2
11273><DIV
11274CLASS="funcsynopsis"
11275><P
11276></P
11277><A
11278NAME="AEN2572"
11279></A
11280><P
11281><CODE
11282><CODE
11283CLASS="FUNCDEF"
11284>llList2Vector</CODE
11285>(list src, integer index);</CODE
11286></P
11287><P
11288></P
11289></DIV
11290><P
11291>Returns the string at <CODE
11292CLASS="parameter"
11293>index</CODE
11294> in
11295 <CODE
11296CLASS="parameter"
11297>src</CODE
11298>.</P
11299></DIV
11300><DIV
11301CLASS="section"
11302><HR><H2
11303CLASS="section"
11304><A
11305NAME="AEN2583"
11306>A.145. llListFindList</A
11307></H2
11308><DIV
11309CLASS="funcsynopsis"
11310><P
11311></P
11312><A
11313NAME="AEN2585"
11314></A
11315><P
11316><CODE
11317><CODE
11318CLASS="FUNCDEF"
11319>integer llListFindList</CODE
11320>(list src, list test);</CODE
11321></P
11322><P
11323></P
11324></DIV
11325><P
11326>Returns the position of the first instance of
11327 <CODE
11328CLASS="parameter"
11329>test</CODE
11330> in <CODE
11331CLASS="parameter"
11332>src</CODE
11333>. Returns
11334 -1 if <CODE
11335CLASS="parameter"
11336>test</CODE
11337> is not in
11338 <CODE
11339CLASS="parameter"
11340>src</CODE
11341>.</P
11342></DIV
11343><DIV
11344CLASS="section"
11345><HR><H2
11346CLASS="section"
11347><A
11348NAME="AEN2598"
11349>A.146. llListInsertList</A
11350></H2
11351><DIV
11352CLASS="funcsynopsis"
11353><P
11354></P
11355><A
11356NAME="AEN2600"
11357></A
11358><P
11359><CODE
11360><CODE
11361CLASS="FUNCDEF"
11362>list llListInsertList</CODE
11363>(list dest, list src, integer pos);</CODE
11364></P
11365><P
11366></P
11367></DIV
11368><P
11369>Returns the list created by inserting
11370 <CODE
11371CLASS="parameter"
11372>src</CODE
11373> into <CODE
11374CLASS="parameter"
11375>dest</CODE
11376> at
11377 <CODE
11378CLASS="parameter"
11379>pos</CODE
11380>.</P
11381></DIV
11382><DIV
11383CLASS="section"
11384><HR><H2
11385CLASS="section"
11386><A
11387NAME="AEN2614"
11388>A.147. llListRandomize</A
11389></H2
11390><DIV
11391CLASS="funcsynopsis"
11392><P
11393></P
11394><A
11395NAME="AEN2616"
11396></A
11397><P
11398><CODE
11399><CODE
11400CLASS="FUNCDEF"
11401>list llListRandomize</CODE
11402>(list src, integer stride);</CODE
11403></P
11404><P
11405></P
11406></DIV
11407><P
11408>Returns <CODE
11409CLASS="parameter"
11410>src</CODE
11411> randomized into blocks of
11412 size <CODE
11413CLASS="parameter"
11414>stride</CODE
11415>. If the length of
11416 <CODE
11417CLASS="parameter"
11418>src</CODE
11419> divided by
11420 <CODE
11421CLASS="parameter"
11422>stride</CODE
11423> is non-zero, this function does
11424 not randomize the list.</P
11425></DIV
11426><DIV
11427CLASS="section"
11428><HR><H2
11429CLASS="section"
11430><A
11431NAME="AEN2629"
11432>A.148. llListReplaceList</A
11433></H2
11434><DIV
11435CLASS="funcsynopsis"
11436><P
11437></P
11438><A
11439NAME="AEN2631"
11440></A
11441><P
11442><CODE
11443><CODE
11444CLASS="FUNCDEF"
11445>list llListReplaceList</CODE
11446>(list dest, list src, integer start, integer end);</CODE
11447></P
11448><P
11449></P
11450></DIV
11451><P
11452>Returns the list created by replacing the segment of <CODE
11453CLASS="parameter"
11454>dest</CODE
11455> from
11456 <CODE
11457CLASS="parameter"
11458>start</CODE
11459> to <CODE
11460CLASS="parameter"
11461>end</CODE
11462> with <CODE
11463CLASS="parameter"
11464>src</CODE
11465>.</P
11466></DIV
11467><DIV
11468CLASS="section"
11469><HR><H2
11470CLASS="section"
11471><A
11472NAME="AEN2648"
11473>A.149. llListSort</A
11474></H2
11475><DIV
11476CLASS="funcsynopsis"
11477><P
11478></P
11479><A
11480NAME="AEN2650"
11481></A
11482><P
11483><CODE
11484><CODE
11485CLASS="FUNCDEF"
11486>list llListSort</CODE
11487>(list src, integer stride, integer ascending);</CODE
11488></P
11489><P
11490></P
11491></DIV
11492><P
11493>Returns <CODE
11494CLASS="parameter"
11495>src</CODE
11496> sorted into blocks of
11497 <CODE
11498CLASS="parameter"
11499>stride</CODE
11500> in ascending order if
11501 <CODE
11502CLASS="parameter"
11503>ascending</CODE
11504> is <A
11505HREF="#AEN5248"
11506>TRUE</A
11507>. Note that sort only works in
11508 the head of each sort block is the same type.</P
11509></DIV
11510><DIV
11511CLASS="section"
11512><HR><H2
11513CLASS="section"
11514><A
11515NAME="AEN2665"
11516>A.150. llListen</A
11517></H2
11518><DIV
11519CLASS="funcsynopsis"
11520><P
11521></P
11522><A
11523NAME="AEN2667"
11524></A
11525><P
11526><CODE
11527><CODE
11528CLASS="FUNCDEF"
11529>integer llListen</CODE
11530>(integer channel, string name, key id, string msg);</CODE
11531></P
11532><P
11533></P
11534></DIV
11535><P
11536>Sets a listen event callback for <CODE
11537CLASS="parameter"
11538>msg</CODE
11539>
11540 on <CODE
11541CLASS="parameter"
11542>channel</CODE
11543> from <CODE
11544CLASS="parameter"
11545>name</CODE
11546>
11547 and returns an identifier that can be used to deactivate or remove
11548 the listen. The <CODE
11549CLASS="parameter"
11550>name</CODE
11551>,
11552 <CODE
11553CLASS="parameter"
11554>id</CODE
11555> and/or <CODE
11556CLASS="parameter"
11557>msg</CODE
11558>
11559 parameters can be blank to indicate not to filter on that
11560 argument. Channel 0 is the public chat channel that all avatars
11561 see as chat text. Channels 1 to 2,147,483,648 are hidden channels
11562 that are not sent to avatars.</P
11563></DIV
11564><DIV
11565CLASS="section"
11566><HR><H2
11567CLASS="section"
11568><A
11569NAME="AEN2686"
11570>A.151. llListenControl</A
11571></H2
11572><DIV
11573CLASS="funcsynopsis"
11574><P
11575></P
11576><A
11577NAME="AEN2688"
11578></A
11579><P
11580><CODE
11581><CODE
11582CLASS="FUNCDEF"
11583>llListenControl</CODE
11584>(integer number, integer active);</CODE
11585></P
11586><P
11587></P
11588></DIV
11589><P
11590>Make a listen event callback active or inactive. Pass in the
11591 value returned from <A
11592HREF="#AEN2665"
11593>llListen</A
11594>
11595 to the <CODE
11596CLASS="parameter"
11597>number</CODE
11598> parameter to specify which
11599 event you are controlling. Use <A
11600HREF="#AEN5248"
11601>boolean</A
11602> values to specify
11603 <CODE
11604CLASS="parameter"
11605>active</CODE
11606>.</P
11607></DIV
11608><DIV
11609CLASS="section"
11610><HR><H2
11611CLASS="section"
11612><A
11613NAME="AEN2701"
11614>A.152. llListenRemove</A
11615></H2
11616><DIV
11617CLASS="funcsynopsis"
11618><P
11619></P
11620><A
11621NAME="AEN2703"
11622></A
11623><P
11624><CODE
11625><CODE
11626CLASS="FUNCDEF"
11627>llListenRemove</CODE
11628>(integer number);</CODE
11629></P
11630><P
11631></P
11632></DIV
11633><P
11634>Removes a listen event callback. Pass in the value returned
11635 from <A
11636HREF="#AEN2665"
11637>llListen</A
11638> to the
11639 <CODE
11640CLASS="parameter"
11641>number</CODE
11642> parameter to specify which event you
11643 are removing.</P
11644></DIV
11645><DIV
11646CLASS="section"
11647><HR><H2
11648CLASS="section"
11649><A
11650NAME="AEN2712"
11651>A.153. llLoadURL</A
11652></H2
11653><DIV
11654CLASS="funcsynopsis"
11655><P
11656></P
11657><A
11658NAME="AEN2714"
11659></A
11660><P
11661><CODE
11662><CODE
11663CLASS="FUNCDEF"
11664>llLoadURL</CODE
11665>(key avatar_id, string message, string url);</CODE
11666></P
11667><P
11668></P
11669></DIV
11670><P
11671>Displays a dialog to user <CODE
11672CLASS="parameter"
11673>avatar_id</CODE
11674>
11675 with <CODE
11676CLASS="parameter"
11677>message</CODE
11678> offering to
11679 go to the web page at <CODE
11680CLASS="parameter"
11681>url</CODE
11682>. If the user clicks the
11683 "Go to page" button, their default web browser is launched and
11684 directed to <CODE
11685CLASS="parameter"
11686>url</CODE
11687>.</P
11688><P
11689>The <CODE
11690CLASS="parameter"
11691>url</CODE
11692> must begin with "http:" or
11693 "https:", other protocols are not currently supported.
11694 The dialog box shows the name of the object's
11695 owner so that abuse (e.g. spamming) can be easily reported.
11696 This function has a 10 second implicit sleep.</P
11697></DIV
11698><DIV
11699CLASS="section"
11700><HR><H2
11701CLASS="section"
11702><A
11703NAME="AEN2731"
11704>A.154. llLog</A
11705></H2
11706><DIV
11707CLASS="funcsynopsis"
11708><P
11709></P
11710><A
11711NAME="AEN2733"
11712></A
11713><P
11714><CODE
11715><CODE
11716CLASS="FUNCDEF"
11717>float llLog</CODE
11718>(float val);</CODE
11719></P
11720><P
11721></P
11722></DIV
11723><P
11724>Returns the natural logarithm (base e) of
11725 <CODE
11726CLASS="parameter"
11727>val</CODE
11728> if <CODE
11729CLASS="parameter"
11730>val</CODE
11731> &#62; 0,
11732 otherwise returns 0.</P
11733></DIV
11734><DIV
11735CLASS="section"
11736><HR><H2
11737CLASS="section"
11738><A
11739NAME="AEN2742"
11740>A.155. llLog10</A
11741></H2
11742><DIV
11743CLASS="funcsynopsis"
11744><P
11745></P
11746><A
11747NAME="AEN2744"
11748></A
11749><P
11750><CODE
11751><CODE
11752CLASS="FUNCDEF"
11753>float llLog10</CODE
11754>(float val);</CODE
11755></P
11756><P
11757></P
11758></DIV
11759><P
11760>Returns the base 10 log of <CODE
11761CLASS="parameter"
11762>val</CODE
11763> if
11764 <CODE
11765CLASS="parameter"
11766>val</CODE
11767> &#62; 0, otherwise returns 0.</P
11768></DIV
11769><DIV
11770CLASS="section"
11771><HR><H2
11772CLASS="section"
11773><A
11774NAME="AEN2753"
11775>A.156. llLookAt</A
11776></H2
11777><DIV
11778CLASS="funcsynopsis"
11779><P
11780></P
11781><A
11782NAME="AEN2755"
11783></A
11784><P
11785><CODE
11786><CODE
11787CLASS="FUNCDEF"
11788>llLookAt</CODE
11789>(vector target, float strength, float damping);</CODE
11790></P
11791><P
11792></P
11793></DIV
11794><P
11795>Cause object to point the forward axis toward
11796 <CODE
11797CLASS="parameter"
11798>target</CODE
11799>. Good
11800 <CODE
11801CLASS="parameter"
11802>strength</CODE
11803> values are around half the mass of
11804 the object and good <CODE
11805CLASS="parameter"
11806>damping</CODE
11807> values are less
11808 than 1/10<SUP
11809>th</SUP
11810> of the
11811 <CODE
11812CLASS="parameter"
11813>strength</CODE
11814>. Asymmetrical shapes require
11815 smaller <CODE
11816CLASS="parameter"
11817>damping</CODE
11818>. A
11819 <CODE
11820CLASS="parameter"
11821>strength</CODE
11822> of 0.0 cancels the look at.</P
11823></DIV
11824><DIV
11825CLASS="section"
11826><HR><H2
11827CLASS="section"
11828><A
11829NAME="AEN2773"
11830>A.157. llLoopSound</A
11831></H2
11832><DIV
11833CLASS="funcsynopsis"
11834><P
11835></P
11836><A
11837NAME="AEN2775"
11838></A
11839><P
11840><CODE
11841><CODE
11842CLASS="FUNCDEF"
11843>llLoopSound</CODE
11844>(string sound, float volume);</CODE
11845></P
11846><P
11847></P
11848></DIV
11849><P
11850>Similar to <A
11851HREF="#AEN3181"
11852>llPlaySound</A
11853>, this function plays
11854 a sound attached to an object, but will continuously loop that
11855 sound until <A
11856HREF="#AEN4573"
11857>llStopSound</A
11858> or
11859 <A
11860HREF="#AEN3181"
11861>llPlaySound</A
11862> is called. Only
11863 one sound may be attached to an object at a time. A second call to
11864 llLoopSound with the same key will not restart the sound, but the
11865 new volume will be used. This allows control over the volume of
11866 already playing sounds. Setting the <CODE
11867CLASS="parameter"
11868>volume</CODE
11869>
11870 to 0 is not the same as calling <A
11871HREF="#AEN4573"
11872>llStopSound</A
11873>; a sound with 0
11874 volume will continue to loop. To restart the sound from the
11875 beginning, call <A
11876HREF="#AEN4573"
11877>llStopSound</A
11878>
11879 before calling llLoopSound again.</P
11880></DIV
11881><DIV
11882CLASS="section"
11883><HR><H2
11884CLASS="section"
11885><A
11886NAME="AEN2790"
11887>A.158. llLoopSoundMaster</A
11888></H2
11889><DIV
11890CLASS="funcsynopsis"
11891><P
11892></P
11893><A
11894NAME="AEN2792"
11895></A
11896><P
11897><CODE
11898><CODE
11899CLASS="FUNCDEF"
11900>llLoopSoundMaster</CODE
11901>(string sound, float volume);</CODE
11902></P
11903><P
11904></P
11905></DIV
11906><P
11907>Behaviour is identical to <A
11908HREF="#AEN2773"
11909>llLoopSound</A
11910>, with the addition of
11911 marking the source as a "Sync Master", causing "Slave" sounds to
11912 sync to it. If there are multiple masters within a viewer's
11913 interest area, the most audible one (a function of both distance
11914 and volume) will win out as the master. The use of multiple
11915 masters within a small area is unlikely to produce the desired
11916 effect.</P
11917></DIV
11918><DIV
11919CLASS="section"
11920><HR><H2
11921CLASS="section"
11922><A
11923NAME="AEN2802"
11924>A.159. llLoopSoundSlave</A
11925></H2
11926><DIV
11927CLASS="funcsynopsis"
11928><P
11929></P
11930><A
11931NAME="AEN2804"
11932></A
11933><P
11934><CODE
11935><CODE
11936CLASS="FUNCDEF"
11937>llLoopSoundSlave</CODE
11938>(string sound, float volume);</CODE
11939></P
11940><P
11941></P
11942></DIV
11943><P
11944>Behaviour is identical to <A
11945HREF="#AEN2773"
11946>llLoopSound</A
11947>, unless there is a
11948 "Sync Master" present. If a Sync Master is already playing the
11949 Slave sound will begin playing from the same point the master is
11950 in its loop synchronizing the loop points of both sounds. If a
11951 Sync Master is started when the Slave is already playing, the
11952 Slave will skip to the correct position to sync with the
11953 Master.</P
11954></DIV
11955><DIV
11956CLASS="section"
11957><HR><H2
11958CLASS="section"
11959><A
11960NAME="AEN2814"
11961>A.160. llMakeExplosion</A
11962></H2
11963><DIV
11964CLASS="funcsynopsis"
11965><P
11966></P
11967><A
11968NAME="AEN2816"
11969></A
11970><P
11971><CODE
11972><CODE
11973CLASS="FUNCDEF"
11974>llMakeExplosion</CODE
11975>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
11976></P
11977><P
11978></P
11979></DIV
11980><P
11981>Make a round explosion of particles using
11982 <CODE
11983CLASS="parameter"
11984>texture</CODE
11985> from the object's inventory.</P
11986></DIV
11987><DIV
11988CLASS="section"
11989><HR><H2
11990CLASS="section"
11991><A
11992NAME="AEN2836"
11993>A.161. llMakeFire</A
11994></H2
11995><DIV
11996CLASS="funcsynopsis"
11997><P
11998></P
11999><A
12000NAME="AEN2838"
12001></A
12002><P
12003><CODE
12004><CODE
12005CLASS="FUNCDEF"
12006>llMakeFire</CODE
12007>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
12008></P
12009><P
12010></P
12011></DIV
12012><P
12013>Make fire particles using <CODE
12014CLASS="parameter"
12015>texture</CODE
12016>
12017 from the object's inventory.</P
12018></DIV
12019><DIV
12020CLASS="section"
12021><HR><H2
12022CLASS="section"
12023><A
12024NAME="AEN2858"
12025>A.162. llMakeFountain</A
12026></H2
12027><DIV
12028CLASS="funcsynopsis"
12029><P
12030></P
12031><A
12032NAME="AEN2860"
12033></A
12034><P
12035><CODE
12036><CODE
12037CLASS="FUNCDEF"
12038>llMakeFountain</CODE
12039>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
12040></P
12041><P
12042></P
12043></DIV
12044><P
12045>Make a fountain of particles using
12046 <CODE
12047CLASS="parameter"
12048>texture</CODE
12049> from the object's inventory.</P
12050></DIV
12051><DIV
12052CLASS="section"
12053><HR><H2
12054CLASS="section"
12055><A
12056NAME="AEN2880"
12057>A.163. llMakeSmoke</A
12058></H2
12059><DIV
12060CLASS="funcsynopsis"
12061><P
12062></P
12063><A
12064NAME="AEN2882"
12065></A
12066><P
12067><CODE
12068><CODE
12069CLASS="FUNCDEF"
12070>llMakeSmoke</CODE
12071>(integer particles, float scale, float velocity, float lifetime, float arc, string texture, vector offset);</CODE
12072></P
12073><P
12074></P
12075></DIV
12076><P
12077>Make smoky particles using <CODE
12078CLASS="parameter"
12079>texture</CODE
12080>
12081 from the object's inventory.</P
12082></DIV
12083><DIV
12084CLASS="section"
12085><HR><H2
12086CLASS="section"
12087><A
12088NAME="AEN2902"
12089>A.164. llMD5String</A
12090></H2
12091><DIV
12092CLASS="funcsynopsis"
12093><P
12094></P
12095><A
12096NAME="AEN2904"
12097></A
12098><P
12099><CODE
12100><CODE
12101CLASS="FUNCDEF"
12102>string llMD5String</CODE
12103>(string str, integer nonce);</CODE
12104></P
12105><P
12106></P
12107></DIV
12108><P
12109>Performs a RSA Data Security, Inc. MD5 Message-Digest
12110 Algorithm on <CODE
12111CLASS="parameter"
12112>str</CODE
12113> with
12114 <CODE
12115CLASS="parameter"
12116>nonce</CODE
12117>. The function returns the digest as a
12118 32 character hex string. The digest is computed on the string in
12119 the following format:
12120<DIV
12121CLASS="informalexample"
12122><P
12123></P
12124><A
12125NAME="AEN2915"
12126></A
12127><PRE
12128CLASS="programlisting"
12129>&#13;<CODE
12130CLASS="parameter"
12131>str</CODE
12132> + ":" + (string)<CODE
12133CLASS="parameter"
12134>nonce</CODE
12135>
12136</PRE
12137><P
12138></P
12139></DIV
12140>
12141 </P
12142></DIV
12143><DIV
12144CLASS="section"
12145><HR><H2
12146CLASS="section"
12147><A
12148NAME="AEN2919"
12149>A.165. llMessageLinked</A
12150></H2
12151><DIV
12152CLASS="funcsynopsis"
12153><P
12154></P
12155><A
12156NAME="AEN2921"
12157></A
12158><P
12159><CODE
12160><CODE
12161CLASS="FUNCDEF"
12162>llMessageLinked</CODE
12163>(integer linknum, integer num, string str, key id);</CODE
12164></P
12165><P
12166></P
12167></DIV
12168><P
12169>Sends <CODE
12170CLASS="parameter"
12171>num</CODE
12172>,
12173 <CODE
12174CLASS="parameter"
12175>str</CODE
12176>, and <CODE
12177CLASS="parameter"
12178>id</CODE
12179> to
12180 members of the link set. The <CODE
12181CLASS="parameter"
12182>linknum</CODE
12183>
12184 parameter is either the linked number available through <A
12185HREF="#AEN1867"
12186>llGetLinkNumber</A
12187> or a <A
12188HREF="#AEN5569"
12189>link constant</A
12190>.</P
12191></DIV
12192><DIV
12193CLASS="section"
12194><HR><H2
12195CLASS="section"
12196><A
12197NAME="AEN2940"
12198>A.166. llMinEventDelay</A
12199></H2
12200><DIV
12201CLASS="funcsynopsis"
12202><P
12203></P
12204><A
12205NAME="AEN2942"
12206></A
12207><P
12208><CODE
12209><CODE
12210CLASS="FUNCDEF"
12211>llMinEventDelay</CODE
12212>(float delay);</CODE
12213></P
12214><P
12215></P
12216></DIV
12217><P
12218>Set the minimum time between events being handled.</P
12219></DIV
12220><DIV
12221CLASS="section"
12222><HR><H2
12223CLASS="section"
12224><A
12225NAME="AEN2949"
12226>A.167. llModifyLand</A
12227></H2
12228><DIV
12229CLASS="funcsynopsis"
12230><P
12231></P
12232><A
12233NAME="AEN2951"
12234></A
12235><P
12236><CODE
12237><CODE
12238CLASS="FUNCDEF"
12239>llModifyLand</CODE
12240>(integer action, integer size);</CODE
12241></P
12242><P
12243></P
12244></DIV
12245><P
12246>Modify land with <CODE
12247CLASS="parameter"
12248>action</CODE
12249> on
12250 <CODE
12251CLASS="parameter"
12252>size</CODE
12253> area. The parameters can be chosen
12254 from the <A
12255HREF="#AEN5527"
12256>land constants</A
12257>.</P
12258></DIV
12259><DIV
12260CLASS="section"
12261><HR><H2
12262CLASS="section"
12263><A
12264NAME="AEN2963"
12265>A.168. llModPow</A
12266></H2
12267><DIV
12268CLASS="funcsynopsis"
12269><P
12270></P
12271><A
12272NAME="AEN2965"
12273></A
12274><P
12275><CODE
12276><CODE
12277CLASS="FUNCDEF"
12278>integer llModPow</CODE
12279>(integer a, integer b, integer c);</CODE
12280></P
12281><P
12282></P
12283></DIV
12284><P
12285>Raise <CODE
12286CLASS="parameter"
12287>a</CODE
12288> to the <CODE
12289CLASS="parameter"
12290>b</CODE
12291> power, modulo <CODE
12292CLASS="parameter"
12293>c</CODE
12294>.
12295 <CODE
12296CLASS="parameter"
12297>b</CODE
12298> is capped at 0xFFFF (16 bits).</P
12299></DIV
12300><DIV
12301CLASS="section"
12302><HR><H2
12303CLASS="section"
12304><A
12305NAME="AEN2980"
12306>A.169. llMoveToTarget</A
12307></H2
12308><DIV
12309CLASS="funcsynopsis"
12310><P
12311></P
12312><A
12313NAME="AEN2982"
12314></A
12315><P
12316><CODE
12317><CODE
12318CLASS="FUNCDEF"
12319>llMoveToTarget</CODE
12320>(vector target, float tau);</CODE
12321></P
12322><P
12323></P
12324></DIV
12325><P
12326>Critically damp to position <CODE
12327CLASS="parameter"
12328>target</CODE
12329> in
12330 <CODE
12331CLASS="parameter"
12332>tau</CODE
12333> seconds if the script is physical. Good
12334 <CODE
12335CLASS="parameter"
12336>tau</CODE
12337> values are greater than 0.2. A
12338 <CODE
12339CLASS="parameter"
12340>tau</CODE
12341> of 0.0 stops the critical
12342 damping.</P
12343></DIV
12344><DIV
12345CLASS="section"
12346><HR><H2
12347CLASS="section"
12348><A
12349NAME="AEN2995"
12350>A.170. llOffsetTexture</A
12351></H2
12352><DIV
12353CLASS="funcsynopsis"
12354><P
12355></P
12356><A
12357NAME="AEN2997"
12358></A
12359><P
12360><CODE
12361><CODE
12362CLASS="FUNCDEF"
12363>llOffsetTexture</CODE
12364>(float offset_s, float offset_t, integer face);</CODE
12365></P
12366><P
12367></P
12368></DIV
12369><P
12370>Sets the texture s and t offsets of
12371 <CODE
12372CLASS="parameter"
12373>face</CODE
12374>. If <CODE
12375CLASS="parameter"
12376>face</CODE
12377> is
12378 <A
12379HREF="#AEN6026"
12380>ALL_SIDES</A
12381> this
12382 function sets the texture offsets for all faces.</P
12383></DIV
12384><DIV
12385CLASS="section"
12386><HR><H2
12387CLASS="section"
12388><A
12389NAME="AEN3011"
12390>A.171. llOpenRemoteDataChannel</A
12391></H2
12392><DIV
12393CLASS="funcsynopsis"
12394><P
12395></P
12396><A
12397NAME="AEN3013"
12398></A
12399><P
12400><CODE
12401><CODE
12402CLASS="FUNCDEF"
12403>llOpenRemoteDataChannel</CODE
12404>(void);</CODE
12405></P
12406><P
12407></P
12408></DIV
12409><P
12410>Creates a channel to listen for XML-RPC calls.
12411 Will trigger a remote_data event with type = REMOTE_DATA_CHANNEL and a channel id once it is available.</P
12412></DIV
12413><DIV
12414CLASS="section"
12415><HR><H2
12416CLASS="section"
12417><A
12418NAME="AEN3019"
12419>A.172. llOverMyLand</A
12420></H2
12421><DIV
12422CLASS="funcsynopsis"
12423><P
12424></P
12425><A
12426NAME="AEN3021"
12427></A
12428><P
12429><CODE
12430><CODE
12431CLASS="FUNCDEF"
12432>integer llOverMyLand</CODE
12433>(key id);</CODE
12434></P
12435><P
12436></P
12437></DIV
12438><P
12439>Returns <A
12440HREF="#AEN5248"
12441>TRUE</A
12442> if
12443 <CODE
12444CLASS="parameter"
12445>id</CODE
12446> is over land owned by the object owner,
12447 <A
12448HREF="#AEN5248"
12449>FALSE</A
12450> otherwise.</P
12451></DIV
12452><DIV
12453CLASS="section"
12454><HR><H2
12455CLASS="section"
12456><A
12457NAME="AEN3031"
12458>A.173. llParcelMediaCommandList</A
12459></H2
12460><DIV
12461CLASS="funcsynopsis"
12462><P
12463></P
12464><A
12465NAME="AEN3033"
12466></A
12467><P
12468><CODE
12469><CODE
12470CLASS="FUNCDEF"
12471>llParcelMediaCommandList</CODE
12472>(list command_list);</CODE
12473></P
12474><P
12475></P
12476></DIV
12477><P
12478>Controls the playback of movies and other multimedia resources on a land parcel.
12479 <CODE
12480CLASS="parameter"
12481>command</CODE
12482> can be one of
12483 <A
12484HREF="#AEN6408"
12485>PARCEL_MEDIA_COMMAND_STOP</A
12486>,
12487 <A
12488HREF="#AEN6408"
12489>PARCEL_MEDIA_COMMAND_PAUSE</A
12490>,
12491 <A
12492HREF="#AEN6408"
12493>PARCEL_MEDIA_COMMAND_PLAY</A
12494>,
12495 <A
12496HREF="#AEN6408"
12497>PARCEL_MEDIA_COMMAND_LOOP</A
12498>,
12499 <A
12500HREF="#AEN6408"
12501>PARCEL_MEDIA_COMMAND_TEXTURE</A
12502>,
12503 <A
12504HREF="#AEN6408"
12505>PARCEL_MEDIA_COMMAND_URL</A
12506>,
12507 <A
12508HREF="#AEN6408"
12509>PARCEL_MEDIA_COMMAND_TIME</A
12510>,
12511 <A
12512HREF="#AEN6408"
12513>PARCEL_MEDIA_COMMAND_AGENT</A
12514>,
12515 <A
12516HREF="#AEN6408"
12517>PARCEL_MEDIA_COMMAND_UNLOAD</A
12518>, or
12519 <A
12520HREF="#AEN6408"
12521>PARCEL_MEDIA_COMMAND_AUTO_ALIGN</A
12522>.
12523 </P
12524><P
12525>You are allowed one movie (or "media" resource) per land parcel.
12526 The movie will be played by replacing a texture on an object with the
12527 movie. Users will only see the movie when they are standing on your
12528 land parcel. Otherwise they will see the static texture.</P
12529><P
12530>Most of the QuickTime media formats are supported including:
12531 <P
12532></P
12533><UL
12534><LI
12535><P
12536>QuickTime movies (.mov)</P
12537></LI
12538><LI
12539><P
12540>Streamable stored QuickTime movies (.mov)</P
12541></LI
12542><LI
12543><P
12544>Real time QuickTime streams (rtsp://)</P
12545></LI
12546><LI
12547><P
12548>MPEG4 movies (.mp4, .mpeg4) (simple profile only)</P
12549></LI
12550><LI
12551><P
12552>QuickTime VR scenes and objects (.mov)</P
12553></LI
12554><LI
12555><P
12556>Flash movies (.swf) (only non-interative, version 5 and earlier</P
12557></LI
12558><LI
12559><P
12560>and many others from http://www.apple.com/quicktime/products/qt/specifications.html</P
12561></LI
12562></UL
12563>
12564 A good rule of thumb is if it plays in the QuickTime Media Player, it will play in Second Life.
12565 </P
12566><P
12567>You can set up a movie for playback as follows:
12568 <P
12569></P
12570><UL
12571><LI
12572><P
12573>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
12574></LI
12575><LI
12576><P
12577>Apply that texture to an object.</P
12578></LI
12579><LI
12580><P
12581>Right click on your land and select "About Land..."</P
12582></LI
12583><LI
12584><P
12585>Under "Options" use the GUI to select the static texture.</P
12586></LI
12587><LI
12588><P
12589>Enter the URL of your movie or media stream.</P
12590></LI
12591><LI
12592><P
12593>Create objects you want to click on for PLAY, STOP, PAUSE and LOOP (play forever)</P
12594></LI
12595><LI
12596><P
12597>Attach the following script (or similar) to each.</P
12598></LI
12599></UL
12600>
12601<DIV
12602CLASS="informalexample"
12603><P
12604></P
12605><A
12606NAME="AEN3084"
12607></A
12608><PRE
12609CLASS="programlisting"
12610>&#13;default
12611{
12612 touch_start ( integer total_number )
12613 {
12614 // This will play the current movie for all agents in the parcel.
12615 llParcelMediaCommandList( [PARCEL_MEDIA_COMMAND_LOOP] );
12616 }
12617}
12618</PRE
12619><P
12620></P
12621></DIV
12622>
12623Or a more advanced example:
12624<DIV
12625CLASS="informalexample"
12626><P
12627></P
12628><A
12629NAME="AEN3086"
12630></A
12631><PRE
12632CLASS="programlisting"
12633>&#13;float START_TIME = 30.0;
12634float RUN_LENGTH = 10.0;
12635
12636default
12637{
12638 state_entry()
12639 {
12640 llParcelMediaCommandList( [
12641 PARCEL_MEDIA_COMMAND_URL, "http://enter_your.url/here",
12642 PARCEL_MEDIA_COMMAND_TEXTURE, (key) llGetTexture(0) ] );
12643 }
12644
12645 touch_start(integer num_detected)
12646 {
12647 llParcelMediaCommandList( [
12648 PARCEL_MEDIA_COMMAND_AGENT, llDetectedKey(0),
12649 PARCEL_MEDIA_COMMAND_TIME, START_TIME,
12650 PARCEL_MEDIA_COMMAND_PLAY ] );
12651 list Info = llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL, PARCEL_MEDIA_COMMAND_TEXTURE]);
12652 llSay(0, "Playing '" + llList2String(Info, 0) + "' on texture '" + (string)llList2Key(Info, 1) + "' for agent " + llDetectedName(0));
12653 llSetTimerEvent(RUN_LENGTH);
12654 }
12655
12656 timer()
12657 {
12658 llParcelMediaCommandList( [ PARCEL_MEDIA_COMMAND_STOP ] );
12659 llSetTimerEvent(0.0);
12660 }
12661}
12662</PRE
12663><P
12664></P
12665></DIV
12666>
12667
12668
12669 </P
12670></DIV
12671><DIV
12672CLASS="section"
12673><HR><H2
12674CLASS="section"
12675><A
12676NAME="AEN3088"
12677>A.174. llParcelMediaQuery</A
12678></H2
12679><DIV
12680CLASS="funcsynopsis"
12681><P
12682></P
12683><A
12684NAME="AEN3090"
12685></A
12686><P
12687><CODE
12688><CODE
12689CLASS="FUNCDEF"
12690>list llParcelMediaQuery</CODE
12691>(list query_list);</CODE
12692></P
12693><P
12694></P
12695></DIV
12696><P
12697>Controls the playback of movies and other multimedia resources on a land parcel.
12698 <CODE
12699CLASS="parameter"
12700>command</CODE
12701> can be one of
12702 <A
12703HREF="#AEN6408"
12704>PARCEL_MEDIA_COMMAND_TEXTURE</A
12705> or
12706 <A
12707HREF="#AEN6408"
12708>PARCEL_MEDIA_COMMAND_URL</A
12709>.
12710 </P
12711><P
12712>This allows you to query the texture or url for media on the parcel.
12713 See <A
12714HREF="#AEN3031"
12715>llParcelMediaCommandList</A
12716> for an example
12717 of usage.</P
12718></DIV
12719><DIV
12720CLASS="section"
12721><HR><H2
12722CLASS="section"
12723><A
12724NAME="AEN3102"
12725>A.175. llParseString2List</A
12726></H2
12727><DIV
12728CLASS="funcsynopsis"
12729><P
12730></P
12731><A
12732NAME="AEN3104"
12733></A
12734><P
12735><CODE
12736><CODE
12737CLASS="FUNCDEF"
12738>list llParseString2List</CODE
12739>(string src, list separators, list spacers);</CODE
12740></P
12741><P
12742></P
12743></DIV
12744><P
12745>Breaks <CODE
12746CLASS="parameter"
12747>src</CODE
12748> into a list, discarding
12749 anything in <CODE
12750CLASS="parameter"
12751>separators</CODE
12752>, keeping any entry
12753 in <CODE
12754CLASS="parameter"
12755>spacers</CODE
12756>. The
12757 <CODE
12758CLASS="parameter"
12759>separators</CODE
12760> and
12761 <CODE
12762CLASS="parameter"
12763>spacers</CODE
12764> must be lists of strings with a
12765 maximum of 8 entries each. So, if you had made the call:
12766<DIV
12767CLASS="informalexample"
12768><P
12769></P
12770><A
12771NAME="AEN3120"
12772></A
12773><PRE
12774CLASS="programlisting"
12775>&#13;llParseString2List("Parsethisnow! I dare:you to.", ["this", "!", " "], [":"]);
12776</PRE
12777><P
12778></P
12779></DIV
12780>
12781 You would get the list:
12782<DIV
12783CLASS="informalexample"
12784><P
12785></P
12786><A
12787NAME="AEN3122"
12788></A
12789><PRE
12790CLASS="programlisting"
12791>&#13;["Parse", "now", "I", "dare", ":", "you", "to"]
12792</PRE
12793><P
12794></P
12795></DIV
12796></P
12797></DIV
12798><DIV
12799CLASS="section"
12800><HR><H2
12801CLASS="section"
12802><A
12803NAME="AEN3124"
12804>A.176. llParseStringKeepNulls</A
12805></H2
12806><DIV
12807CLASS="funcsynopsis"
12808><P
12809></P
12810><A
12811NAME="AEN3126"
12812></A
12813><P
12814><CODE
12815><CODE
12816CLASS="FUNCDEF"
12817>list llParseStringKeepNulls</CODE
12818>(string src, list separators, list spacers);</CODE
12819></P
12820><P
12821></P
12822></DIV
12823><P
12824>Breaks <CODE
12825CLASS="parameter"
12826>src</CODE
12827> into a list, discarding
12828 anything in <CODE
12829CLASS="parameter"
12830>separators</CODE
12831>, keeping any entry
12832 in <CODE
12833CLASS="parameter"
12834>spacers</CODE
12835>. Any resulting null values
12836 are kept. The <CODE
12837CLASS="parameter"
12838>separators</CODE
12839> and
12840 <CODE
12841CLASS="parameter"
12842>spacers</CODE
12843> must be lists of strings with a
12844 maximum of 8 entries each. So, if you had made the call:
12845<DIV
12846CLASS="informalexample"
12847><P
12848></P
12849><A
12850NAME="AEN3142"
12851></A
12852><PRE
12853CLASS="programlisting"
12854>&#13;llParseString2List("!Parsethisthisnow I dare::you to.", ["this", "!", " "], [":"]);
12855</PRE
12856><P
12857></P
12858></DIV
12859>
12860 You would get the list:
12861<DIV
12862CLASS="informalexample"
12863><P
12864></P
12865><A
12866NAME="AEN3144"
12867></A
12868><PRE
12869CLASS="programlisting"
12870>&#13;[NULL, "Parse", NULL, "now", "I", "dare", ":", NULL, ":", "you", "to"]
12871</PRE
12872><P
12873></P
12874></DIV
12875></P
12876></DIV
12877><DIV
12878CLASS="section"
12879><HR><H2
12880CLASS="section"
12881><A
12882NAME="AEN3146"
12883>A.177. llParticleSystem</A
12884></H2
12885><DIV
12886CLASS="funcsynopsis"
12887><P
12888></P
12889><A
12890NAME="AEN3148"
12891></A
12892><P
12893><CODE
12894><CODE
12895CLASS="FUNCDEF"
12896>llParticleSystem</CODE
12897>(list parameters);</CODE
12898></P
12899><P
12900></P
12901></DIV
12902><P
12903>Makes a particle system based on the parameter list. The
12904 <CODE
12905CLASS="parameter"
12906>parameters</CODE
12907> are specified as an ordered list
12908 of parameter and value. Valid parameters and their expected values
12909 can be found in the <A
12910HREF="#AEN5804"
12911>particle system
12912 constants</A
12913>. Here is a simple example:
12914<DIV
12915CLASS="informalexample"
12916><P
12917></P
12918><A
12919NAME="AEN3157"
12920></A
12921><PRE
12922CLASS="programlisting"
12923>&#13;llParticleSystem([PSYS_PART_FLAGS, PSYS_PART_WIND_MASK,
12924 PSYS_PART_START_COLOR, &#60;1,0,0&#62;,
12925 PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE]);
12926</PRE
12927><P
12928></P
12929></DIV
12930></P
12931></DIV
12932><DIV
12933CLASS="section"
12934><HR><H2
12935CLASS="section"
12936><A
12937NAME="AEN3159"
12938>A.178. llPassCollisions</A
12939></H2
12940><DIV
12941CLASS="funcsynopsis"
12942><P
12943></P
12944><A
12945NAME="AEN3161"
12946></A
12947><P
12948><CODE
12949><CODE
12950CLASS="FUNCDEF"
12951>llPassCollisions</CODE
12952>(integer pass);</CODE
12953></P
12954><P
12955></P
12956></DIV
12957><P
12958>If <CODE
12959CLASS="parameter"
12960>pass</CODE
12961> is <A
12962HREF="#AEN5248"
12963>TRUE</A
12964>, land and object collisions
12965 are passed from children on to parents.</P
12966></DIV
12967><DIV
12968CLASS="section"
12969><HR><H2
12970CLASS="section"
12971><A
12972NAME="AEN3170"
12973>A.179. llPassTouches</A
12974></H2
12975><DIV
12976CLASS="funcsynopsis"
12977><P
12978></P
12979><A
12980NAME="AEN3172"
12981></A
12982><P
12983><CODE
12984><CODE
12985CLASS="FUNCDEF"
12986>llPassTouches</CODE
12987>(integer pass);</CODE
12988></P
12989><P
12990></P
12991></DIV
12992><P
12993>If <CODE
12994CLASS="parameter"
12995>pass</CODE
12996> is <A
12997HREF="#AEN5248"
12998>TRUE</A
12999>, touches are passed from
13000 children on to parents.</P
13001></DIV
13002><DIV
13003CLASS="section"
13004><HR><H2
13005CLASS="section"
13006><A
13007NAME="AEN3181"
13008>A.180. llPlaySound</A
13009></H2
13010><DIV
13011CLASS="funcsynopsis"
13012><P
13013></P
13014><A
13015NAME="AEN3183"
13016></A
13017><P
13018><CODE
13019><CODE
13020CLASS="FUNCDEF"
13021>llPlaySound</CODE
13022>(string sound, float volume);</CODE
13023></P
13024><P
13025></P
13026></DIV
13027><P
13028>Plays a sound once. The sound will be attached to an object
13029 and follow object movement. Only one sound may be attached to an
13030 object at a time, and attaching a new sound or calling <A
13031HREF="#AEN4573"
13032>llStopSound</A
13033> will stop the
13034 previously attached sound. A second call to llPlaySound with the
13035 same <CODE
13036CLASS="parameter"
13037>sound</CODE
13038> will not restart the sound, but
13039 the new volume will be used, which allows control over the volume
13040 of already playing sounds. To restart the sound from the
13041 beginning, call <A
13042HREF="#AEN4573"
13043>llStopSound</A
13044>
13045 before calling llPlaySound again.</P
13046></DIV
13047><DIV
13048CLASS="section"
13049><HR><H2
13050CLASS="section"
13051><A
13052NAME="AEN3195"
13053>A.181. llPlaySoundSlave</A
13054></H2
13055><DIV
13056CLASS="funcsynopsis"
13057><P
13058></P
13059><A
13060NAME="AEN3197"
13061></A
13062><P
13063><CODE
13064><CODE
13065CLASS="FUNCDEF"
13066>llPlaySoundSlave</CODE
13067>(string sound, float volume);</CODE
13068></P
13069><P
13070></P
13071></DIV
13072><P
13073>Behaviour is identical to llPlaySound, unless there is a
13074 "Sync Master" present. If a Sync Master is already
13075 playing the Slave sound will not be played until the Master hits
13076 its loop point and returns to the beginning. llPlaySoundSlave will
13077 play the sound exactly once; if it is desired to have the sound
13078 play every time the Master loops, either use <A
13079HREF="#AEN2802"
13080>llLoopSoundSlave</A
13081> with extra
13082 silence padded on the end of the sound or ensure that
13083 llPlaySoundSlave is called at least once per loop of the
13084 Master.</P
13085></DIV
13086><DIV
13087CLASS="section"
13088><HR><H2
13089CLASS="section"
13090><A
13091NAME="AEN3207"
13092>A.182. llPointAt</A
13093></H2
13094><DIV
13095CLASS="funcsynopsis"
13096><P
13097></P
13098><A
13099NAME="AEN3209"
13100></A
13101><P
13102><CODE
13103><CODE
13104CLASS="FUNCDEF"
13105>llPointAt</CODE
13106>(vector pos);</CODE
13107></P
13108><P
13109></P
13110></DIV
13111><P
13112>Make avatar that owns object point at
13113 <CODE
13114CLASS="parameter"
13115>pos</CODE
13116>.</P
13117></DIV
13118><DIV
13119CLASS="section"
13120><HR><H2
13121CLASS="section"
13122><A
13123NAME="AEN3217"
13124>A.183. llPow</A
13125></H2
13126><DIV
13127CLASS="funcsynopsis"
13128><P
13129></P
13130><A
13131NAME="AEN3219"
13132></A
13133><P
13134><CODE
13135><CODE
13136CLASS="FUNCDEF"
13137>llPow</CODE
13138>(float base, float exp);</CODE
13139></P
13140><P
13141></P
13142></DIV
13143><P
13144>Returns <CODE
13145CLASS="parameter"
13146>base</CODE
13147> raised to the
13148 <CODE
13149CLASS="parameter"
13150>exp</CODE
13151>.</P
13152></DIV
13153><DIV
13154CLASS="section"
13155><HR><H2
13156CLASS="section"
13157><A
13158NAME="AEN3230"
13159>A.184. llPreloadSound</A
13160></H2
13161><DIV
13162CLASS="funcsynopsis"
13163><P
13164></P
13165><A
13166NAME="AEN3232"
13167></A
13168><P
13169><CODE
13170><CODE
13171CLASS="FUNCDEF"
13172>llPreloadSound</CODE
13173>(string sound);</CODE
13174></P
13175><P
13176></P
13177></DIV
13178><P
13179>Preloads <CODE
13180CLASS="parameter"
13181>sound</CODE
13182> from object inventory
13183 on nearby viewers.</P
13184></DIV
13185><DIV
13186CLASS="section"
13187><HR><H2
13188CLASS="section"
13189><A
13190NAME="AEN3240"
13191>A.185. llPushObject</A
13192></H2
13193><DIV
13194CLASS="funcsynopsis"
13195><P
13196></P
13197><A
13198NAME="AEN3242"
13199></A
13200><P
13201><CODE
13202><CODE
13203CLASS="FUNCDEF"
13204>llPushObject</CODE
13205>(key id, vector impulse, vector angular_impulse, integer local);</CODE
13206></P
13207><P
13208></P
13209></DIV
13210><P
13211>Applies <CODE
13212CLASS="parameter"
13213>impulse</CODE
13214> and
13215 <CODE
13216CLASS="parameter"
13217>angular_impulse</CODE
13218> to object
13219 <CODE
13220CLASS="parameter"
13221>id</CODE
13222>.</P
13223></DIV
13224><DIV
13225CLASS="section"
13226><HR><H2
13227CLASS="section"
13228><A
13229NAME="AEN3258"
13230>A.186. llReleaseControls</A
13231></H2
13232><DIV
13233CLASS="funcsynopsis"
13234><P
13235></P
13236><A
13237NAME="AEN3260"
13238></A
13239><P
13240><CODE
13241><CODE
13242CLASS="FUNCDEF"
13243>llReleaseControls</CODE
13244>(key avatar);</CODE
13245></P
13246><P
13247></P
13248></DIV
13249><P
13250>Stop taking inputs from <CODE
13251CLASS="parameter"
13252>avatar</CODE
13253>.</P
13254></DIV
13255><DIV
13256CLASS="section"
13257><HR><H2
13258CLASS="section"
13259><A
13260NAME="AEN3268"
13261>A.187. llRemoteDataReply</A
13262></H2
13263><DIV
13264CLASS="funcsynopsis"
13265><P
13266></P
13267><A
13268NAME="AEN3270"
13269></A
13270><P
13271><CODE
13272><CODE
13273CLASS="FUNCDEF"
13274>llRemoteDataReply</CODE
13275>(key channel, key message_id, string sdata);</CODE
13276></P
13277><P
13278></P
13279></DIV
13280><P
13281>Send an XML-RPC reply to message_id on channel with payload of string sdata.</P
13282></DIV
13283><DIV
13284CLASS="section"
13285><HR><H2
13286CLASS="section"
13287><A
13288NAME="AEN3281"
13289>A.188. llRemoteDataSetRegion</A
13290></H2
13291><DIV
13292CLASS="funcsynopsis"
13293><P
13294></P
13295><A
13296NAME="AEN3283"
13297></A
13298><P
13299><CODE
13300><CODE
13301CLASS="FUNCDEF"
13302>llRemoteDataSetRegion</CODE
13303>(void);</CODE
13304></P
13305><P
13306></P
13307></DIV
13308><P
13309>If an object using remote data channels changes regions, you
13310 must call this function to reregister the remote data
13311 channels. You do not need to make this call if your object does
13312 not change regions or use remote data channels.</P
13313></DIV
13314><DIV
13315CLASS="section"
13316><HR><H2
13317CLASS="section"
13318><A
13319NAME="AEN3289"
13320>A.189. llRemoteLoadScript</A
13321></H2
13322><DIV
13323CLASS="funcsynopsis"
13324><P
13325></P
13326><A
13327NAME="AEN3291"
13328></A
13329><P
13330><CODE
13331><CODE
13332CLASS="FUNCDEF"
13333>llRemoteLoadScript</CODE
13334>(void);</CODE
13335></P
13336><P
13337></P
13338></DIV
13339><P
13340>Deprecated. Please use llRemoteLoadScriptPin instead.</P
13341></DIV
13342><DIV
13343CLASS="section"
13344><HR><H2
13345CLASS="section"
13346><A
13347NAME="AEN3297"
13348>A.190. llRemoteLoadScriptPin</A
13349></H2
13350><DIV
13351CLASS="funcsynopsis"
13352><P
13353></P
13354><A
13355NAME="AEN3299"
13356></A
13357><P
13358><CODE
13359><CODE
13360CLASS="FUNCDEF"
13361>llRemoteLoadScriptPin</CODE
13362>(key target, string name, integer pin, integer running, integer param);</CODE
13363></P
13364><P
13365></P
13366></DIV
13367><P
13368>If the owner of the object this script is attached can modify <CODE
13369CLASS="parameter"
13370>target</CODE
13371>, it has the correct <CODE
13372CLASS="parameter"
13373>pin</CODE
13374> and the objects are in the same region, copy script <CODE
13375CLASS="parameter"
13376>name</CODE
13377> onto <CODE
13378CLASS="parameter"
13379>target</CODE
13380>, if <CODE
13381CLASS="parameter"
13382>running</CODE
13383> == TRUE, start the script with <CODE
13384CLASS="parameter"
13385>param</CODE
13386>. If <CODE
13387CLASS="parameter"
13388>name</CODE
13389> already exists on <CODE
13390CLASS="parameter"
13391>target</CODE
13392>, it is replaced.</P
13393></DIV
13394><DIV
13395CLASS="section"
13396><HR><H2
13397CLASS="section"
13398><A
13399NAME="AEN3322"
13400>A.191. llRemoveInventory</A
13401></H2
13402><DIV
13403CLASS="funcsynopsis"
13404><P
13405></P
13406><A
13407NAME="AEN3324"
13408></A
13409><P
13410><CODE
13411><CODE
13412CLASS="FUNCDEF"
13413>llRemoveInventory</CODE
13414>(string inventory);</CODE
13415></P
13416><P
13417></P
13418></DIV
13419><P
13420>Remove the name <CODE
13421CLASS="parameter"
13422>inventory</CODE
13423> item from
13424 the object inventory.</P
13425></DIV
13426><DIV
13427CLASS="section"
13428><HR><H2
13429CLASS="section"
13430><A
13431NAME="AEN3332"
13432>A.192. llRemoveVehicleFlags</A
13433></H2
13434><DIV
13435CLASS="funcsynopsis"
13436><P
13437></P
13438><A
13439NAME="AEN3334"
13440></A
13441><P
13442><CODE
13443><CODE
13444CLASS="FUNCDEF"
13445>llRemoveVehicleFlags</CODE
13446>(integer flags);</CODE
13447></P
13448><P
13449></P
13450></DIV
13451><P
13452>Sets the vehicle <CODE
13453CLASS="parameter"
13454>flags</CODE
13455> to
13456 FALSE. Valid parameters can be found in the <A
13457HREF="#AEN6184"
13458>vehicle flags constants</A
13459>
13460 section.</P
13461></DIV
13462><DIV
13463CLASS="section"
13464><HR><H2
13465CLASS="section"
13466><A
13467NAME="AEN3343"
13468>A.193. llRequestAgentData</A
13469></H2
13470><DIV
13471CLASS="funcsynopsis"
13472><P
13473></P
13474><A
13475NAME="AEN3345"
13476></A
13477><P
13478><CODE
13479><CODE
13480CLASS="FUNCDEF"
13481>key llRequestAgentData</CODE
13482>(key id, integer data);</CODE
13483></P
13484><P
13485></P
13486></DIV
13487><P
13488>This function requests data about agent
13489 <CODE
13490CLASS="parameter"
13491>id</CODE
13492>. If and when the information is
13493 collected, the <A
13494HREF="#AEN4950"
13495>dataserver</A
13496>
13497 event is called with the returned key returned from this function
13498 passed in the <CODE
13499CLASS="parameter"
13500>requested</CODE
13501> parameter. See the
13502 <A
13503HREF="#AEN5958"
13504>agent data constants</A
13505> for
13506 details about valid values of <CODE
13507CLASS="parameter"
13508>data</CODE
13509> and what
13510 each will return in the <A
13511HREF="#AEN4950"
13512>dataserver</A
13513> event.</P
13514></DIV
13515><DIV
13516CLASS="section"
13517><HR><H2
13518CLASS="section"
13519><A
13520NAME="AEN3360"
13521>A.194. llRequestInventoryData</A
13522></H2
13523><DIV
13524CLASS="funcsynopsis"
13525><P
13526></P
13527><A
13528NAME="AEN3362"
13529></A
13530><P
13531><CODE
13532><CODE
13533CLASS="FUNCDEF"
13534>key llRequestInventoryData</CODE
13535>(string name);</CODE
13536></P
13537><P
13538></P
13539></DIV
13540><P
13541>Requests data from object inventory item
13542 <CODE
13543CLASS="parameter"
13544>name</CODE
13545>. When data is available the <A
13546HREF="#AEN4950"
13547>dataserver</A
13548> event will be raised
13549 with the key returned from this function in the
13550 <CODE
13551CLASS="parameter"
13552>requested</CODE
13553> parameter. The only request
13554 currently implemented is to request data from landmarks, where the
13555 data returned is in the form "&#60;float, float,
13556 float&#62;" which can be cast to a vector. This position is in
13557 region local coordinates of the region the script call is made
13558 (possible even resulting in negative values). So, to
13559 convert this value into a global position, just add the result of
13560 llGetRegionCorner.</P
13561></DIV
13562><DIV
13563CLASS="section"
13564><HR><H2
13565CLASS="section"
13566><A
13567NAME="AEN3372"
13568>A.195. llRequestPermissions</A
13569></H2
13570><DIV
13571CLASS="funcsynopsis"
13572><P
13573></P
13574><A
13575NAME="AEN3374"
13576></A
13577><P
13578><CODE
13579><CODE
13580CLASS="FUNCDEF"
13581>integer llRequestPermissions</CODE
13582>(key avatar, integer perm);</CODE
13583></P
13584><P
13585></P
13586></DIV
13587><P
13588>Ask <CODE
13589CLASS="parameter"
13590>avatar</CODE
13591> to allow the script to do
13592 <CODE
13593CLASS="parameter"
13594>perm</CODE
13595>. The <CODE
13596CLASS="parameter"
13597>perm</CODE
13598>
13599 parameter should be a <A
13600HREF="#AEN5313"
13601>permission
13602 constant</A
13603>. Multiple permissions can be requested
13604 simultaneously by or'ing the constants together. Many of the
13605 permissions requests can only go to object owner. This call will
13606 not stop script execution - if the specified avatar grants the
13607 requested permissions, the <A
13608HREF="#AEN5124"
13609>run_time_permissions</A
13610>
13611 event will be called.</P
13612></DIV
13613><DIV
13614CLASS="section"
13615><HR><H2
13616CLASS="section"
13617><A
13618NAME="AEN3388"
13619>A.196. llRequestSimulatorData</A
13620></H2
13621><DIV
13622CLASS="funcsynopsis"
13623><P
13624></P
13625><A
13626NAME="AEN3390"
13627></A
13628><P
13629><CODE
13630><CODE
13631CLASS="FUNCDEF"
13632>key llRequestSimulatorData</CODE
13633>(string sim_name, integer data);</CODE
13634></P
13635><P
13636></P
13637></DIV
13638><P
13639>This function requests data about simulator
13640 <CODE
13641CLASS="parameter"
13642>sim_name</CODE
13643>. When the information is
13644 collected, the <A
13645HREF="#AEN4950"
13646>dataserver</A
13647>
13648 event is called with the returned key returned from this function
13649 passed in the <CODE
13650CLASS="parameter"
13651>requested</CODE
13652> parameter. See the
13653 <A
13654HREF="#AEN6039"
13655>simulator data constants</A
13656> for
13657 details about valid values of <CODE
13658CLASS="parameter"
13659>data</CODE
13660> and what
13661 each will return in the <A
13662HREF="#AEN4950"
13663>dataserver</A
13664> event.</P
13665></DIV
13666><DIV
13667CLASS="section"
13668><HR><H2
13669CLASS="section"
13670><A
13671NAME="AEN3405"
13672>A.197. llResetScript</A
13673></H2
13674><DIV
13675CLASS="funcsynopsis"
13676><P
13677></P
13678><A
13679NAME="AEN3407"
13680></A
13681><P
13682><CODE
13683><CODE
13684CLASS="FUNCDEF"
13685>llResetScript</CODE
13686>(void);</CODE
13687></P
13688><P
13689></P
13690></DIV
13691><P
13692>Resets this script.</P
13693></DIV
13694><DIV
13695CLASS="section"
13696><HR><H2
13697CLASS="section"
13698><A
13699NAME="AEN3413"
13700>A.198. llResetOtherScript</A
13701></H2
13702><DIV
13703CLASS="funcsynopsis"
13704><P
13705></P
13706><A
13707NAME="AEN3415"
13708></A
13709><P
13710><CODE
13711><CODE
13712CLASS="FUNCDEF"
13713>llResetOtherScript</CODE
13714>(string name);</CODE
13715></P
13716><P
13717></P
13718></DIV
13719><P
13720>Resets the script <CODE
13721CLASS="parameter"
13722>name</CODE
13723>.</P
13724></DIV
13725><DIV
13726CLASS="section"
13727><HR><H2
13728CLASS="section"
13729><A
13730NAME="AEN3423"
13731>A.199. llResetTime</A
13732></H2
13733><DIV
13734CLASS="funcsynopsis"
13735><P
13736></P
13737><A
13738NAME="AEN3425"
13739></A
13740><P
13741><CODE
13742><CODE
13743CLASS="FUNCDEF"
13744>llResetTime</CODE
13745>(void);</CODE
13746></P
13747><P
13748></P
13749></DIV
13750><P
13751>Sets the internal script timer to zero.</P
13752></DIV
13753><DIV
13754CLASS="section"
13755><HR><H2
13756CLASS="section"
13757><A
13758NAME="AEN3431"
13759>A.200. llRezAtRoot</A
13760></H2
13761><DIV
13762CLASS="funcsynopsis"
13763><P
13764></P
13765><A
13766NAME="AEN3433"
13767></A
13768><P
13769><CODE
13770><CODE
13771CLASS="FUNCDEF"
13772>llRezAtRoot</CODE
13773>(string inventory, vector pos, vector vel, rotation rot, integer param);</CODE
13774></P
13775><P
13776></P
13777></DIV
13778><P
13779>Creates object's <CODE
13780CLASS="parameter"
13781>inventory</CODE
13782> object at
13783 position <CODE
13784CLASS="parameter"
13785>pos</CODE
13786> with velocity
13787 <CODE
13788CLASS="parameter"
13789>vel</CODE
13790> and rotation
13791 <CODE
13792CLASS="parameter"
13793>rot</CODE
13794>. The last selected root object's location
13795 in a multi-object selection will be placed at <CODE
13796CLASS="parameter"
13797>pos</CODE
13798>.
13799 All other objects in a selection will be created relative to the last
13800 selected root's position, taking <CODE
13801CLASS="parameter"
13802>rot</CODE
13803> into account.
13804 The <CODE
13805CLASS="parameter"
13806>param</CODE
13807> value
13808 will be available to the newly created object in the <A
13809HREF="#AEN5112"
13810>on_rez</A
13811> event or through the <A
13812HREF="#AEN2164"
13813>llGetStartParameter</A
13814>
13815 library function. The <CODE
13816CLASS="parameter"
13817>vel</CODE
13818> parameter is
13819 ignored if the rezzed object is not physical.</P
13820></DIV
13821><DIV
13822CLASS="section"
13823><HR><H2
13824CLASS="section"
13825><A
13826NAME="AEN3458"
13827>A.201. llRezObject</A
13828></H2
13829><DIV
13830CLASS="funcsynopsis"
13831><P
13832></P
13833><A
13834NAME="AEN3460"
13835></A
13836><P
13837><CODE
13838><CODE
13839CLASS="FUNCDEF"
13840>llRezObject</CODE
13841>(string inventory, vector pos, vector vel, rotation rot, integer param);</CODE
13842></P
13843><P
13844></P
13845></DIV
13846><P
13847>Creates object's <CODE
13848CLASS="parameter"
13849>inventory</CODE
13850> object at
13851 position <CODE
13852CLASS="parameter"
13853>pos</CODE
13854> with velocity
13855 <CODE
13856CLASS="parameter"
13857>vel</CODE
13858> and rotation
13859 <CODE
13860CLASS="parameter"
13861>rot</CODE
13862>. The <CODE
13863CLASS="parameter"
13864>param</CODE
13865> value
13866 will be available to the newly created object in the <A
13867HREF="#AEN5112"
13868>on_rez</A
13869> event or through the <A
13870HREF="#AEN2164"
13871>llGetStartParameter</A
13872>
13873 library function. The <CODE
13874CLASS="parameter"
13875>vel</CODE
13876> parameter is
13877 ignored if the rezzed object is not physical.</P
13878></DIV
13879><DIV
13880CLASS="section"
13881><HR><H2
13882CLASS="section"
13883><A
13884NAME="AEN3483"
13885>A.202. llRot2Angle</A
13886></H2
13887><DIV
13888CLASS="funcsynopsis"
13889><P
13890></P
13891><A
13892NAME="AEN3485"
13893></A
13894><P
13895><CODE
13896><CODE
13897CLASS="FUNCDEF"
13898>float llRot2Angle</CODE
13899>(rotation rot);</CODE
13900></P
13901><P
13902></P
13903></DIV
13904><P
13905>Returns the rotation angle represented by
13906 <CODE
13907CLASS="parameter"
13908>rot</CODE
13909>.</P
13910></DIV
13911><DIV
13912CLASS="section"
13913><HR><H2
13914CLASS="section"
13915><A
13916NAME="AEN3493"
13917>A.203. llRot2Axis</A
13918></H2
13919><DIV
13920CLASS="funcsynopsis"
13921><P
13922></P
13923><A
13924NAME="AEN3495"
13925></A
13926><P
13927><CODE
13928><CODE
13929CLASS="FUNCDEF"
13930>vector llRot2Axis</CODE
13931>(rotation rot);</CODE
13932></P
13933><P
13934></P
13935></DIV
13936><P
13937>Returns the rotation axis represented by
13938 <CODE
13939CLASS="parameter"
13940>rot</CODE
13941>.</P
13942></DIV
13943><DIV
13944CLASS="section"
13945><HR><H2
13946CLASS="section"
13947><A
13948NAME="AEN3503"
13949>A.204. llRot2Euler</A
13950></H2
13951><DIV
13952CLASS="funcsynopsis"
13953><P
13954></P
13955><A
13956NAME="AEN3505"
13957></A
13958><P
13959><CODE
13960><CODE
13961CLASS="FUNCDEF"
13962>vector llRot2Euler</CODE
13963>(rotation rot);</CODE
13964></P
13965><P
13966></P
13967></DIV
13968><P
13969>Returns the Euler Angle representation of
13970 <CODE
13971CLASS="parameter"
13972>rot</CODE
13973>.</P
13974></DIV
13975><DIV
13976CLASS="section"
13977><HR><H2
13978CLASS="section"
13979><A
13980NAME="AEN3513"
13981>A.205. llRot2Fwd</A
13982></H2
13983><DIV
13984CLASS="funcsynopsis"
13985><P
13986></P
13987><A
13988NAME="AEN3515"
13989></A
13990><P
13991><CODE
13992><CODE
13993CLASS="FUNCDEF"
13994>vector llRot2Fwd</CODE
13995>(rotation rot);</CODE
13996></P
13997><P
13998></P
13999></DIV
14000><P
14001>Returns the forward axis represented by
14002 <CODE
14003CLASS="parameter"
14004>rot</CODE
14005>.</P
14006></DIV
14007><DIV
14008CLASS="section"
14009><HR><H2
14010CLASS="section"
14011><A
14012NAME="AEN3523"
14013>A.206. llRot2Left</A
14014></H2
14015><DIV
14016CLASS="funcsynopsis"
14017><P
14018></P
14019><A
14020NAME="AEN3525"
14021></A
14022><P
14023><CODE
14024><CODE
14025CLASS="FUNCDEF"
14026>llRot2Left</CODE
14027>(rotation rot);</CODE
14028></P
14029><P
14030></P
14031></DIV
14032><P
14033>Returns the left axis represented by
14034 <CODE
14035CLASS="parameter"
14036>rot</CODE
14037>.</P
14038></DIV
14039><DIV
14040CLASS="section"
14041><HR><H2
14042CLASS="section"
14043><A
14044NAME="AEN3533"
14045>A.207. llRot2Up</A
14046></H2
14047><DIV
14048CLASS="funcsynopsis"
14049><P
14050></P
14051><A
14052NAME="AEN3535"
14053></A
14054><P
14055><CODE
14056><CODE
14057CLASS="FUNCDEF"
14058>llRot2Up</CODE
14059>(rotation rot);</CODE
14060></P
14061><P
14062></P
14063></DIV
14064><P
14065>Returns the up axis represented by
14066 <CODE
14067CLASS="parameter"
14068>rot</CODE
14069>.</P
14070></DIV
14071><DIV
14072CLASS="section"
14073><HR><H2
14074CLASS="section"
14075><A
14076NAME="AEN3543"
14077>A.208. llRotBetween</A
14078></H2
14079><DIV
14080CLASS="funcsynopsis"
14081><P
14082></P
14083><A
14084NAME="AEN3545"
14085></A
14086><P
14087><CODE
14088><CODE
14089CLASS="FUNCDEF"
14090>rotation llRotBetween</CODE
14091>(vector a, vector b);</CODE
14092></P
14093><P
14094></P
14095></DIV
14096><P
14097>Returns the rotation needed to rotate
14098 <CODE
14099CLASS="parameter"
14100>a</CODE
14101> to <CODE
14102CLASS="parameter"
14103>b</CODE
14104>.</P
14105></DIV
14106><DIV
14107CLASS="section"
14108><HR><H2
14109CLASS="section"
14110><A
14111NAME="AEN3556"
14112>A.209. llRotLookAt</A
14113></H2
14114><DIV
14115CLASS="funcsynopsis"
14116><P
14117></P
14118><A
14119NAME="AEN3558"
14120></A
14121><P
14122><CODE
14123><CODE
14124CLASS="FUNCDEF"
14125>llRotLookAt</CODE
14126>(rotation rot, float strength, float damping);</CODE
14127></P
14128><P
14129></P
14130></DIV
14131><P
14132>Cause object to rotate to <CODE
14133CLASS="parameter"
14134>rot</CODE
14135>. Good
14136 <CODE
14137CLASS="parameter"
14138>strength</CODE
14139> values are around half the mass of
14140 the object and good <CODE
14141CLASS="parameter"
14142>damping</CODE
14143> values are less
14144 than 1/10<SUP
14145>th</SUP
14146> of the
14147 <CODE
14148CLASS="parameter"
14149>strength</CODE
14150>. Asymmetrical shapes require
14151 smaller <CODE
14152CLASS="parameter"
14153>damping</CODE
14154>. A
14155 <CODE
14156CLASS="parameter"
14157>strength</CODE
14158> of 0.0 cancels the look at.</P
14159></DIV
14160><DIV
14161CLASS="section"
14162><HR><H2
14163CLASS="section"
14164><A
14165NAME="AEN3576"
14166>A.210. llRotTarget</A
14167></H2
14168><DIV
14169CLASS="funcsynopsis"
14170><P
14171></P
14172><A
14173NAME="AEN3578"
14174></A
14175><P
14176><CODE
14177><CODE
14178CLASS="FUNCDEF"
14179>integer llRotTarget</CODE
14180>(rotation rot, float error);</CODE
14181></P
14182><P
14183></P
14184></DIV
14185><P
14186>Set object rotation within <CODE
14187CLASS="parameter"
14188>error</CODE
14189> of
14190 <CODE
14191CLASS="parameter"
14192>rotation</CODE
14193> as a rotational target and return
14194 an integer number for the target. The number can be used in <A
14195HREF="#AEN3590"
14196>llRotTargetRemove</A
14197>.</P
14198></DIV
14199><DIV
14200CLASS="section"
14201><HR><H2
14202CLASS="section"
14203><A
14204NAME="AEN3590"
14205>A.211. llRotTargetRemove</A
14206></H2
14207><DIV
14208CLASS="funcsynopsis"
14209><P
14210></P
14211><A
14212NAME="AEN3592"
14213></A
14214><P
14215><CODE
14216><CODE
14217CLASS="FUNCDEF"
14218>llRotTargetRemove</CODE
14219>(integer number);</CODE
14220></P
14221><P
14222></P
14223></DIV
14224><P
14225>Remove rotational target
14226 <CODE
14227CLASS="parameter"
14228>number</CODE
14229>.</P
14230></DIV
14231><DIV
14232CLASS="section"
14233><HR><H2
14234CLASS="section"
14235><A
14236NAME="AEN3600"
14237>A.212. llRotateTexture</A
14238></H2
14239><DIV
14240CLASS="funcsynopsis"
14241><P
14242></P
14243><A
14244NAME="AEN3602"
14245></A
14246><P
14247><CODE
14248><CODE
14249CLASS="FUNCDEF"
14250>llRotateTexture</CODE
14251>(float radians, integer face);</CODE
14252></P
14253><P
14254></P
14255></DIV
14256><P
14257>Sets the texture rotation of <CODE
14258CLASS="parameter"
14259>face</CODE
14260> to
14261 <CODE
14262CLASS="parameter"
14263>radians</CODE
14264>. If <CODE
14265CLASS="parameter"
14266>face</CODE
14267>
14268 <A
14269HREF="#AEN6026"
14270>ALL_SIDES</A
14271>, rotate the
14272 texture of all faces.</P
14273></DIV
14274><DIV
14275CLASS="section"
14276><HR><H2
14277CLASS="section"
14278><A
14279NAME="AEN3615"
14280>A.213. llRound</A
14281></H2
14282><DIV
14283CLASS="funcsynopsis"
14284><P
14285></P
14286><A
14287NAME="AEN3617"
14288></A
14289><P
14290><CODE
14291><CODE
14292CLASS="FUNCDEF"
14293>integer llRound</CODE
14294>(float val);</CODE
14295></P
14296><P
14297></P
14298></DIV
14299><P
14300>returns <CODE
14301CLASS="parameter"
14302>val</CODE
14303> rounded to the nearest
14304 integer.</P
14305></DIV
14306><DIV
14307CLASS="section"
14308><HR><H2
14309CLASS="section"
14310><A
14311NAME="AEN3625"
14312>A.214. llSameGroup</A
14313></H2
14314><DIV
14315CLASS="funcsynopsis"
14316><P
14317></P
14318><A
14319NAME="AEN3627"
14320></A
14321><P
14322><CODE
14323><CODE
14324CLASS="FUNCDEF"
14325>integer llSameGroup</CODE
14326>(key id);</CODE
14327></P
14328><P
14329></P
14330></DIV
14331><P
14332>Returns <A
14333HREF="#AEN5248"
14334>TRUE</A
14335> if the
14336 object or agent <CODE
14337CLASS="parameter"
14338>id</CODE
14339> is in the same simulator
14340 and has the same active group as this object. Otherwise, returns
14341 <A
14342HREF="#AEN5248"
14343>FALSE</A
14344>.</P
14345></DIV
14346><DIV
14347CLASS="section"
14348><HR><H2
14349CLASS="section"
14350><A
14351NAME="AEN3637"
14352>A.215. llSay</A
14353></H2
14354><DIV
14355CLASS="funcsynopsis"
14356><P
14357></P
14358><A
14359NAME="AEN3639"
14360></A
14361><P
14362><CODE
14363><CODE
14364CLASS="FUNCDEF"
14365>llSay</CODE
14366>(integer channel, string text);</CODE
14367></P
14368><P
14369></P
14370></DIV
14371><P
14372>Say <CODE
14373CLASS="parameter"
14374>text</CODE
14375> on
14376 <CODE
14377CLASS="parameter"
14378>channel</CODE
14379>. Channel 0 is the public chat
14380 channel that all avatars see as chat text. Channels 1 to
14381 2,147,483,648 are private channels that are not sent to avatars
14382 but other scripts can listen for through the <A
14383HREF="#AEN2665"
14384>llListen</A
14385> api.</P
14386></DIV
14387><DIV
14388CLASS="section"
14389><HR><H2
14390CLASS="section"
14391><A
14392NAME="AEN3651"
14393>A.216. llScaleTexture</A
14394></H2
14395><DIV
14396CLASS="funcsynopsis"
14397><P
14398></P
14399><A
14400NAME="AEN3653"
14401></A
14402><P
14403><CODE
14404><CODE
14405CLASS="FUNCDEF"
14406>llScaleTexture</CODE
14407>(integer scale_s, integer scale_t, integer face);</CODE
14408></P
14409><P
14410></P
14411></DIV
14412><P
14413>Sets the texture s and t scales of
14414 <CODE
14415CLASS="parameter"
14416>face</CODE
14417> to <CODE
14418CLASS="parameter"
14419>scale_s</CODE
14420> and
14421 <CODE
14422CLASS="parameter"
14423>scale_t</CODE
14424> respectively. If face is <A
14425HREF="#AEN6026"
14426>ALL_SIDES</A
14427>, scale the texture
14428 to all faces.</P
14429></DIV
14430><DIV
14431CLASS="section"
14432><HR><H2
14433CLASS="section"
14434><A
14435NAME="AEN3668"
14436>A.217. llScriptDanger</A
14437></H2
14438><DIV
14439CLASS="funcsynopsis"
14440><P
14441></P
14442><A
14443NAME="AEN3670"
14444></A
14445><P
14446><CODE
14447><CODE
14448CLASS="FUNCDEF"
14449>integer llScriptDanger</CODE
14450>(vector pos);</CODE
14451></P
14452><P
14453></P
14454></DIV
14455><P
14456>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
14457></DIV
14458><DIV
14459CLASS="section"
14460><HR><H2
14461CLASS="section"
14462><A
14463NAME="AEN3677"
14464>A.218. llSendRemoteData</A
14465></H2
14466><DIV
14467CLASS="funcsynopsis"
14468><P
14469></P
14470><A
14471NAME="AEN3679"
14472></A
14473><P
14474><CODE
14475><CODE
14476CLASS="FUNCDEF"
14477>key llSendRemoteData</CODE
14478>(string dest, integer idata, string sdata);</CODE
14479></P
14480><P
14481></P
14482></DIV
14483><P
14484>Send an XML-RPC request to dest through channel with payload
14485 of channel (in a string), integer idata and string sdata. An
14486 XML-RPC reply will trigger a remote_data event with type =
14487 REMOTE_DATA_REPLY. The call returns a message_id that can be used
14488 to identify XML-RPC replies.</P
14489></DIV
14490><DIV
14491CLASS="section"
14492><HR><H2
14493CLASS="section"
14494><A
14495NAME="AEN3690"
14496>A.219. llSensor</A
14497></H2
14498><DIV
14499CLASS="funcsynopsis"
14500><P
14501></P
14502><A
14503NAME="AEN3692"
14504></A
14505><P
14506><CODE
14507><CODE
14508CLASS="FUNCDEF"
14509>llSensor</CODE
14510>(string name, key id, integer type, float range, float arc);</CODE
14511></P
14512><P
14513></P
14514></DIV
14515><P
14516>Performs a single scan for <CODE
14517CLASS="parameter"
14518>name</CODE
14519> and
14520 <CODE
14521CLASS="parameter"
14522>id</CODE
14523> with <CODE
14524CLASS="parameter"
14525>type</CODE
14526> within
14527 <CODE
14528CLASS="parameter"
14529>range</CODE
14530> meters and <CODE
14531CLASS="parameter"
14532>arc</CODE
14533>
14534 radians of forward vector. Specifying a blank name or <A
14535HREF="#AEN6023"
14536>NULL_KEY</A
14537> id will not filter results for
14538 any particular name or id. A range of 0.0 does not perform a
14539 scan. Range is limited to 96.0. The <CODE
14540CLASS="parameter"
14541>type</CODE
14542> parameter should be an <A
14543HREF="#AEN5291"
14544>object type constant</A
14545> value. If anything is found
14546 during the scan, a <A
14547HREF="#AEN5136"
14548>sensor</A
14549> event is triggered. A maximum
14550 of 16 items are passed to this event. If nothing is found during the scan, a
14551 <A
14552HREF="#AEN5074"
14553>no sensor</A
14554> event is triggered instead.</P
14555></DIV
14556><DIV
14557CLASS="section"
14558><HR><H2
14559CLASS="section"
14560><A
14561NAME="AEN3717"
14562>A.220. llSensorRemove</A
14563></H2
14564><DIV
14565CLASS="funcsynopsis"
14566><P
14567></P
14568><A
14569NAME="AEN3719"
14570></A
14571><P
14572><CODE
14573><CODE
14574CLASS="FUNCDEF"
14575>llSensorRemove</CODE
14576>(void);</CODE
14577></P
14578><P
14579></P
14580></DIV
14581><P
14582>Removes the sensor.</P
14583></DIV
14584><DIV
14585CLASS="section"
14586><HR><H2
14587CLASS="section"
14588><A
14589NAME="AEN3725"
14590>A.221. llSensorRepeat</A
14591></H2
14592><DIV
14593CLASS="funcsynopsis"
14594><P
14595></P
14596><A
14597NAME="AEN3727"
14598></A
14599><P
14600><CODE
14601><CODE
14602CLASS="FUNCDEF"
14603>llSensorRepeat</CODE
14604>(string name, key id, integer type, float range, float arc, float rate);</CODE
14605></P
14606><P
14607></P
14608></DIV
14609><P
14610>Performs a single scan for <CODE
14611CLASS="parameter"
14612>name</CODE
14613> and
14614 <CODE
14615CLASS="parameter"
14616>id</CODE
14617> with <CODE
14618CLASS="parameter"
14619>type</CODE
14620> within
14621 <CODE
14622CLASS="parameter"
14623>range</CODE
14624> meters and <CODE
14625CLASS="parameter"
14626>arc</CODE
14627>
14628 radians of forward vector and repeats every
14629 <CODE
14630CLASS="parameter"
14631>rate</CODE
14632> seconds. Specifying a blank name or
14633 <A
14634HREF="#AEN6023"
14635>NULL_KEY</A
14636> id will not filter
14637 results for any particular name or id. A range of 0.0 cancels the
14638 scan. Range is limited to 96.0. The <CODE
14639CLASS="parameter"
14640>type</CODE
14641> parameter should be an <A
14642HREF="#AEN5291"
14643>object type constant</A
14644>
14645 value. If anything is found during the scan, a <A
14646HREF="#AEN5136"
14647>sensor</A
14648>
14649 event is triggered. A maximum of 16 items are passed to this event. If nothing is found
14650 during the scan, a <A
14651HREF="#AEN5074"
14652>no sensor</A
14653> event is triggered instead.</P
14654></DIV
14655><DIV
14656CLASS="section"
14657><HR><H2
14658CLASS="section"
14659><A
14660NAME="AEN3755"
14661>A.222. llSetAlpha</A
14662></H2
14663><DIV
14664CLASS="funcsynopsis"
14665><P
14666></P
14667><A
14668NAME="AEN3757"
14669></A
14670><P
14671><CODE
14672><CODE
14673CLASS="FUNCDEF"
14674>llSetAlpha</CODE
14675>(float alpha, integer face);</CODE
14676></P
14677><P
14678></P
14679></DIV
14680><P
14681>Sets the alpha value for <CODE
14682CLASS="parameter"
14683>face</CODE
14684>. If
14685 face is <A
14686HREF="#AEN6026"
14687>ALL_SIDES</A
14688>, set
14689 the alpha to all faces. The <CODE
14690CLASS="parameter"
14691>alpha</CODE
14692> value is
14693 interpreted as an opacity percentage - 1.0 is fully opaque, and
14694 0.2 is mostly transparent. This api will clamp
14695 <CODE
14696CLASS="parameter"
14697>alpha</CODE
14698> values less 0.1 to .1 and greater
14699 than 1.0 to 1.</P
14700></DIV
14701><DIV
14702CLASS="section"
14703><HR><H2
14704CLASS="section"
14705><A
14706NAME="AEN3770"
14707>A.223. llSetBuoyancy</A
14708></H2
14709><DIV
14710CLASS="funcsynopsis"
14711><P
14712></P
14713><A
14714NAME="AEN3772"
14715></A
14716><P
14717><CODE
14718><CODE
14719CLASS="FUNCDEF"
14720>llSetBuoyancy</CODE
14721>(float buoyancy);</CODE
14722></P
14723><P
14724></P
14725></DIV
14726><P
14727>Set the object buoyancy. A value of 0 is none, less than 1.0 sinks,
14728 1.0 floats, and greater than 1.0 rises.</P
14729></DIV
14730><DIV
14731CLASS="section"
14732><HR><H2
14733CLASS="section"
14734><A
14735NAME="AEN3779"
14736>A.224. llSetCameraAtOffset</A
14737></H2
14738><DIV
14739CLASS="funcsynopsis"
14740><P
14741></P
14742><A
14743NAME="AEN3781"
14744></A
14745><P
14746><CODE
14747><CODE
14748CLASS="FUNCDEF"
14749>llSetCameraAtOffset</CODE
14750>(vector offset);</CODE
14751></P
14752><P
14753></P
14754></DIV
14755><P
14756>Sets the camera at offset used in this object if an avatar
14757 sits on it.</P
14758></DIV
14759><DIV
14760CLASS="section"
14761><HR><H2
14762CLASS="section"
14763><A
14764NAME="AEN3788"
14765>A.225. llForceMouselook</A
14766></H2
14767><DIV
14768CLASS="funcsynopsis"
14769><P
14770></P
14771><A
14772NAME="AEN3790"
14773></A
14774><P
14775><CODE
14776><CODE
14777CLASS="FUNCDEF"
14778>llForceMouselook</CODE
14779>(integer mouselook);</CODE
14780></P
14781><P
14782></P
14783></DIV
14784><P
14785>Puts the camera into mouselook mode if an avatar
14786 sits on this object.</P
14787></DIV
14788><DIV
14789CLASS="section"
14790><HR><H2
14791CLASS="section"
14792><A
14793NAME="AEN3797"
14794>A.226. llSetCameraEyeOffset</A
14795></H2
14796><DIV
14797CLASS="funcsynopsis"
14798><P
14799></P
14800><A
14801NAME="AEN3799"
14802></A
14803><P
14804><CODE
14805><CODE
14806CLASS="FUNCDEF"
14807>llSetCameraEyeOffset</CODE
14808>(vector offset);</CODE
14809></P
14810><P
14811></P
14812></DIV
14813><P
14814>Sets the camera eye offset used in this object if an avatar
14815 sits on it.</P
14816></DIV
14817><DIV
14818CLASS="section"
14819><HR><H2
14820CLASS="section"
14821><A
14822NAME="AEN3806"
14823>A.227. llSetColor</A
14824></H2
14825><DIV
14826CLASS="funcsynopsis"
14827><P
14828></P
14829><A
14830NAME="AEN3808"
14831></A
14832><P
14833><CODE
14834><CODE
14835CLASS="FUNCDEF"
14836>llSetColor</CODE
14837>(vector color, integer face);</CODE
14838></P
14839><P
14840></P
14841></DIV
14842><P
14843>Sets the <CODE
14844CLASS="parameter"
14845>color</CODE
14846> of
14847 <CODE
14848CLASS="parameter"
14849>face</CODE
14850>. If face is <A
14851HREF="#AEN6026"
14852>ALL_SIDES</A
14853>, set the alpha to
14854 all faces.</P
14855></DIV
14856><DIV
14857CLASS="section"
14858><HR><H2
14859CLASS="section"
14860><A
14861NAME="AEN3820"
14862>A.228. llSetDamage</A
14863></H2
14864><DIV
14865CLASS="funcsynopsis"
14866><P
14867></P
14868><A
14869NAME="AEN3822"
14870></A
14871><P
14872><CODE
14873><CODE
14874CLASS="FUNCDEF"
14875>llSetDamage</CODE
14876>(float damage);</CODE
14877></P
14878><P
14879></P
14880></DIV
14881><P
14882>Sets the amount of damage that will be done to an object
14883 that this object hits. This object will be destroyed on damaging
14884 another object.</P
14885></DIV
14886><DIV
14887CLASS="section"
14888><HR><H2
14889CLASS="section"
14890><A
14891NAME="AEN3829"
14892>A.229. llSetForce</A
14893></H2
14894><DIV
14895CLASS="funcsynopsis"
14896><P
14897></P
14898><A
14899NAME="AEN3831"
14900></A
14901><P
14902><CODE
14903><CODE
14904CLASS="FUNCDEF"
14905>llSetForce</CODE
14906>(vector force, integer local);</CODE
14907></P
14908><P
14909></P
14910></DIV
14911><P
14912>If the object is physical, this function sets the
14913 <CODE
14914CLASS="parameter"
14915>force</CODE
14916>. The vector is in local coordinates if
14917 local is <A
14918HREF="#AEN5248"
14919>TRUE</A
14920>, global if
14921 <A
14922HREF="#AEN5248"
14923>FALSE</A
14924>.</P
14925></DIV
14926><DIV
14927CLASS="section"
14928><HR><H2
14929CLASS="section"
14930><A
14931NAME="AEN3843"
14932>A.230. llSetForceAndTorque</A
14933></H2
14934><DIV
14935CLASS="funcsynopsis"
14936><P
14937></P
14938><A
14939NAME="AEN3845"
14940></A
14941><P
14942><CODE
14943><CODE
14944CLASS="FUNCDEF"
14945>llSetForceAndTorque</CODE
14946>(vector force, vector torque, integer local);</CODE
14947></P
14948><P
14949></P
14950></DIV
14951><P
14952>If the object is physical, this function sets the
14953 <CODE
14954CLASS="parameter"
14955>force</CODE
14956> and
14957 <CODE
14958CLASS="parameter"
14959>torque</CODE
14960>. The vectors are in local coordinates
14961 if local is <A
14962HREF="#AEN5248"
14963>TRUE</A
14964>, global if
14965 <A
14966HREF="#AEN5248"
14967>FALSE</A
14968>.</P
14969></DIV
14970><DIV
14971CLASS="section"
14972><HR><H2
14973CLASS="section"
14974><A
14975NAME="AEN3860"
14976>A.231. llSetHoverHeight</A
14977></H2
14978><DIV
14979CLASS="funcsynopsis"
14980><P
14981></P
14982><A
14983NAME="AEN3862"
14984></A
14985><P
14986><CODE
14987><CODE
14988CLASS="FUNCDEF"
14989>llSetHoverHeight</CODE
14990>(float height, float water, float tau);</CODE
14991></P
14992><P
14993></P
14994></DIV
14995><P
14996>Critically damps to a height. The height is above ground and
14997 water if <CODE
14998CLASS="parameter"
14999>water</CODE
15000> is <A
15001HREF="#AEN5248"
15002>TRUE</A
15003>.</P
15004></DIV
15005><DIV
15006CLASS="section"
15007><HR><H2
15008CLASS="section"
15009><A
15010NAME="AEN3875"
15011>A.232. llSetLinkAlpha</A
15012></H2
15013><DIV
15014CLASS="funcsynopsis"
15015><P
15016></P
15017><A
15018NAME="AEN3877"
15019></A
15020><P
15021><CODE
15022><CODE
15023CLASS="FUNCDEF"
15024>llSetLinkAlpha</CODE
15025>(integer linknumber, float alpha, integer face);</CODE
15026></P
15027><P
15028></P
15029></DIV
15030><P
15031>Sets the <CODE
15032CLASS="parameter"
15033>alpha</CODE
15034> of the linked child
15035 specified by <CODE
15036CLASS="parameter"
15037>linknumber</CODE
15038>. A value of 0 means
15039 no link, 1 the root, 2 for first child, etc. If
15040 <CODE
15041CLASS="parameter"
15042>linknumber</CODE
15043> is <A
15044HREF="#AEN6026"
15045>ALL_SIDES</A
15046>, set the alpha of
15047 all objects in the linked set. If <CODE
15048CLASS="parameter"
15049>face</CODE
15050> is
15051 <A
15052HREF="#AEN6026"
15053>ALL_SIDES</A
15054>, set the alpha
15055 of all faces.</P
15056></DIV
15057><DIV
15058CLASS="section"
15059><HR><H2
15060CLASS="section"
15061><A
15062NAME="AEN3894"
15063>A.233. llSetLinkColor</A
15064></H2
15065><DIV
15066CLASS="funcsynopsis"
15067><P
15068></P
15069><A
15070NAME="AEN3896"
15071></A
15072><P
15073><CODE
15074><CODE
15075CLASS="FUNCDEF"
15076>llSetLinkColor</CODE
15077>(integer linknumber, vector color, integer face);</CODE
15078></P
15079><P
15080></P
15081></DIV
15082><P
15083>Sets the <CODE
15084CLASS="parameter"
15085>color</CODE
15086> of the linked child
15087 specified by <CODE
15088CLASS="parameter"
15089>linknumber</CODE
15090>. A value of 0 means
15091 no link, 1 the root, 2 for first child, etc. If
15092 <CODE
15093CLASS="parameter"
15094>linknumber</CODE
15095> is <A
15096HREF="#AEN6026"
15097>ALL_SIDES</A
15098>, set the color of
15099 all objects in the linked set. If <CODE
15100CLASS="parameter"
15101>face</CODE
15102> is
15103 <A
15104HREF="#AEN6026"
15105>ALL_SIDES</A
15106>, set the color
15107 of all faces.</P
15108></DIV
15109><DIV
15110CLASS="section"
15111><HR><H2
15112CLASS="section"
15113><A
15114NAME="AEN3913"
15115>A.234. llSetLocalRot</A
15116></H2
15117><DIV
15118CLASS="funcsynopsis"
15119><P
15120></P
15121><A
15122NAME="AEN3915"
15123></A
15124><P
15125><CODE
15126><CODE
15127CLASS="FUNCDEF"
15128>llSetLocalRot</CODE
15129>(rotation rot);</CODE
15130></P
15131><P
15132></P
15133></DIV
15134><P
15135>If the object is not physical, this function sets the
15136 rotation of a child prim relative to the root prim, and the
15137 linked set is adjusted.</P
15138></DIV
15139><DIV
15140CLASS="section"
15141><HR><H2
15142CLASS="section"
15143><A
15144NAME="AEN3922"
15145>A.235. llSetObjectDesc</A
15146></H2
15147><DIV
15148CLASS="funcsynopsis"
15149><P
15150></P
15151><A
15152NAME="AEN3924"
15153></A
15154><P
15155><CODE
15156><CODE
15157CLASS="FUNCDEF"
15158>llSetObjectDesc</CODE
15159>(string description);</CODE
15160></P
15161><P
15162></P
15163></DIV
15164><P
15165>Sets the object description to <CODE
15166CLASS="parameter"
15167>description</CODE
15168>.</P
15169></DIV
15170><DIV
15171CLASS="section"
15172><HR><H2
15173CLASS="section"
15174><A
15175NAME="AEN3932"
15176>A.236. llSetObjectName</A
15177></H2
15178><DIV
15179CLASS="funcsynopsis"
15180><P
15181></P
15182><A
15183NAME="AEN3934"
15184></A
15185><P
15186><CODE
15187><CODE
15188CLASS="FUNCDEF"
15189>llSetObjectName</CODE
15190>(string name);</CODE
15191></P
15192><P
15193></P
15194></DIV
15195><P
15196>Sets the object name to <CODE
15197CLASS="parameter"
15198>name</CODE
15199>.</P
15200></DIV
15201><DIV
15202CLASS="section"
15203><HR><H2
15204CLASS="section"
15205><A
15206NAME="AEN3942"
15207>A.237. llSetParcelMusicURL</A
15208></H2
15209><DIV
15210CLASS="funcsynopsis"
15211><P
15212></P
15213><A
15214NAME="AEN3944"
15215></A
15216><P
15217><CODE
15218><CODE
15219CLASS="FUNCDEF"
15220>llSetParcelMusicURL</CODE
15221>(string url);</CODE
15222></P
15223><P
15224></P
15225></DIV
15226><P
15227>Sets the streaming audio URL for the parcel where the object
15228 is currently located. The <CODE
15229CLASS="parameter"
15230>url</CODE
15231> must be an
15232 http streaming source of mp3 or ogg data.</P
15233></DIV
15234><DIV
15235CLASS="section"
15236><HR><H2
15237CLASS="section"
15238><A
15239NAME="AEN3952"
15240>A.238. llSetPayPrice</A
15241></H2
15242><DIV
15243CLASS="funcsynopsis"
15244><P
15245></P
15246><A
15247NAME="AEN3954"
15248></A
15249><P
15250><CODE
15251><CODE
15252CLASS="FUNCDEF"
15253>llSetPayPrice</CODE
15254>(integer default_price, list quick_pay_buttons);</CODE
15255></P
15256><P
15257></P
15258></DIV
15259><P
15260>Sets the default pay price and optionally the quick pay buttons
15261 for the 'Pay' window when someone pays this object.
15262 See also <A
15263HREF="#AEN5387"
15264>Pay Button Constants</A
15265>. </P
15266></DIV
15267><DIV
15268CLASS="section"
15269><HR><H2
15270CLASS="section"
15271><A
15272NAME="AEN3964"
15273>A.239. llSetPos</A
15274></H2
15275><DIV
15276CLASS="funcsynopsis"
15277><P
15278></P
15279><A
15280NAME="AEN3966"
15281></A
15282><P
15283><CODE
15284><CODE
15285CLASS="FUNCDEF"
15286>llSetPos</CODE
15287>(vector pos);</CODE
15288></P
15289><P
15290></P
15291></DIV
15292><P
15293>If the object is not physical, this function sets the
15294 position in region coordinates. If the object is a child, the
15295 position is treated as root relative and the linked set is
15296 adjusted.</P
15297></DIV
15298><DIV
15299CLASS="section"
15300><HR><H2
15301CLASS="section"
15302><A
15303NAME="AEN3973"
15304>A.240. llSetPrimitiveParams</A
15305></H2
15306><DIV
15307CLASS="funcsynopsis"
15308><P
15309></P
15310><A
15311NAME="AEN3975"
15312></A
15313><P
15314><CODE
15315><CODE
15316CLASS="FUNCDEF"
15317>llSetPrimitiveParams</CODE
15318>(list rules);</CODE
15319></P
15320><P
15321></P
15322></DIV
15323><P
15324>Set primitive parameters based on <CODE
15325CLASS="parameter"
15326>rules</CODE
15327>. The
15328 <CODE
15329CLASS="parameter"
15330>rules</CODE
15331> are specified as an ordered list
15332 of parameter and value(s). Valid parameters and their expected values
15333 can be found in the <A
15334HREF="#AEN6276"
15335>Primitive Constants</A
15336>.
15337 Here is a simple example:
15338<DIV
15339CLASS="informalexample"
15340><P
15341></P
15342><A
15343NAME="AEN3985"
15344></A
15345><PRE
15346CLASS="programlisting"
15347>&#13;llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, &#60;0,1,0&#62;,
15348 0.5, &#60;-0.2, 0.2, 0&#62;, &#60;0.5,0.5,0&#62;,&#60;-0.5,0.5,0&#62;]);
15349</PRE
15350><P
15351></P
15352></DIV
15353></P
15354></DIV
15355><DIV
15356CLASS="section"
15357><HR><H2
15358CLASS="section"
15359><A
15360NAME="AEN3987"
15361>A.241. llSetRemoteScriptAccessPin</A
15362></H2
15363><DIV
15364CLASS="funcsynopsis"
15365><P
15366></P
15367><A
15368NAME="AEN3989"
15369></A
15370><P
15371><CODE
15372><CODE
15373CLASS="FUNCDEF"
15374>llSetRemoteScriptAccessPin</CODE
15375>(integer pin);</CODE
15376></P
15377><P
15378></P
15379></DIV
15380><P
15381>If pin is set to a non-zero number, the task will accept remote script
15382 loads via llRemoteLoadScriptPin if it passes in the correct pin.
15383 Otherwise, llRemoteLoadScriptPin is ignored.</P
15384></DIV
15385><DIV
15386CLASS="section"
15387><HR><H2
15388CLASS="section"
15389><A
15390NAME="AEN3996"
15391>A.242. llSetRot</A
15392></H2
15393><DIV
15394CLASS="funcsynopsis"
15395><P
15396></P
15397><A
15398NAME="AEN3998"
15399></A
15400><P
15401><CODE
15402><CODE
15403CLASS="FUNCDEF"
15404>llSetRot</CODE
15405>(rotation rot);</CODE
15406></P
15407><P
15408></P
15409></DIV
15410><P
15411>If the object is not physical, this function sets the
15412 rotation. If the object is a child, the position is treated as
15413 root relative and the linked set is adjusted.</P
15414></DIV
15415><DIV
15416CLASS="section"
15417><HR><H2
15418CLASS="section"
15419><A
15420NAME="AEN4005"
15421>A.243. llSetScale</A
15422></H2
15423><DIV
15424CLASS="funcsynopsis"
15425><P
15426></P
15427><A
15428NAME="AEN4007"
15429></A
15430><P
15431><CODE
15432><CODE
15433CLASS="FUNCDEF"
15434>llSetScale</CODE
15435>(vector scale);</CODE
15436></P
15437><P
15438></P
15439></DIV
15440><P
15441>Sets the object scale.</P
15442></DIV
15443><DIV
15444CLASS="section"
15445><HR><H2
15446CLASS="section"
15447><A
15448NAME="AEN4014"
15449>A.244. llSetScriptState</A
15450></H2
15451><DIV
15452CLASS="funcsynopsis"
15453><P
15454></P
15455><A
15456NAME="AEN4016"
15457></A
15458><P
15459><CODE
15460><CODE
15461CLASS="FUNCDEF"
15462>llSetScriptState</CODE
15463>(string name, integer run);</CODE
15464></P
15465><P
15466></P
15467></DIV
15468><P
15469>Control the state of a script on the object.</P
15470></DIV
15471><DIV
15472CLASS="section"
15473><HR><H2
15474CLASS="section"
15475><A
15476NAME="AEN4025"
15477>A.245. llSetSitText</A
15478></H2
15479><DIV
15480CLASS="funcsynopsis"
15481><P
15482></P
15483><A
15484NAME="AEN4027"
15485></A
15486><P
15487><CODE
15488><CODE
15489CLASS="FUNCDEF"
15490>llSetSitText</CODE
15491>(string text);</CODE
15492></P
15493><P
15494></P
15495></DIV
15496><P
15497>Displays <CODE
15498CLASS="parameter"
15499>text</CODE
15500> rather than 'sit' in
15501 viewer pie menu.</P
15502></DIV
15503><DIV
15504CLASS="section"
15505><HR><H2
15506CLASS="section"
15507><A
15508NAME="AEN4035"
15509>A.246. llSetSoundQueueing</A
15510></H2
15511><DIV
15512CLASS="funcsynopsis"
15513><P
15514></P
15515><A
15516NAME="AEN4037"
15517></A
15518><P
15519><CODE
15520><CODE
15521CLASS="FUNCDEF"
15522>llSetSoundQueueing</CODE
15523>(integer queue);</CODE
15524></P
15525><P
15526></P
15527></DIV
15528><P
15529>Sets whether successive calls to <A
15530HREF="#AEN3181"
15531>llPlaySound</A
15532>, <A
15533HREF="#AEN2773"
15534>llLoopSound</A
15535>, etc., (attached
15536 sounds) interrupt the playing sound. The default for objects is
15537 <A
15538HREF="#AEN5248"
15539>FALSE</A
15540>. Setting this value to
15541 <A
15542HREF="#AEN5248"
15543>TRUE</A
15544> will make the sound wait
15545 until the current playing sound reaches its end. The queue is one
15546 level deep.</P
15547></DIV
15548><DIV
15549CLASS="section"
15550><HR><H2
15551CLASS="section"
15552><A
15553NAME="AEN4048"
15554>A.247. llSetStatus</A
15555></H2
15556><DIV
15557CLASS="funcsynopsis"
15558><P
15559></P
15560><A
15561NAME="AEN4050"
15562></A
15563><P
15564><CODE
15565><CODE
15566CLASS="FUNCDEF"
15567>llSetStatus</CODE
15568>(integer status, integer value);</CODE
15569></P
15570><P
15571></P
15572></DIV
15573><P
15574>Sets the <CODE
15575CLASS="parameter"
15576>status</CODE
15577> to
15578 <CODE
15579CLASS="parameter"
15580>value</CODE
15581>. Use <A
15582HREF="#AEN5257"
15583>status constants</A
15584> for the values of
15585 <CODE
15586CLASS="parameter"
15587>status</CODE
15588>.</P
15589></DIV
15590><DIV
15591CLASS="section"
15592><HR><H2
15593CLASS="section"
15594><A
15595NAME="AEN4063"
15596>A.248. llSetText</A
15597></H2
15598><DIV
15599CLASS="funcsynopsis"
15600><P
15601></P
15602><A
15603NAME="AEN4065"
15604></A
15605><P
15606><CODE
15607><CODE
15608CLASS="FUNCDEF"
15609>llSetText</CODE
15610>(string text, vector color, float alpha);</CODE
15611></P
15612><P
15613></P
15614></DIV
15615><P
15616>Sets text that floats above object to
15617 <CODE
15618CLASS="parameter"
15619>text</CODE
15620>, using the specified
15621 <CODE
15622CLASS="parameter"
15623>color</CODE
15624> and
15625 <CODE
15626CLASS="parameter"
15627>alpha</CODE
15628>.</P
15629></DIV
15630><DIV
15631CLASS="section"
15632><HR><H2
15633CLASS="section"
15634><A
15635NAME="AEN4079"
15636>A.249. llSetTexture</A
15637></H2
15638><DIV
15639CLASS="funcsynopsis"
15640><P
15641></P
15642><A
15643NAME="AEN4081"
15644></A
15645><P
15646><CODE
15647><CODE
15648CLASS="FUNCDEF"
15649>llSetTexture</CODE
15650>(string texture, integer face);</CODE
15651></P
15652><P
15653></P
15654></DIV
15655><P
15656>Sets the <CODE
15657CLASS="parameter"
15658>texture</CODE
15659> from object
15660 inventory of <CODE
15661CLASS="parameter"
15662>face</CODE
15663>. If face is <A
15664HREF="#AEN6026"
15665>ALL_SIDES</A
15666>, set the texture to
15667 all faces.</P
15668></DIV
15669><DIV
15670CLASS="section"
15671><HR><H2
15672CLASS="section"
15673><A
15674NAME="AEN4093"
15675>A.250. llSetTextureAnim</A
15676></H2
15677><DIV
15678CLASS="funcsynopsis"
15679><P
15680></P
15681><A
15682NAME="AEN4095"
15683></A
15684><P
15685><CODE
15686><CODE
15687CLASS="FUNCDEF"
15688>llSetTextureAnim</CODE
15689>(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate);</CODE
15690></P
15691><P
15692></P
15693></DIV
15694><P
15695>Animates a texture by setting the texture scale and
15696 offset. The mode is a mask of <A
15697HREF="#AEN5770"
15698>texture animation
15699 constants</A
15700>. You can only have one texture animation on an
15701 object, calling llSetTextureAnim more than once on an object will
15702 reset it.</P
15703><P
15704>You can only do one traditional animation, <A
15705HREF="#AEN5770"
15706>ROTATE</A
15707> or <A
15708HREF="#AEN5770"
15709>SCALE</A
15710> at a time, you
15711 cannot combine masks. In the case of <A
15712HREF="#AEN5770"
15713>ROTATE</A
15714> or <A
15715HREF="#AEN5770"
15716>SCALE</A
15717>,
15718 <CODE
15719CLASS="parameter"
15720>sizex</CODE
15721> and <CODE
15722CLASS="parameter"
15723>sizey</CODE
15724> are
15725 ignored, and <CODE
15726CLASS="parameter"
15727>start</CODE
15728> and
15729 <CODE
15730CLASS="parameter"
15731>length</CODE
15732> are used as the start and length
15733 values of the animation. For rotation,
15734 <CODE
15735CLASS="parameter"
15736>start</CODE
15737> and <CODE
15738CLASS="parameter"
15739>length</CODE
15740> are
15741 in radians.</P
15742><P
15743>The <CODE
15744CLASS="parameter"
15745>face</CODE
15746> specified which face to
15747 animate. If <CODE
15748CLASS="parameter"
15749>face</CODE
15750> is <A
15751HREF="#AEN6026"
15752>ALL_SIDES</A
15753>, all textures on the
15754 object are animated. </P
15755><P
15756>The <CODE
15757CLASS="parameter"
15758>sizex</CODE
15759> and
15760 <CODE
15761CLASS="parameter"
15762>sizey</CODE
15763> describe the layout of the frames
15764 within the texture. <CODE
15765CLASS="parameter"
15766>sizex</CODE
15767> specifies how
15768 many horizontal frames and <CODE
15769CLASS="parameter"
15770>sizey</CODE
15771> is how
15772 many vertical frames.</P
15773><P
15774><CODE
15775CLASS="parameter"
15776>start</CODE
15777> is the frame number to begin
15778 the animation on. Frames are numbered from left to right, top to
15779 bottom, starting at 0.</P
15780><P
15781><CODE
15782CLASS="parameter"
15783>length</CODE
15784> is the number of frames to
15785 animate. 0 means to animate all frames after the start
15786 frame.</P
15787><P
15788><CODE
15789CLASS="parameter"
15790>rate</CODE
15791> is the frame rate to animate
15792 at. 1.0 means 1 frame per second, 10.0 means 10
15793 frames per second, etc.</P
15794></DIV
15795><DIV
15796CLASS="section"
15797><HR><H2
15798CLASS="section"
15799><A
15800NAME="AEN4141"
15801>A.251. llSetTimerEvent</A
15802></H2
15803><DIV
15804CLASS="funcsynopsis"
15805><P
15806></P
15807><A
15808NAME="AEN4143"
15809></A
15810><P
15811><CODE
15812><CODE
15813CLASS="FUNCDEF"
15814>llSetTimerEvent</CODE
15815>(float sec);</CODE
15816></P
15817><P
15818></P
15819></DIV
15820><P
15821>Sets the <A
15822HREF="#AEN5164"
15823>timer</A
15824> event to
15825 be triggered every <CODE
15826CLASS="parameter"
15827>sec</CODE
15828> seconds. Passing in
15829 0.0 stops further <A
15830HREF="#AEN5164"
15831>timer</A
15832>
15833 events.</P
15834></DIV
15835><DIV
15836CLASS="section"
15837><HR><H2
15838CLASS="section"
15839><A
15840NAME="AEN4153"
15841>A.252. llSetTorque</A
15842></H2
15843><DIV
15844CLASS="funcsynopsis"
15845><P
15846></P
15847><A
15848NAME="AEN4155"
15849></A
15850><P
15851><CODE
15852><CODE
15853CLASS="FUNCDEF"
15854>llSetTorque</CODE
15855>(vector torque, integer local);</CODE
15856></P
15857><P
15858></P
15859></DIV
15860><P
15861>If the object is physical, this function sets the
15862 <CODE
15863CLASS="parameter"
15864>torque</CODE
15865>. The vector is in local coordinates
15866 if local is <A
15867HREF="#AEN5248"
15868>TRUE</A
15869>, global if
15870 <A
15871HREF="#AEN5248"
15872>FALSE</A
15873>.</P
15874></DIV
15875><DIV
15876CLASS="section"
15877><HR><H2
15878CLASS="section"
15879><A
15880NAME="AEN4167"
15881>A.253. llSetTouchText</A
15882></H2
15883><DIV
15884CLASS="funcsynopsis"
15885><P
15886></P
15887><A
15888NAME="AEN4169"
15889></A
15890><P
15891><CODE
15892><CODE
15893CLASS="FUNCDEF"
15894>llSetTouchText</CODE
15895>(string text);</CODE
15896></P
15897><P
15898></P
15899></DIV
15900><P
15901>Displays <CODE
15902CLASS="parameter"
15903>text</CODE
15904> in viewer pie menu that
15905 acts as a touch.</P
15906></DIV
15907><DIV
15908CLASS="section"
15909><HR><H2
15910CLASS="section"
15911><A
15912NAME="AEN4177"
15913>A.254. llSetVehicleFlags</A
15914></H2
15915><DIV
15916CLASS="funcsynopsis"
15917><P
15918></P
15919><A
15920NAME="AEN4179"
15921></A
15922><P
15923><CODE
15924><CODE
15925CLASS="FUNCDEF"
15926>llSetVehicleFlags</CODE
15927>(integer flags);</CODE
15928></P
15929><P
15930></P
15931></DIV
15932><P
15933>Sets the vehicle <CODE
15934CLASS="parameter"
15935>flags</CODE
15936> to TRUE. Valid
15937 parameters can be found in the <A
15938HREF="#AEN6184"
15939>vehicle flags constants</A
15940>
15941 section.</P
15942></DIV
15943><DIV
15944CLASS="section"
15945><HR><H2
15946CLASS="section"
15947><A
15948NAME="AEN4188"
15949>A.255. llSetVehicleFloatParam</A
15950></H2
15951><DIV
15952CLASS="funcsynopsis"
15953><P
15954></P
15955><A
15956NAME="AEN4190"
15957></A
15958><P
15959><CODE
15960><CODE
15961CLASS="FUNCDEF"
15962>llSetVehicleFloatParam</CODE
15963>(integer param_name, float param_value);</CODE
15964></P
15965><P
15966></P
15967></DIV
15968><P
15969>Sets the vehicle floating point parameter
15970 <CODE
15971CLASS="parameter"
15972>param_name</CODE
15973> to
15974 <CODE
15975CLASS="parameter"
15976>param_value</CODE
15977>. Valid parameters and their
15978 expected values can be found in the <A
15979HREF="#AEN6065"
15980>vehicle parameter
15981 constants</A
15982> section.</P
15983></DIV
15984><DIV
15985CLASS="section"
15986><HR><H2
15987CLASS="section"
15988><A
15989NAME="AEN4202"
15990>A.256. llSetVehicleType</A
15991></H2
15992><DIV
15993CLASS="funcsynopsis"
15994><P
15995></P
15996><A
15997NAME="AEN4204"
15998></A
15999><P
16000><CODE
16001><CODE
16002CLASS="FUNCDEF"
16003>llSetVehicleType</CODE
16004>(integer type);</CODE
16005></P
16006><P
16007></P
16008></DIV
16009><P
16010>Activates the vehicle action and choose vehicle
16011 <CODE
16012CLASS="parameter"
16013>type</CODE
16014>. Valid types and an explanation of
16015 their characteristics can be found in the <A
16016HREF="#AEN6241"
16017>vehicle type constants</A
16018>
16019 section.</P
16020></DIV
16021><DIV
16022CLASS="section"
16023><HR><H2
16024CLASS="section"
16025><A
16026NAME="AEN4213"
16027>A.257. llSetVehicleRotationParam</A
16028></H2
16029><DIV
16030CLASS="funcsynopsis"
16031><P
16032></P
16033><A
16034NAME="AEN4215"
16035></A
16036><P
16037><CODE
16038><CODE
16039CLASS="FUNCDEF"
16040>llSetVehicleRotationParam</CODE
16041>(integer param_name, rotation param_value);</CODE
16042></P
16043><P
16044></P
16045></DIV
16046><P
16047>Sets the vehicle rotation parameter
16048 <CODE
16049CLASS="parameter"
16050>param_name</CODE
16051> to
16052 <CODE
16053CLASS="parameter"
16054>param_value</CODE
16055>. Valid parameters can be found
16056 in the <A
16057HREF="#AEN6065"
16058>vehicle parameter
16059 constants</A
16060> section.</P
16061></DIV
16062><DIV
16063CLASS="section"
16064><HR><H2
16065CLASS="section"
16066><A
16067NAME="AEN4227"
16068>A.258. llSetVehicleVectorParam</A
16069></H2
16070><DIV
16071CLASS="funcsynopsis"
16072><P
16073></P
16074><A
16075NAME="AEN4229"
16076></A
16077><P
16078><CODE
16079><CODE
16080CLASS="FUNCDEF"
16081>llSetVehicleVectorParam</CODE
16082>(integer param_name, vector param_value);</CODE
16083></P
16084><P
16085></P
16086></DIV
16087><P
16088>Sets the vehicle vector parameter
16089 <CODE
16090CLASS="parameter"
16091>param_name</CODE
16092> to
16093 <CODE
16094CLASS="parameter"
16095>param_value</CODE
16096>. Valid parameters can be found
16097 in the <A
16098HREF="#AEN6065"
16099>vehicle parameter
16100 constants</A
16101> section.</P
16102></DIV
16103><DIV
16104CLASS="section"
16105><HR><H2
16106CLASS="section"
16107><A
16108NAME="AEN4241"
16109>A.259. llShout</A
16110></H2
16111><DIV
16112CLASS="funcsynopsis"
16113><P
16114></P
16115><A
16116NAME="AEN4243"
16117></A
16118><P
16119><CODE
16120><CODE
16121CLASS="FUNCDEF"
16122>llShout</CODE
16123>(integer channel, string text);</CODE
16124></P
16125><P
16126></P
16127></DIV
16128><P
16129>Shout <CODE
16130CLASS="parameter"
16131>text</CODE
16132> on
16133 <CODE
16134CLASS="parameter"
16135>channel</CODE
16136>. Channel 0 is the public chat
16137 channel that all avatars see as chat text. Channels 1 to
16138 2,147,483,648 are private channels that are not sent to avatars
16139 but other scripts can listen for through the <A
16140HREF="#AEN2665"
16141>llListen</A
16142> api.</P
16143></DIV
16144><DIV
16145CLASS="section"
16146><HR><H2
16147CLASS="section"
16148><A
16149NAME="AEN4255"
16150>A.260. llSin</A
16151></H2
16152><DIV
16153CLASS="funcsynopsis"
16154><P
16155></P
16156><A
16157NAME="AEN4257"
16158></A
16159><P
16160><CODE
16161><CODE
16162CLASS="FUNCDEF"
16163>float llSin</CODE
16164>(float theta);</CODE
16165></P
16166><P
16167></P
16168></DIV
16169><P
16170>Returns the sine of <CODE
16171CLASS="parameter"
16172>theta</CODE
16173> in
16174 radians.</P
16175></DIV
16176><DIV
16177CLASS="section"
16178><HR><H2
16179CLASS="section"
16180><A
16181NAME="AEN4265"
16182>A.261. llSitTarget</A
16183></H2
16184><DIV
16185CLASS="funcsynopsis"
16186><P
16187></P
16188><A
16189NAME="AEN4267"
16190></A
16191><P
16192><CODE
16193><CODE
16194CLASS="FUNCDEF"
16195>llSitTarget</CODE
16196>(vector offset, rotation rot);</CODE
16197></P
16198><P
16199></P
16200></DIV
16201><P
16202>Set the sit location for this object. If
16203 <CODE
16204CLASS="parameter"
16205>offset</CODE
16206> == <A
16207HREF="#AEN6033"
16208>ZERO_VECTOR</A
16209>
16210 clear the sit target.</P
16211></DIV
16212><DIV
16213CLASS="section"
16214><HR><H2
16215CLASS="section"
16216><A
16217NAME="AEN4278"
16218>A.262. llSleep</A
16219></H2
16220><DIV
16221CLASS="funcsynopsis"
16222><P
16223></P
16224><A
16225NAME="AEN4280"
16226></A
16227><P
16228><CODE
16229><CODE
16230CLASS="FUNCDEF"
16231>llSleep</CODE
16232>(float sec);</CODE
16233></P
16234><P
16235></P
16236></DIV
16237><P
16238>Puts the script to sleep for <CODE
16239CLASS="parameter"
16240>sec</CODE
16241>
16242 seconds.</P
16243></DIV
16244><DIV
16245CLASS="section"
16246><HR><H2
16247CLASS="section"
16248><A
16249NAME="AEN4288"
16250>A.263. llSqrt</A
16251></H2
16252><DIV
16253CLASS="funcsynopsis"
16254><P
16255></P
16256><A
16257NAME="AEN4290"
16258></A
16259><P
16260><CODE
16261><CODE
16262CLASS="FUNCDEF"
16263>float llSqrt</CODE
16264>(float val);</CODE
16265></P
16266><P
16267></P
16268></DIV
16269><P
16270>Returns the square root of <CODE
16271CLASS="parameter"
16272>val</CODE
16273>. If
16274 <CODE
16275CLASS="parameter"
16276>val</CODE
16277> is less than 0.0, this function returns
16278 0.0 and raises a math runtime error.</P
16279></DIV
16280><DIV
16281CLASS="section"
16282><HR><H2
16283CLASS="section"
16284><A
16285NAME="AEN4299"
16286>A.264. llStartAnimation</A
16287></H2
16288><DIV
16289CLASS="funcsynopsis"
16290><P
16291></P
16292><A
16293NAME="AEN4301"
16294></A
16295><P
16296><CODE
16297><CODE
16298CLASS="FUNCDEF"
16299>llStartAnimation</CODE
16300>(string anim);</CODE
16301></P
16302><P
16303></P
16304></DIV
16305><P
16306>This function starts animation <CODE
16307CLASS="parameter"
16308>anim</CODE
16309>
16310 for the avatar that owns the object.</P
16311><P
16312></P
16313><DIV
16314CLASS="variablelist"
16315><P
16316><B
16317>Valid strings for <CODE
16318CLASS="parameter"
16319>anim</CODE
16320></B
16321></P
16322><DL
16323><DT
16324>hold_R_bazooka, hold_R_handgun, hold_R_rifle</DT
16325><DD
16326><P
16327>Holds the appropriately shaped weapon in the
16328 right hand. Automatically switches to the aims (below) when
16329 user enters mouse look</P
16330></DD
16331><DT
16332>aim_R_bazooka, aim_R_handgun, aim_R_rifle</DT
16333><DD
16334><P
16335>Aims the appropriately shaped weapon along the
16336 direction the avatar is looking.</P
16337></DD
16338><DT
16339>away</DT
16340><DD
16341><P
16342>Flops over in "away from keyboard"
16343 state.</P
16344></DD
16345><DT
16346>backflip</DT
16347><DD
16348><P
16349>Performs a backflip.</P
16350></DD
16351><DT
16352>bow</DT
16353><DD
16354><P
16355>Bows at waist.</P
16356></DD
16357><DT
16358>brush</DT
16359><DD
16360><P
16361>Brushes dirt from shirt.</P
16362></DD
16363><DT
16364>clap</DT
16365><DD
16366><P
16367>Applauds.</P
16368></DD
16369><DT
16370>courtbow</DT
16371><DD
16372><P
16373>Bows with a courtly flourish.</P
16374></DD
16375><DT
16376>crouch</DT
16377><DD
16378><P
16379>Crouches in place.</P
16380></DD
16381><DT
16382>crouchwalk</DT
16383><DD
16384><P
16385>Walks in place while crouching.</P
16386></DD
16387><DT
16388>dance1, dance2, dance3, dance4, dance5, dance6, dance7, dance8</DT
16389><DD
16390><P
16391>Various dance maneuvers.</P
16392></DD
16393><DT
16394>falldown</DT
16395><DD
16396><P
16397>Freefall falling animation.</P
16398></DD
16399><DT
16400>female_walk</DT
16401><DD
16402><P
16403>Walks with hip sway.</P
16404></DD
16405><DT
16406>fly</DT
16407><DD
16408><P
16409>Flies forward.</P
16410></DD
16411><DT
16412>flyslow</DT
16413><DD
16414><P
16415>Flies forward at a less aggressive
16416 angle.</P
16417></DD
16418><DT
16419>hello</DT
16420><DD
16421><P
16422>Waves.</P
16423></DD
16424><DT
16425>hold_throw_R</DT
16426><DD
16427><P
16428>Hold object in right hand, prepared to throw
16429 it.</P
16430></DD
16431><DT
16432>hover</DT
16433><DD
16434><P
16435>Hovers in place.</P
16436></DD
16437><DT
16438>hover_down</DT
16439><DD
16440><P
16441>Pretends to hover straight
16442 down.</P
16443></DD
16444><DT
16445>hover_up</DT
16446><DD
16447><P
16448>Pretends to hover straight
16449 up.</P
16450></DD
16451><DT
16452>jump</DT
16453><DD
16454><P
16455>Midair jump position.</P
16456></DD
16457><DT
16458>kick_roundhouse_R</DT
16459><DD
16460><P
16461>Roundhouse kick with right
16462 leg.</P
16463></DD
16464><DT
16465>land</DT
16466><DD
16467><P
16468>Lands after flying.</P
16469></DD
16470><DT
16471>prejump</DT
16472><DD
16473><P
16474>Prepares to jump.</P
16475></DD
16476><DT
16477>punch_L</DT
16478><DD
16479><P
16480>Punch with left hand.</P
16481></DD
16482><DT
16483>punch_R</DT
16484><DD
16485><P
16486>Punch with right hand.</P
16487></DD
16488><DT
16489>punch_onetwo</DT
16490><DD
16491><P
16492>Punch with one hand then the
16493 other.</P
16494></DD
16495><DT
16496>run</DT
16497><DD
16498><P
16499>Runs in place.</P
16500></DD
16501><DT
16502>salute</DT
16503><DD
16504><P
16505>Salutes with right hand.</P
16506></DD
16507><DT
16508>sit</DT
16509><DD
16510><P
16511>Sits on object at knee
16512 height.</P
16513></DD
16514><DT
16515>sit_ground</DT
16516><DD
16517><P
16518>Sits down on ground.</P
16519></DD
16520><DT
16521>slowwalk</DT
16522><DD
16523><P
16524>Walks in place slowly.</P
16525></DD
16526><DT
16527>smoke_idle</DT
16528><DD
16529><P
16530>Leans on imaginary prop while holding
16531 cigarette.</P
16532></DD
16533><DT
16534>smoke_inhale</DT
16535><DD
16536><P
16537>Leans on imaginary prop and smokes a
16538 cigarette.</P
16539></DD
16540><DT
16541>smoke_throw_down</DT
16542><DD
16543><P
16544>Leans on imaginary prop, throws down a
16545 cigarette, and stamps it out.</P
16546></DD
16547><DT
16548>snapshot</DT
16549><DD
16550><P
16551>Pantomimes taking a picture.</P
16552></DD
16553><DT
16554>soft_land</DT
16555><DD
16556><P
16557>Stumbles a bit as if
16558 landing.</P
16559></DD
16560><DT
16561>stand</DT
16562><DD
16563><P
16564>Stands in place.</P
16565></DD
16566><DT
16567>standup</DT
16568><DD
16569><P
16570>Falls on face and stands up.</P
16571></DD
16572><DT
16573>stride</DT
16574><DD
16575><P
16576>Legs extended as if stepping off of a
16577 ledge.</P
16578></DD
16579><DT
16580>sword_strike_R</DT
16581><DD
16582><P
16583>Strike with sword in right
16584 hand.</P
16585></DD
16586><DT
16587>talk</DT
16588><DD
16589><P
16590>Head moves as if talking.</P
16591></DD
16592><DT
16593>throw_R</DT
16594><DD
16595><P
16596>Throws object in right hand.</P
16597></DD
16598><DT
16599>tryon_shirt</DT
16600><DD
16601><P
16602>Turns around and models a new
16603 shirt.</P
16604></DD
16605><DT
16606>turnleft</DT
16607><DD
16608><P
16609>Pretends to turn left.</P
16610></DD
16611><DT
16612>turnright</DT
16613><DD
16614><P
16615>Pretends to turn right.</P
16616></DD
16617><DT
16618>type</DT
16619><DD
16620><P
16621>Makes typing motion.</P
16622></DD
16623><DT
16624>uphillwalk</DT
16625><DD
16626><P
16627>Walks uphill in place.</P
16628></DD
16629><DT
16630>walk</DT
16631><DD
16632><P
16633>Walks in place.</P
16634></DD
16635><DT
16636>whisper</DT
16637><DD
16638><P
16639>Whispers behind hand.</P
16640></DD
16641><DT
16642>whistle</DT
16643><DD
16644><P
16645>Whistles with hands in
16646 mouth.</P
16647></DD
16648><DT
16649>yell</DT
16650><DD
16651><P
16652>Shouts between cupped hands.</P
16653></DD
16654></DL
16655></DIV
16656></DIV
16657><DIV
16658CLASS="section"
16659><HR><H2
16660CLASS="section"
16661><A
16662NAME="AEN4531"
16663>A.265. llStopAnimation</A
16664></H2
16665><DIV
16666CLASS="funcsynopsis"
16667><P
16668></P
16669><A
16670NAME="AEN4533"
16671></A
16672><P
16673><CODE
16674><CODE
16675CLASS="FUNCDEF"
16676>llStopAnimation</CODE
16677>(string anim);</CODE
16678></P
16679><P
16680></P
16681></DIV
16682><P
16683>Stop animation <CODE
16684CLASS="parameter"
16685>anim</CODE
16686> for avatar that
16687 owns object.</P
16688></DIV
16689><DIV
16690CLASS="section"
16691><HR><H2
16692CLASS="section"
16693><A
16694NAME="AEN4541"
16695>A.266. llStopHover</A
16696></H2
16697><DIV
16698CLASS="funcsynopsis"
16699><P
16700></P
16701><A
16702NAME="AEN4543"
16703></A
16704><P
16705><CODE
16706><CODE
16707CLASS="FUNCDEF"
16708>llStopHover</CODE
16709>(void);</CODE
16710></P
16711><P
16712></P
16713></DIV
16714><P
16715>Stop hover to a height.</P
16716></DIV
16717><DIV
16718CLASS="section"
16719><HR><H2
16720CLASS="section"
16721><A
16722NAME="AEN4549"
16723>A.267. llStopLookAt</A
16724></H2
16725><DIV
16726CLASS="funcsynopsis"
16727><P
16728></P
16729><A
16730NAME="AEN4551"
16731></A
16732><P
16733><CODE
16734><CODE
16735CLASS="FUNCDEF"
16736>llStopLookAt</CODE
16737>(void);</CODE
16738></P
16739><P
16740></P
16741></DIV
16742><P
16743>Stop causing object to look at target.</P
16744></DIV
16745><DIV
16746CLASS="section"
16747><HR><H2
16748CLASS="section"
16749><A
16750NAME="AEN4557"
16751>A.268. llStopMoveToTarget</A
16752></H2
16753><DIV
16754CLASS="funcsynopsis"
16755><P
16756></P
16757><A
16758NAME="AEN4559"
16759></A
16760><P
16761><CODE
16762><CODE
16763CLASS="FUNCDEF"
16764>llStopMoveToTarget</CODE
16765>(void);</CODE
16766></P
16767><P
16768></P
16769></DIV
16770><P
16771>Stops critically damped motion.</P
16772></DIV
16773><DIV
16774CLASS="section"
16775><HR><H2
16776CLASS="section"
16777><A
16778NAME="AEN4565"
16779>A.269. llStopPointAt</A
16780></H2
16781><DIV
16782CLASS="funcsynopsis"
16783><P
16784></P
16785><A
16786NAME="AEN4567"
16787></A
16788><P
16789><CODE
16790><CODE
16791CLASS="FUNCDEF"
16792>llStopPointAt</CODE
16793>(void);</CODE
16794></P
16795><P
16796></P
16797></DIV
16798><P
16799>Stop avatar that owns object pointing.</P
16800></DIV
16801><DIV
16802CLASS="section"
16803><HR><H2
16804CLASS="section"
16805><A
16806NAME="AEN4573"
16807>A.270. llStopSound</A
16808></H2
16809><DIV
16810CLASS="funcsynopsis"
16811><P
16812></P
16813><A
16814NAME="AEN4575"
16815></A
16816><P
16817><CODE
16818><CODE
16819CLASS="FUNCDEF"
16820>llStopSound</CODE
16821>(void);</CODE
16822></P
16823><P
16824></P
16825></DIV
16826><P
16827>Stops a currently playing attached sound started with <A
16828HREF="#AEN3181"
16829>llPlaySound</A
16830> or <A
16831HREF="#AEN2773"
16832>llLoopSound</A
16833>. Has no effect on
16834 sounds started with <A
16835HREF="#AEN4709"
16836>llTriggerSound</A
16837>.</P
16838></DIV
16839><DIV
16840CLASS="section"
16841><HR><H2
16842CLASS="section"
16843><A
16844NAME="AEN4584"
16845>A.271. llStringLength</A
16846></H2
16847><DIV
16848CLASS="funcsynopsis"
16849><P
16850></P
16851><A
16852NAME="AEN4586"
16853></A
16854><P
16855><CODE
16856><CODE
16857CLASS="FUNCDEF"
16858>integer llStringLength</CODE
16859>(string src);</CODE
16860></P
16861><P
16862></P
16863></DIV
16864><P
16865>Returns the number of characters in
16866 <CODE
16867CLASS="parameter"
16868>src</CODE
16869>.</P
16870></DIV
16871><DIV
16872CLASS="section"
16873><HR><H2
16874CLASS="section"
16875><A
16876NAME="AEN4594"
16877>A.272. llSubStringIndex</A
16878></H2
16879><DIV
16880CLASS="funcsynopsis"
16881><P
16882></P
16883><A
16884NAME="AEN4596"
16885></A
16886><P
16887><CODE
16888><CODE
16889CLASS="FUNCDEF"
16890>integer llSubStringIndex</CODE
16891>(string source, string pattern);</CODE
16892></P
16893><P
16894></P
16895></DIV
16896><P
16897>Finds index in source where pattern first appears. Returns
16898 -1 if no match is found.</P
16899></DIV
16900><DIV
16901CLASS="section"
16902><HR><H2
16903CLASS="section"
16904><A
16905NAME="AEN4605"
16906>A.273. llStringToBase64</A
16907></H2
16908><DIV
16909CLASS="funcsynopsis"
16910><P
16911></P
16912><A
16913NAME="AEN4607"
16914></A
16915><P
16916><CODE
16917><CODE
16918CLASS="FUNCDEF"
16919>string llStringToBase64</CODE
16920>(string str);</CODE
16921></P
16922><P
16923></P
16924></DIV
16925><P
16926>Converts a string to the Base 64 representation of the string.</P
16927></DIV
16928><DIV
16929CLASS="section"
16930><HR><H2
16931CLASS="section"
16932><A
16933NAME="AEN4614"
16934>A.274. llTakeControls</A
16935></H2
16936><DIV
16937CLASS="funcsynopsis"
16938><P
16939></P
16940><A
16941NAME="AEN4616"
16942></A
16943><P
16944><CODE
16945><CODE
16946CLASS="FUNCDEF"
16947>llTakeControls</CODE
16948>(integer controls, integer accept, integer pass_on);</CODE
16949></P
16950><P
16951></P
16952></DIV
16953><P
16954>If (<CODE
16955CLASS="parameter"
16956>accept</CODE
16957> ==
16958 (<CODE
16959CLASS="parameter"
16960>controls</CODE
16961> &#38; input)), send input to
16962 object. If the boolean <CODE
16963CLASS="parameter"
16964>pass_on</CODE
16965> is <A
16966HREF="#AEN5248"
16967>TRUE</A
16968>, also send input to
16969 avatar.</P
16970></DIV
16971><DIV
16972CLASS="section"
16973><HR><H2
16974CLASS="section"
16975><A
16976NAME="AEN4631"
16977>A.275. llTan</A
16978></H2
16979><DIV
16980CLASS="funcsynopsis"
16981><P
16982></P
16983><A
16984NAME="AEN4633"
16985></A
16986><P
16987><CODE
16988><CODE
16989CLASS="FUNCDEF"
16990>float llTan</CODE
16991>(float theta);</CODE
16992></P
16993><P
16994></P
16995></DIV
16996><P
16997>Returns the tangent of <CODE
16998CLASS="parameter"
16999>theta</CODE
17000>
17001 radians.</P
17002></DIV
17003><DIV
17004CLASS="section"
17005><HR><H2
17006CLASS="section"
17007><A
17008NAME="AEN4641"
17009>A.276. llTarget</A
17010></H2
17011><DIV
17012CLASS="funcsynopsis"
17013><P
17014></P
17015><A
17016NAME="AEN4643"
17017></A
17018><P
17019><CODE
17020><CODE
17021CLASS="FUNCDEF"
17022>integer llTarget</CODE
17023>(vector position, float range);</CODE
17024></P
17025><P
17026></P
17027></DIV
17028><P
17029>Set object position within <CODE
17030CLASS="parameter"
17031>range</CODE
17032> of
17033 <CODE
17034CLASS="parameter"
17035>position</CODE
17036> as a target and returns an integer
17037 ID for the target.</P
17038></DIV
17039><DIV
17040CLASS="section"
17041><HR><H2
17042CLASS="section"
17043><A
17044NAME="AEN4654"
17045>A.277. llTargetOmega</A
17046></H2
17047><DIV
17048CLASS="funcsynopsis"
17049><P
17050></P
17051><A
17052NAME="AEN4656"
17053></A
17054><P
17055><CODE
17056><CODE
17057CLASS="FUNCDEF"
17058>llTargetOmega</CODE
17059>(vector axis, float spinrate, float gain);</CODE
17060></P
17061><P
17062></P
17063></DIV
17064><P
17065>Attempt to spin at <CODE
17066CLASS="parameter"
17067>spinrate</CODE
17068> with
17069 strength <CODE
17070CLASS="parameter"
17071>gain</CODE
17072> on
17073 <CODE
17074CLASS="parameter"
17075>axis</CODE
17076>. A <CODE
17077CLASS="parameter"
17078>spinrate</CODE
17079> of
17080 0.0 cancels the spin. This function works in object local
17081 coordinates for child objects and works in world coordinates for
17082 root objects.</P
17083></DIV
17084><DIV
17085CLASS="section"
17086><HR><H2
17087CLASS="section"
17088><A
17089NAME="AEN4671"
17090>A.278. llTargetRemove</A
17091></H2
17092><DIV
17093CLASS="funcsynopsis"
17094><P
17095></P
17096><A
17097NAME="AEN4673"
17098></A
17099><P
17100><CODE
17101><CODE
17102CLASS="FUNCDEF"
17103>llTargetRemove</CODE
17104>(integer tnumber);</CODE
17105></P
17106><P
17107></P
17108></DIV
17109><P
17110>Remove target number <CODE
17111CLASS="parameter"
17112>tnumber</CODE
17113>.</P
17114></DIV
17115><DIV
17116CLASS="section"
17117><HR><H2
17118CLASS="section"
17119><A
17120NAME="AEN4681"
17121>A.279. llTeleportAgentHome</A
17122></H2
17123><DIV
17124CLASS="funcsynopsis"
17125><P
17126></P
17127><A
17128NAME="AEN4683"
17129></A
17130><P
17131><CODE
17132><CODE
17133CLASS="FUNCDEF"
17134>llTeleportAgentHome</CODE
17135>(key id);</CODE
17136></P
17137><P
17138></P
17139></DIV
17140><P
17141>Teleport agent on the owner's land to agent's home
17142 location.</P
17143></DIV
17144><DIV
17145CLASS="section"
17146><HR><H2
17147CLASS="section"
17148><A
17149NAME="AEN4690"
17150>A.280. llToLower</A
17151></H2
17152><DIV
17153CLASS="funcsynopsis"
17154><P
17155></P
17156><A
17157NAME="AEN4692"
17158></A
17159><P
17160><CODE
17161><CODE
17162CLASS="FUNCDEF"
17163>llToLower</CODE
17164>();</CODE
17165></P
17166><P
17167></P
17168></DIV
17169><P
17170></P
17171></DIV
17172><DIV
17173CLASS="section"
17174><HR><H2
17175CLASS="section"
17176><A
17177NAME="AEN4699"
17178>A.281. llToUpper</A
17179></H2
17180><DIV
17181CLASS="funcsynopsis"
17182><P
17183></P
17184><A
17185NAME="AEN4701"
17186></A
17187><P
17188><CODE
17189><CODE
17190CLASS="FUNCDEF"
17191>string llToUpper</CODE
17192>(string src);</CODE
17193></P
17194><P
17195></P
17196></DIV
17197><P
17198>Returns <CODE
17199CLASS="parameter"
17200>src</CODE
17201> in all lower case.</P
17202></DIV
17203><DIV
17204CLASS="section"
17205><HR><H2
17206CLASS="section"
17207><A
17208NAME="AEN4709"
17209>A.282. llTriggerSound</A
17210></H2
17211><DIV
17212CLASS="funcsynopsis"
17213><P
17214></P
17215><A
17216NAME="AEN4711"
17217></A
17218><P
17219><CODE
17220><CODE
17221CLASS="FUNCDEF"
17222>llTriggerSound</CODE
17223>(string sound, float volume);</CODE
17224></P
17225><P
17226></P
17227></DIV
17228><P
17229>Plays a transient sound NOT attached to an object. The sound
17230 plays from a stationary position located at the center of the
17231 object at the time of the trigger. There is no limit to the number
17232 of triggered sounds which can be generated by an object, and
17233 calling <A
17234HREF="#AEN4709"
17235>llTriggerSound</A
17236>
17237 does not affect the attached sounds created by <A
17238HREF="#AEN3181"
17239>llPlaySound</A
17240> and <A
17241HREF="#AEN2773"
17242>llLoopSound</A
17243>. This is very useful
17244 for things like collision noises, explosions, etc. There is no
17245 way to stop or alter the volume of a sound triggered by
17246 this function.</P
17247></DIV
17248><DIV
17249CLASS="section"
17250><HR><H2
17251CLASS="section"
17252><A
17253NAME="AEN4723"
17254>A.283. llTriggerSoundLimited</A
17255></H2
17256><DIV
17257CLASS="funcsynopsis"
17258><P
17259></P
17260><A
17261NAME="AEN4725"
17262></A
17263><P
17264><CODE
17265><CODE
17266CLASS="FUNCDEF"
17267>llTriggerSoundLimited</CODE
17268>(string sound, float volume, vector tne, vector bsw);</CODE
17269></P
17270><P
17271></P
17272></DIV
17273><P
17274>Plays a transient sound NOT attached to an object with its
17275 audible range limited by the axis aligned bounding box define by
17276 <CODE
17277CLASS="parameter"
17278>tne</CODE
17279> (top-north-eash) and
17280 <CODE
17281CLASS="parameter"
17282>bsw</CODE
17283> (bottom-south-west). The sound plays
17284 from a stationary position located at the center of the object at
17285 the time of the trigger. There is no limit to the number of
17286 triggered sounds which can be generated by an object, and calling
17287 <A
17288HREF="#AEN4709"
17289>llTriggerSound</A
17290> does not
17291 affect the attached sounds created by <A
17292HREF="#AEN3181"
17293>llPlaySound</A
17294> and <A
17295HREF="#AEN2773"
17296>llLoopSound</A
17297>. This is very useful
17298 for things like collision noises, explosions, etc. There is no way
17299 to stop or alter the volume of a sound triggered by this
17300 function.</P
17301></DIV
17302><DIV
17303CLASS="section"
17304><HR><H2
17305CLASS="section"
17306><A
17307NAME="AEN4743"
17308>A.284. llUnescapeURL</A
17309></H2
17310><DIV
17311CLASS="funcsynopsis"
17312><P
17313></P
17314><A
17315NAME="AEN4745"
17316></A
17317><P
17318><CODE
17319><CODE
17320CLASS="FUNCDEF"
17321>string llUnescapeURL</CODE
17322>(string url);</CODE
17323></P
17324><P
17325></P
17326></DIV
17327><P
17328>Returns the string that is the URL unescaped version of <CODE
17329CLASS="parameter"
17330>url</CODE
17331>,
17332 replacing %20 with spaces etc.</P
17333></DIV
17334><DIV
17335CLASS="section"
17336><HR><H2
17337CLASS="section"
17338><A
17339NAME="AEN4753"
17340>A.285. llUnSit</A
17341></H2
17342><DIV
17343CLASS="funcsynopsis"
17344><P
17345></P
17346><A
17347NAME="AEN4755"
17348></A
17349><P
17350><CODE
17351><CODE
17352CLASS="FUNCDEF"
17353>llUnSit</CODE
17354>(key id);</CODE
17355></P
17356><P
17357></P
17358></DIV
17359><P
17360>If agent identified by <CODE
17361CLASS="parameter"
17362>id</CODE
17363> is sitting
17364 on the object the script is attached to or is over land owned by
17365 the objects owner, the agent is forced to stand up.</P
17366></DIV
17367><DIV
17368CLASS="section"
17369><HR><H2
17370CLASS="section"
17371><A
17372NAME="AEN4763"
17373>A.286. llVecDist</A
17374></H2
17375><DIV
17376CLASS="funcsynopsis"
17377><P
17378></P
17379><A
17380NAME="AEN4765"
17381></A
17382><P
17383><CODE
17384><CODE
17385CLASS="FUNCDEF"
17386>float llVecDist</CODE
17387>(vector a, vector b);</CODE
17388></P
17389><P
17390></P
17391></DIV
17392><P
17393>Returns the distance from <CODE
17394CLASS="parameter"
17395>a</CODE
17396> to
17397 <CODE
17398CLASS="parameter"
17399>b</CODE
17400></P
17401></DIV
17402><DIV
17403CLASS="section"
17404><HR><H2
17405CLASS="section"
17406><A
17407NAME="AEN4776"
17408>A.287. llVecMag</A
17409></H2
17410><DIV
17411CLASS="funcsynopsis"
17412><P
17413></P
17414><A
17415NAME="AEN4778"
17416></A
17417><P
17418><CODE
17419><CODE
17420CLASS="FUNCDEF"
17421>float llVecMag</CODE
17422>(vector vec);</CODE
17423></P
17424><P
17425></P
17426></DIV
17427><P
17428>Returns the magnitude of <CODE
17429CLASS="parameter"
17430>vec</CODE
17431>.</P
17432></DIV
17433><DIV
17434CLASS="section"
17435><HR><H2
17436CLASS="section"
17437><A
17438NAME="AEN4786"
17439>A.288. llVecNorm</A
17440></H2
17441><DIV
17442CLASS="funcsynopsis"
17443><P
17444></P
17445><A
17446NAME="AEN4788"
17447></A
17448><P
17449><CODE
17450><CODE
17451CLASS="FUNCDEF"
17452>vector llVecNorm</CODE
17453>(vector vec);</CODE
17454></P
17455><P
17456></P
17457></DIV
17458><P
17459>Returns normalized <CODE
17460CLASS="parameter"
17461>vec</CODE
17462>.</P
17463></DIV
17464><DIV
17465CLASS="section"
17466><HR><H2
17467CLASS="section"
17468><A
17469NAME="AEN4796"
17470>A.289. llVolumeDetect</A
17471></H2
17472><DIV
17473CLASS="funcsynopsis"
17474><P
17475></P
17476><A
17477NAME="AEN4798"
17478></A
17479><P
17480><CODE
17481><CODE
17482CLASS="FUNCDEF"
17483>llVolumeDetect</CODE
17484>(integer detect);</CODE
17485></P
17486><P
17487></P
17488></DIV
17489><P
17490>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
17491></DIV
17492><DIV
17493CLASS="section"
17494><HR><H2
17495CLASS="section"
17496><A
17497NAME="AEN4805"
17498>A.290. llWater</A
17499></H2
17500><DIV
17501CLASS="funcsynopsis"
17502><P
17503></P
17504><A
17505NAME="AEN4807"
17506></A
17507><P
17508><CODE
17509><CODE
17510CLASS="FUNCDEF"
17511>float llWater</CODE
17512>(vector offset);</CODE
17513></P
17514><P
17515></P
17516></DIV
17517><P
17518>Returns the water height at the object position +
17519 <CODE
17520CLASS="parameter"
17521>offset</CODE
17522>.</P
17523></DIV
17524><DIV
17525CLASS="section"
17526><HR><H2
17527CLASS="section"
17528><A
17529NAME="AEN4815"
17530>A.291. llWhisper</A
17531></H2
17532><DIV
17533CLASS="funcsynopsis"
17534><P
17535></P
17536><A
17537NAME="AEN4817"
17538></A
17539><P
17540><CODE
17541><CODE
17542CLASS="FUNCDEF"
17543>llWhisper</CODE
17544>(integer channel, string text);</CODE
17545></P
17546><P
17547></P
17548></DIV
17549><P
17550>Whisper <CODE
17551CLASS="parameter"
17552>text</CODE
17553> on
17554 <CODE
17555CLASS="parameter"
17556>channel</CODE
17557>. Channel 0 is the public chat
17558 channel that all avatars see as chat text. Channels 1 to
17559 2,147,483,648 are private channels that are not sent to avatars
17560 but other scripts can listen for through the <A
17561HREF="#AEN2665"
17562>llListen</A
17563> api.</P
17564></DIV
17565><DIV
17566CLASS="section"
17567><HR><H2
17568CLASS="section"
17569><A
17570NAME="AEN4829"
17571>A.292. llWind</A
17572></H2
17573><DIV
17574CLASS="funcsynopsis"
17575><P
17576></P
17577><A
17578NAME="AEN4831"
17579></A
17580><P
17581><CODE
17582><CODE
17583CLASS="FUNCDEF"
17584>vector llWind</CODE
17585>(vector offset);</CODE
17586></P
17587><P
17588></P
17589></DIV
17590><P
17591>Returns the wind velocity below the object position +
17592 <CODE
17593CLASS="parameter"
17594>offset</CODE
17595>.</P
17596></DIV
17597><DIV
17598CLASS="section"
17599><HR><H2
17600CLASS="section"
17601><A
17602NAME="AEN4839"
17603>A.293. llXorBase64Strings</A
17604></H2
17605><DIV
17606CLASS="funcsynopsis"
17607><P
17608></P
17609><A
17610NAME="AEN4841"
17611></A
17612><P
17613><CODE
17614><CODE
17615CLASS="FUNCDEF"
17616>string llXorBase64Strings</CODE
17617>(string s1, string s2);</CODE
17618></P
17619><P
17620></P
17621></DIV
17622><P
17623>Performs an exclusive or on two Base 64 strings and returns
17624 a Base 64 string. The <CODE
17625CLASS="parameter"
17626>s2</CODE
17627> parameter repeats if
17628 it is shorter than <CODE
17629CLASS="parameter"
17630>s1</CODE
17631>.</P
17632></DIV
17633></DIV
17634><DIV
17635CLASS="appendix"
17636><HR><H1
17637><A
17638NAME="AEN4852"
17639></A
17640>Appendix B. Events</H1
17641><P
17642>Every state must have at least one handler. You can choose to
17643 handle an event by defining one of the reserved event
17644 handlers named here.</P
17645><DIV
17646CLASS="section"
17647><HR><H2
17648CLASS="section"
17649><A
17650NAME="AEN4855"
17651>B.1. at_rot_target</A
17652></H2
17653><DIV
17654CLASS="funcsynopsis"
17655><P
17656></P
17657><A
17658NAME="AEN4857"
17659></A
17660><P
17661><CODE
17662><CODE
17663CLASS="FUNCDEF"
17664>at_rot_target</CODE
17665>(integer number, rotation target_rotation, rotation our_rotation);</CODE
17666></P
17667><P
17668></P
17669></DIV
17670><P
17671>This event is triggered when a script comes within a defined
17672 angle of a target rotation. The range is set by a call to <A
17673HREF="#AEN3576"
17674>llRotTarget</A
17675>.</P
17676></DIV
17677><DIV
17678CLASS="section"
17679><HR><H2
17680CLASS="section"
17681><A
17682NAME="AEN4869"
17683>B.2. at_target</A
17684></H2
17685><DIV
17686CLASS="funcsynopsis"
17687><P
17688></P
17689><A
17690NAME="AEN4871"
17691></A
17692><P
17693><CODE
17694><CODE
17695CLASS="FUNCDEF"
17696>not_at_target</CODE
17697>(integer number, vector target_position, vector our_position);</CODE
17698></P
17699><P
17700></P
17701></DIV
17702><P
17703>This event is triggered when a script comes within a defined
17704 range from a target position. The range and position are set by a
17705 call to <A
17706HREF="#AEN4641"
17707>llTarget</A
17708>.</P
17709></DIV
17710><DIV
17711CLASS="section"
17712><HR><H2
17713CLASS="section"
17714><A
17715NAME="AEN4883"
17716>B.3. attach</A
17717></H2
17718><DIV
17719CLASS="funcsynopsis"
17720><P
17721></P
17722><A
17723NAME="AEN4885"
17724></A
17725><P
17726><CODE
17727><CODE
17728CLASS="FUNCDEF"
17729>attach</CODE
17730>(key attached);</CODE
17731></P
17732><P
17733></P
17734></DIV
17735><P
17736>This event is triggered whenever a object with this script
17737 is attached or detached from an avatar. If it is attached,
17738 attached is the key of the avatar it is attached to, otherwise
17739 attached is <A
17740HREF="#AEN6023"
17741>NULL_KEY</A
17742>.</P
17743></DIV
17744><DIV
17745CLASS="section"
17746><HR><H2
17747CLASS="section"
17748><A
17749NAME="AEN4893"
17750>B.4. changed</A
17751></H2
17752><DIV
17753CLASS="funcsynopsis"
17754><P
17755></P
17756><A
17757NAME="AEN4895"
17758></A
17759><P
17760><CODE
17761><CODE
17762CLASS="FUNCDEF"
17763>changed</CODE
17764>(integer changed);</CODE
17765></P
17766><P
17767></P
17768></DIV
17769><P
17770>Triggered when various events change the object. The
17771 <CODE
17772CLASS="parameter"
17773>changed</CODE
17774> will be a bitfield of <A
17775HREF="#AEN5643"
17776>change constants</A
17777>.</P
17778></DIV
17779><DIV
17780CLASS="section"
17781><HR><H2
17782CLASS="section"
17783><A
17784NAME="AEN4904"
17785>B.5. collision</A
17786></H2
17787><DIV
17788CLASS="funcsynopsis"
17789><P
17790></P
17791><A
17792NAME="AEN4906"
17793></A
17794><P
17795><CODE
17796><CODE
17797CLASS="FUNCDEF"
17798>collision</CODE
17799>(integer total_number);</CODE
17800></P
17801><P
17802></P
17803></DIV
17804><P
17805>This event is raised while another object is colliding with
17806 the object the script is attached to. The number of detected
17807 objects is passed to the script. Information on those objects may
17808 be gathered via the <A
17809HREF="#lib_lldetected"
17810>llDetected*</A
17811> library
17812 functions. (Collisions are also generated if a user walks into an
17813 object.)</P
17814></DIV
17815><DIV
17816CLASS="section"
17817><HR><H2
17818CLASS="section"
17819><A
17820NAME="AEN4914"
17821>B.6. collision_end</A
17822></H2
17823><DIV
17824CLASS="funcsynopsis"
17825><P
17826></P
17827><A
17828NAME="AEN4916"
17829></A
17830><P
17831><CODE
17832><CODE
17833CLASS="FUNCDEF"
17834>collision_end</CODE
17835>(integer total_number);</CODE
17836></P
17837><P
17838></P
17839></DIV
17840><P
17841>This event is raised when another object stops colliding
17842 with the object the script is attached to. The number of detected
17843 objects is passed to the script. Information on those objects may
17844 be gathered via the <A
17845HREF="#lib_lldetected"
17846>llDetected*</A
17847> library
17848 functions. (Collisions are also generated if a user walks into an
17849 object.)</P
17850></DIV
17851><DIV
17852CLASS="section"
17853><HR><H2
17854CLASS="section"
17855><A
17856NAME="AEN4924"
17857>B.7. collision_start</A
17858></H2
17859><DIV
17860CLASS="funcsynopsis"
17861><P
17862></P
17863><A
17864NAME="AEN4926"
17865></A
17866><P
17867><CODE
17868><CODE
17869CLASS="FUNCDEF"
17870>collision_start</CODE
17871>(integer total_number);</CODE
17872></P
17873><P
17874></P
17875></DIV
17876><P
17877>This event is raised when another object begins to collide
17878 with the object the script is attached to. The number of detected
17879 objects is passed to the script. Information on those objects may
17880 be gathered via the <A
17881HREF="#lib_lldetected"
17882>llDetected*</A
17883> library
17884 functions. (Collisions are also generated if a user walks into an
17885 object.)</P
17886></DIV
17887><DIV
17888CLASS="section"
17889><HR><H2
17890CLASS="section"
17891><A
17892NAME="AEN4934"
17893>B.8. control</A
17894></H2
17895><DIV
17896CLASS="funcsynopsis"
17897><P
17898></P
17899><A
17900NAME="AEN4936"
17901></A
17902><P
17903><CODE
17904><CODE
17905CLASS="FUNCDEF"
17906>control</CODE
17907>(key name, integer levels, integer edges);</CODE
17908></P
17909><P
17910></P
17911></DIV
17912><P
17913>Once a script has the ability to grab control inputs from
17914 the avatar, this event will be used to pass the commands into the
17915 script. The <CODE
17916CLASS="parameter"
17917>levels</CODE
17918> and
17919 <CODE
17920CLASS="parameter"
17921>edges</CODE
17922> are bitfields of <A
17923HREF="#AEN5596"
17924>control constants</A
17925>.</P
17926></DIV
17927><DIV
17928CLASS="section"
17929><HR><H2
17930CLASS="section"
17931><A
17932NAME="AEN4950"
17933>B.9. dataserver</A
17934></H2
17935><DIV
17936CLASS="funcsynopsis"
17937><P
17938></P
17939><A
17940NAME="AEN4952"
17941></A
17942><P
17943><CODE
17944><CODE
17945CLASS="FUNCDEF"
17946>dataserver</CODE
17947>(key requested, string data);</CODE
17948></P
17949><P
17950></P
17951></DIV
17952><P
17953>This event is triggered when the requested data is returned
17954 to the script. Data may be requested by the <A
17955HREF="#AEN3343"
17956>llRequestAgentData</A
17957>, the <A
17958HREF="#AEN3388"
17959>llRequestSimulatorData</A
17960>, the
17961 <A
17962HREF="#AEN3360"
17963>llRequestInventoryData</A
17964>,
17965 and the <A
17966HREF="#AEN1946"
17967>llGetNotecardLine</A
17968> function
17969 calls.</P
17970></DIV
17971><DIV
17972CLASS="section"
17973><HR><H2
17974CLASS="section"
17975><A
17976NAME="AEN4965"
17977>B.10. email</A
17978></H2
17979><DIV
17980CLASS="funcsynopsis"
17981><P
17982></P
17983><A
17984NAME="AEN4967"
17985></A
17986><P
17987><CODE
17988><CODE
17989CLASS="FUNCDEF"
17990>email</CODE
17991>(string time, string address, string subject, string body, integer remaining);</CODE
17992></P
17993><P
17994></P
17995></DIV
17996><P
17997>This event is triggered when an email sent to this script
17998 arrives. The <CODE
17999CLASS="parameter"
18000>remaining</CODE
18001> tells how many more
18002 emails are known as still pending.</P
18003></DIV
18004><DIV
18005CLASS="section"
18006><HR><H2
18007CLASS="section"
18008><A
18009NAME="AEN4983"
18010>B.11. land_collision</A
18011></H2
18012><DIV
18013CLASS="funcsynopsis"
18014><P
18015></P
18016><A
18017NAME="AEN4985"
18018></A
18019><P
18020><CODE
18021><CODE
18022CLASS="FUNCDEF"
18023>land_collision</CODE
18024>(vector position);</CODE
18025></P
18026><P
18027></P
18028></DIV
18029><P
18030>This event is raised when the object the script is attached
18031 to is colliding with the ground.</P
18032></DIV
18033><DIV
18034CLASS="section"
18035><HR><H2
18036CLASS="section"
18037><A
18038NAME="AEN4992"
18039>B.12. land_collision_end</A
18040></H2
18041><DIV
18042CLASS="funcsynopsis"
18043><P
18044></P
18045><A
18046NAME="AEN4994"
18047></A
18048><P
18049><CODE
18050><CODE
18051CLASS="FUNCDEF"
18052>land_collision_end</CODE
18053>(vector position);</CODE
18054></P
18055><P
18056></P
18057></DIV
18058><P
18059>This event is raised when the object the script is attached
18060 to stops colliding with the ground.</P
18061></DIV
18062><DIV
18063CLASS="section"
18064><HR><H2
18065CLASS="section"
18066><A
18067NAME="AEN5001"
18068>B.13. land_collision_start</A
18069></H2
18070><DIV
18071CLASS="funcsynopsis"
18072><P
18073></P
18074><A
18075NAME="AEN5003"
18076></A
18077><P
18078><CODE
18079><CODE
18080CLASS="FUNCDEF"
18081>land_collision_start</CODE
18082>(vector position);</CODE
18083></P
18084><P
18085></P
18086></DIV
18087><P
18088>This event is raised when the object the script is attached
18089 to begins to collide with the ground.</P
18090></DIV
18091><DIV
18092CLASS="section"
18093><HR><H2
18094CLASS="section"
18095><A
18096NAME="AEN5010"
18097>B.14. link_message</A
18098></H2
18099><DIV
18100CLASS="funcsynopsis"
18101><P
18102></P
18103><A
18104NAME="AEN5012"
18105></A
18106><P
18107><CODE
18108><CODE
18109CLASS="FUNCDEF"
18110>link_message</CODE
18111>(integer sender_number, integer number, string message, key id);</CODE
18112></P
18113><P
18114></P
18115></DIV
18116><P
18117>Triggered when object receives a link message via <A
18118HREF="#AEN2919"
18119>llMessageLinked</A
18120> library
18121 function call.</P
18122></DIV
18123><DIV
18124CLASS="section"
18125><HR><H2
18126CLASS="section"
18127><A
18128NAME="AEN5026"
18129>B.15. listen</A
18130></H2
18131><DIV
18132CLASS="funcsynopsis"
18133><P
18134></P
18135><A
18136NAME="AEN5028"
18137></A
18138><P
18139><CODE
18140><CODE
18141CLASS="FUNCDEF"
18142>listen</CODE
18143>(integer channel, string name, key id, string message);</CODE
18144></P
18145><P
18146></P
18147></DIV
18148><P
18149>This event is raised whenever a chat message matching the
18150 constraints passed in the <A
18151HREF="#AEN2665"
18152>llListen</A
18153>
18154 command is heard. The <CODE
18155CLASS="parameter"
18156>name</CODE
18157> and
18158 <CODE
18159CLASS="parameter"
18160>id</CODE
18161> of the speaker as well as the
18162 <CODE
18163CLASS="parameter"
18164>message</CODE
18165> are passed in as parameters.
18166 Channel 0 is the public chat channel that all avatars see as chat
18167 text. Channels 1 through 2,147,483,648 are private channels that
18168 are not sent to avatars but other scripts can listen on those
18169 channels.</P
18170></DIV
18171><DIV
18172CLASS="section"
18173><HR><H2
18174CLASS="section"
18175><A
18176NAME="AEN5045"
18177>B.16. money</A
18178></H2
18179><DIV
18180CLASS="funcsynopsis"
18181><P
18182></P
18183><A
18184NAME="AEN5047"
18185></A
18186><P
18187><CODE
18188><CODE
18189CLASS="FUNCDEF"
18190>money</CODE
18191>(key giver, integer amount);</CODE
18192></P
18193><P
18194></P
18195></DIV
18196><P
18197>This event is triggered when user
18198 <CODE
18199CLASS="parameter"
18200>giver</CODE
18201> has given an
18202 <CODE
18203CLASS="parameter"
18204>amount</CODE
18205> of Linden dollars to the
18206 object.</P
18207></DIV
18208><DIV
18209CLASS="section"
18210><HR><H2
18211CLASS="section"
18212><A
18213NAME="AEN5058"
18214>B.17. moving_end</A
18215></H2
18216><DIV
18217CLASS="funcsynopsis"
18218><P
18219></P
18220><A
18221NAME="AEN5060"
18222></A
18223><P
18224><CODE
18225><CODE
18226CLASS="FUNCDEF"
18227>moving_end</CODE
18228>(void);</CODE
18229></P
18230><P
18231></P
18232></DIV
18233><P
18234>Triggered whenever a object with this script stops
18235 moving.</P
18236></DIV
18237><DIV
18238CLASS="section"
18239><HR><H2
18240CLASS="section"
18241><A
18242NAME="AEN5066"
18243>B.18. moving_start</A
18244></H2
18245><DIV
18246CLASS="funcsynopsis"
18247><P
18248></P
18249><A
18250NAME="AEN5068"
18251></A
18252><P
18253><CODE
18254><CODE
18255CLASS="FUNCDEF"
18256>moving_start</CODE
18257>(void);</CODE
18258></P
18259><P
18260></P
18261></DIV
18262><P
18263>Triggered whenever a object with this script starts
18264 moving.</P
18265></DIV
18266><DIV
18267CLASS="section"
18268><HR><H2
18269CLASS="section"
18270><A
18271NAME="AEN5074"
18272>B.19. no_sensor</A
18273></H2
18274><DIV
18275CLASS="funcsynopsis"
18276><P
18277></P
18278><A
18279NAME="AEN5076"
18280></A
18281><P
18282><CODE
18283><CODE
18284CLASS="FUNCDEF"
18285>no_sensor</CODE
18286>(void);</CODE
18287></P
18288><P
18289></P
18290></DIV
18291><P
18292>This event is raised when sensors are active (via the <A
18293HREF="#AEN3690"
18294>llSensor</A
18295> library call) but are not
18296 sensing anything.</P
18297></DIV
18298><DIV
18299CLASS="section"
18300><HR><H2
18301CLASS="section"
18302><A
18303NAME="AEN5083"
18304>B.20. not_at_rot_target</A
18305></H2
18306><DIV
18307CLASS="funcsynopsis"
18308><P
18309></P
18310><A
18311NAME="AEN5085"
18312></A
18313><P
18314><CODE
18315><CODE
18316CLASS="FUNCDEF"
18317>not_at_rot_target</CODE
18318>(void);</CODE
18319></P
18320><P
18321></P
18322></DIV
18323><P
18324>When a target is set via the <A
18325HREF="#AEN3576"
18326>llRotTarget</A
18327> library call, but the
18328 script is outside the specified angle this event is raised.</P
18329></DIV
18330><DIV
18331CLASS="section"
18332><HR><H2
18333CLASS="section"
18334><A
18335NAME="AEN5092"
18336>B.21. not_at_target</A
18337></H2
18338><DIV
18339CLASS="funcsynopsis"
18340><P
18341></P
18342><A
18343NAME="AEN5094"
18344></A
18345><P
18346><CODE
18347><CODE
18348CLASS="FUNCDEF"
18349>not_at_target</CODE
18350>(void);</CODE
18351></P
18352><P
18353></P
18354></DIV
18355><P
18356>When a target is set via the <A
18357HREF="#AEN4641"
18358>llTarget</A
18359> library call, but the
18360 script is outside the specified range this event is raised.</P
18361></DIV
18362><DIV
18363CLASS="section"
18364><HR><H2
18365CLASS="section"
18366><A
18367NAME="AEN5101"
18368>B.22. object_rez</A
18369></H2
18370><DIV
18371CLASS="funcsynopsis"
18372><P
18373></P
18374><A
18375NAME="AEN5103"
18376></A
18377><P
18378><CODE
18379><CODE
18380CLASS="FUNCDEF"
18381>object_rez</CODE
18382>(key id);</CODE
18383></P
18384><P
18385></P
18386></DIV
18387><P
18388>Triggered when object rezzes another object from its
18389 inventory via the <A
18390HREF="#AEN3458"
18391>llRezObject</A
18392> api. The
18393 <CODE
18394CLASS="parameter"
18395>id</CODE
18396> is the globally unique key for the
18397 object.</P
18398></DIV
18399><DIV
18400CLASS="section"
18401><HR><H2
18402CLASS="section"
18403><A
18404NAME="AEN5112"
18405>B.23. on_rez</A
18406></H2
18407><DIV
18408CLASS="funcsynopsis"
18409><P
18410></P
18411><A
18412NAME="AEN5114"
18413></A
18414><P
18415><CODE
18416><CODE
18417CLASS="FUNCDEF"
18418>on_rez</CODE
18419>(integer start_param);</CODE
18420></P
18421><P
18422></P
18423></DIV
18424><P
18425>Triggered whenever a object is rezzed from inventory or by
18426 another object. The <CODE
18427CLASS="parameter"
18428>start_param</CODE
18429> is the
18430 parameter passed in from the call to <A
18431HREF="#AEN3458"
18432>llRezObject</A
18433> or <A
18434HREF="#AEN3431"
18435>llRezAtRoot</A
18436>.</P
18437></DIV
18438><DIV
18439CLASS="section"
18440><HR><H2
18441CLASS="section"
18442><A
18443NAME="AEN5124"
18444>B.24. run_time_permissions</A
18445></H2
18446><DIV
18447CLASS="funcsynopsis"
18448><P
18449></P
18450><A
18451NAME="AEN5126"
18452></A
18453><P
18454><CODE
18455><CODE
18456CLASS="FUNCDEF"
18457>run_time_permissions</CODE
18458>(integer permissions);</CODE
18459></P
18460><P
18461></P
18462></DIV
18463><P
18464>Scripts need permission from either the owner or the avatar
18465 they wish to act on before they perform certain functions, such as
18466 debiting money from their owner's account, triggering an animation
18467 on an avatar, or capturing control inputs. The <A
18468HREF="#AEN3372"
18469>llRequestPermissions</A
18470>
18471 library function is used to request these permissions and the
18472 various <A
18473HREF="#AEN5313"
18474>permissions integer
18475 constants</A
18476> can be supplied. The integer returned to this
18477 event handler contains the current set of permissions flags, so if
18478 <CODE
18479CLASS="parameter"
18480>permissions</CODE
18481> equal 0 then no permissions are
18482 set.</P
18483></DIV
18484><DIV
18485CLASS="section"
18486><HR><H2
18487CLASS="section"
18488><A
18489NAME="AEN5136"
18490>B.25. sensor</A
18491></H2
18492><DIV
18493CLASS="funcsynopsis"
18494><P
18495></P
18496><A
18497NAME="AEN5138"
18498></A
18499><P
18500><CODE
18501><CODE
18502CLASS="FUNCDEF"
18503>sensor</CODE
18504>(integer total_number);</CODE
18505></P
18506><P
18507></P
18508></DIV
18509><P
18510>This event is raised whenever objects matching the
18511 constraints of the <A
18512HREF="#AEN3690"
18513>llSensor</A
18514>
18515 command are detected. The number of detected objects is passed to
18516 the script in the <CODE
18517CLASS="parameter"
18518>total_number</CODE
18519>
18520 parameter. A maximum of 16 objects are passed to this event.
18521 Information on those objects may be gathered via the
18522 <A
18523HREF="#lib_lldetected"
18524>llDetected*</A
18525> library
18526 functions.</P
18527></DIV
18528><DIV
18529CLASS="section"
18530><HR><H2
18531CLASS="section"
18532><A
18533NAME="AEN5148"
18534>B.26. state_entry</A
18535></H2
18536><DIV
18537CLASS="funcsynopsis"
18538><P
18539></P
18540><A
18541NAME="AEN5150"
18542></A
18543><P
18544><CODE
18545><CODE
18546CLASS="FUNCDEF"
18547>state_entry</CODE
18548>(void);</CODE
18549></P
18550><P
18551></P
18552></DIV
18553><P
18554>The state_entry event occurs whenever a new state is
18555 entered, including program start, and is always the first event
18556 handled.</P
18557></DIV
18558><DIV
18559CLASS="section"
18560><HR><H2
18561CLASS="section"
18562><A
18563NAME="AEN5156"
18564>B.27. state_exit</A
18565></H2
18566><DIV
18567CLASS="funcsynopsis"
18568><P
18569></P
18570><A
18571NAME="AEN5158"
18572></A
18573><P
18574><CODE
18575><CODE
18576CLASS="FUNCDEF"
18577>state_exit</CODE
18578>(void);</CODE
18579></P
18580><P
18581></P
18582></DIV
18583><P
18584>The state_exit event occurs whenever the state command is
18585 used to transition to another state. It is handled before the new
18586 state's state_entry event.</P
18587></DIV
18588><DIV
18589CLASS="section"
18590><HR><H2
18591CLASS="section"
18592><A
18593NAME="AEN5164"
18594>B.28. timer</A
18595></H2
18596><DIV
18597CLASS="funcsynopsis"
18598><P
18599></P
18600><A
18601NAME="AEN5166"
18602></A
18603><P
18604><CODE
18605><CODE
18606CLASS="FUNCDEF"
18607>timer</CODE
18608>(void);</CODE
18609></P
18610><P
18611></P
18612></DIV
18613><P
18614>This event is raised at regular intervals set by the <A
18615HREF="#AEN4141"
18616>llSetTimerEvent</A
18617> library
18618 function.</P
18619></DIV
18620><DIV
18621CLASS="section"
18622><HR><H2
18623CLASS="section"
18624><A
18625NAME="AEN5173"
18626>B.29. touch</A
18627></H2
18628><DIV
18629CLASS="funcsynopsis"
18630><P
18631></P
18632><A
18633NAME="AEN5175"
18634></A
18635><P
18636><CODE
18637><CODE
18638CLASS="FUNCDEF"
18639>touch</CODE
18640>(integer total_number);</CODE
18641></P
18642><P
18643></P
18644></DIV
18645><P
18646>This event is raised while a user is touching the object the
18647 script is attached to. The number of touching objects is passed to
18648 the script in the <CODE
18649CLASS="parameter"
18650>total_number</CODE
18651>
18652 parameter. Information on those objects may be gathered via the
18653 <A
18654HREF="#lib_lldetected"
18655>llDetected*</A
18656> library
18657 functions.</P
18658></DIV
18659><DIV
18660CLASS="section"
18661><HR><H2
18662CLASS="section"
18663><A
18664NAME="AEN5184"
18665>B.30. touch_end</A
18666></H2
18667><DIV
18668CLASS="funcsynopsis"
18669><P
18670></P
18671><A
18672NAME="AEN5186"
18673></A
18674><P
18675><CODE
18676><CODE
18677CLASS="FUNCDEF"
18678>touch_end</CODE
18679>(integer total_number);</CODE
18680></P
18681><P
18682></P
18683></DIV
18684><P
18685>This event is raised when a user stops touching the object
18686 the script is attached to. The number of touching objects is
18687 passed to the script in the <CODE
18688CLASS="parameter"
18689>total_number</CODE
18690>
18691 parameter. Information on those objects may be gathered via the
18692 <A
18693HREF="#lib_lldetected"
18694>llDetected*</A
18695> library
18696 functions.</P
18697></DIV
18698><DIV
18699CLASS="section"
18700><HR><H2
18701CLASS="section"
18702><A
18703NAME="AEN5195"
18704>B.31. touch_start</A
18705></H2
18706><DIV
18707CLASS="funcsynopsis"
18708><P
18709></P
18710><A
18711NAME="AEN5197"
18712></A
18713><P
18714><CODE
18715><CODE
18716CLASS="FUNCDEF"
18717>touch_start</CODE
18718>(integer total_number);</CODE
18719></P
18720><P
18721></P
18722></DIV
18723><P
18724>This event is raised when a user first touches the object
18725 the script is attached to. The number of touching objects is
18726 passed to the script in the <CODE
18727CLASS="parameter"
18728>total_number</CODE
18729>
18730 parameter. Information on those objects may be gathered via the
18731 <A
18732HREF="#lib_lldetected"
18733>llDetected*</A
18734> library
18735 functions.</P
18736></DIV
18737><DIV
18738CLASS="section"
18739><HR><H2
18740CLASS="section"
18741><A
18742NAME="AEN5206"
18743>B.32. remote_data</A
18744></H2
18745><DIV
18746CLASS="funcsynopsis"
18747><P
18748></P
18749><A
18750NAME="AEN5208"
18751></A
18752><P
18753><CODE
18754><CODE
18755CLASS="FUNCDEF"
18756>remote_data</CODE
18757>(integer type, key channel, key message_id, string sender, integer ival, string sval);</CODE
18758></P
18759><P
18760></P
18761></DIV
18762><P
18763>This event is raised when a user creates an XML-RPC
18764 channel via <A
18765HREF="#AEN3011"
18766>llOpenRemoteDataChannel</A
18767>,
18768 a remote XML-RPC server replies to a <A
18769HREF="#AEN3677"
18770>llSendRemoteData</A
18771>,
18772 or a remote XML-RPC client sends in an XML-RPC request. In the open case,
18773 <CODE
18774CLASS="parameter"
18775>type</CODE
18776> = REMOTE_DATA_CHANNEL, <CODE
18777CLASS="parameter"
18778>channel</CODE
18779> = NULL_KEY,
18780 <CODE
18781CLASS="parameter"
18782>message_id</CODE
18783> = NULL_KEY, <CODE
18784CLASS="parameter"
18785>sender</CODE
18786> is an empty string,
18787 <CODE
18788CLASS="parameter"
18789>ival</CODE
18790> = 0, and <CODE
18791CLASS="parameter"
18792>sval</CODE
18793> is an empty string. In the reply case,
18794 <CODE
18795CLASS="parameter"
18796>type</CODE
18797> = REMOTE_DATA_REPLY, <CODE
18798CLASS="parameter"
18799>channel</CODE
18800> is set to the channel that the request was sent on,
18801 <CODE
18802CLASS="parameter"
18803>message_id</CODE
18804> is set to the id of the message, <CODE
18805CLASS="parameter"
18806>sender</CODE
18807> is an empty string,
18808 <CODE
18809CLASS="parameter"
18810>ival</CODE
18811> = 0, and <CODE
18812CLASS="parameter"
18813>sval</CODE
18814> is a string. In the remote request case,
18815 <CODE
18816CLASS="parameter"
18817>type</CODE
18818> = REMOTE_DATA_REQUEST, <CODE
18819CLASS="parameter"
18820>channel</CODE
18821> is set to the channel that sent the message,
18822 <CODE
18823CLASS="parameter"
18824>message_id</CODE
18825> is set to the id of the message, <CODE
18826CLASS="parameter"
18827>sender</CODE
18828> is set by the sender,
18829 <CODE
18830CLASS="parameter"
18831>ival</CODE
18832> is an integer, and <CODE
18833CLASS="parameter"
18834>sval</CODE
18835> is a string.
18836 parameter.</P
18837></DIV
18838></DIV
18839><DIV
18840CLASS="appendix"
18841><HR><H1
18842><A
18843NAME="AEN5245"
18844></A
18845>Appendix C. Constants</H1
18846><P
18847>To ease scripting, many useful constants are defined by
18848 LSL.</P
18849><DIV
18850CLASS="section"
18851><HR><H2
18852CLASS="section"
18853><A
18854NAME="AEN5248"
18855>C.1. Boolean Constants</A
18856></H2
18857><P
18858>The boolean constants represent the values for TRUE and
18859 FALSE. LSL represents booleans as integer values 1 and 0
18860 respectively. Since there is no boolean type these constants act
18861 as a scripting aid usually employed for testing variables which
18862 conceptually represent boolean values.</P
18863><P
18864><P
18865></P
18866><UL
18867><LI
18868><P
18869>TRUE</P
18870></LI
18871><LI
18872><P
18873>FALSE</P
18874></LI
18875></UL
18876></P
18877></DIV
18878><DIV
18879CLASS="section"
18880><HR><H2
18881CLASS="section"
18882><A
18883NAME="AEN5257"
18884>C.2. Status Constants</A
18885></H2
18886><P
18887>The status constants are used in the <A
18888HREF="#AEN4048"
18889>llSetStatus</A
18890> and <A
18891HREF="#AEN2184"
18892>llGetStatus</A
18893> library calls. These
18894 constants can be bitwise or'ed together when calling the library
18895 functions to set the same value to more than one status
18896 flag</P
18897><P
18898></P
18899><DIV
18900CLASS="variablelist"
18901><P
18902><B
18903>Status Constants</B
18904></P
18905><DL
18906><DT
18907>STATUS_PHYSICS</DT
18908><DD
18909><P
18910>Controls whether the object moves
18911 physically. This controls the same flag that the ui checkbox
18912 for 'Physical' controls. The default is FALSE.</P
18913></DD
18914><DT
18915>STATUS_PHANTOM</DT
18916><DD
18917><P
18918>Controls whether the object collides or
18919 not. Setting the value to TRUE makes the object non-colliding
18920 with all objects. It is a good idea to use this for most
18921 objects that move or rotate, but are non-physical. It is also
18922 useful for simulating volumetric lighting. The default is
18923 FALSE.</P
18924></DD
18925><DT
18926>STATUS_ROTATE_X, STATUS_ROTATE_Y, STATUS_ROTATE_Z</DT
18927><DD
18928><P
18929>Controls whether the object can physically rotate
18930 around the specific axis or not. This flag has no meaning
18931 for non-physical objects. Set the value to FALSE
18932 to disable rotation around that axis. The default is TRUE
18933 for a physical object.</P
18934><P
18935>A useful example to think about when visualizing the
18936 effect is a 'sit-and-spin' device. They spin around the Z
18937 axis (up) but not around the X or Y axis.</P
18938></DD
18939><DT
18940>STATUS_BLOCK_GRAB</DT
18941><DD
18942><P
18943>Controls whether the object can be grabbed. A
18944 grab is the default action when in third person, and is
18945 available as the 'hand' tool in build mode. This is useful for
18946 physical objects that you don't want other people to be able
18947 to trivially disturb. The default if FALSE</P
18948></DD
18949><DT
18950>STATUS_SANDBOX</DT
18951><DD
18952><P
18953>Controls whether the object can cross region
18954 boundaries and move more than 20 meters from its creation
18955 point. The default if FALSE.</P
18956></DD
18957><DT
18958>STATUS_DIE_AT_EDGE</DT
18959><DD
18960><P
18961>Controls whether the object is returned to the
18962 owner's inventory if it wanders off the edge of the world. It
18963 is useful to set this status TRUE for things like bullets or
18964 rockets. The default is TRUE</P
18965></DD
18966></DL
18967></DIV
18968></DIV
18969><DIV
18970CLASS="section"
18971><HR><H2
18972CLASS="section"
18973><A
18974NAME="AEN5291"
18975>C.3. Object Type Constants</A
18976></H2
18977><P
18978>These constants can be combined using the binary '|'
18979 operator and are used in the <A
18980HREF="#AEN3690"
18981>llSensor</A
18982> and related calls.</P
18983><P
18984></P
18985><DIV
18986CLASS="variablelist"
18987><P
18988><B
18989>Object Type Constants</B
18990></P
18991><DL
18992><DT
18993>AGENT</DT
18994><DD
18995><P
18996>Objects in world that are agents.</P
18997></DD
18998><DT
18999>ACTIVE</DT
19000><DD
19001><P
19002>Objects in world that are running a script or
19003 currently physically moving.</P
19004></DD
19005><DT
19006>PASSIVE</DT
19007><DD
19008><P
19009>Static in-world objects.</P
19010></DD
19011><DT
19012>SCRIPTED</DT
19013><DD
19014><P
19015>Scripted in-world objects.</P
19016></DD
19017></DL
19018></DIV
19019></DIV
19020><DIV
19021CLASS="section"
19022><HR><H2
19023CLASS="section"
19024><A
19025NAME="AEN5313"
19026>C.4. Permission Constants</A
19027></H2
19028><P
19029>The permission constants are used for passing values to
19030 <A
19031HREF="#AEN3372"
19032>llRequestPermissions</A
19033>,
19034 determining the value of <A
19035HREF="#AEN2048"
19036>llGetPermissions</A
19037>, and
19038 explicitly passed to the <A
19039HREF="#AEN5124"
19040>run_time_permissions</A
19041>
19042 event. For many of the basic library functions to work, a
19043 specific permission must be enabled. The permission constants can
19044 be or'ed together to be used in conjunction.</P
19045><P
19046></P
19047><DIV
19048CLASS="variablelist"
19049><P
19050><B
19051>Permission Constants</B
19052></P
19053><DL
19054><DT
19055>PERMISSION_DEBIT</DT
19056><DD
19057><P
19058>If this permission is enabled, the object can
19059 successfully call <A
19060HREF="#AEN2342"
19061>llGiveMoney</A
19062> to debit the
19063 owner's account.</P
19064></DD
19065><DT
19066>PERMISSION_TAKE_CONTROLS</DT
19067><DD
19068><P
19069>If this permission enabled, the object can
19070 successfully call the <A
19071HREF="#AEN4614"
19072>llTakeControls</A
19073> library
19074 call.</P
19075></DD
19076><DT
19077>PERMISSION_REMAP_CONTROLS</DT
19078><DD
19079><P
19080>(not yet implemented)</P
19081></DD
19082><DT
19083>PERMISSION_TRIGGER_ANIMATION</DT
19084><DD
19085><P
19086>If this permission is enabled, the object can
19087 successfully call <A
19088HREF="#AEN4299"
19089>llStartAnimation</A
19090> for the
19091 avatar that owns this object.</P
19092></DD
19093><DT
19094><A
19095NAME="const_permission_attach"
19096></A
19097>PERMISSION_ATTACH</DT
19098><DD
19099><P
19100>If this permission is enabled, the object can
19101 successfully call <A
19102HREF="#AEN1119"
19103>llAttachToAvatar</A
19104> to attach
19105 to the given avatar.</P
19106></DD
19107><DT
19108>PERMISSION_RELEASE_OWNERSHIP</DT
19109><DD
19110><P
19111>(not yet implemented)</P
19112></DD
19113><DT
19114><A
19115NAME="const_permission_change_links"
19116></A
19117>PERMISSION_CHANGE_LINKS</DT
19118><DD
19119><P
19120>If this permission is enabled, the object can
19121 successfully call <A
19122HREF="#AEN1292"
19123>llCreateLink</A
19124>, <A
19125HREF="#AEN1191"
19126>llBreakLink</A
19127>, and <A
19128HREF="#AEN1182"
19129>llBreakAllLinks</A
19130> to change
19131 links to other objects.</P
19132></DD
19133><DT
19134>PERMISSION_CHANGE_JOINTS</DT
19135><DD
19136><P
19137>(not yet implemented)</P
19138></DD
19139><DT
19140>PERMISSION_CHANGE_PERMISSIONS</DT
19141><DD
19142><P
19143>(not yet implemented)</P
19144></DD
19145></DL
19146></DIV
19147></DIV
19148><DIV
19149CLASS="section"
19150><HR><H2
19151CLASS="section"
19152><A
19153NAME="AEN5364"
19154>C.5. Inventory Constants</A
19155></H2
19156><P
19157>These constants can be used to refer to a specific inventory
19158 type in calls to <A
19159HREF="#AEN1789"
19160>llGetInventoryNumber</A
19161> and
19162 <A
19163HREF="#AEN1774"
19164>llGetInventoryName</A
19165>. They
19166 are also returned by <A
19167HREF="#AEN1816"
19168>llGetInventoryType</A
19169>.
19170 </P
19171><P
19172></P
19173><DIV
19174CLASS="variablelist"
19175><P
19176><B
19177>Inventory Constants</B
19178></P
19179><DL
19180><DT
19181>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
19182><DD
19183><P
19184>Each constant refers to the named type of
19185 inventory.</P
19186></DD
19187></DL
19188></DIV
19189></DIV
19190><DIV
19191CLASS="section"
19192><HR><H2
19193CLASS="section"
19194><A
19195NAME="AEN5387"
19196>C.6. Pay Price Constants</A
19197></H2
19198><P
19199>These constants can be used in <A
19200HREF="#AEN1789"
19201>llSetPayPrice</A
19202></P
19203><P
19204></P
19205><DIV
19206CLASS="variablelist"
19207><P
19208><B
19209>Pay Price Constants</B
19210></P
19211><DL
19212><DT
19213>PAY_HIDE</DT
19214><DD
19215><P
19216>Do not show this quick pay button.</P
19217></DD
19218><DT
19219>PAY_DEFAULT</DT
19220><DD
19221><P
19222>Use the default value for this quick pay button.</P
19223></DD
19224></DL
19225></DIV
19226></DIV
19227><DIV
19228CLASS="section"
19229><HR><H2
19230CLASS="section"
19231><A
19232NAME="AEN5401"
19233>C.7. Attachment Constants</A
19234></H2
19235><P
19236>These constants are used to refer to attachment points in
19237 calls to <A
19238HREF="#AEN1119"
19239>llAttachToAvatar</A
19240>.</P
19241><P
19242></P
19243><DIV
19244CLASS="variablelist"
19245><P
19246><B
19247>Attachment Constants</B
19248></P
19249><DL
19250><DT
19251>ATTACH_CHEST</DT
19252><DD
19253><P
19254>Attach to the avatar chest.</P
19255></DD
19256><DT
19257>ATTACH_HEAD</DT
19258><DD
19259><P
19260>Attach to the avatar head.</P
19261></DD
19262><DT
19263>ATTACH_LSHOULDER</DT
19264><DD
19265><P
19266>Attach to the avatar left shoulder.</P
19267></DD
19268><DT
19269>ATTACH_RSHOULDER</DT
19270><DD
19271><P
19272>Attach to the avatar right shoulder.</P
19273></DD
19274><DT
19275>ATTACH_LHAND</DT
19276><DD
19277><P
19278>Attach to the avatar left hand.</P
19279></DD
19280><DT
19281>ATTACH_RHAND</DT
19282><DD
19283><P
19284>Attach to the avatar right hand.</P
19285></DD
19286><DT
19287>ATTACH_LFOOT</DT
19288><DD
19289><P
19290>Attach to the avatar left foot.</P
19291></DD
19292><DT
19293>ATTACH_RFOOT</DT
19294><DD
19295><P
19296>Attach to the avatar right foot.</P
19297></DD
19298><DT
19299>ATTACH_BACK</DT
19300><DD
19301><P
19302>Attach to the avatar back.</P
19303></DD
19304><DT
19305>ATTACH_PELVIS</DT
19306><DD
19307><P
19308>Attach to the avatar pelvis.</P
19309></DD
19310><DT
19311>ATTACH_MOUTH</DT
19312><DD
19313><P
19314>Attach to the avatar mouth.</P
19315></DD
19316><DT
19317>ATTACH_CHIN</DT
19318><DD
19319><P
19320>Attach to the avatar chin.</P
19321></DD
19322><DT
19323>ATTACH_LEAR</DT
19324><DD
19325><P
19326>Attach to the avatar left ear.</P
19327></DD
19328><DT
19329>ATTACH_REAR</DT
19330><DD
19331><P
19332>Attach to the avatar right ear.</P
19333></DD
19334><DT
19335>ATTACH_LEYE</DT
19336><DD
19337><P
19338>Attach to the avatar left eye.</P
19339></DD
19340><DT
19341>ATTACH_REYE</DT
19342><DD
19343><P
19344>Attach to the avatar right eye.</P
19345></DD
19346><DT
19347>ATTACH_NOSE</DT
19348><DD
19349><P
19350>Attach to the avatar nose.</P
19351></DD
19352><DT
19353>ATTACH_RUARM</DT
19354><DD
19355><P
19356>Attach to the avatar right upper arm.</P
19357></DD
19358><DT
19359>ATTACH_RLARM</DT
19360><DD
19361><P
19362>Attach to the avatar right lower arm.</P
19363></DD
19364><DT
19365>ATTACH_LUARM</DT
19366><DD
19367><P
19368>Attach to the avatar left upper arm.</P
19369></DD
19370><DT
19371>ATTACH_LLARM</DT
19372><DD
19373><P
19374>Attach to the avatar left lower arm.</P
19375></DD
19376><DT
19377>ATTACH_RHIP</DT
19378><DD
19379><P
19380>Attach to the avatar right hip.</P
19381></DD
19382><DT
19383>ATTACH_RULEG</DT
19384><DD
19385><P
19386>Attach to the avatar right upper leg.</P
19387></DD
19388><DT
19389>ATTACH_RLLEG</DT
19390><DD
19391><P
19392>Attach to the avatar right lower leg.</P
19393></DD
19394><DT
19395>ATTACH_LHIP</DT
19396><DD
19397><P
19398>Attach to the avatar left hip.</P
19399></DD
19400><DT
19401>ATTACH_LULEG</DT
19402><DD
19403><P
19404>Attach to the avatar lower upper leg.</P
19405></DD
19406><DT
19407>ATTACH_LLLEG</DT
19408><DD
19409><P
19410>Attach to the avatar lower left leg.</P
19411></DD
19412><DT
19413>ATTACH_BELLY</DT
19414><DD
19415><P
19416>Attach to the avatar belly.</P
19417></DD
19418><DT
19419>ATTACH_RPEC</DT
19420><DD
19421><P
19422>Attach to the avatar right pectoral.</P
19423></DD
19424><DT
19425>ATTACH_LPEC</DT
19426><DD
19427><P
19428>Attach to the avatar left pectoral.</P
19429></DD
19430></DL
19431></DIV
19432></DIV
19433><DIV
19434CLASS="section"
19435><HR><H2
19436CLASS="section"
19437><A
19438NAME="AEN5527"
19439>C.8. Land Constants</A
19440></H2
19441><P
19442>These constants are only used in calls to <A
19443HREF="#AEN2949"
19444>llModifyLand</A
19445>. The constants
19446 are equivalent to the similarly labelled user interface elements
19447 for editing land in the viewer.</P
19448><P
19449></P
19450><DIV
19451CLASS="variablelist"
19452><P
19453><B
19454>Land Constants</B
19455></P
19456><DL
19457><DT
19458>LAND_LEVEL</DT
19459><DD
19460><P
19461>Action to make the land flat and level.</P
19462></DD
19463><DT
19464>LAND_RAISE</DT
19465><DD
19466><P
19467>Action to raise the land.</P
19468></DD
19469><DT
19470>LAND_LOWER</DT
19471><DD
19472><P
19473>Action to lower the land.</P
19474></DD
19475><DT
19476>LAND_SMOOTH</DT
19477><DD
19478><P
19479>Action to smooth the land.</P
19480></DD
19481><DT
19482>LAND_NOISE</DT
19483><DD
19484><P
19485>Action to push the land toward a pseudo-random
19486 heightfield.</P
19487></DD
19488><DT
19489>LAND_REVERT</DT
19490><DD
19491><P
19492>Action to push the land toward the original
19493 shape from when it was first terraformed.</P
19494></DD
19495><DT
19496>LAND_SMALL_BRUSH</DT
19497><DD
19498><P
19499>Use a small brush size.</P
19500></DD
19501><DT
19502>LAND_MEDIUM_BRUSH</DT
19503><DD
19504><P
19505>Use a medium brush size.</P
19506></DD
19507><DT
19508>LAND_LARGE_BRUSH</DT
19509><DD
19510><P
19511>Use a large brush size.</P
19512></DD
19513></DL
19514></DIV
19515></DIV
19516><DIV
19517CLASS="section"
19518><HR><H2
19519CLASS="section"
19520><A
19521NAME="AEN5569"
19522>C.9. Link Constants</A
19523></H2
19524><P
19525>These constants are used in calls to <A
19526HREF="#AEN3894"
19527>llSetLinkColor</A
19528> and <A
19529HREF="#AEN2919"
19530>llMessageLinked</A
19531>.</P
19532><P
19533></P
19534><DIV
19535CLASS="variablelist"
19536><P
19537><B
19538>Link Constants</B
19539></P
19540><DL
19541><DT
19542>LINK_SET</DT
19543><DD
19544><P
19545>This targets every object in the linked
19546 set.</P
19547></DD
19548><DT
19549>LINK_ROOT</DT
19550><DD
19551><P
19552>This targets the root of the linked
19553 set.</P
19554></DD
19555><DT
19556>LINK_ALL_OTHERS</DT
19557><DD
19558><P
19559>This targets every object in the linked set
19560 except the object with the script.</P
19561></DD
19562><DT
19563>LINK_ALL_CHILDREN</DT
19564><DD
19565><P
19566>This targets every object except the root in
19567 the linked set.</P
19568></DD
19569><DT
19570>LINK_THIS</DT
19571><DD
19572><P
19573>This targets the object making the call only.
19574 </P
19575></DD
19576></DL
19577></DIV
19578></DIV
19579><DIV
19580CLASS="section"
19581><HR><H2
19582CLASS="section"
19583><A
19584NAME="AEN5596"
19585>C.10. Control Constants</A
19586></H2
19587><P
19588>These constants are used in <A
19589HREF="#AEN4614"
19590>llTakeControls</A
19591> as well as the
19592 <A
19593HREF="#AEN4934"
19594>control</A
19595> event handler.</P
19596><P
19597></P
19598><DIV
19599CLASS="variablelist"
19600><P
19601><B
19602>Control Constants</B
19603></P
19604><DL
19605><DT
19606>CONTROL_FWD</DT
19607><DD
19608><P
19609>Test for the avatar move forward
19610 control.</P
19611></DD
19612><DT
19613>CONTROL_BACK</DT
19614><DD
19615><P
19616>Test for the avatar move back
19617 control.</P
19618></DD
19619><DT
19620>CONTROL_LEFT</DT
19621><DD
19622><P
19623>Test for the avatar move left
19624 control.</P
19625></DD
19626><DT
19627>CONTROL_RIGHT</DT
19628><DD
19629><P
19630>Test for the avatar move right
19631 control.</P
19632></DD
19633><DT
19634>CONTROL_ROT_LEFT</DT
19635><DD
19636><P
19637>Test for the avatar rotate left
19638 control.</P
19639></DD
19640><DT
19641>CONTROL_ROT_RIGHT</DT
19642><DD
19643><P
19644>Test for the avatar rotate right
19645 control.</P
19646></DD
19647><DT
19648>CONTROL_UP</DT
19649><DD
19650><P
19651>Test for the avatar move up
19652 control.</P
19653></DD
19654><DT
19655>CONTROL_DOWN</DT
19656><DD
19657><P
19658>Test for the avatar move down
19659 control.</P
19660></DD
19661><DT
19662>CONTROL_LBUTTON</DT
19663><DD
19664><P
19665>Test for the avatar left button
19666 control.</P
19667></DD
19668><DT
19669>CONTROL_ML_BUTTON</DT
19670><DD
19671><P
19672>Test for the avatar left button control while
19673 in mouse look.</P
19674></DD
19675></DL
19676></DIV
19677></DIV
19678><DIV
19679CLASS="section"
19680><HR><H2
19681CLASS="section"
19682><A
19683NAME="AEN5643"
19684>C.11. Change Constants</A
19685></H2
19686><P
19687>These constants are used in the <A
19688HREF="#AEN4893"
19689>changed</A
19690> event handler.</P
19691><P
19692></P
19693><DIV
19694CLASS="variablelist"
19695><P
19696><B
19697>Change Constants</B
19698></P
19699><DL
19700><DT
19701>CHANGED_INVENTORY</DT
19702><DD
19703><P
19704>The object inventory has changed.</P
19705></DD
19706><DT
19707>CHANGED_ALLOWED_DROP</DT
19708><DD
19709><P
19710>The object inventory has changed because an item
19711 was added through the <A
19712HREF="#AEN1047"
19713>llAllowInventoryDrop</A
19714>
19715 interface.</P
19716></DD
19717><DT
19718>CHANGED_COLOR</DT
19719><DD
19720><P
19721>The object color has changed.</P
19722></DD
19723><DT
19724>CHANGED_SHAPE</DT
19725><DD
19726><P
19727>The object shape has changed, eg, a box to a
19728 cylinder</P
19729></DD
19730><DT
19731>CHANGED_SCALE</DT
19732><DD
19733><P
19734>The object scale has changed.</P
19735></DD
19736><DT
19737>CHANGED_TEXTURE</DT
19738><DD
19739><P
19740>The texture offset, scale rotation, or simply
19741 the object texture has changed.</P
19742></DD
19743><DT
19744>CHANGED_LINK</DT
19745><DD
19746><P
19747>The object has linked or its links were
19748 broken.</P
19749></DD
19750><DT
19751>CHANGED_REGION</DT
19752><DD
19753><P
19754>The object has changed regions.</P
19755></DD
19756><DT
19757>CHANGED_TELEPORT</DT
19758><DD
19759><P
19760>The object has been teleported.</P
19761></DD
19762></DL
19763></DIV
19764></DIV
19765><DIV
19766CLASS="section"
19767><HR><H2
19768CLASS="section"
19769><A
19770NAME="AEN5686"
19771>C.12. Type Constants</A
19772></H2
19773><P
19774>These constants are used to determine the variable type
19775 stored in a heterogeneous list. The value returned from <A
19776HREF="#AEN1875"
19777>llGetListEntryType</A
19778> can be
19779 used for comparison against these constants.</P
19780><P
19781></P
19782><DIV
19783CLASS="variablelist"
19784><P
19785><B
19786>Type Constants</B
19787></P
19788><DL
19789><DT
19790>TYPE_INTEGER</DT
19791><DD
19792><P
19793>The list entry is an integer.</P
19794></DD
19795><DT
19796>TYPE_FLOAT</DT
19797><DD
19798><P
19799>The list entry is a float.</P
19800></DD
19801><DT
19802>TYPE_STRING</DT
19803><DD
19804><P
19805>The list entry is a string.</P
19806></DD
19807><DT
19808>TYPE_KEY</DT
19809><DD
19810><P
19811>The list entry is a key.</P
19812></DD
19813><DT
19814>TYPE_VECTOR</DT
19815><DD
19816><P
19817>The list entry is a vector.</P
19818></DD
19819><DT
19820>TYPE_ROTATION</DT
19821><DD
19822><P
19823>The list entry is a rotation.</P
19824></DD
19825><DT
19826>TYPE_INVALID</DT
19827><DD
19828><P
19829>The list entry is invalid.</P
19830></DD
19831></DL
19832></DIV
19833></DIV
19834><DIV
19835CLASS="section"
19836><HR><H2
19837CLASS="section"
19838><A
19839NAME="AEN5720"
19840>C.13. Agent Info Constants</A
19841></H2
19842><P
19843>Each of these constants represents a bit in the integer
19844 returned from the <A
19845HREF="#AEN1605"
19846>llGetAgentInfo</A
19847> function and can
19848 be used in an expression to determine the specified information
19849 about an agent.</P
19850><P
19851></P
19852><DIV
19853CLASS="variablelist"
19854><P
19855><B
19856>Agent Info Constants</B
19857></P
19858><DL
19859><DT
19860>AGENT_FLYING</DT
19861><DD
19862><P
19863>The agent is flying.</P
19864></DD
19865><DT
19866>AGENT_ATTACHMENTS</DT
19867><DD
19868><P
19869>The agent has attachments.</P
19870></DD
19871><DT
19872>AGENT_SCRIPTED</DT
19873><DD
19874><P
19875>The agent has scripted attachments.</P
19876></DD
19877><DT
19878>AGENT_SITTING</DT
19879><DD
19880><P
19881>The agent is sitting.</P
19882></DD
19883><DT
19884>AGENT_ON_OBJECT</DT
19885><DD
19886><P
19887>The agent is sitting on an object.</P
19888></DD
19889><DT
19890>AGENT_WALKING</DT
19891><DD
19892><P
19893>The agent is walking.</P
19894></DD
19895><DT
19896>AGENT_IN_AIR</DT
19897><DD
19898><P
19899>The agent is in the air.</P
19900></DD
19901><DT
19902>AGENT_MOUSELOOK</DT
19903><DD
19904><P
19905>The agent is in mouselook.</P
19906></DD
19907><DT
19908>AGENT_AWAY</DT
19909><DD
19910><P
19911>The agent is away (AFK).</P
19912></DD
19913><DT
19914>AGENT_TYPING</DT
19915><DD
19916><P
19917>The agent is typing.</P
19918></DD
19919><DT
19920>AGENT_CROUCHING</DT
19921><DD
19922><P
19923>The agent is crouching.</P
19924></DD
19925></DL
19926></DIV
19927></DIV
19928><DIV
19929CLASS="section"
19930><HR><H2
19931CLASS="section"
19932><A
19933NAME="AEN5770"
19934>C.14. Texture Animation
19935 Constants</A
19936></H2
19937><P
19938>These constants are used in the <A
19939HREF="#AEN4093"
19940>llSetTextureAnim</A
19941> api to
19942 control the animation mode.</P
19943><P
19944></P
19945><DIV
19946CLASS="variablelist"
19947><P
19948><B
19949>Texture Animation Constants</B
19950></P
19951><DL
19952><DT
19953>ANIM_ON</DT
19954><DD
19955><P
19956>Texture animation is on.</P
19957></DD
19958><DT
19959>LOOP</DT
19960><DD
19961><P
19962>Loop the texture animation.</P
19963></DD
19964><DT
19965>REVERSE</DT
19966><DD
19967><P
19968>Play animation in reverse direction.</P
19969></DD
19970><DT
19971>PING_PONG</DT
19972><DD
19973><P
19974>play animation going forwards, then
19975 backwards.</P
19976></DD
19977><DT
19978>SMOOTH</DT
19979><DD
19980><P
19981>slide in the X direction, instead of playing
19982 separate frames.</P
19983></DD
19984><DT
19985>ROTATE</DT
19986><DD
19987><P
19988>Animate texture rotation.</P
19989></DD
19990><DT
19991>SCALE</DT
19992><DD
19993><P
19994>Animate the texture scale.</P
19995></DD
19996></DL
19997></DIV
19998></DIV
19999><DIV
20000CLASS="section"
20001><HR><H2
20002CLASS="section"
20003><A
20004NAME="AEN5804"
20005>C.15. Particle System Constants</A
20006></H2
20007><P
20008>These constants are used in calls to the <A
20009HREF="#AEN3146"
20010>llParticleSystem</A
20011> api to
20012 specify parameters.</P
20013><P
20014></P
20015><DIV
20016CLASS="variablelist"
20017><P
20018><B
20019>Particle System Parameters</B
20020></P
20021><DL
20022><DT
20023>PSYS_PART_FLAGS</DT
20024><DD
20025><P
20026>Each particle that is emitted by the particle system
20027 is simulated based on the following flags. To use multiple
20028 flags, bitwise or (|) them together.</P
20029><P
20030></P
20031><DIV
20032CLASS="variablelist"
20033><P
20034><B
20035>PSYS_PART_FLAGS Values</B
20036></P
20037><DL
20038><DT
20039>PSYS_PART_INTERP_COLOR_MASK</DT
20040><DD
20041><P
20042>Interpolate both the color and alpha
20043 from the start value to the end
20044 value.</P
20045></DD
20046><DT
20047>PSYS_PART_INTERP_SCALE_MASK</DT
20048><DD
20049><P
20050>Interpolate the particle scale from
20051 the start value to the end value.</P
20052></DD
20053><DT
20054>PSYS_PART_WIND_MASK</DT
20055><DD
20056><P
20057>Particles have their velocity damped
20058 towards the wind velocity.</P
20059></DD
20060><DT
20061>PSYS_PART_BOUNCE_MASK</DT
20062><DD
20063><P
20064>Particles bounce off of a plane at the
20065 object's Z height.</P
20066></DD
20067><DT
20068>PSYS_PART_FOLLOW_SRC_MASK</DT
20069><DD
20070><P
20071>The particle position is relative to
20072 the source object's position.</P
20073></DD
20074><DT
20075>PSYS_PART_FOLLOW_VELOCITY_MASK</DT
20076><DD
20077><P
20078>The particle orientation is rotated so
20079 the vertical axis faces towards the particle
20080 velocity.</P
20081></DD
20082><DT
20083>PSYS_PART_TARGET_POS_MASK</DT
20084><DD
20085><P
20086>The particle heads towards the
20087 location of the target object as defined by
20088 PSYS_SRC_TARGET_KEY.</P
20089></DD
20090><DT
20091>PSYS_PART_EMISSIVE_MASK</DT
20092><DD
20093><P
20094>The particle glows.</P
20095></DD
20096><DT
20097>PSYS_PART_RANDOM_ACCEL_MASK</DT
20098><DD
20099><P
20100>(not implemented)</P
20101></DD
20102><DT
20103>PSYS_PART_RANDOM_VEL_MASK</DT
20104><DD
20105><P
20106>(not implemented)</P
20107></DD
20108><DT
20109>PSYS_PART_TRAIL_MASK</DT
20110><DD
20111><P
20112>(not implemented)</P
20113></DD
20114></DL
20115></DIV
20116></DD
20117><DT
20118>PSYS_SRC_PATTERN</DT
20119><DD
20120><P
20121>The pattern which is used to generate particles. Use
20122 one of the following values:</P
20123><P
20124></P
20125><DIV
20126CLASS="variablelist"
20127><P
20128><B
20129>PSYS_SRC_PATTERN Values</B
20130></P
20131><DL
20132><DT
20133>PSYS_SRC_PATTERN_DROP</DT
20134><DD
20135><P
20136>Drop particles at the source
20137 position.</P
20138></DD
20139><DT
20140>PSYS_SRC_PATTERN_EXPLODE</DT
20141><DD
20142><P
20143>Shoot particles out in all directions,
20144 using the burst parameters.</P
20145></DD
20146><DT
20147>PSYS_SRC_PATTERN_ANGLE</DT
20148><DD
20149><P
20150>Shoot particles across a 2 dimensional
20151 area defined by the arc created from
20152 PSYS_SRC_OUTERANGLE. There will be an open area
20153 defined by PSYS_SRC_INNERANGLE within the larger
20154 arc.</P
20155></DD
20156><DT
20157>PSYS_SRC_PATTERN_ANGLE_CONE</DT
20158><DD
20159><P
20160>Shoot particles out in a 3 dimensional
20161 cone with an outer arc of PSYS_SRC_OUTERANGLE and an
20162 inner open area defined by
20163 PSYS_SRC_INNERANGLE.</P
20164></DD
20165></DL
20166></DIV
20167></DD
20168><DT
20169>PSYS_PART_START_COLOR</DT
20170><DD
20171><P
20172>a vector &#60;r,g,b&#62; which determines the starting
20173 color of the object.</P
20174></DD
20175><DT
20176>PSYS_PART_START_ALPHA</DT
20177><DD
20178><P
20179>a float which determines the starting alpha of
20180 the object.</P
20181></DD
20182><DT
20183>PSYS_PART_END_COLOR</DT
20184><DD
20185><P
20186>a vector &#60;r, g, b&#62; which determines the ending
20187 color of the object.</P
20188></DD
20189><DT
20190>PSYS_PART_END_ALPHA</DT
20191><DD
20192><P
20193>a float which determines the ending alpha of
20194 the object.</P
20195></DD
20196><DT
20197>PSYS_PART_START_SCALE</DT
20198><DD
20199><P
20200>a vector &#60;sx, sy, z&#62;, which is the starting
20201 size of the particle billboard in meters (z is
20202 ignored).</P
20203></DD
20204><DT
20205>PSYS_PART_END_SCALE</DT
20206><DD
20207><P
20208>a vector &#60;sx, sy, z&#62;, which is the ending size
20209 of the particle billboard in meters (z is
20210 ignored).</P
20211></DD
20212><DT
20213>PSYS_PART_MAX_AGE</DT
20214><DD
20215><P
20216>age in seconds of a particle at which it
20217 dies.</P
20218></DD
20219><DT
20220>PSYS_SRC_ACCEL</DT
20221><DD
20222><P
20223>a vector &#60;x, y, z&#62; which is the acceleration
20224 to apply on particles.</P
20225></DD
20226><DT
20227>PSYS_SRC_TEXTURE</DT
20228><DD
20229><P
20230>an asset name for the texture to use for the
20231 particles.</P
20232></DD
20233><DT
20234>PSYS_SRC_BURST_RATE</DT
20235><DD
20236><P
20237>how often to release a particle burst (float
20238 seconds).</P
20239></DD
20240><DT
20241>PSYS_SRC_INNERANGLE</DT
20242><DD
20243><P
20244>specifies the inner angle of the arc created
20245 by the PSYS_SRC_PATTERN_ANGLE or
20246 PSYS_SRC_PATTERN_ANGLE_CONE source pattern. The area
20247 specified will not have particles in it..</P
20248></DD
20249><DT
20250>PSYS_SRC_OUTERANGLE</DT
20251><DD
20252><P
20253>specifies the outer angle of the arc created
20254 by the PSYS_SRC_PATTERN_ANGLE or
20255 PSYS_SRC_PATTERN_ANGLE_CONE source pattern. The area
20256 between the outer and inner angle will be filled with
20257 particles..</P
20258></DD
20259><DT
20260>PSYS_SRC_BURST_PART_COUNT</DT
20261><DD
20262><P
20263>how many particles to release in a
20264 burst.</P
20265></DD
20266><DT
20267>PSYS_SRC_BURST_RADIUS</DT
20268><DD
20269><P
20270>what distance from the center of the object to
20271 create the particles.</P
20272></DD
20273><DT
20274>PSYS_SRC_BURST_SPEED_MIN</DT
20275><DD
20276><P
20277>minimum speed that a particle should be
20278 moving.</P
20279></DD
20280><DT
20281>PSYS_SRC_BURST_SPEED_MAX</DT
20282><DD
20283><P
20284>maximum speed that a particle should be
20285 moving.</P
20286></DD
20287><DT
20288>PSYS_SRC_MAX_AGE</DT
20289><DD
20290><P
20291>how long this particle system should last, 0.0
20292 means forever.</P
20293></DD
20294><DT
20295>PSYS_SRC_TARGET_KEY</DT
20296><DD
20297><P
20298>the key of a target object to move towards if
20299 PSYS_PART_TARGET_POS_MASK is enabled.</P
20300></DD
20301><DT
20302>PSYS_SRC_OMEGA</DT
20303><DD
20304><P
20305>Sets the angular velocity to rotate the axis
20306 that SRC_PATTERN_ANGLE and SRC_PATTERN_ANGLE_CONE
20307 use..</P
20308></DD
20309></DL
20310></DIV
20311></DIV
20312><DIV
20313CLASS="section"
20314><HR><H2
20315CLASS="section"
20316><A
20317NAME="AEN5958"
20318>C.16. Agent Data Constants</A
20319></H2
20320><P
20321>These constants are used in calls to the <A
20322HREF="#AEN3343"
20323>llRequestAgentData</A
20324> api to
20325 collect information about an agent which will be provided in the
20326 <A
20327HREF="#AEN4950"
20328>dataserver event</A
20329>.</P
20330><P
20331></P
20332><DIV
20333CLASS="variablelist"
20334><P
20335><B
20336>Agent Data Constants</B
20337></P
20338><DL
20339><DT
20340>DATA_ONLINE</DT
20341><DD
20342><P
20343>"1" for online "0" for
20344 offline.</P
20345></DD
20346><DT
20347>DATA_NAME</DT
20348><DD
20349><P
20350>The name of the agent.</P
20351></DD
20352><DT
20353>DATA_BORN</DT
20354><DD
20355><P
20356>The date the agent was born returned in ISO
20357 8601 format of YYYY-MM-DD.</P
20358></DD
20359><DT
20360>DATA_RATING</DT
20361><DD
20362><P
20363>Returns the agent ratings as a comma separated
20364 string of six integers. They are:
20365 <P
20366></P
20367><OL
20368TYPE="1"
20369><LI
20370><P
20371>Positive rated behavior</P
20372></LI
20373><LI
20374><P
20375>Negative rated behavior</P
20376></LI
20377><LI
20378><P
20379>Positive rated appearance</P
20380></LI
20381><LI
20382><P
20383>Negative rated appearance</P
20384></LI
20385><LI
20386><P
20387>Positive rated building</P
20388></LI
20389><LI
20390><P
20391>Negative rated building</P
20392></LI
20393></OL
20394>
20395 </P
20396></DD
20397></DL
20398></DIV
20399></DIV
20400><DIV
20401CLASS="section"
20402><HR><H2
20403CLASS="section"
20404><A
20405NAME="AEN5994"
20406>C.17. Float Constants</A
20407></H2
20408><P
20409>LSL provides a small collection of floating point constants
20410 for use in float arithmetic. These constants are usually employed
20411 while performing trigonometric calculations, but are sometimes
20412 useful for other applications such as specifying arc radians to
20413 sensor or particle system functions.</P
20414><P
20415></P
20416><DIV
20417CLASS="variablelist"
20418><P
20419><B
20420>Float Constants</B
20421></P
20422><DL
20423><DT
20424>PI</DT
20425><DD
20426><P
20427>3.14159265 - The radians of a
20428 hemicircle.</P
20429></DD
20430><DT
20431>TWO_PI</DT
20432><DD
20433><P
20434>6.28318530 - The radians of a
20435 circle.</P
20436></DD
20437><DT
20438>PI_BY_TWO</DT
20439><DD
20440><P
20441>1.57079633 - The radians of a quarter
20442 circle.</P
20443></DD
20444><DT
20445>DEG_TO_RAD</DT
20446><DD
20447><P
20448>0.01745329 - Number of radians per degree.
20449 You can use this to convert degrees to radians by multiplying
20450 the degrees by this number.</P
20451></DD
20452><DT
20453>RAD_TO_DEG</DT
20454><DD
20455><P
20456>57.2957795 - Number of degrees per radian. You
20457 can use this number to convert radians to degrees by
20458 multiplying the radians by this number.</P
20459></DD
20460><DT
20461>SQRT2</DT
20462><DD
20463><P
20464>1.41421356 - The square root of 2.</P
20465></DD
20466></DL
20467></DIV
20468></DIV
20469><DIV
20470CLASS="section"
20471><HR><H2
20472CLASS="section"
20473><A
20474NAME="AEN6023"
20475>C.18. Key Constant</A
20476></H2
20477><P
20478>There is only one key constant which acts as an invalid
20479 key: NULL_KEY.</P
20480></DIV
20481><DIV
20482CLASS="section"
20483><HR><H2
20484CLASS="section"
20485><A
20486NAME="AEN6026"
20487>C.19. Miscellaneous Integer Constants</A
20488></H2
20489><P
20490>There is one uncategorized integer constant which is used in
20491 some of the texturing and coloring api: ALL_SIDES</P
20492></DIV
20493><DIV
20494CLASS="section"
20495><HR><H2
20496CLASS="section"
20497><A
20498NAME="AEN6029"
20499>C.20. Miscellaneous String
20500 Constants</A
20501></H2
20502><P
20503>There is one uncategorized string constant
20504 which is used in the <A
20505HREF="#AEN4950"
20506>dataserver</A
20507> event:
20508 EOF</P
20509></DIV
20510><DIV
20511CLASS="section"
20512><HR><H2
20513CLASS="section"
20514><A
20515NAME="AEN6033"
20516>C.21. Vector Constant</A
20517></H2
20518><P
20519>There is only one vector constant which acts as a zero
20520 vector: ZERO_VECTOR = &#60;0,0,0&#62;.</P
20521></DIV
20522><DIV
20523CLASS="section"
20524><HR><H2
20525CLASS="section"
20526><A
20527NAME="AEN6036"
20528>C.22. Rotation Constant</A
20529></H2
20530><P
20531>There is only one rotation constant which acts as a zero
20532 rotation: ZERO_ROTATION = &#60;0,0,0,1&#62;.</P
20533></DIV
20534><DIV
20535CLASS="section"
20536><HR><H2
20537CLASS="section"
20538><A
20539NAME="AEN6039"
20540>C.23. Simulator Data Constants</A
20541></H2
20542><P
20543>These constants are used in calls to the <A
20544HREF="#AEN3388"
20545>llRequestSimulatorData</A
20546> api to
20547 collect information about a simulator which will be provided in the
20548 <A
20549HREF="#AEN4950"
20550>dataserver event</A
20551>.</P
20552><P
20553></P
20554><DIV
20555CLASS="variablelist"
20556><P
20557><B
20558>Simulator Data Constants</B
20559></P
20560><DL
20561><DT
20562>DATA_SIM_POS</DT
20563><DD
20564><P
20565>The global position of the simulator. Cast the
20566 value to a vector.</P
20567></DD
20568><DT
20569>DATA_SIM_STATUS</DT
20570><DD
20571><P
20572>The status of the simulator. Currently, this may be one of the following:
20573 <P
20574></P
20575><UL
20576><LI
20577STYLE="list-style-type: opencircle"
20578><P
20579>up</P
20580></LI
20581><LI
20582STYLE="list-style-type: opencircle"
20583><P
20584>down</P
20585></LI
20586><LI
20587STYLE="list-style-type: opencircle"
20588><P
20589>stopping</P
20590></LI
20591><LI
20592STYLE="list-style-type: opencircle"
20593><P
20594>starting</P
20595></LI
20596><LI
20597STYLE="list-style-type: opencircle"
20598><P
20599>crashed</P
20600></LI
20601></UL
20602>
20603 </P
20604></DD
20605></DL
20606></DIV
20607></DIV
20608><DIV
20609CLASS="section"
20610><HR><H2
20611CLASS="section"
20612><A
20613NAME="AEN6065"
20614>C.24. Vehicle Parameters</A
20615></H2
20616><P
20617></P
20618><DIV
20619CLASS="variablelist"
20620><P
20621><B
20622>Parameters</B
20623></P
20624><DL
20625><DT
20626><A
20627HREF="#AEN956"
20628>VEHICLE_LINEAR_FRICTION_TIMESCALE</A
20629></DT
20630><DD
20631><P
20632>A vector of timescales for exponential decay of the
20633 vehicle's linear velocity along its preferred axes of motion (at, left,
20634 up). Range = [0.07, inf) seconds for each element of the vector.
20635 </P
20636></DD
20637><DT
20638><A
20639HREF="#AEN956"
20640>VEHICLE_ANGULAR_FRICTION_TIMESCALE</A
20641></DT
20642><DD
20643><P
20644>A vector of timescales for exponential decay of the
20645 vehicle's angular velocity about its preferred axes of motion (at,
20646 left, up). Range = [0.07, inf) seconds for each element of the vector.
20647 </P
20648></DD
20649><DT
20650><A
20651HREF="#AEN866"
20652>VEHICLE_LINEAR_MOTOR_DIRECTION</A
20653></DT
20654><DD
20655><P
20656>The direction and magnitude (in preferred frame) of the
20657 vehicle's linear motor. The vehicle will accelerate (or decelerate if
20658 necessary) to match its velocity to its motor. Range of magnitude =
20659 [0, 30] meters/second.
20660 </P
20661></DD
20662><DT
20663><A
20664HREF="#AEN866"
20665>VEHICLE_LINEAR_MOTOR_OFFSET</A
20666></DT
20667><DD
20668><P
20669>The offset point from the vehicle's center of mass at which
20670 the linear motor's impulse is applied. This allows the linear motor
20671 to also cause rotational torque. Range of magnitude = [0, 100]
20672 meters.</P
20673></DD
20674><DT
20675><A
20676HREF="#AEN866"
20677>VEHICLE_LINEAR_MOTOR_TIMESCALE</A
20678></DT
20679><DD
20680><P
20681>The timescale for exponential approach to full
20682 linear motor velocity.</P
20683></DD
20684><DT
20685><A
20686HREF="#AEN866"
20687>VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE</A
20688></DT
20689><DD
20690><P
20691>The timescale for exponential decay of the linear
20692 motor's magnitude.</P
20693></DD
20694><DT
20695><A
20696HREF="#AEN898"
20697>VEHICLE_ANGULAR_MOTOR_DIRECTION</A
20698></DT
20699><DD
20700><P
20701>The direction and magnitude (in preferred frame)
20702 of the vehicle's angular motor.The vehicle will accelerate (or
20703 decelerate if necessary) to match its velocity to its
20704 motor.</P
20705></DD
20706><DT
20707><A
20708HREF="#AEN898"
20709>VEHICLE_ANGULAR_MOTOR_TIMESCALE</A
20710></DT
20711><DD
20712><P
20713>The timescale for exponential approach to full
20714 angular motor velocity.</P
20715></DD
20716><DT
20717><A
20718HREF="#AEN898"
20719>VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE</A
20720></DT
20721><DD
20722><P
20723>The timescale for exponential decay of the angular
20724 motor's magnitude.</P
20725></DD
20726><DT
20727><A
20728HREF="#AEN979"
20729>VEHICLE_HOVER_HEIGHT</A
20730></DT
20731><DD
20732><P
20733>The height (above the terrain or water, or global)
20734 at which the vehicle will try to hover.</P
20735></DD
20736><DT
20737><A
20738HREF="#AEN979"
20739>VEHICLE_HOVER_EFFICIENCY</A
20740></DT
20741><DD
20742><P
20743>A slider between minimum (0.0 = bouncy) and
20744 maximum (1.0 = fast as possible) damped motion of the hover
20745 behavior.</P
20746></DD
20747><DT
20748><A
20749HREF="#AEN979"
20750>VEHICLE_HOVER_TIMESCALE</A
20751></DT
20752><DD
20753><P
20754>The period of bounce (or timescale of exponential
20755 approach, depending on the hover efficiency) for the vehicle to
20756 hover to the proper height.</P
20757></DD
20758><DT
20759><A
20760HREF="#AEN972"
20761>VEHICLE_BUOYANCY</A
20762></DT
20763><DD
20764><P
20765>A slider between minimum (0.0) and maximum
20766 anti-gravity (1.0).</P
20767></DD
20768><DT
20769><A
20770HREF="#vehicle_linear_deflection"
20771>VEHICLE_LINEAR_DEFLECTION_EFFICIENCY</A
20772></DT
20773><DD
20774><P
20775>A slider between minimum (0.0) and maximum (1.0)
20776 deflection of linear velocity. That is, it's a simple scalar for
20777 modulating the strength of linear deflection.</P
20778></DD
20779><DT
20780><A
20781HREF="#vehicle_linear_deflection"
20782>VEHICLE_LINEAR_DEFLECTION_TIMESCALE</A
20783></DT
20784><DD
20785><P
20786>The timescale for exponential success of linear
20787 deflection. It is another way to specify how much time
20788 it takes for the vehicle's linear velocity to be redirected to
20789 it's preferred axis of motion.</P
20790></DD
20791><DT
20792><A
20793HREF="#vehicle_angular_deflection"
20794>VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY</A
20795></DT
20796><DD
20797><P
20798>A slider between minimum (0.0) and maximum (1.0)
20799 deflection of angular orientation. That is, it's a simple scalar
20800 for modulating the strength of angular deflection such that the
20801 vehicle's preferred axis of motion points toward it's real
20802 velocity.</P
20803></DD
20804><DT
20805><A
20806HREF="#vehicle_angular_deflection"
20807>VEHICLE_ANGULAR_DEFLECTION_TIMESCALE</A
20808></DT
20809><DD
20810><P
20811>The timescale for exponential success of angular
20812 deflection. It's another way to specify the strength
20813 of the vehicle's tendency to reorient itself so that it's
20814 preferred axis of motion agrees with it's true
20815 velocity.</P
20816></DD
20817><DT
20818><A
20819HREF="#AEN938"
20820>VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY</A
20821></DT
20822><DD
20823><P
20824>A slider between minimum (0.0 = wobbly) and
20825 maximum (1.0 = firm as possible) stability of the vehicle to keep
20826 itself upright.</P
20827></DD
20828><DT
20829><A
20830HREF="#AEN938"
20831>VEHICLE_VERTICAL_ATTRACTION_TIMESCALE</A
20832></DT
20833><DD
20834><P
20835>The period of wobble, or timescale for exponential
20836 approach, of the vehicle to rotate such that it's preferred
20837 "up" axis is oriented along the world's "up"
20838 axis.</P
20839></DD
20840><DT
20841><A
20842HREF="#AEN949"
20843>VEHICLE_BANKING_EFFICIENCY</A
20844></DT
20845><DD
20846><P
20847>A slider between anti (-1.0), none (0.0), and
20848 maximum (1.0) banking strength.</P
20849></DD
20850><DT
20851><A
20852HREF="#AEN949"
20853>VEHICLE_BANKING_MIX</A
20854></DT
20855><DD
20856><P
20857>A slider between static (0.0) and dynamic (1.0)
20858 banking. "Static" means the banking scales only with the
20859 angle of roll, whereas "dynamic" is a term that also
20860 scales with the vehicle's linear speed.</P
20861></DD
20862><DT
20863><A
20864HREF="#AEN949"
20865>VEHICLE_BANKING_TIMESCALE</A
20866></DT
20867><DD
20868><P
20869>The timescale for banking to exponentially
20870 approach it's maximum effect. This is another way to scale the
20871 strength of the banking effect, however it affects the term that
20872 is proportional to the difference between what the banking
20873 behavior is trying to do, and what the vehicle is actually
20874 doing.</P
20875></DD
20876><DT
20877><A
20878HREF="#AEN990"
20879>VEHICLE_REFERENCE_FRAME</A
20880></DT
20881><DD
20882><P
20883>A rotation of the vehicle's preferred axes of
20884 motion and orientation (at, left, up) with respect to the
20885 vehicle's local frame (x, y, z).</P
20886></DD
20887></DL
20888></DIV
20889></DIV
20890><DIV
20891CLASS="section"
20892><HR><H2
20893CLASS="section"
20894><A
20895NAME="AEN6184"
20896>C.25. Vehicle Flags</A
20897></H2
20898><P
20899></P
20900><DIV
20901CLASS="variablelist"
20902><P
20903><B
20904>Flags</B
20905></P
20906><DL
20907><DT
20908><A
20909NAME="const_vehicle_flag_no_deflection_up"
20910></A
20911>VEHICLE_FLAG_NO_DEFLECTION_UP</DT
20912><DD
20913><P
20914>This flag prevents
20915 <A
20916HREF="#vehicle_linear_deflection"
20917>linear deflection</A
20918>
20919 parallel to world z-axis. This is useful for preventing ground
20920 vehicles with large linear deflection, like bumper cars, from climbing
20921 their linear deflection into the sky.</P
20922></DD
20923><DT
20924><A
20925NAME="const_vehicle_flag_limit_roll_only"
20926></A
20927>VEHICLE_FLAG_LIMIT_ROLL_ONLY</DT
20928><DD
20929><P
20930>For vehicles with
20931 <A
20932HREF="#AEN938"
20933>vertical attractor</A
20934>
20935 that want to be able to climb/dive, for instance, airplanes that want
20936 to use the <A
20937HREF="#AEN949"
20938>banking</A
20939>
20940 feature.</P
20941></DD
20942><DT
20943><A
20944NAME="const_vehicle_flag_hover_water_only"
20945></A
20946>VEHICLE_FLAG_HOVER_WATER_ONLY</DT
20947><DD
20948><P
20949>Ignore terrain height when
20950 <A
20951HREF="#AEN979"
20952>hovering</A
20953>.</P
20954></DD
20955><DT
20956><A
20957NAME="const_vehicle_flag_hover_terrain_only"
20958></A
20959>VEHICLE_FLAG_HOVER_TERRAIN_ONLY</DT
20960><DD
20961><P
20962>Ignore water height when
20963 <A
20964HREF="#AEN979"
20965>hovering</A
20966>.</P
20967></DD
20968><DT
20969><A
20970NAME="const_vehicle_flag_hover_global_height"
20971></A
20972>VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT</DT
20973><DD
20974><P
20975><A
20976HREF="#AEN979"
20977>Hover</A
20978> at
20979 global height instead of height above ground or water.</P
20980></DD
20981><DT
20982><A
20983NAME="const_vehicle_flag_hover_up_only"
20984></A
20985>VEHICLE_FLAG_HOVER_UP_ONLY</DT
20986><DD
20987><P
20988><A
20989HREF="#AEN979"
20990>Hover</A
20991> doesn't
20992 push down. Use this flag for hovering
20993 vehicles that should be able to jump above their
20994 <A
20995HREF="#vehicle_hover_height"
20996>hover height</A
20997>.
20998 </P
20999></DD
21000><DT
21001>VEHICLE_FLAG_LIMIT_MOTOR_UP</DT
21002><DD
21003><P
21004>Prevents ground vehicles from motoring into the
21005 sky. This flag has a subtle effect when used with conjunction
21006 with <A
21007HREF="#AEN949"
21008>banking</A
21009>: the strength
21010 of the banking will decay when the vehicle no longer experiences
21011 collisions. The decay timescale is the same as
21012 <A
21013HREF="#vehicle_banking_timescale"
21014>VEHICLE_BANKING_TIMESCALE
21015 </A
21016>. This is to help prevent ground vehicles from steering
21017 when they are in mid jump.
21018 </P
21019></DD
21020><DT
21021><A
21022NAME="const_vehicle_flag_mouselook_steer"
21023></A
21024>VEHICLE_FLAG_MOUSELOOK_STEER</DT
21025><DD
21026><P
21027>Steer the vehicle using the mouse. Use this
21028 flag to make the angular motor try to make the vehicle
21029 turn such that its <A
21030HREF="#vehicle_roll_pitch_yaw"
21031>local
21032 x-axis</A
21033> points in the same direction as
21034 the client-side camera.</P
21035></DD
21036><DT
21037><A
21038NAME="const_vehicle_flag_mouselook_bank"
21039></A
21040>VEHICLE_FLAG_MOUSELOOK_BANK</DT
21041><DD
21042><P
21043>Same as above, but relies on
21044 <A
21045HREF="#AEN949"
21046>banking</A
21047>. It remaps
21048 left-right motions of the client camera (also known as "yaw") to
21049 rotations about the vehicle's <A
21050HREF="#vehicle_roll_pitch_yaw"
21051>&#13; local x-axis</A
21052>.
21053 </P
21054></DD
21055><DT
21056><A
21057NAME="const_vehicle_flag_camera_decoupled"
21058></A
21059>VEHICLE_FLAG_CAMERA_DECOUPLED</DT
21060><DD
21061><P
21062>Makes mouselook camera rotate independently of
21063 the vehicle. By default the client mouselook camera will rotate
21064 about with the vehicle, however when this flag is set the camera
21065 direction is independent of the vehicle's rotation.
21066 </P
21067></DD
21068></DL
21069></DIV
21070></DIV
21071><DIV
21072CLASS="section"
21073><HR><H2
21074CLASS="section"
21075><A
21076NAME="AEN6241"
21077>C.26. Vehicle Types</A
21078></H2
21079><P
21080></P
21081><DIV
21082CLASS="variablelist"
21083><P
21084><B
21085>Types</B
21086></P
21087><DL
21088><DT
21089>VEHICLE_TYPE_SLED</DT
21090><DD
21091><P
21092>Simple vehicle that bumps along the ground, and likes to move along
21093 it's local x-axis.</P
21094><DIV
21095CLASS="informalexample"
21096><P
21097></P
21098><A
21099NAME="AEN6249"
21100></A
21101><PRE
21102CLASS="programlisting"
21103>&#13;// most friction for left-right, least for up-down
21104llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;30, 1, 1000&#62; );
21105
21106// no angular friction
21107llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, &#60;1000, 1000, 1000&#62; );
21108
21109// no linear motor
21110llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21111llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1000 );
21112llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 120 );
21113
21114// no angular motor
21115llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21116llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1000 );
21117llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 120 );
21118
21119// no hover (but with timescale of 10 sec if enabled)
21120llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21121llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 10 );
21122llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 10 );
21123llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 );
21124
21125// maximum linear deflection with timescale of 1 second
21126llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 );
21127llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1 );
21128
21129// no angular deflection
21130llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 );
21131llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 );
21132
21133// no vertical attractor (doesn't mind flipping over)
21134llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 );
21135llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1000 );
21136
21137// no banking
21138llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 0 );
21139llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 );
21140llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 10 );
21141
21142// default rotation of local frame
21143llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21144
21145// remove these flags
21146llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY
21147 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21148 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
21149 | VEHICLE_FLAG_HOVER_UP_ONLY );
21150
21151// set these flags (the limit_roll flag will have no effect
21152// until banking is enabled, if ever)
21153llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21154 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21155 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21156 </PRE
21157><P
21158></P
21159></DIV
21160></DD
21161><DT
21162>VEHICLE_TYPE_CAR</DT
21163><DD
21164><P
21165>Another vehicle that bounces along the ground but
21166 needs the motors to be driven from external controls or <A
21167HREF="#AEN5164"
21168>timer</A
21169> events.</P
21170><DIV
21171CLASS="informalexample"
21172><P
21173></P
21174><A
21175NAME="AEN6256"
21176></A
21177><PRE
21178CLASS="programlisting"
21179>&#13;// most friction for left-right, least for up-down
21180llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;100, 2, 1000&#62; );
21181
21182// no angular friction
21183llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, &#60;1000, 1000, 1000&#62; );
21184
21185// linear motor wins after about a second, decays after about a minute
21186llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21187llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1 );
21188llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21189
21190// angular motor wins after a second, decays in less time than that
21191llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21192llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1 );
21193llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.8 );
21194
21195// no hover
21196llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21197llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0 );
21198llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 1000 );
21199llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 );
21200
21201// maximum linear deflection with timescale of 2 seconds
21202llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 );
21203llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 2 );
21204
21205// no angular deflection
21206llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 );
21207llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 );
21208
21209// critically damped vertical attractor
21210llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 );
21211llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 10 );
21212
21213// weak negative critically damped banking
21214llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.2 );
21215llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 );
21216llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 );
21217
21218// default rotation of local frame
21219llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21220
21221// remove these flags
21222llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY
21223 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21224 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT);
21225
21226// set these flags
21227llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21228 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21229 | VEHICLE_FLAG_HOVER_UP_ONLY
21230 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21231 </PRE
21232><P
21233></P
21234></DIV
21235></DD
21236><DT
21237>VEHICLE_TYPE_BOAT</DT
21238><DD
21239><P
21240>Hovers over water with lots of friction and some angular deflection.</P
21241><DIV
21242CLASS="informalexample"
21243><P
21244></P
21245><A
21246NAME="AEN6262"
21247></A
21248><PRE
21249CLASS="programlisting"
21250>&#13;// least for forward-back, most friction for up-down
21251llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;10, 3, 2&#62; );
21252
21253// uniform angular friction (setting it as a scalar rather than a vector)
21254llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 10 );
21255
21256// linear motor wins after about five seconds, decays after about a minute
21257llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21258llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 5 );
21259llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21260
21261// angular motor wins after four seconds, decays in same amount of time
21262llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21263llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 4 );
21264llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 4 );
21265
21266// hover
21267llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21268llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.5 );
21269llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 2.0 );
21270llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 );
21271
21272// halfway linear deflection with timescale of 3 seconds
21273llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5 );
21274llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 3 );
21275
21276// angular deflection
21277llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.5 );
21278llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 5 );
21279
21280// somewhat bouncy vertical attractor
21281llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5 );
21282llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 5 );
21283
21284// weak negative damped banking
21285llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.3 );
21286llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.8 );
21287llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 );
21288
21289// default rotation of local frame
21290llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21291
21292// remove these flags
21293llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21294 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21295 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT);
21296
21297// set these flags
21298llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21299 | VEHICLE_FLAG_HOVER_WATER_ONLY
21300 | VEHICLE_FLAG_HOVER_UP_ONLY
21301 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21302 </PRE
21303><P
21304></P
21305></DIV
21306></DD
21307><DT
21308>VEHICLE_TYPE_AIRPLANE</DT
21309><DD
21310><P
21311>Uses linear deflection for lift, no hover, and banking to turn.</P
21312><DIV
21313CLASS="informalexample"
21314><P
21315></P
21316><A
21317NAME="AEN6268"
21318></A
21319><PRE
21320CLASS="programlisting"
21321>&#13;// very little friction along forward-back axis
21322llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, &#60;200, 10, 5&#62; );
21323
21324// uniform angular friction
21325llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 20 );
21326
21327// linear motor
21328llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21329llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 2 );
21330llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21331
21332// angular motor
21333llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21334llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 4 );
21335llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 8 );
21336
21337// no hover
21338llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
21339llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.5 );
21340llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 1000 );
21341llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 );
21342
21343// linear deflection
21344llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5 );
21345llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.5 );
21346
21347// angular deflection
21348llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 1.0 );
21349llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 2.0 );
21350
21351// vertical attractor
21352llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.9 );
21353llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2 );
21354
21355// banking
21356llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 1 );
21357llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.7 );
21358llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 2 );
21359
21360// default rotation of local frame
21361llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21362
21363// remove these flags
21364llRemoveVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21365 | VEHICLE_FLAG_HOVER_WATER_ONLY
21366 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21367 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
21368 | VEHICLE_FLAG_HOVER_UP_ONLY
21369 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21370
21371// set these flags
21372llSetVehicleFlags( VEHICLE_FLAG_LIMIT_ROLL_ONLY );
21373 </PRE
21374><P
21375></P
21376></DIV
21377></DD
21378><DT
21379>VEHICLE_TYPE_BALLOON</DT
21380><DD
21381><P
21382>Hover, and friction, but no deflection.</P
21383><DIV
21384CLASS="informalexample"
21385><P
21386></P
21387><A
21388NAME="AEN6274"
21389></A
21390><PRE
21391CLASS="programlisting"
21392>&#13;// uniform linear friction
21393llSetVehicleFloatParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, 5 );
21394
21395// uniform angular friction
21396llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 10 );
21397
21398// linear motor
21399llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21400llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 5 );
21401llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );
21402
21403// angular motor
21404llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, &#60;0, 0, 0&#62; );
21405llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 6 );
21406llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 10 );
21407
21408// hover
21409llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 5 );
21410llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.8 );
21411llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 10 );
21412llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 );
21413
21414// no linear deflection
21415llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0 );
21416llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 5 );
21417
21418// no angular deflection
21419llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 );
21420llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 5 );
21421
21422// no vertical attractor
21423llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 );
21424llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1000 );
21425
21426// no banking
21427llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 0 );
21428llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.7 );
21429llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 5 );
21430
21431// default rotation of local frame
21432llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, &#60;0, 0, 0, 1&#62; );
21433
21434// remove all flags
21435llRemoveVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
21436 | VEHICLE_FLAG_HOVER_WATER_ONLY
21437 | VEHICLE_FLAG_LIMIT_ROLL_ONLY
21438 | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
21439 | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
21440 | VEHICLE_FLAG_HOVER_UP_ONLY
21441 | VEHICLE_FLAG_LIMIT_MOTOR_UP );
21442 </PRE
21443><P
21444></P
21445></DIV
21446></DD
21447></DL
21448></DIV
21449></DIV
21450><DIV
21451CLASS="section"
21452><HR><H2
21453CLASS="section"
21454><A
21455NAME="AEN6276"
21456>C.27. Primitive Constants</A
21457></H2
21458><P
21459>These constants are used in calls to the <A
21460HREF="#AEN3973"
21461>llSetPrimitiveParams</A
21462> and <A
21463HREF="#AEN2075"
21464>llGetPrimitiveParams</A
21465> api to
21466 specify parameters.</P
21467><P
21468></P
21469><DIV
21470CLASS="variablelist"
21471><P
21472><B
21473>Primitive Parameters</B
21474></P
21475><DL
21476><DT
21477>PRIM_TYPE</DT
21478><DD
21479><P
21480>This allows the various primitive shape parameters to be controlled. PRIM_TYPE must be followed by
21481 appropriate arguments based on which type is selected.</P
21482><P
21483></P
21484><DIV
21485CLASS="variablelist"
21486><P
21487><B
21488>PRIM_TYPE Values</B
21489></P
21490><DL
21491><DT
21492>PRIM_TYPE_BOX</DT
21493><DD
21494><P
21495>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
21496></DD
21497><DT
21498>PRIM_TYPE_CYLINDER</DT
21499><DD
21500><P
21501>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
21502></DD
21503><DT
21504>PRIM_TYPE_PRISM</DT
21505><DD
21506><P
21507>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
21508></DD
21509><DT
21510>PRIM_TYPE_SPHERE</DT
21511><DD
21512><P
21513>Sets the primitive to a sphere, followed by integer hole shape, vector cut, float hollow, vector twist, and vector dimple.</P
21514></DD
21515><DT
21516>PRIM_TYPE_TORUS</DT
21517><DD
21518><P
21519>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
21520></DD
21521><DT
21522>PRIM_TYPE_TUBE</DT
21523><DD
21524><P
21525>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
21526></DD
21527><DT
21528>PRIM_TYPE_RING</DT
21529><DD
21530><P
21531>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
21532></DD
21533></DL
21534></DIV
21535><P
21536>Choose hole shape from one of PRIM_HOLE_DEFAULT, PRIM_HOLE_CIRCLE, PRIM_HOLE_SQUARE, or PRIM_HOLE_TRIANGLE.</P
21537></DD
21538><DT
21539>PRIM_MATERIAL</DT
21540><DD
21541><P
21542>Choose material from one of PRIM_MATERIAL_STONE, PRIM_MATERIAL_METAL, PRIM_MATERIAL_GLASS,
21543 PRIM_MATERIAL_WOOD, PRIM_MATERIAL_FLESH, PRIM_MATERIAL_PLASTIC, PRIM_MATERIAL_RUBBER, or PRIM_MATERIAL_LIGHT.</P
21544></DD
21545><DT
21546>PRIM_PHYSICS</DT
21547><DD
21548><P
21549>Set physics to TRUE or FALSE.</P
21550></DD
21551><DT
21552>PRIM_TEMP_ON_REZ</DT
21553><DD
21554><P
21555>Set temporary on rez to TRUE or FALSE.</P
21556></DD
21557><DT
21558>PRIM_PHANTOM</DT
21559><DD
21560><P
21561>Set phantom to TRUE or FALSE.</P
21562></DD
21563><DT
21564>PRIM_POSITION</DT
21565><DD
21566><P
21567>Sets the position with a vector.</P
21568></DD
21569><DT
21570>PRIM_SIZE</DT
21571><DD
21572><P
21573>Sets the size with a vector.</P
21574></DD
21575><DT
21576>PRIM_ROTATION</DT
21577><DD
21578><P
21579>Sets the rotation with a rotation.</P
21580></DD
21581><DT
21582>PRIM_TEXTURE</DT
21583><DD
21584><P
21585>Followed by an integer face, key id, vector repeats, vector offsets, and float rotation in radians.</P
21586></DD
21587><DT
21588>PRIM_COLOR</DT
21589><DD
21590><P
21591>Followed by an integer face, vector color, and float alpha.</P
21592></DD
21593><DT
21594>PRIM_BUMP_SHINY</DT
21595><DD
21596><P
21597>Followed by an integer face, one of PRIM_SHINY_NONE, PRIM_SHINY_LOW, PRIM_SHINY_MEDIUM, or PRIM_SHINY_HIGH,
21598 and one of PRIM_BUMP_NONE, PRIM_BUMP_BRIGHT, PRIM_BUMP_DARK, PRIM_BUMP_WOOD, PRIM_BUMP_BARK,
21599 PRIM_BUMP_BRICKS, PRIM_BUMP_CHECKER, PRIM_BUMP_CONCRETE, PRIM_BUMP_TILE, PRIM_BUMP_STONE, PRIM_BUMP_DISKS,
21600 PRIM_BUMP_GRAVEL, PRIM_BUMP_BLOBS, PRIM_BUMP_SIDING, PRIM_BUMP_LARGETILE, PRIM_BUMP_STUCCO, PRIM_BUMP_SUCTION,
21601 or PRIM_BUMP_WEAVE.</P
21602></DD
21603></DL
21604></DIV
21605></DIV
21606><DIV
21607CLASS="section"
21608><HR><H2
21609CLASS="section"
21610><A
21611NAME="AEN6358"
21612>C.28. XML-RPC Constants</A
21613></H2
21614><P
21615>These constants are passed to the remote_data event: REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, and REMOTE_DATA_REPLY.</P
21616></DIV
21617><DIV
21618CLASS="section"
21619><HR><H2
21620CLASS="section"
21621><A
21622NAME="AEN6361"
21623>C.29. Permission Mask Constants</A
21624></H2
21625><P
21626>These MASK_* constants are used as arguments to <A
21627HREF="#AEN2009"
21628>llGetObjectPermMask</A
21629> and <A
21630HREF="#AEN1801"
21631>llGetInventoryPermMask</A
21632>. These functions return combinations of PERM_* constants.</P
21633><P
21634></P
21635><DIV
21636CLASS="variablelist"
21637><P
21638><B
21639>Mask and Permission Constants</B
21640></P
21641><DL
21642><DT
21643>MASK_BASE</DT
21644><DD
21645><P
21646>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
21647></DD
21648><DT
21649>MASK_OWNER</DT
21650><DD
21651><P
21652>Specifies owner permissions. These are never more permissive than base permissions.</P
21653></DD
21654><DT
21655>MASK_GROUP</DT
21656><DD
21657><P
21658>Specifies group permissions. These are never more permissive than owner permissions.</P
21659></DD
21660><DT
21661>MASK_EVERYONE</DT
21662><DD
21663><P
21664>Specifies everyone permissions. These are never more permissive than owner permissions.</P
21665></DD
21666><DT
21667>MASK_NEXT</DT
21668><DD
21669><P
21670>Specifies next owner permissions. These are never more permissive than base permissions.</P
21671></DD
21672><DT
21673>PERM_MOVE</DT
21674><DD
21675><P
21676>Set if movement is allowed.</P
21677></DD
21678><DT
21679>PERM_MODIFY</DT
21680><DD
21681><P
21682>Set if modification is allowed.</P
21683></DD
21684><DT
21685>PERM_COPY</DT
21686><DD
21687><P
21688>Set if copying is allowed.</P
21689></DD
21690><DT
21691>PERM_TRANSFER</DT
21692><DD
21693><P
21694>Set if transfers are allowed.</P
21695></DD
21696><DT
21697>PERM_ALL</DT
21698><DD
21699><P
21700>This is returned if all other PERM_* are set.</P
21701></DD
21702></DL
21703></DIV
21704></DIV
21705><DIV
21706CLASS="section"
21707><HR><H2
21708CLASS="section"
21709><A
21710NAME="AEN6408"
21711>C.30. Parcel Media Constants (Movies)</A
21712></H2
21713><P
21714>These constants are passed to the <A
21715HREF="#AEN3031"
21716>llParcelMediaCommand</A
21717> to control playback of movies and other multimedia within a land parcel.</P
21718><P
21719></P
21720><DIV
21721CLASS="variablelist"
21722><P
21723><B
21724>Parcel Media Constants</B
21725></P
21726><DL
21727><DT
21728>PARCEL_MEDIA_COMMAND_STOP</DT
21729><DD
21730><P
21731>Stop the media stream and go back to the first frame.</P
21732></DD
21733><DT
21734>PARCEL_MEDIA_COMMAND_PAUSE</DT
21735><DD
21736><P
21737>Pause the media stream (stop playing but stay on current frame).</P
21738></DD
21739><DT
21740>PARCEL_MEDIA_COMMAND_PLAY</DT
21741><DD
21742><P
21743>Start the media stream playing from the current frame and stop when the end is reached.</P
21744></DD
21745><DT
21746>PARCEL_MEDIA_COMMAND_LOOP</DT
21747><DD
21748><P
21749>Start the media stream playing from the current frame. When the end is reached, loop to the beginning and continue.
21750 </P
21751></DD
21752><DT
21753>PARCEL_MEDIA_COMMAND_TEXTURE</DT
21754><DD
21755><P
21756>Use this to get or set the parcel's media texture.
21757 </P
21758></DD
21759><DT
21760>PARCEL_MEDIA_COMMAND_URL</DT
21761><DD
21762><P
21763>Used to get or set the parcel's media url.
21764 </P
21765></DD
21766><DT
21767>PARCEL_MEDIA_COMMAND_TIME</DT
21768><DD
21769><P
21770>Move a media stream to a specific time.
21771 </P
21772></DD
21773><DT
21774>PARCEL_MEDIA_COMMAND_AGENT</DT
21775><DD
21776><P
21777>Applies the media command to the specified agent only.
21778 </P
21779></DD
21780><DT
21781>PARCEL_MEDIA_COMMAND_UNLOAD</DT
21782><DD
21783><P
21784>Completely unloads the movie and restores the original texture.
21785 </P
21786></DD
21787><DT
21788>PARCEL_MEDIA_COMMAND_AUTO_ALIGN</DT
21789><DD
21790><P
21791>Sets the parcel option 'Auto scale content'.
21792 </P
21793></DD
21794></DL
21795></DIV
21796></DIV
21797></DIV
21798></DIV
21799></BODY
21800></HTML
21801> \ No newline at end of file