pilot.lsl 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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:1299
  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. //
  23. //Revisions:
  24. // 1/28/2010 initial release
  25. /// Pilot interface
  26. // This script should be in the root prim.
  27. // This script does all the listening for the vehicle.
  28. // This script sends a message on touch with the string "touch" and the key of the person touching.
  29. integer channel = 543;
  30. integer power;
  31. key pilot;
  32. string trim(string input)
  33. {
  34. return llDumpList2String(llParseString2List(input, [" "], []), " ");
  35. }
  36. default
  37. {
  38. state_entry()
  39. {
  40. llCollisionSound("", 0.0);
  41. llListen(channel,"","","");
  42. power = FALSE;
  43. pilot = NULL_KEY;
  44. }
  45. on_rez(integer sparam)
  46. {
  47. llResetScript();
  48. }
  49. touch_start(integer n)
  50. {
  51. llMessageLinked(LINK_ALL_CHILDREN, 0, "touched", llDetectedKey(0));
  52. }
  53. listen(integer channel, string name, key id, string message)
  54. {
  55. message = trim(message);
  56. message = llToLower(message);
  57. if (message == "start" && !power )
  58. {
  59. power = TRUE;
  60. llWhisper(0, "/me Online.");
  61. llMessageLinked(LINK_SET, 0, "on", NULL_KEY);
  62. llMessageLinked(LINK_SET, 0, "start", NULL_KEY);
  63. }
  64. else if (message == "stop" && power)
  65. {
  66. power = FALSE;
  67. llWhisper(0, "/me Powering Down");
  68. llMessageLinked(LINK_SET, 0, "stop", NULL_KEY);
  69. llMessageLinked(LINK_SET, 0, "off", NULL_KEY);
  70. } else if (message == "displayon") {
  71. llMessageLinked(LINK_SET, 0, "display on", NULL_KEY);
  72. } else if (message == "displayoff") {
  73. llMessageLinked(LINK_SET, 0, "display off", NULL_KEY);
  74. } else if (message == "unsit" ) {
  75. llMessageLinked(LINK_SET, 0, "unsit", NULL_KEY);
  76. } else if (message == "help") {
  77. llGiveInventory(id, "Help");
  78. } else if (llStringLength(message) == 1 && (string)((integer)message) == message) {
  79. llMessageLinked(LINK_SET, (integer)message, "set throttle", NULL_KEY);
  80. }
  81. else if (message == "demo")
  82. {
  83. llSay(0,"DEMO START");
  84. list demos;
  85. demos += "cannon-on";
  86. demos += "gun-aim";
  87. demos += "fire";
  88. demos += "bullet";
  89. demos += "fire-laser";
  90. demos += "gun-stop";
  91. demos += "cannon-off";
  92. demos += "bomb";
  93. demos += "start";
  94. demos += "display on";
  95. demos += "throttle";
  96. demos += "afterburner";
  97. demos += "afterburneroff";
  98. demos += "on";
  99. demos += "stop";
  100. demos += "off";
  101. demos += "unsit";
  102. integer i;
  103. integer max = llGetListLength(demos);
  104. for (i = 0; i < max; i++)
  105. {
  106. llSay(0,llList2String(demos,i));
  107. llMessageLinked(LINK_SET,10,llList2String(demos,i),NULL_KEY);
  108. llSleep(5.0);
  109. }
  110. llSay(0,"DEMO COMPLETED");
  111. }
  112. }
  113. link_message(integer sender, integer num, string str, key id)
  114. {
  115. if (str == "pilot" && id == NULL_KEY)
  116. {
  117. pilot = NULL_KEY;
  118. power = FALSE;
  119. }
  120. else if (str == "pilot" && id != NULL_KEY)
  121. {
  122. pilot = id;
  123. power = TRUE;
  124. }
  125. }
  126. }