Bonjour la communauté
Je me permet un petit message car je suis à la recherche si jamais cela traine dans votre inventaire d'un script timer .
J'ai besoin de pouvoir mettre le script dans un prim à porter comme un hud et pouvoir cliquer dessus afin d'ouvrir un menu qui me propose différent timer style countdown.
l'ideal serais avec une option loops ( que je puisse activer ou désactiver dans mon menu ) ce qui veut dire que par exemple si je met le timer a 30 mns arrivée au bout des 30mns il repart sur un timer automatiquement .
voila j’espère ne pas vous avoir perdu dans mes explications , voici une petit image pour montrer le style du timer .
grand merci d'avance
Afx
hello, mets ce script dans un prim, auquel tu ajoutes un petit prim pour le switch "loop", et qui aura donc le linknumber 2....sinon, adapte le linknumber.....
integer count ;
integer counter;
integer loop;
list order_buttons(list buttons)
{
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) +
llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
}
list boutons=["10","20","30","60","STOP","GO"];
integer canal;
integer ecoute;
key id;
default
{
on_rez(integer start_param)
{
llResetScript();
}
state_entry()
{
canal = (integer)("0xA" + llGetSubString((string)llGetKey(), 0,6 ));
loop = 0;
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, "clic pour menu **** loop OFF", <1.0,0.0,0.0>, 1.0]);
llSetLinkPrimitiveParamsFast(2, [PRIM_TEXT, "Loop OFF", <0.0,0.0,1.0>, 1.0]);
}
touch_start(integer total_number)
{
if(llDetectedLinkNumber(0) == 2)
{
if(loop == 0)
{
llSetLinkPrimitiveParamsFast(2, [PRIM_TEXT, "Loop ON", <0.0,0.0,1.0>, 1.0]);
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, "clic pour menu **** loop ON", <1.0,0.0,0.0>, 1.0]);
loop = 1;
}
else if (loop == 1)
{
llSetLinkPrimitiveParamsFast(2, [PRIM_TEXT, "Loop OFF", <0.0,0.0,1.0>, 1.0]);
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, "clic pour menu **** loop OFF", <1.0,0.0,0.0>, 1.0]);
loop = 0;
}
}
else
{
id = llDetectedKey(0);
llListenRemove(ecoute);
ecoute = llListen(canal, "",id, "");
llDialog(id,"Choise une option", order_buttons(boutons), canal);
}
}
listen(integer chan, string name, key id, string msg)
{
if(msg == "STOP")
{
llResetScript();
}
if(msg == "GO")
{
if(count == 0)
{
llOwnerSay("Selectionnez une durée avant de commencer!");
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, "PAS DE DUREE!!!", <1.0,0.0,0.0>, 1.0]);
llDialog(id,"Choise la durée du countdown", order_buttons(boutons), canal);
}
else
{
llListenRemove(ecoute);
llSetTimerEvent(1.0);
}
}
else
{
count = (integer)msg;
counter = count;
llDialog(id,"Choise GO pour demarrer!", order_buttons(boutons), canal);
if(loop == 1)
{
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, "Clic GO pour un decompte de\n"+(string)count+ " sec.\n loop ON", <1.0,0.0,0.0>, 1.0]);
}
if(loop == 0)
{
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, "Clic GO pour un decompte de\n"+(string)count+ " sec.\n loop OFF", <1.0,0.0,0.0>, 1.0]);
}
}
}
timer()
{
if(loop == 1)
{
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, (string)(count--) + " sec."+ " loop ON", <0.0,1.0,0.0>, 1.0]);
if(count == -1)
{
count = counter;
}
}
else if(loop == 0)
{
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT, (string)(count--) + " sec."+ " loop OFF", <0.0,1.0,0.0>, 1.0]);
if(count == -1)
{
llSleep(1.0);
llResetScript();
}
}
}
}