Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1.  
  2. float sensorRange = 100.0;
  3. integer index;
  4. integer menuChan;
  5. integer menuHandle;
  6. integer offsetTest = 0;
  7. integer rezTest = 0;
  8. key id;
  9. //You can change the heights that you want for destinations here in this list.
  10. list destList =["start", "ground", "100", "200", "500", "1000", "2000", "3000", "4000"];
  11. list objList;
  12. list offsetList;
  13. string rezObj;
  14. vector infVec = <1.304382E+19, 1.304382E+19, 0.0 >;
  15. vector rezOffset = <0, 0, 0 >;
  16. vector startPos;
  17. vector target;
  18.  
  19. inventory()
  20. {
  21. objList =[];
  22. integer invCnt = llGetInventoryNumber(INVENTORY_OBJECT);
  23. integer x;
  24. for (x = 0; x < invCnt; x++) {
  25. objList += (list) llGetInventoryName(INVENTORY_OBJECT, x);
  26. offsetList += <0, 0, 0 >;
  27. }
  28. }
  29.  
  30. posJump()
  31. {
  32. llSetPrimitiveParams([PRIM_POSITION, infVec, PRIM_POSITION, target]);
  33. }
  34.  
  35. default {
  36. state_entry() {
  37. llSetClickAction(CLICK_ACTION_SIT);
  38. startPos = llGetPos();
  39. llSetText("Sit and pick from menu", <0, 0, 0 >, 1.0);
  40. menuChan = (integer) llFrand(-1000000) - 1000000;
  41. inventory();
  42. }
  43. on_rez(integer start_param) {
  44. llSetClickAction(CLICK_ACTION_SIT);
  45. startPos = llGetPos();
  46. }
  47. listen(integer channel, string name, key id, string msg) {
  48. if ("Height" == msg)
  49. llDialog(id, "Pick an elevation", destList, menuChan);
  50. else if ("Object" == msg)
  51. llDialog(id, "Pick an object", objList, menuChan);
  52. else if ("Set Offset" == msg) {
  53. llOwnerSay("Move seat to desired position then touch again to set offet" + "\nMaximum 10 meters");
  54. offsetTest = 1;
  55. }
  56. else if (~llListFindList(destList,[msg]) && llAvatarOnSitTarget() != NULL_KEY) {
  57. llSay(menuChan, "die");
  58. target = startPos;
  59. if (msg == "ground") {
  60. vector primSize = llGetScale();
  61. target.z = llGround(ZERO_VECTOR) + (primSize.z / 2);
  62. llSensorRemove();
  63. }
  64. else if (msg == "start") {
  65. target = startPos;
  66. llSensorRemove();
  67. }
  68. else {
  69. target.z = (float) msg;
  70. rezTest = 1;
  71. }
  72. posJump();
  73. if (rezTest) {
  74. if (rezObj == "")
  75. rezObj = llGetInventoryName(INVENTORY_OBJECT, 0);
  76. llRezObject(rezObj, llGetPos() + rezOffset, ZERO_VECTOR, ZERO_ROTATION, menuChan);
  77. rezTest = 0;
  78. llSensorRepeat("", "", AGENT, sensorRange, PI, 60.0);
  79. }
  80. llUnSit(llAvatarOnSitTarget());
  81. }
  82. else if (~llListFindList(objList,[msg])) {
  83. index = llListFindList(objList,[msg]);
  84. rezObj = msg;
  85. rezOffset = llList2Vector(offsetList, index);
  86. llDialog(id, "Pick an elevation", destList, menuChan);
  87. }
  88. }
  89. touch_start(integer total_number) {
  90. if (!offsetTest) {
  91. id = llDetectedKey(0);
  92. menuHandle = llListen(menuChan, "", "", "");
  93. if (llGetOwner() == id) {
  94. llDialog(id, "Choice",["Height", "Object", "Set Offset"], menuChan);
  95. }
  96. else {
  97. llDialog(id, "Choice",["Height", "Object"], menuChan);
  98. }
  99. }
  100. else {
  101. if (llVecDist(target, llGetPos()) > 10)
  102. llOwnerSay("Too far. Try again");
  103. else {
  104. rezOffset = (target - llGetPos()) + rezOffset;
  105. offsetList = llListReplaceList(offsetList,[rezOffset], index, index);
  106. offsetTest = 0;
  107. llListenRemove(menuHandle);
  108. llUnSit(llAvatarOnSitTarget());
  109. }
  110. }
  111. }
  112. sensor(integer n) {
  113.  
  114. }
  115. no_sensor() {
  116. llSay(menuChan, "die");
  117. llSensorRemove();
  118. target = startPos;
  119. posJump();
  120. }
  121. changed(integer change) {
  122. if (CHANGED_INVENTORY & change) {
  123. inventory();
  124. }
  125. else if (CHANGED_LINK & change) {
  126. if (llAvatarOnSitTarget() != NULL_KEY) {
  127. key id = llAvatarOnSitTarget();
  128. llSetText("", <0, 0, 0 >, 0);
  129. menuHandle = llListen(menuChan, "", "", "");
  130. llSetClickAction(CLICK_ACTION_TOUCH);
  131. if (id == llGetOwner()) {
  132. llDialog(llAvatarOnSitTarget(), "Choice",["Height", "Object", "Set Offset"], menuChan);
  133. }
  134. else {
  135. llDialog(llAvatarOnSitTarget(), "Choice",["Height", "Object"], menuChan);
  136. }
  137. }
  138. else {
  139. llSetText("Sit and touch to ascend", <0, 0, 0 >, 1.0);
  140. llSetClickAction(CLICK_ACTION_SIT);
  141. llListenRemove(menuHandle);
  142. }
  143. }
  144. else if (CHANGED_OWNER & change) {
  145. llResetScript();
  146. }
  147. }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement