Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //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
- //llSetScriptState("mywords",TRUE); to the script with no luck. if it keeps it running it will not update it.
- integer listenChannel = 128;
- integer listenHandle = 0;
- integer dialogChannel = 52;
- integer dialogHandle = 0;
- string scriptName;
- key serverKey;
- list mainMenu = ["Info", "Broadcast", "Purge"];
- deleteAllItems() {
- integer total = llGetInventoryNumber(INVENTORY_ALL);
- integer i;
- //for (i = 0; i < total; i++) { // <- This does not remove all items ;-) !
- for (i = total-1; i >= 0; i--) { // Work arround (EDIT: LV Wildmist)
- string name = llGetInventoryName(INVENTORY_ALL, i);
- if (name != scriptName) llRemoveInventory(name);
- }
- }
- integer containsItem(string itemName) {
- integer total = llGetInventoryNumber(INVENTORY_ALL);
- integer i;
- for (i = 0; i < total; i++) {
- string name = llGetInventoryName(INVENTORY_ALL, i);
- if ((name != scriptName) && (itemName == name)) return TRUE;
- }
- return FALSE;
- }
- broadcastAvailableUpdates() {
- llSay(0, "Broadcasting available updates...");
- integer total = llGetInventoryNumber(INVENTORY_ALL);
- integer i;
- for (i = 0; i < total; i++) {
- string name = llGetInventoryName(INVENTORY_ALL, i);
- if (name != scriptName) {
- llRegionSay(listenChannel, "UpdateAvailable " + llEscapeURL(name));
- llSay(0, "UpdateAvailable item: " + name);
- }
- }
- llSay(0, "Broadcasting complete");
- }
- showServerInfo() {
- llSay(0, "Update Server key: " + (string)serverKey);
- llSay(0, "Update Server listening on channel #" + (string)listenChannel);
- llRegionSay(listenChannel, "UpdateSubscribersQuery " + (string)serverKey);
- }
- default {
- state_entry() {
- scriptName = llGetScriptName();
- serverKey = llGetKey();
- listenHandle = llListen(listenChannel, "", NULL_KEY, "");
- showServerInfo();
- }
- touch_start(integer num_detected) {
- llListenRemove(dialogHandle);
- dialogChannel = llFloor(llFrand(-99899.0) - 100);
- dialogHandle = llListen(dialogChannel, "", NULL_KEY, "");
- integer group = llDetectedGroup(0);
- key agent = llDetectedKey(0);
- key objectowner = llGetOwner();
- if ((objectowner == agent) || group) {
- llDialog(agent, "Update Server v1.0a", mainMenu, dialogChannel);
- }
- }
- listen(integer channel, string name, key id, string message)
- {
- if (channel == dialogChannel) {
- llListenRemove(dialogHandle);
- if (message == "Broadcast") broadcastAvailableUpdates();
- if (message == "Purge") deleteAllItems();
- if (message == "Info") showServerInfo();
- return;
- }
- list parsed = llParseString2List(message, [" "], []);
- integer l = llGetListLength(parsed);
- if (l == 0) return;
- string command = llList2String(parsed, 0);
- if ((l == 4) && (command == "UpdateRequest")) {
- string itemName = llUnescapeURL(llList2String(parsed, 1));
- key destination = (key)llList2String(parsed, 2);
- key requestServer = (key)llList2String(parsed, 3);
- if (requestServer != serverKey) return;
- if (containsItem(itemName)) {
- llSay(0, "Giving item " + itemName + " to object " + llKey2Name(destination) + " (" + (string)destination + ")");
- llGiveInventory(destination, itemName);
- }
- }
- else if (command == "UpdateServersQuery") {
- llRegionSay(listenChannel, "UpdateServerAvailable " + (string)serverKey);
- }
- else if ((l == 3) && (command == "UpdateSubscriberRegistered")) {
- key subscriberUpdateServer = (key)llList2String(parsed, 1);
- key subscriberKey = (key)llList2String(parsed, 2);
- if (subscriberUpdateServer != serverKey) return;
- if (subscriberUpdateServer == serverKey) {
- string msg = "UpdateSubscriber " + llKey2Name(subscriberKey) +
- " (" + (string)subscriberKey + ") registered to UpdateServer " +
- llKey2Name(subscriberUpdateServer) + " (" + (string)subscriberUpdateServer + ")";
- llSay(0, msg);
- }
- }
- }
- }
- this is the server part below
- integer PIN = 76387276;
- integer listenChannel = 128;
- integer listenHandle = 0;
- integer dialogChannel = 52;
- integer dialogHandle = 0;
- string scriptName;
- key serverKey;
- list mainMenu = ["Info", "Broadcast", "Purge"];
- deleteAllItems() {
- integer total = llGetInventoryNumber(INVENTORY_ALL);
- integer i;
- //for (i = 0; i < total; i++) { // <- This does not remove all items ;-) !
- for (i = total-1; i >= 0; i--) { // Work arround (EDIT: LV Wildmist)
- string name = llGetInventoryName(INVENTORY_ALL, i);
- if (name != scriptName) llRemoveInventory(name);
- }
- }
- integer containsItem(string itemName) {
- integer total = llGetInventoryNumber(INVENTORY_ALL);
- integer i;
- for (i = 0; i < total; i++) {
- string name = llGetInventoryName(INVENTORY_ALL, i);
- if ((name != scriptName) && (itemName == name)) return TRUE;
- }
- return FALSE;
- }
- broadcastAvailableUpdates() {
- llSay(0, "Broadcasting available updates...");
- integer total = llGetInventoryNumber(INVENTORY_ALL);
- integer i;
- for (i = 0; i < total; i++) {
- string name = llGetInventoryName(INVENTORY_ALL, i);
- if (name != scriptName) {
- llRegionSay(listenChannel, "UpdateAvailable " + llEscapeURL(name));
- llSay(0, "UpdateAvailable item: " + name);
- }
- }
- llSay(0, "Broadcasting complete");
- }
- showServerInfo() {
- llSay(0, "Update Server key: " + (string)serverKey);
- llSay(0, "Update Server listening on channel #" + (string)listenChannel);
- llRegionSay(listenChannel, "UpdateSubscribersQuery " + (string)serverKey);
- }
- default {
- state_entry() {
- scriptName = llGetScriptName();
- serverKey = llGetKey();
- listenHandle = llListen(listenChannel, "", NULL_KEY, "");
- showServerInfo();
- }
- touch_start(integer num_detected)
- {
- if (llDetectedKey(0) == llGetOwner()) {
- llRemoteLoadScriptPin("0960ec62-38d7-3732-c0cf-49dc5663d699","mywords",PIN,TRUE,21);}
- llListenRemove(dialogHandle);
- dialogChannel = llFloor(llFrand(-99899.0) - 100);
- dialogHandle = llListen(dialogChannel, "", NULL_KEY, "");
- integer group = llDetectedGroup(0);
- key agent = llDetectedKey(0);
- key objectowner = llGetOwner();
- if ((objectowner == agent) || group) {
- llDialog(agent, "Update Server v1.0a", mainMenu, dialogChannel);
- }
- }
- listen(integer channel, string name, key id, string message)
- {
- if (channel == dialogChannel) {
- llListenRemove(dialogHandle);
- if (message == "Broadcast") broadcastAvailableUpdates();
- if (message == "Purge") deleteAllItems();
- if (message == "Info") showServerInfo();
- return;
- }
- list parsed = llParseString2List(message, [" "], []);
- integer l = llGetListLength(parsed);
- if (l == 0) return;
- string command = llList2String(parsed, 0);
- if ((l == 4) && (command == "UpdateRequest")) {
- string itemName = llUnescapeURL(llList2String(parsed, 1));
- key destination = (key)llList2String(parsed, 2);
- key requestServer = (key)llList2String(parsed, 3);
- if (requestServer != serverKey) return;
- if (containsItem(itemName)) {
- llSay(0, "Giving item " + itemName + " to object " + llKey2Name(destination) + " (" + (string)destination + ")");
- llGiveInventory(destination, itemName);
- }
- }
- else if (command == "UpdateServersQuery") {
- llRegionSay(listenChannel, "UpdateServerAvailable " + (string)serverKey);
- }
- else if ((l == 3) && (command == "UpdateSubscriberRegistered")) {
- key subscriberUpdateServer = (key)llList2String(parsed, 1);
- key subscriberKey = (key)llList2String(parsed, 2);
- if (subscriberUpdateServer != serverKey) return;
- if (subscriberUpdateServer == serverKey) {
- string msg = "UpdateSubscriber " + llKey2Name(subscriberKey) +
- " (" + (string)subscriberKey + ") registered to UpdateServer " +
- llKey2Name(subscriberUpdateServer) + " (" + (string)subscriberUpdateServer + ")";
- llSetScriptState("mywords",TRUE);
- llSay(0, msg);
- }
- }
- }
- }
- //this is the script im trying to update. a simple hover text script named mywords
- // Hovering Text Script
- default
- {
- state_entry()
- {
- llSetRemoteScriptAccessPin(76387276);
- llSetText("# 2 Jill Karfield", <1,1,1>, 1.5);
- }
- }
Add Comment
Please, Sign In to add comment