User:Fox Diller/EventRequests

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

<lsl> // Crystal Studio Request Script // Version 1.0 // // Use this at your own risk. // Desc: You can use this to have a request system inside a club that it might be hard to get requests from end-users.

// User Modifiable Settings:\

// Change this to the channel you want to listen too. // If you change it to '0', the script will not run! // This is used to keep this script lag free. integer CHAN_NUM = 69;

// Change this to the name of your event. string EVENT_NAME = "Graveyard Shift";

// You could change this to another language if needed, or something different. Ex: "Questions." string REQ_NAME = "Requests";

// BEGIN CODE // Warning: Do not change anything below this line unless you know absolutely what you are doing!!!! omgz

// DEFINE integer LISTEN_OFFLINE; integer LISTEN_ONLINE; integer REQ_AMM; // DONE.

// Custom Functions setText(integer TEXT_STATE) {

   if (TEXT_STATE) llSetText( 
       EVENT_NAME + " " + 
       REQ_NAME +
       " - ON\n---------------------------------------------\n" +
       "Please type: \"/" + (string)CHAN_NUM +
       " [" + llToLower(REQ_NAME) + "] to send a " + llToLower(REQ_NAME), <0,1,0>, 1.0);
   if (!TEXT_STATE) llSetText(EVENT_NAME + " " + REQ_NAME + " - OFF", <1,0,0>, 1.0);

}

default {

   state_entry()
   {
       llOwnerSay("Request System Startup... Please click on me to turn the request machine on.");  
   }
   touch_start(integer total_number)
   {
       state on;
   }

}

state on {

   state_entry()
   {
       if (CHAN_NUM) LISTEN_ONLINE = llListen(CHAN_NUM, "", "", "");
       else
       {
            llOwnerSay("Fatal Error: CHAN_NUM is set to 0! SCRIPT RUNTIME ERROR");
           llSetScriptState(llGetScriptName(), FALSE);
       }
       setText(1);
   }
   
   touch_start(integer total_number)
   {
       llListenRemove(LISTEN_ONLINE);
       llInstantMessage(llGetOwner(), "You have recieved " + (string)REQ_AMM + " " + REQ_NAME);
       state off;
   }
   
   listen(integer LISTEN_CHAN, string LISTEN_NAME, key LISTEN_ID, string LISTEN_MSG)
   {
       llInstantMessage(llGetOwner(), LISTEN_NAME + " " + REQ_NAME + ": " + LISTEN_MSG);
       llInstantMessage(LISTEN_ID, EVENT_NAME + " thanks you for your " + REQ_NAME);
       REQ_AMM++;
       setText(1); 
   }

}

state off {

   state_entry()
   {
       LISTEN_OFFLINE = llListen(CHAN_NUM, "", "", "");
       REQ_AMM = 0;
       setText(0);
   }
   
   touch_start(integer total_number)
   {
       llListenRemove(LISTEN_OFFLINE);
       state on;
   }
   
   listen(integer LISTEN_CHAN, string LISTEN_NAME, key LISTEN_ID, string LISTEN_MSG)
   {
       llInstantMessage(LISTEN_ID, REQ_NAME + " are not being taken at this time. Sorry.");
   }

} </lsl>