Display.lsl 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. // :CATEGORY:Tour
  2. // :NAME:TourCopter
  3. // :AUTHOR:Ferd Frederix
  4. // :CREATED:2013-09-06
  5. // :EDITED:2013-09-18 15:39:08
  6. // :ID:909
  7. // :NUM:1294
  8. // :REV:1
  9. // :WORLD:Second Life
  10. // :DESCRIPTION:
  11. // Tour
  12. // :CODE:
  13. // ______ _ ______ _ _
  14. // | ___| | | | ___| | | (_)
  15. // | |_ ___ _ __ __| | | |_ _ __ ___ __| | ___ _ __ ___ __
  16. // | _/ _ \ '__/ _` | | _| '__/ _ \/ _` |/ _ \ '__| \ \/ /
  17. // | || __/ | | (_| | | | | | | __/ (_| | __/ | | |> <
  18. // \_| \___|_| \__,_| \_| |_| \___|\__,_|\___|_| |_/_/\_\
  19. //
  20. // fred@mitsi.com
  21. // tour copter script
  22. // Display
  23. //
  24. //Revisions:
  25. // 1/28/2010 initial release
  26. integer display = TRUE;
  27. string guest = "";
  28. vector pos;
  29. string altitude;
  30. string altitude_sea;
  31. string text;
  32. integer afterburner;
  33. vector velocity;
  34. string speed;
  35. string throttle;
  36. default
  37. {
  38. state_entry()
  39. {
  40. llSetText(" ", <1.0, 1.0, 1.0>, 0.0);
  41. afterburner = FALSE;
  42. }
  43. link_message(integer sender, integer num, string str, key id)
  44. {
  45. if (str == "start") {
  46. state active;
  47. } else if (str == "throttle") {
  48. throttle = (string)num;
  49. } else if (str == "displayoff") {
  50. display = FALSE;
  51. } else if (str == "displayon") {
  52. display = TRUE;
  53. }
  54. }
  55. }
  56. state active
  57. {
  58. state_entry()
  59. {
  60. if (display) {
  61. llSetTimerEvent(0.25);
  62. }
  63. }
  64. state_exit()
  65. {
  66. llSetTimerEvent(0.0);
  67. }
  68. on_rez(integer sparam)
  69. {
  70. state default;
  71. }
  72. timer()
  73. {
  74. if (display) {
  75. pos = llGetPos() + (llGetVel() / 2.0);
  76. if (pos.x > 256.0 || pos.x < 0.0 || pos.y > 256.0 || pos.y < 0.0) {
  77. llMessageLinked(LINK_SET, 0, "afterburneroff", NULL_KEY);
  78. }
  79. pos = llGetPos();
  80. if (afterburner) {
  81. text = "Throttle: AFTERBURNER";
  82. } else {
  83. text = "Throttle: " + throttle + "%";
  84. }
  85. velocity = llGetVel();
  86. speed = (string)llVecMag(velocity);
  87. speed = llGetSubString(speed, 0, llSubStringIndex(speed, ".") + 3);
  88. text += " - Speed: " + speed + " m/s";
  89. // rot = llGetRot();
  90. // fwd = llRot2Up(rot * llRotBetween(llRot2Fwd(rot), <0.0, 0.0, 1.0>)) * -1.0;
  91. // heading = llFloor((llAtan2(fwd.x, fwd.y) * RAD_TO_DEG) + 0.5);
  92. // if (heading < 0) {
  93. // heading += 360;
  94. // }
  95. // text += " - Heading: " + (string)heading + " degrees";
  96. text += "\n----------";
  97. altitude = (string)pos.z;
  98. altitude = llGetSubString(altitude, 0, llSubStringIndex(altitude, ".") + 3);
  99. altitude_sea = (string)(pos.z - llWater(ZERO_VECTOR));
  100. altitude_sea = llGetSubString(altitude_sea, 0, llSubStringIndex(altitude_sea, ".") + 3);
  101. text += "\nAltitude (abs): " + altitude + " meters";
  102. text += "\nAltitude (sea): " + altitude_sea + " meters";
  103. text += "\nCoordinates: " + (string)llFloor(pos.x) + ", " + (string)llFloor(pos.y) + " (" + llGetRegionName() + ")";
  104. guest = llGetLinkName(18);
  105. if (guest != "Object") {
  106. text += "\nGuest Pilot: " + guest;
  107. }
  108. llSetText(text + "\n ", <0.25, 0.25, 1.0>, 1.0);
  109. } else {
  110. llSetTimerEvent(0.0);
  111. llSetText(" ", <0.25, 0.25, 1.0>, 0.0);
  112. }
  113. }
  114. link_message(integer sender, integer num, string str, key id)
  115. {
  116. if (str == "stop" ) {
  117. state default;
  118. } else if (str == "throttle") {
  119. throttle = (string)num;
  120. } else if (str == "afterburner") {
  121. afterburner = TRUE;
  122. } else if (str == "afterburneroff") {
  123. afterburner = FALSE;
  124. } else if (str == "displayoff") {
  125. display = FALSE;
  126. } else if (str == "displayon") {
  127. display = TRUE;
  128. llSetTimerEvent(0.25);
  129. }
  130. }
  131. }