Guest User

Untitled

a guest
Jan 23rd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  //got this from lsl wiki. it works for a notecard...but NOT the test/hover text part. the script will not stay running once it updates it. it sets it to non-runing. i tried to add
  2.  //llSetScriptState("mywords",TRUE); to the script with no luck. if it keeps it running it will not update it.
  3.  integer listenChannel = 128;
  4.  integer listenHandle = 0;
  5.  integer dialogChannel = 52;
  6.  integer dialogHandle = 0;
  7.  string scriptName;
  8.  key serverKey;
  9.  
  10.  list mainMenu = ["Info", "Broadcast", "Purge"];
  11.  
  12.  deleteAllItems() {
  13.  
  14.      integer total = llGetInventoryNumber(INVENTORY_ALL);
  15.      integer i;
  16.      //for (i = 0; i < total; i++) {  // <- This does not remove all items ;-) !
  17.      for (i = total-1; i >= 0; i--) { // Work arround (EDIT: LV Wildmist)
  18.          string name = llGetInventoryName(INVENTORY_ALL, i);
  19.          if (name != scriptName) llRemoveInventory(name);
  20.      }
  21.  }
  22.  
  23.  integer containsItem(string itemName) {
  24.  
  25.      integer total = llGetInventoryNumber(INVENTORY_ALL);
  26.      integer i;
  27.      for (i = 0; i < total; i++) {
  28.          string name = llGetInventoryName(INVENTORY_ALL, i);
  29.          if ((name != scriptName) && (itemName == name)) return TRUE;
  30.      }
  31.      return FALSE;
  32.  
  33.  }
  34.  
  35.  broadcastAvailableUpdates() {
  36.  
  37.      llSay(0, "Broadcasting available updates...");  
  38.  
  39.      integer total = llGetInventoryNumber(INVENTORY_ALL);
  40.      integer i;
  41.      for (i = 0; i < total; i++) {
  42.          string name = llGetInventoryName(INVENTORY_ALL, i);
  43.          if (name != scriptName) {
  44.              llRegionSay(listenChannel, "UpdateAvailable " + llEscapeURL(name));        
  45.              llSay(0, "UpdateAvailable item: " + name);
  46.          }
  47.      }
  48.  
  49.      llSay(0, "Broadcasting complete");
  50.  
  51.  }
  52.  
  53.  showServerInfo() {
  54.  
  55.      llSay(0, "Update Server key: " + (string)serverKey);
  56.  
  57.      llSay(0, "Update Server listening on channel #" + (string)listenChannel);
  58.  
  59.      llRegionSay(listenChannel, "UpdateSubscribersQuery " + (string)serverKey);  
  60.  
  61.  }    
  62.  
  63.  default {
  64.  
  65.      state_entry() {
  66.          scriptName = llGetScriptName();
  67.          serverKey = llGetKey();
  68.  
  69.          
  70.  
  71.          listenHandle = llListen(listenChannel, "", NULL_KEY, "");
  72.  
  73.          showServerInfo();
  74.      }
  75.  
  76.      touch_start(integer num_detected) {
  77.          llListenRemove(dialogHandle);
  78.          dialogChannel = llFloor(llFrand(-99899.0) - 100);
  79.          dialogHandle = llListen(dialogChannel, "", NULL_KEY, "");
  80.  
  81.          integer group = llDetectedGroup(0);
  82.          key agent = llDetectedKey(0);
  83.          key objectowner = llGetOwner();
  84.          if ((objectowner == agent) || group)  {
  85.              llDialog(agent, "Update Server v1.0a", mainMenu, dialogChannel);
  86.          }
  87.      }
  88.  
  89.      listen(integer channel, string name, key id, string message)
  90.      {
  91.  
  92.          if (channel == dialogChannel) {
  93.  
  94.              llListenRemove(dialogHandle);
  95.  
  96.              if (message == "Broadcast") broadcastAvailableUpdates();
  97.  
  98.              if (message == "Purge") deleteAllItems();
  99.  
  100.              if (message == "Info") showServerInfo();
  101.  
  102.              return;
  103.          }
  104.  
  105.          list parsed = llParseString2List(message, [" "], []);
  106.          integer l = llGetListLength(parsed);
  107.          if (l == 0) return;
  108.  
  109.          string command = llList2String(parsed, 0);
  110.  
  111.          if ((l == 4) && (command == "UpdateRequest")) {
  112.  
  113.              string itemName = llUnescapeURL(llList2String(parsed, 1));
  114.              key destination = (key)llList2String(parsed, 2);
  115.              key requestServer = (key)llList2String(parsed, 3);
  116.  
  117.              if (requestServer != serverKey) return;
  118.  
  119.              if (containsItem(itemName)) {
  120.                  llSay(0, "Giving item " + itemName + " to object " + llKey2Name(destination) + " (" + (string)destination + ")");        
  121.                  llGiveInventory(destination, itemName);
  122.              }
  123.          }
  124.          else if (command == "UpdateServersQuery") {
  125.  
  126.              llRegionSay(listenChannel, "UpdateServerAvailable " + (string)serverKey);
  127.  
  128.          }
  129.          else if ((l == 3) && (command == "UpdateSubscriberRegistered")) {
  130.  
  131.              key subscriberUpdateServer = (key)llList2String(parsed, 1);
  132.              key subscriberKey = (key)llList2String(parsed, 2);
  133.  
  134.              if (subscriberUpdateServer != serverKey) return;
  135.  
  136.              if (subscriberUpdateServer == serverKey) {
  137.  
  138.                  string msg = "UpdateSubscriber " + llKey2Name(subscriberKey) +
  139.                  " (" + (string)subscriberKey + ") registered to UpdateServer " +
  140.                  llKey2Name(subscriberUpdateServer) + " (" + (string)subscriberUpdateServer + ")";
  141.  
  142.                  llSay(0, msg);        
  143.              }
  144.  
  145.          }
  146.      }
  147.  
  148.  }
  149. this is the server part below
  150.  
  151.  
  152.  integer PIN = 76387276;
  153.  integer listenChannel = 128;
  154.  integer listenHandle = 0;
  155.  integer dialogChannel = 52;
  156.  integer dialogHandle = 0;
  157.  string scriptName;
  158.  key serverKey;
  159.  
  160.  list mainMenu = ["Info", "Broadcast", "Purge"];
  161.  
  162.  deleteAllItems() {
  163.  
  164.      integer total = llGetInventoryNumber(INVENTORY_ALL);
  165.      integer i;
  166.      //for (i = 0; i < total; i++) {  // <- This does not remove all items ;-) !
  167.      for (i = total-1; i >= 0; i--) { // Work arround (EDIT: LV Wildmist)
  168.          string name = llGetInventoryName(INVENTORY_ALL, i);
  169.          if (name != scriptName) llRemoveInventory(name);
  170.      }
  171.  }
  172.  
  173.  integer containsItem(string itemName) {
  174.  
  175.      integer total = llGetInventoryNumber(INVENTORY_ALL);
  176.      integer i;
  177.      for (i = 0; i < total; i++) {
  178.          string name = llGetInventoryName(INVENTORY_ALL, i);
  179.          if ((name != scriptName) && (itemName == name)) return TRUE;
  180.      }
  181.      return FALSE;
  182.  
  183.  }
  184.  
  185.  broadcastAvailableUpdates() {
  186.  
  187.      llSay(0, "Broadcasting available updates...");  
  188.  
  189.      integer total = llGetInventoryNumber(INVENTORY_ALL);
  190.      integer i;
  191.      for (i = 0; i < total; i++) {
  192.          string name = llGetInventoryName(INVENTORY_ALL, i);
  193.          if (name != scriptName) {
  194.              llRegionSay(listenChannel, "UpdateAvailable " + llEscapeURL(name));        
  195.              llSay(0, "UpdateAvailable item: " + name);
  196.          }
  197.      }
  198.  
  199.      llSay(0, "Broadcasting complete");
  200.  
  201.  }
  202.  
  203.  showServerInfo() {
  204.  
  205.      llSay(0, "Update Server key: " + (string)serverKey);
  206.  
  207.      llSay(0, "Update Server listening on channel #" + (string)listenChannel);
  208.  
  209.      llRegionSay(listenChannel, "UpdateSubscribersQuery " + (string)serverKey);  
  210.  
  211.  }    
  212.  
  213.  default {
  214.  
  215.      state_entry() {
  216.          scriptName = llGetScriptName();
  217.          serverKey = llGetKey();
  218.        
  219.          
  220.  
  221.          listenHandle = llListen(listenChannel, "", NULL_KEY, "");
  222.  
  223.          showServerInfo();
  224.      }
  225.  
  226.      touch_start(integer num_detected)
  227.      {
  228.           if (llDetectedKey(0) == llGetOwner()) {
  229.             llRemoteLoadScriptPin("0960ec62-38d7-3732-c0cf-49dc5663d699","mywords",PIN,TRUE,21);}
  230.          llListenRemove(dialogHandle);
  231.          dialogChannel = llFloor(llFrand(-99899.0) - 100);
  232.          dialogHandle = llListen(dialogChannel, "", NULL_KEY, "");
  233.  
  234.          integer group = llDetectedGroup(0);
  235.          key agent = llDetectedKey(0);
  236.          key objectowner = llGetOwner();
  237.          if ((objectowner == agent) || group)  {
  238.              llDialog(agent, "Update Server v1.0a", mainMenu, dialogChannel);
  239.          }
  240.      }
  241.  
  242.      listen(integer channel, string name, key id, string message)
  243.      {
  244.  
  245.          if (channel == dialogChannel) {
  246.  
  247.              llListenRemove(dialogHandle);
  248.  
  249.              if (message == "Broadcast") broadcastAvailableUpdates();
  250.  
  251.              if (message == "Purge") deleteAllItems();
  252.  
  253.              if (message == "Info") showServerInfo();
  254.  
  255.              return;
  256.          }
  257.  
  258.          list parsed = llParseString2List(message, [" "], []);
  259.          integer l = llGetListLength(parsed);
  260.          if (l == 0) return;
  261.  
  262.          string command = llList2String(parsed, 0);
  263.  
  264.          if ((l == 4) && (command == "UpdateRequest")) {
  265.  
  266.              string itemName = llUnescapeURL(llList2String(parsed, 1));
  267.              key destination = (key)llList2String(parsed, 2);
  268.              key requestServer = (key)llList2String(parsed, 3);
  269.  
  270.              if (requestServer != serverKey) return;
  271.  
  272.              if (containsItem(itemName)) {
  273.                  llSay(0, "Giving item " + itemName + " to object " + llKey2Name(destination) + " (" + (string)destination + ")");        
  274.                  llGiveInventory(destination, itemName);
  275.              }
  276.          }
  277.          else if (command == "UpdateServersQuery") {
  278.  
  279.              llRegionSay(listenChannel, "UpdateServerAvailable " + (string)serverKey);
  280.  
  281.          }
  282.          else if ((l == 3) && (command == "UpdateSubscriberRegistered")) {
  283.  
  284.              key subscriberUpdateServer = (key)llList2String(parsed, 1);
  285.              key subscriberKey = (key)llList2String(parsed, 2);
  286.  
  287.              if (subscriberUpdateServer != serverKey) return;
  288.  
  289.              if (subscriberUpdateServer == serverKey) {
  290.  
  291.                  string msg = "UpdateSubscriber " + llKey2Name(subscriberKey) +
  292.                  " (" + (string)subscriberKey + ") registered to UpdateServer " +
  293.                  llKey2Name(subscriberUpdateServer) + " (" + (string)subscriberUpdateServer + ")";
  294.                   llSetScriptState("mywords",TRUE);
  295.                  llSay(0, msg);  
  296.                        
  297.              }
  298.  
  299.          }
  300.      }
  301.  
  302.  }
  303.  
  304. //this is the script im trying to update. a simple hover text script named mywords
  305.  
  306. // Hovering Text Script
  307.  
  308. default
  309. {
  310.     state_entry()
  311.     {
  312.          llSetRemoteScriptAccessPin(76387276);
  313.         llSetText("# 2 Jill Karfield", <1,1,1>, 1.5);
  314.     }
  315. }
Add Comment
Please, Sign In to add comment