Faire un Reset une fois par jour.

Répondre
Partager Rechercher
Bonjour à toutes et à tous, voici ma question :
J'ai 6 jeux de Mahjong avec deux tableaux des scores, un journalier et l'autre pour les top-scores.
Est il possible de faire un reset au journalier, par exemple à minuit, chaque jour en modifiant son script ?

Merci d'avance pour votre aide et bon dimanche.
Le principe de base est le suivant :

Code PHP:

default
{
    
state_entry()
    {
        
llSetTimerEvent(24 3600);
    }
    
timer()
    {
        
llResetScript();
    }

On lance un timer réglé en nombre de secondes et on fait un reset quand il se déclenche. Mais tu vas avoir un problème si ton timer est déjà utilisé par le script (il n'y en a qu'un par script).

Il y a d'autres solutions comme de contrôler le temps régulièrement avec llGetTime.

Mais le plus simple est peut-être de créer un autre script si c'est trop compliqué à intégrer au tien. Par exemple :

Code PHP:

default
{
    
state_entry()
    {
        
llSetTimerEvent(24 3600);
    }
    
timer()
    {
        
llResetOtherScript("nom de mon autre script");
    }

Il suffit de le placer avec l'autre dans l'inventaire de l'objet. Si tu as plusieurs scripts à relancer tu multiplies les llResetOtherScript.
Merci beaucoup Bestmomo , je vais essayer cela.


Précision : Ce script va faire un Reset à quelle heure ?

Dernière modification par Serenna ; 30/09/2012 à 15h20. Motif: Fusion des messages - Merci d'utiliser la fonction "Modifier" plutôt que de poster plusieurs fois à la suite
Bestmomo t'as donné le principe; là ce script reset l'autre toute les 24h et pour la première fois 24h après avoir été lancé.

Alors ça peut te suffire si tu le met pour la première fois en route à minuit pile, par un reset de tout ton objet par exemple.

J'ai mis en oeuvre ce principe, avec un état supplémentaire qui regarde l'heure toute les secondes, pour lancer le llSetTimerEvent(3600*24) à une heure précise. Par contre, il faut être un peu plus précis sur l'heure: SL ou un fuseau horaire précis?

Cela fonctionne mais il y a un problème: en cas d'arrêt de la sim, les 24h se décale d'autant que la sim est hors-ligne. Moi j'ai conservé mon script comme ça car c'est un script de rapport par mail qui m'indique comme ça par la même occasion si la sim a été arrêté et combien de temps.
Bon finalement comme tu veux le temps pst c'est facile à faire: pas besoin de savant calculs pour le fuseau horaire; alors j'ai fait ça hors-ligne et j'ai pas testé, hein!
Code:
//script trop laggy baclé trop vite

Dernière modification par Elenia B. ; 30/09/2012 à 14h40.
Je suis conne moi de te faire un timer toutes les secondes; c'est effroyablement laggy. Cela m'est revenu que pour mon script j'avais justement évité ça.
Oublie le 1er jet voici le bon.
Code:
string script2rst = "nom du script a resetter";

default{
    state_entry(){
       float t = 3600.0*24.0 - llGetWallclock();
        llSetTimerEvent(t);
    }

    changed(integer chg){
        if(chg & CHANGED_REGION_START)
            llResetScript();
    }

    timer(){
        state hours24;
    }
}

state hours24{
    state_entry(){
        llResetOtherScript(script2rst);
        llSetTimerEvent(24*3600);
    }

    timer(){
        llResetOtherScript(script2rst);
    }

    changed(integer chg){
        if(chg & CHANGED_REGION_START)
            llResetScript();
    }
}

Dernière modification par Elenia B. ; 30/09/2012 à 14h52.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés