bonjour voici un script de loterie.pour le moment il ne se déclenche que par commande (/54 stop-star),il faudrait qu'il puisse etre automatique et qu il fasse un descompte au bout de 10mn par exenple et le descompte a partir de 10 seconde et qu il donne le gagnant bien sur
//===== Variables globales =====
//----- Integer -----
integer totaldonated;
integer iEc;
integer iPrix=1;//Changer la valeur de iPrix pour changer le montant a payer
//-------------------
//----- String -----
string sOwner;
string texte_flottant="Un clic droit pour vous inscrire à la loterie "."";//Texte initial figurant sur l'objet
string sTexte_attente="La loterie n'est pas ouverte pour le moment.";//Texte affiché par l'objet en mode attente
string sTexte_gagnant="Le gagnant du tirage est : ";//Texte annonçant le gagnant
string sStart="Un nouveau tirage est lancé.... !";//Texte annonçant un nouveau tirage
string sPlayer="vous êtes enregistrée pour le tirage au sort...";//Texte annonçant l'enregistrement au tirage
string sWin="Vous venez de gagner... ";//Texte envoyé par IM au gagnant
//------------------
//----- Key -----
key kOwner;
//---------------
//----- List -----
list lNoms;//Liste des noms de ceux qui ont payés
list lCles;//Liste des clés de ceux qui ont payé. Nécessaire pour redistribution de quoi que ce soit
//----------------
//==============================
//===== Fonctions =====
tirage()
{
if(lNoms!=[])
{
integer iNum=llFloor(llFrand(0.99)*llGetListLength(lNoms));
llSay(0,sTexte_gagnant+llList2String(lNoms,iNum));
llInstantMessage(llList2Key(lCles,iNum),sWin);
}
else
{
llSay(0,"Pas de personne inscrite pour ce tirage....");
}
llResetScript();//tout est remis a 0, toutes les listes sont effacees et le script retourne en mode attente de lancement
}
inscription(key a)
{
if(llListFindList(lCles,[a])==-1)
{
lCles+=a;//liste des cles de ceux qui ont payé
lNoms+=llKey2Name(a);//liste des noms de ceux qui ont payé
llSay(0,llKey2Name(a)+" "+sPlayer);//Envoie un message à celui qui a payé
llInstantMessage(llGetOwner(),(string)llKey2Name(a)+" vous êtes inscrite");//Envoie un message au owner
}
else
{
llInstantMessage(a,llKey2Name(a)+" vous êtes déjà enregistée pour le tirage au sort");
}
}
//=====================
//===== Etats =====
default
{
on_rez( integer sparam )
{
llResetScript();
}
state_entry()
{
state attente;
}
}
state attente
{
state_entry()
{
llSetText(sTexte_attente,<.25,1,.65>,1);
iEc=llListen(54,"",NULL_KEY,"");
}
state_exit()
{
llListenRemove(iEc);
}
on_rez(integer start)
{
llResetScript();
}
listen(integer channel,string name,key id,string msg)
{
if(msg=="start"&&id==llGetOwner())
{
llSay(0,sStart);
state marche;
}
}
}
state marche
{
state_entry()
{
integer total_number;
integer i;
kOwner = llGetOwner();
sOwner = llKey2Name(llGetOwner());
llSetText(texte_flottant,<.25,1,.65>,1);
lNoms=[];
lCles=[];
iEc=llListen(54,"",NULL_KEY,"");
//llSetPayPrice(PAY_HIDE, [iPrix,PAY_HIDE,PAY_HIDE,PAY_HIDE]);// montant par defaut (1), puis liste de 1 montants (1)
}
listen(integer channel,string name,key id,string msg)
{
if(msg=="stop"&&id==llGetOwner())
{
tirage();
state attente;
}
}
state_exit()
{
llListenRemove(iEc);
llSetTimerEvent(.0);
}
touch_start(integer num)
{
if(llDetectedKey(0)==llGetOwner())
{
llOwnerSay("Il y a "+(string)llGetListLength(lNoms)+" personnes inscrites au tirage.");
inscription(llDetectedKey(0));// Permet au owner de s'inscrire aussi. Mettre // devant cette ligne pour la neutraliser
}
else
{
inscription(llDetectedKey(0));
//llInstantMessage(llDetectedKey(0),"Pour vous inscrire au tirage, faites un clic droit et choisissez "Payer"");
}
}
//money(key id, integer amount)
//{
// totaldonated+=amount;
// lCles+=id;//liste des cles de ceux qui ont payé
// lNoms+=llKey2Name(id);//liste des noms de ceux qui ont payé
// llSay(0,llKey2Name(id)+" "+sPlayer);//Envoie un message à celui qui a payé
// llInstantMessage(llGetOwner(),(string)llKey2Name(id)+" is registered");//Envoie un message au owner
//}
on_rez(integer start)
{
llResetScript();
}
}
//=================
Dernière modification par stefsparta ; 28/11/2019 à 21h04.
|