7da3d18a-4ab2-59ab-f3e4-efc165dd721f_script.lsl 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. //
  2. // The line above should be left blank to avoid script errors in OpenSim.
  3. /*
  4. Blink - this will make an object start blinking different colors for MAX_TIME if a message is received on a BLINK_CHANNEL
  5. */
  6. //SLOODLE vars
  7. integer SLOODLE_AWARDS_POINTS_CHANGE_NOTIFICATION= 10601;
  8. integer MAX_TIME=13;
  9. integer BLINK_CHANNEL;
  10. vector RED =<1.00000, 0.00000, 0.00000>;
  11. vector ORANGE=<1.00000, 0.43763, 0.02414>;
  12. vector YELLOW=<1.00000, 1.00000, 0.00000>;
  13. vector GREEN=<0.00000, 1.00000, 0.00000>;
  14. vector BLUE=<0.00000, 0.00000, 1.00000>;
  15. vector BABYBLUE=<0.00000, 1.00000, 1.00000>;
  16. vector PINK=<1.00000, 0.00000, 1.00000>;
  17. vector PURPLE=<0.57338, 0.25486, 1.00000>;
  18. vector BLACK= <0.00000, 0.00000, 0.00000>;
  19. vector WHITE= <1.00000, 1.00000, 1.00000>;
  20. list colors;
  21. integer currentColor=0;
  22. integer counter=0;
  23. integer toggle=-1;
  24. vector getColor(){
  25. currentColor++;
  26. if (currentColor>llGetListLength(colors)-1){
  27. currentColor=0;
  28. }
  29. return llList2Vector(colors, currentColor);
  30. }
  31. vector color;
  32. blink(vector c){
  33. llParticleSystem([
  34. PSYS_PART_FLAGS , 0 | PSYS_PART_BOUNCE_MASK | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_TARGET_POS_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_EMISSIVE_MASK,
  35. PSYS_SRC_PATTERN, 4, PSYS_SRC_TEXTURE, (key)"e050e81b-d754-d1a4-d358-5dc01ae9b613", PSYS_SRC_TARGET_KEY, (key)"NULL_KEY",
  36. PSYS_SRC_MAX_AGE, 0.000000, PSYS_PART_MAX_AGE, 0.443290, PSYS_SRC_BURST_RATE, 0.100000, PSYS_SRC_BURST_PART_COUNT, 4,
  37. PSYS_SRC_BURST_RADIUS, 0.168301, PSYS_SRC_ACCEL, <0.00000, 0.00000, -2.00000>,
  38. PSYS_SRC_BURST_SPEED_MIN, 1.514547, PSYS_SRC_BURST_SPEED_MAX, 5.217438,
  39. PSYS_PART_START_COLOR,c, PSYS_PART_END_COLOR,c,
  40. PSYS_PART_START_ALPHA, 0.211864, PSYS_PART_END_ALPHA, 0.000000,
  41. PSYS_PART_START_SCALE, <1.00000, 1.00000, 2.00000>, PSYS_PART_END_SCALE, <1.00000, 1.00000, 5.00000>,
  42. PSYS_SRC_ANGLE_BEGIN, 0.000000, PSYS_SRC_ANGLE_END, 6.000000,
  43. PSYS_SRC_OMEGA, <0.00000, 0.00000, 0.00000>]);
  44. }
  45. float change;
  46. handle_points_notification(string str) {
  47. string changeduserid;
  48. string newbalance;
  49. list lines = llParseStringKeepNulls(str,["\n"],[]);
  50. integer l;
  51. // llOwnerSay("points notification: "+str);
  52. for(l=0; l<llGetListLength(lines); l++) {
  53. string line = llList2String(lines, l);
  54. list bits = llParseStringKeepNulls(line,["|"],[]);
  55. integer numbits = llGetListLength(bits);
  56. string name = llList2String(bits,0);
  57. string value = "";
  58. if (llGetListLength(bits) > 1) {
  59. value = llList2String(bits,1);
  60. }
  61. if (name == "balance") newbalance = value;
  62. if (name == "change") change= (float)value;
  63. if (name == "userid") changeduserid = value;
  64. }
  65. if ((float)newbalance>0){
  66. color=GREEN;
  67. }else {
  68. color=RED;
  69. }
  70. blink(color);
  71. llTriggerSound("loud_moon", 1);
  72. llSetTimerEvent(0.2);
  73. }
  74. default {
  75. state_entry() {
  76. llSetColor(WHITE, ALL_SIDES);
  77. //change this if not using sloodle
  78. BLINK_CHANNEL=SLOODLE_AWARDS_POINTS_CHANGE_NOTIFICATION;
  79. //define colors
  80. }
  81. link_message(integer sender_num, integer num, string str, key id) {
  82. if (num == SLOODLE_AWARDS_POINTS_CHANGE_NOTIFICATION){
  83. handle_points_notification(str);
  84. }
  85. }
  86. timer() {
  87. counter++;
  88. if (toggle==-1){
  89. llSetColor(BABYBLUE, ALL_SIDES);
  90. }else{
  91. llSetColor(WHITE, ALL_SIDES);
  92. }
  93. if (counter>MAX_TIME){
  94. counter=0;
  95. llSetTimerEvent(0);
  96. llParticleSystem([]);
  97. llSetColor(WHITE, ALL_SIDES);
  98. }
  99. toggle*=-1;
  100. }
  101. }
  102. // Please leave the following line intact to show where the script lives in Git:
  103. // SLOODLE LSL Script Git Location: mod/scoreboard-1.0/objects/default/assets/active_light.lslp