Advertisement
salahzar

Teleport from notecard... script

Sep 26th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. integer TIMEOUT=15;
  2. string NOTECARD;
  3. integer POS;
  4. key IDNOTE;
  5. integer INDEX;
  6.  
  7. key av;
  8.  
  9.  
  10. list NAMES;
  11. list REGIONS;
  12. list ADDRESSES;
  13. list TEXTURES;
  14.  
  15. vector COLOR=<1,1,1>;
  16.  
  17. integer listener;
  18.  
  19. info(string s){
  20.        llSetText(s,COLOR,1);
  21.        llSay(0,s);
  22. }
  23. default
  24. {
  25.     changed(integer change){
  26.         llResetScript();
  27.     }
  28.     state_entry(){
  29.         info("Reading notecard...");
  30.  
  31.         NOTECARD=llGetInventoryName(INVENTORY_NOTECARD,0);
  32.         POS=0;
  33.         IDNOTE=llGetNotecardLine(NOTECARD,POS);
  34.     }
  35.      dataserver(key id, string data)
  36.     {
  37.         integer N=5;
  38.         if (id == IDNOTE)
  39.         {
  40.             if(data==EOF) state ready;
  41.             if(POS % N == 0) {
  42.                 info("Adding name: "+data);
  43.                 NAMES+=[data];
  44.             }
  45.             if(POS % N == 1) {
  46.                 //info("Adding region: "+data);
  47.                 REGIONS+=[data];
  48.             }
  49.             if(POS % N == 2) {
  50.                 //info("Adding address: "+data);
  51.                 ADDRESSES+=[data];
  52.             }
  53.             if(POS % N == 3) {
  54.                 //info("Adding texture: "+data);
  55.                 TEXTURES+=[data];
  56.             }
  57.             if(POS % N == 4) {
  58.                 //info("Skipping separator: "+data);
  59.                
  60.             }
  61.             POS++;
  62.             //info("reading line "+(string)POS);
  63.             IDNOTE=llGetNotecardLine(NOTECARD,POS);
  64.         }
  65.            
  66.     }    
  67. }
  68. state ready {
  69.    
  70.        
  71.     state_entry(){
  72.         llSetTexture("Presentation",ALL_SIDES);
  73.         listener=-1;
  74.         info("READY with "+(string)(llGetListLength(NAMES))+" destinations");
  75.        
  76.     }        
  77.  
  78.            
  79.    
  80.     touch_start(integer n)
  81.     {
  82.        
  83.         av=llDetectedKey(0);
  84.         state dialog;
  85.     }
  86. }
  87. state dialog {
  88.     state_entry(){
  89.         listener=llListen(-1,"",av,"");
  90.         llSetTimerEvent(TIMEOUT);
  91.         llDialog(av,"Choose: ",NAMES,-1);
  92.     }
  93.     listen(integer channel, string name, key id, string what){
  94.         llSetTimerEvent(0);
  95.         INDEX=llListFindList(NAMES,what);
  96.         state final;
  97.     }
  98.     timer(){
  99.         llSay(0,"removing listener");
  100.         llSetTimerEvent(0);
  101.         llListenRemove(listener);
  102.         listener=-1;
  103.         state ready;
  104.     }
  105. }
  106. state final {
  107.     state_entry(){
  108.         llSetTexture(llList2String(TEXTURES,INDEX),ALL_SIDES);
  109.         info("Touch for going to "+llList2String(NAMES,INDEX));
  110.         llSetTimerEvent(TIMEOUT);
  111.     }
  112.     touch_start(integer count){
  113.         key id=llDetectedKey(0);
  114.         if(id!=av) return;
  115.        
  116. llSay(0,"GOING TO "+llList2String(REGIONS,INDEX)+ llList2String(ADDRESSES,INDEX));
  117.            
  118.         osTeleportAgent(id,llList2String(REGIONS,INDEX),llList2Vector(ADDRESSES,INDEX),<0,0,0>);
  119.         llSetTimerEvent(0);
  120.         listener=-1;
  121.         state ready;
  122.     }
  123.     timer() {
  124.         llSetTimerEvent(0);
  125.         llSay(0,"reset");
  126.         listener=-1;
  127.         state ready;
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement