turret_seat.lsl 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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:1305
  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. // Turret seat
  23. //
  24. //Revisions:
  25. // 1/28/2010 initial release
  26. key sitting = NULL_KEY;
  27. default
  28. {
  29. state_entry()
  30. {
  31. }
  32. changed(integer change)
  33. {
  34. key sitter = llAvatarOnSitTarget();
  35. if (sitter != NULL_KEY && sitting == NULL_KEY)
  36. {
  37. // Start tracking the avi for turret gun movement
  38. llMessageLinked(LINK_SET, 255, "gun-aim", sitter);
  39. llRequestPermissions(sitter, PERMISSION_TAKE_CONTROLS);
  40. sitting = sitter;
  41. }
  42. else if (sitter == NULL_KEY && sitting != NULL_KEY)
  43. {
  44. llMessageLinked(LINK_SET, 255, "gun-stop", NULL_KEY);
  45. llReleaseControls();
  46. sitting = NULL_KEY;
  47. }
  48. }
  49. run_time_permissions(integer perms)
  50. {
  51. if (perms & PERMISSION_TAKE_CONTROLS)
  52. {
  53. llTakeControls(CONTROL_ML_LBUTTON, TRUE, FALSE);
  54. }
  55. else
  56. {
  57. llReleaseControls();
  58. }
  59. }
  60. control(key id, integer level, integer edge)
  61. {
  62. if (level & CONTROL_ML_LBUTTON && edge & CONTROL_ML_LBUTTON)
  63. {
  64. if (llGetTime() > 0.6) {
  65. llMessageLinked(LINK_ALL_CHILDREN, 255, "bullet", id);
  66. llResetTime();
  67. }
  68. }
  69. }
  70. }