d4df8804-069c-69d1-960c-c57fc3ad2769_script.lsl 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // The line above should be left blank to avoid script errors in OpenSim.
  3. integer SLOODLE_CHANNEL_SCOREBOARD_SHARED_MEDIA_SET_ADMIN_URL_CHANNEL = -1639271128; // This is the channel that the scoreboard shouts out its admin URL
  4. integer SLOODLE_CHANNEL_SCOREBOARD_SHARED_MEDIA_CHANGE_ADMIN_URL_CHANNEL= -1639271129; // This is the channel that the scoreboard shouts out its admin URL WHEN It has changed due to a region event (lost its url etc)
  5. integer face = 4;
  6. key currentScoreboard;
  7. vector localpos;
  8. default
  9. {
  10. on_rez(integer start_param) {
  11. llResetScript();
  12. }
  13. state_entry() {
  14. llListen(SLOODLE_CHANNEL_SCOREBOARD_SHARED_MEDIA_SET_ADMIN_URL_CHANNEL, "", "", "");
  15. llListen(SLOODLE_CHANNEL_SCOREBOARD_SHARED_MEDIA_CHANGE_ADMIN_URL_CHANNEL, "", "", "");
  16. llClearPrimMedia(face);
  17. }
  18. link_message(integer sender_num, integer num, string str, key id) {
  19. if (str== "hide")
  20. {
  21. vector localpos = llGetLocalPos();
  22. llSetPos(<localpos.x, localpos.y, (localpos.z - 0.75)>);
  23. }
  24. if (str == "show")
  25. {
  26. vector localpos = llGetLocalPos();
  27. llSetPos(<localpos.x, localpos.y, (localpos.z + 0.75)>);
  28. }
  29. }
  30. //this listen event gets fired after the owner has touched a scoreboard which is there, and has selected "update" from the
  31. //dialog menu
  32. listen(integer channel, string name, key id, string message) {
  33. list parsedMsg = llParseString2List(message, ["|"], []);
  34. //format: (string)admin_url+"|"+(string)llGetOwner()+"|"+(string)llGetKey());
  35. string admin_url = llList2String(parsedMsg,0);
  36. key owner = llList2Key(parsedMsg,1);
  37. //check if the shoutout's uuid has the same owner as this hud (ie: the owner touched it and is wearing a hud)
  38. if (owner!=llGetOwner())return;
  39. if (channel == SLOODLE_CHANNEL_SCOREBOARD_SHARED_MEDIA_SET_ADMIN_URL_CHANNEL){
  40. currentScoreboard= id;
  41. //set media
  42. llSetPrimMediaParams( face, [ PRIM_MEDIA_CURRENT_URL, admin_url, PRIM_MEDIA_AUTO_ZOOM, TRUE, PRIM_MEDIA_AUTO_PLAY, TRUE, PRIM_MEDIA_PERMS_INTERACT, face, PRIM_MEDIA_PERMS_CONTROL, face ] );
  43. llSetPrimMediaParams( face, [ PRIM_MEDIA_HOME_URL, admin_url, PRIM_MEDIA_AUTO_ZOOM, TRUE, PRIM_MEDIA_AUTO_PLAY, TRUE, PRIM_MEDIA_PERMS_INTERACT, face, PRIM_MEDIA_PERMS_CONTROL, face ] );
  44. }else
  45. if (channel == SLOODLE_CHANNEL_SCOREBOARD_SHARED_MEDIA_CHANGE_ADMIN_URL_CHANNEL){
  46. currentScoreboard= id;
  47. //set media
  48. llSetPrimMediaParams( face, [ PRIM_MEDIA_CURRENT_URL, admin_url, PRIM_MEDIA_AUTO_ZOOM, TRUE, PRIM_MEDIA_AUTO_PLAY, TRUE, PRIM_MEDIA_PERMS_INTERACT, face, PRIM_MEDIA_PERMS_CONTROL, face ] );
  49. llSetPrimMediaParams( face, [ PRIM_MEDIA_HOME_URL, admin_url, PRIM_MEDIA_AUTO_ZOOM, TRUE, PRIM_MEDIA_AUTO_PLAY, TRUE, PRIM_MEDIA_PERMS_INTERACT, face, PRIM_MEDIA_PERMS_CONTROL, face ] );
  50. }
  51. }
  52. attach(key id) {
  53. vector correctrot = <0,0,0> * DEG_TO_RAD;
  54. llSetRot(llEuler2Rot(correctrot));
  55. }
  56. }
  57. // Please leave the following line intact to show where the script lives in Git:
  58. // SLOODLE LSL Script Git Location: mod/scoreboard-1.0/objects/default/assets/sloodle_admin_hud.lslp