Advertisement
salahzar

Quiz senza notecard x sebastiano

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