Stoppez vos scripts inutiles!

Répondre
Partager Rechercher
Suivants nos applications il arrive que des scripts deviennent inutiles parce que plus utilisés ou peu utilisés.

Vous pouvez les gérer facilement


Exemple simple:

Script Test:

Code PHP:

default
{
    
state_entry()
    {
        
integer n 6;
        while (--
)
        {
            
llOwnerSay ( (string) );
            
llSleep(1);     
        }
            
llOwnerSay "Partez!" );
    }

// affiche 5 4 3 2 1 Partez!


Script Manager:


Code PHP:

default
{
    
state_entry()
    {
        
llSetTimerEvent );
        
llSetScriptState"Test",TRUE);  // active et reset le script
        
llResetOtherScript("Test");
    }

    
touch_start(integer total_number)
    {
        
llSetScriptState"Test",FALSE); // stop le script devenu inutile
    
}

    
timer()
    {
        if ( 
llGetScriptState"Test")) // controle si Test is actif
        
{// OUI :((
            
llSetTimerEvent ); 
            
llOwnerSay "Test est TOUJOURS actif :((. Cliquez pour l'arréter...");
        }
        else
        {
// NON :)))
            
llOwnerSay "Test n'est PLUS actif Bravo! :))");
            
llSetTimerEvent );
        }
    }

Citation :
[1:29] Object: 5
[1:29] Object: 4
[1:29] Object: 3
[1:29] Object: 2
[1:29] Object: 1
[1:29] Object: Partez!
[1:29] Object: Test est TOUJOURS actif . Cliquez pour l'arréter...
[1:29] Object: Test est TOUJOURS actif . Cliquez pour l'arréter...
[1:30] Object: Test n'est PLUS actif Bravo! )
De même que Test peut s'arréter seul (dans ce cas)

Code PHP:

default
{
    
state_entry()
    {
        
integer n 6;
        while (--
)
        {
            
llOwnerSay ( (string) );
            
llSleep(1);     
        }
        
llOwnerSay "Partez!" );
        
llSetScriptStatellGetScriptName(),FALSE);
    }

Un petit llSleep peut s'avérer obligatoire

Code PHP:

        llSetScriptState"Test",TRUE);  // active  le script
        
llSleep(.3// ici
        
llResetOtherScript("Test"); // ...et le reset 

Simple à faire ... un petit geste pour nos régions ;-)
Quand tu as un objet composés de x scripts certains ont plus d'utilité après leur fonction initiale.

Exemple type:

Lecture d'une notcard de configuration au lancement du script...
ou
Mise en forme de l'objet ( 1er rez)


Autre cas:

Certains scripts correspondent à des fonctions peu utilisées dans ce cas on peut les stopper temporairement.

Certains scripts ne réclament pas un temps de réponse à la milli seconde dont on a le temps de les activer le temps voulu (lecture d'une note card par exemple).

Certains scripts ont leur fonction sous forme de scripts mais les fonctions ne sont jamais utilisées en même temps.

Exemple concret:

Dans le robot que j'ai créé pour JOL il y a 3 fonctions/modules/programmes distincts:

Scanner
Search
Defense

Si aucun module n'est sollicité alors les 3 sont stoppés / off

Quand une fonction est appelée alors le script change d'état ...

extrait de code:
Code PHP:


Stop_Script
(string script_name)
{
// if runing  then stoping
    
if (llGetScriptState(script_name))
    {
        
llMessageLinked LINK_THIS,0"STOP" ,script_name);      
    }
}
../..
        if (~
index)
        {
            
string order llList2StringCommands_wordindex); 
                
            if ( 
order == "xreset" )
                
llMessageLinked LINK_THIS,0,"Reset all scripts" ,"Robot Watchdog"); 
                
            else if ( 
order == "xd" // mode defense 
            
{
                
Stop_Script("Cmd_Search");  
                
Stop_Script("Cmd_Radar");  
                    
                
llSetScriptState("Cmd_Defense",TRUE);
                
llSleep(0.3);
                
llMessageLinked LINK_THIS,1,"START" ,"Cmd_Defense"); 
            }
            
../..
        } 
Si il y avait 10 fonctions distinctes au pire 1 script au mieux zéro...



Toujours sans utilité?

Performances? humm si on stoppait tous les scripts qui peuvent l'être ... oui c'est sûr que les régions se porteraient mieux


Seb,
Il ne faut pas oublier de préciser que désactiver le status running par script ne sera pas forcement instantané, le script continuera de fonctionner tant que sa part de temps ne sera pas écoulée, comme indiqué sur le wiki. Il faut donc penser (dans certain cas) à mettre un petit llSleep si le script se désactive de lui-même.
Répondre

Connectés sur ce fil

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