98e61a01-5717-03ee-e432-e4a48b2ed415_script.lsl 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // The line above should be left blank to avoid script errors in OpenSim.
  3. integer SLOODLE_CHANNEL_QUIZ_MULTIPLE_MY_NUMBER = -1639270062;
  4. integer SLOODLE_CHANNEL_QUIZ_MULTIPLE_QUESTION = -1639270063;
  5. integer SLOODLE_CHANNEL_QUIZ_MULTIPLE_CORRECT = -1639270064;
  6. integer SLOODLE_CHANNEL_QUIZ_MULTIPLE_INCORRECT = -1639270065;
  7. integer SLOODLE_CHANNEL_QUIZ_MULTIPLE_CHOICE_SELECTED = -1639270066;
  8. string g_choice_number = "";
  9. string g_value = "";
  10. key g_sitter = NULL_KEY;
  11. refresh_text()
  12. {
  13. string text = "";
  14. if ( (g_choice_number != "") && (g_value != "") ) {
  15. text = "("+g_choice_number+") "+g_value;
  16. }
  17. llSetText( text, <0,0,1.0>, 1.0 );
  18. }
  19. refresh_appearance()
  20. {
  21. refresh_text();
  22. if (g_value == "") {
  23. llSetScale(<0.01,0.01,0.01>);
  24. } else {
  25. llSetScale(<0.5,0.5,0.5>);
  26. }
  27. }
  28. remove_choice()
  29. {
  30. g_value = "";
  31. }
  32. integer handle_success(string feedback)
  33. {
  34. llSleep(3);
  35. if (g_sitter != NULL_KEY) {
  36. llPlaySound("ed124764-705d-d497-167a-182cd9fa2e6c",1);
  37. llSay(0,feedback);
  38. //victory_roll();
  39. vector origpos = llGetPos();
  40. vector newpos = origpos;
  41. newpos.z = origpos.z + 2;
  42. llSetPos(newpos);
  43. llSleep(5);
  44. llUnSit(g_sitter);
  45. llSetPos(origpos);
  46. }
  47. return 1;
  48. }
  49. integer handle_failure(string feedback)
  50. {
  51. if (g_sitter != NULL_KEY) {
  52. llSay(0,feedback);
  53. llPlaySound("85cda060-b393-48e6-81c8-2cfdfb275351",1);
  54. llUnSit(g_sitter);
  55. }
  56. return 1;
  57. }
  58. default
  59. {
  60. state_entry()
  61. {
  62. refresh_appearance();
  63. llSitTarget(<0.0, 0.0, 0.8>, ZERO_ROTATION);
  64. llSetSitText("Choose");
  65. }
  66. changed(integer change) {
  67. if (change & CHANGED_LINK) {
  68. if (g_sitter != llAvatarOnSitTarget()) {
  69. g_sitter = llAvatarOnSitTarget();
  70. if (g_sitter != NULL_KEY) {
  71. llMessageLinked(LINK_ALL_OTHERS,SLOODLE_CHANNEL_QUIZ_MULTIPLE_CHOICE_SELECTED, g_choice_number, g_sitter);
  72. }
  73. }
  74. }
  75. }
  76. link_message(integer source, integer num, string str, key id) {
  77. if (num == SLOODLE_CHANNEL_QUIZ_MULTIPLE_MY_NUMBER) {
  78. g_choice_number = str;
  79. refresh_appearance();
  80. } else if (num == SLOODLE_CHANNEL_QUIZ_MULTIPLE_QUESTION) {
  81. g_value = str;
  82. refresh_appearance();
  83. } else if (num == SLOODLE_CHANNEL_QUIZ_MULTIPLE_CORRECT) {
  84. handle_success(str);
  85. remove_choice();
  86. refresh_appearance();
  87. } else if (num == SLOODLE_CHANNEL_QUIZ_MULTIPLE_INCORRECT) {
  88. handle_failure(str);
  89. remove_choice();
  90. refresh_appearance();
  91. }
  92. }
  93. }
  94. // Please leave the following line intact to show where the script lives in Git:
  95. // SLOODLE LSL Script Git Location: mod/quiz_pile_on-1.0/objects/default/assets/sloodle_quiz_pile_on_choice.lslp