Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string notecard;
- integer line;
- integer punteggio;
- key av; string name="";
- integer idlisten;
- integer tempoinizio;
- list domande;
- list answers;
- integer correct;
- vector iniziale;
- mostra(string x)
- {
- llSetText(x+"\nPunteggio:"+(string)punteggio+"\n"+name,<1,1,1>,1);
- }
- domanda()
- {
- mostra("domanda "+(string)(line+1)+"/"+(string)llGetListLength(domande));
- string q=llList2String(domande,line);
- list pieces=llParseStringKeepNulls(q,["|"],[]);
- if(llGetListLength(pieces)<2) {
- llSay(0,"Notecard invalida alla riga "+(string)line);
- llResetScript();
- return;
- }
- string question=llList2String(pieces,0);
- answers=[]; list buttons=[];
- integer i;
- // remove question
- pieces=llDeleteSubList(pieces,0,0);
- // have pieces in random order
- pieces=llListRandomize(pieces,1);
- for(i=0;i<llGetListLength(pieces);i++)
- {
- string answer=llList2String(pieces,i);
- if(llGetSubString(answer,0,0)=="*")
- {
- correct=i+1;
- answer=llGetSubString(answer,1,-1);
- }
- question+="\n"+(string)(i+1)+":"+answer;
- buttons+=[(string)(i+1) ];
- }
- llDialog(av,question,buttons,100);
- }
- // leggi notecard
- default
- {
- state_entry()
- {
- iniziale=llGetPos(); punteggio=0; name="";
- mostra("Legge notecard");
- notecard=llGetInventoryName(INVENTORY_NOTECARD,0);
- line=0; domande=[];
- llGetNotecardLine(notecard,line);
- }
- dataserver(key id,string data)
- {
- if(data==EOF) {
- llSay(0,"Lette "+(string)llGetListLength(domande)+" domande");
- state ready;
- }
- if(llStringTrim(data,STRING_TRIM)!="")
- domande+=data;
- line++;
- llGetNotecardLine(notecard,line);
- }
- }
- state ready
- {
- state_entry()
- {
- domande=llListRandomize(domande,1); // sets questions in random order
- mostra("Pronto, siediti per le domande");
- llSitTarget(<0,0,0.5>,ZERO_ROTATION);
- }
- changed(integer change)
- {
- if(change & CHANGED_LINK)
- {
- av=llAvatarOnSitTarget(); name=llKey2Name(av);
- if(av!=NULL_KEY)
- state faidomande;
- }
- }
- }
- state faidomande
- {
- state_entry()
- {
- tempoinizio=llGetUnixTime();
- idlisten=llListen(100,"",av,"");
- line=0;
- domanda();
- }
- listen(integer channel,string name,key id,string msg)
- {
- integer num=(integer)msg;
- if(num==correct)
- {
- llSay(0,"Corretto");
- llSetPos(llGetPos()+<0,0,1>);
- line++; punteggio++;
- }
- else
- {
- llSay(0,"Sbagliato");
- llSetPos(llGetPos()+<0,0,-1>);
- punteggio--;
- }
- if(line>=llGetListLength(domande))
- state fine;
- domanda();
- }
- }
- state fine
- {
- state_entry()
- {
- llUnSit(av);
- mostra("Finito");
- llPlaySound(llGetInventoryName(INVENTORY_SOUND,0),1);
- llSay(0,name+" finito con punteggio "+(string)punteggio+" in "+(string)(llGetUnixTime()-tempoinizio)+" secondi");
- llSleep(10);
- llSetPos(iniziale);
- state default;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement