salahzar

Script Quiz Porta

Apr 5th, 2013
190
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. list lines;
  2. list avatars=[];
  3. list flags=[]; // per ogni avatar segno 1 se ha risposto esatto oppure -1 -2 se ha sbagliato n volte
  4. integer MAXERRORS=-2; // massimo numero di volte
  5.  
  6.  
  7. integer i=0;
  8.  
  9. string question;
  10. list answers;
  11. integer correct;
  12.  
  13. integer CHANNEL=9999;
  14.  
  15.  
  16. default
  17. {
  18.     state_entry()
  19.     {
  20.         llOwnerSay("Reading notecard");
  21.         llSetText("Reading notecard...",<1,1,1>,1);
  22.         lines=[];
  23.         i=0;
  24.         llGetNotecardLine(llGetInventoryName(INVENTORY_NOTECARD,0),i);
  25.     }
  26.  
  27.     dataserver(key id, string data)
  28.     {
  29.         //llOwnerSay("data: "+data);
  30.         if(data==EOF) state ready;
  31.         lines+=[data];
  32.         i++;
  33.         llGetNotecardLine(llGetInventoryName(INVENTORY_NOTECARD,0),i);
  34.     }
  35. }
  36. state ready
  37. {
  38.     state_entry()
  39.     {
  40.         llOwnerSay("Ready");
  41.         llSetText(".",<1,1,1>,1);
  42.         question=llList2String(lines,0);
  43.         integer c=1;
  44.         for(c=1;c<llGetListLength(lines);c++)
  45.         {
  46.             string l=llList2String(lines,c);
  47.             if(llGetSubString(l,0,0)=="*")
  48.             {
  49.                 l=llGetSubString(l,1,-1);
  50.                 correct=c;
  51.                 //llSay(0,"corretta: "+(string)correct);
  52.                
  53.             }
  54.             //llSay(0,"adding "+l+" to array ");
  55.             answers+= [l];
  56.         }
  57.  
  58.         llSetText(" " /* "Ready ("+(string)llGetListLength(answers)+")"*/ ,<1,1,1>,1);
  59.         //llVolumeDetect(TRUE);
  60.         CHANNEL=(integer)(10000000+llFrand(10000000));
  61.         llListen(CHANNEL,"",NULL_KEY,"");
  62.         llListen(100,"",llGetOwner(),"");
  63.  
  64.        
  65.     }
  66.     listen(integer channel, string name, key id, string str)
  67.     {
  68.         if(channel==100)
  69.         {
  70.             llSay(0,"resetting script");
  71.             llResetScript();
  72.             return;
  73.         }
  74.         integer av=llListFindList(avatars,[id]);
  75.         if(av<0) return;
  76.        
  77.         integer position=llListFindList(answers,[str])+1;
  78.         //llSay(0,"position: "+(string)position+" correct: "+(string)correct);
  79.         if(position==correct)
  80.         {
  81.             flags=llListReplaceList(flags,[1],av,av);
  82.             llSay(0,name+" hai risposto correttamente");
  83.             //llRegionSay(CHANNEL,name+",1,1");
  84.             llMessageLinked(LINK_THIS,0,"OPEN",NULL_KEY);
  85.             return;
  86.         }
  87.  
  88.         //llRegionSay(CHANNEL,name+",0,1");
  89.        
  90.         //llSay((integer)("0x"+(string)id),(string)id+" -10");
  91.         integer flag=(integer)llList2String(flags,av)-1;
  92.         flags=llListReplaceList(flags,[  flag ],av,av);
  93.        
  94.         llSay(0,name+" Risposta errata");
  95.        
  96.        
  97.     }
  98.     touch_start(integer count)
  99.     {
  100.         integer c;
  101.         for(c=0;c<count;c++)
  102.         {
  103.             string name=llDetectedName(c);
  104.             key av=llDetectedKey(c);
  105.            
  106.             integer found=0;
  107.             if((found=llListFindList(avatars,[ av ]))<0)
  108.             {
  109.                 // non c'era prima aggiungi
  110.                 avatars+= [ av ];
  111.                 flags+= [ 0 ];
  112.                 found=llGetListLength(avatars)-1;
  113.             }
  114.             integer flag=(integer)llList2String(flags,found);
  115.             //llSay(0,(string)flag);
  116.             if(flag<=MAXERRORS)
  117.             {
  118.                 llSay(0,name+" non puoi più hai già fatto troppi tentativi");
  119.                 return;
  120.             }
  121.             if(flag>0)
  122.             {
  123.                
  124.                 llMessageLinked(LINK_THIS,0,"OPEN",NULL_KEY);
  125.                 return;
  126.             }
  127.             llSay(0,"Domanda per "+name);
  128.             llDialog(av,question,answers,CHANNEL);
  129.         }
  130.        
  131.     }
  132. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×