Advertisement
salahzar

Script quiz sedia o veicolo che si muove

Jan 12th, 2014
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. string notecard;
  2. integer line;
  3. integer punteggio;
  4.  
  5. key av; string name="";
  6. integer idlisten;
  7. integer tempoinizio;
  8.  
  9. list domande;
  10.  
  11. list answers;
  12. integer correct;
  13.  
  14. vector iniziale;
  15.  
  16.  
  17. mostra(string x)
  18. {
  19.     llSetText(x+"\nPunteggio:"+(string)punteggio+"\n"+name,<1,1,1>,1);
  20. }
  21. domanda()
  22. {
  23.     mostra("domanda "+(string)(line+1)+"/"+(string)llGetListLength(domande));
  24.     string q=llList2String(domande,line);
  25.     list pieces=llParseStringKeepNulls(q,["|"],[]);
  26.     if(llGetListLength(pieces)<2) {
  27.         llSay(0,"Notecard invalida alla riga "+(string)line);
  28.         llResetScript();
  29.         return;
  30.     }
  31.    
  32.     string question=llList2String(pieces,0);
  33.     answers=[]; list buttons=[];
  34.     integer i;
  35.    
  36.     // remove question
  37.     pieces=llDeleteSubList(pieces,0,0);
  38.     // have pieces in random order
  39.     pieces=llListRandomize(pieces,1);
  40.    
  41.    
  42.     for(i=0;i<llGetListLength(pieces);i++)
  43.     {
  44.         string answer=llList2String(pieces,i);
  45.         if(llGetSubString(answer,0,0)=="*")
  46.         {
  47.             correct=i+1;
  48.             answer=llGetSubString(answer,1,-1);
  49.         }
  50.         question+="\n"+(string)(i+1)+":"+answer;
  51.         buttons+=[(string)(i+1) ];
  52.     }
  53.    
  54.     llDialog(av,question,buttons,100);
  55.    
  56.    
  57. }
  58.  
  59.  
  60. // leggi notecard
  61. default
  62. {
  63.     state_entry()
  64.     {
  65.         iniziale=llGetPos(); punteggio=0; name="";
  66.         mostra("Legge notecard");
  67.         notecard=llGetInventoryName(INVENTORY_NOTECARD,0);
  68.         line=0; domande=[];
  69.         llGetNotecardLine(notecard,line);
  70.     }
  71.    
  72.     dataserver(key id,string data)
  73.     {
  74.         if(data==EOF) {
  75.              llSay(0,"Lette "+(string)llGetListLength(domande)+" domande");
  76.              state ready;
  77.         }
  78.         if(llStringTrim(data,STRING_TRIM)!="")
  79.             domande+=data;
  80.         line++;
  81.         llGetNotecardLine(notecard,line);
  82.     }
  83. }
  84. state ready
  85. {
  86.        
  87.     state_entry()
  88.     {
  89.        
  90.         domande=llListRandomize(domande,1); // sets questions in random order
  91.         mostra("Pronto, siediti per le domande");
  92.         llSitTarget(<0,0,0.5>,ZERO_ROTATION);
  93.     }
  94.     changed(integer change)
  95.     {
  96.         if(change & CHANGED_LINK)
  97.         {
  98.             av=llAvatarOnSitTarget(); name=llKey2Name(av);
  99.             if(av!=NULL_KEY)
  100.                 state faidomande;
  101.         }
  102.     }
  103.    
  104. }
  105. state faidomande
  106. {
  107.     state_entry()
  108.     {
  109.         tempoinizio=llGetUnixTime();
  110.         idlisten=llListen(100,"",av,"");
  111.         line=0;
  112.         domanda();
  113.     }
  114.     listen(integer channel,string name,key id,string msg)
  115.     {
  116.         integer num=(integer)msg;
  117.         if(num==correct)
  118.         {
  119.             llSay(0,"Corretto");
  120.             llSetPos(llGetPos()+<0,0,1>);
  121.             line++; punteggio++;
  122.            
  123.         }
  124.         else
  125.         {
  126.             llSay(0,"Sbagliato");
  127.             llSetPos(llGetPos()+<0,0,-1>);
  128.             punteggio--;
  129.         }
  130.         if(line>=llGetListLength(domande))
  131.             state fine;
  132.         domanda();
  133.     }
  134.  
  135. }
  136. state fine
  137. {
  138.     state_entry()
  139.     {
  140.         llUnSit(av);
  141.         mostra("Finito");
  142.         llPlaySound(llGetInventoryName(INVENTORY_SOUND,0),1);
  143.         llSay(0,name+" finito con punteggio "+(string)punteggio+" in "+(string)(llGetUnixTime()-tempoinizio)+" secondi");
  144.         llSleep(10);
  145.    
  146.        
  147.         llSetPos(iniziale);
  148.         state default;
  149.     }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement