modification de script de rezz box

Répondre
Partager Rechercher
Voila mon petit problème, j'ai un script de rezz box

ici : http://wiki.secondlife.com/wiki/Builders_Buddy

j'aimerais une fois mon prim de rezz fonctionnel, garder uniquement le bouton rezz et clean, pour que mes visiteurs évitent de faire des mauvaises manip..... j'ai essayer de bidouiller les scripts ... mais alors là c'est une cata sans nom, étant moi même une belle truffe en script.

Si jamais une âme charitable avais le mode d'emploi pour, ce serais génial ^^

Merci
Bonjour, le script que tu montres est du genre usine à gaz, pas forcement necessaire selon ce que tu veux rezzer...dis nous ce que la boite est censée rez....sinon, de manière plus générale...ton problème se resoud dans la list "menu" de la dialog box...
Tout d abord , en remarque , l utilisateur , si ce n est pas le créateur de la prim contenant le base script , ne peut pas trop faire de mauvaises manips :
il n a pas accès par le menu de la boite de dialogue à l enregistrement des positions .
Donc , si il utilise la boite de dialogue et ensuite positionne à un mauvais endroit ,
il lu suffit de retoucher la prim contenant le base script , puis de faire "clean" et à nouveau "build".
Par défaut , la variable allowClean est à TRUE ; tu permets donc à l utilisateur de dérezzer et rerezzer

Si néanmoins , tu veux poursuivre à supprimer certaines options disponibles dans la boite de dialogue :

Dans le base script, tu as dans l evenement state_entry la définition d une liste .
Cette liste est déjà différente si tu es le créateur de la prim contenant le base script ou non

Code PHP:

    state_entry () {
        
//Determine the creator UUID
        
if(creatorUUID == ""creatorUUID llGetCreator();
 
        
//Use which menu?
        
if (creatorUUID == llGetOwner() || fullOptions) {
            
//Display all options
            
optionlist = [optPosoptCleanoptDoneoptRecordoptResetoptBuildoptChannel];
            
title optRecord descRecord;
            
title += optReset descReset;
            
title += optBuild descBuild;
            
title += optPos descPos;
            
title += optClean descClean;
            
title += optDone descDone;
            
title += optChannel descChannel;
 
        } else {
            
//Display limited options
            
if(allowClean) {
                
optionlist = [optBuildoptPosoptCleanoptDone];
                
title optBuild descBuild;
                
title += optPos descPos;
                
title += optClean descClean;
                
title += optDone descDone;
            } else {
                
optionlist = [optBuildoptPosoptDone];
                
title optBuild descBuild;
                
title += optPos descPos;
                
title += optDone descDone;
            }
        }
 
        
//Record our position
        
vLastPos llGetPos();
        
rLastRot llGetRot();
 
        
llSetTimerEvent(fTimerRate);
    } 

Cette liste est ensuite utilisée pour afficher la boite de dialogue à l utilisateur dans l evenement touch_start
Code PHP:

            if ( creatorUUID == llGetOwner() || fullOptions) {
                
llDialog(agent,title "Now on Channel " + (string)PRIMCHANoptionlistMENU_CHANNEL); //display channel number if authorized
            
} else {
                
llDialog(agenttitleoptionlistMENU_CHANNEL);
            } 
On peut modifier le base script pour que le menu de la boite de dialogue n affiche que tes options désirées.
Mais cela n empêcherait pas un utilisateur de communiquer avec les composants scripts en tapant sur le chat dans le channel de la boite de dialogue.
Ceci dit , cela me semblerait plus un comportement intentionnel qu une mauvaise manipulation de l utilisateur

Dans le cas où on ne se ne se contente que de changer la boite de dialogue , on
supprime lors de la définition de la liste optionlist à afficher à l utilisateur , le choix de la position . Par contre on ne change rien quand c est le créateur de l objet du base script .

Donc le state_entry ressemblerait à cela :

Code PHP:

    state_entry () {
        
//Determine the creator UUID
        
if(creatorUUID == ""creatorUUID llGetCreator();
 
        
//Use which menu?
        
if (creatorUUID == llGetOwner() || fullOptions) {
            
//Display all options
            
optionlist = [optPosoptCleanoptDoneoptRecordoptResetoptBuildoptChannel];
            
title optRecord descRecord;
            
title += optReset descReset;
            
title += optBuild descBuild;
            
title += optPos descPos;
            
title += optClean descClean;
            
title += optDone descDone;
            
title += optChannel descChannel;
 
        } else {
            
//Display limited options
            
if(allowClean) {
                
optionlist = [optBuild,  optCleanoptDone];
                
title optBuild descBuild;
                
title += optClean descClean;
                
title += optDone descDone;
            } else {
                
optionlist = [optBuild,  optDone];
                
title optBuild descBuild;
                
title += optDone descDone;
            }
        }
 
        
//Record our position
        
vLastPos llGetPos();
        
rLastRot llGetRot();
 
        
llSetTimerEvent(fTimerRate);
    } 
bien sur , il faut s assurer que
fullOptions = FALSE


Note :
le buddy script est un peu vieillissant comme script ; les utilisateurs se lasseront très vite que tu n offres pas de nouveautés par rapport à un script de 2006 qui n a pas été mis à jour depuis 2008

Dernière modification par redpurple ; 23/11/2012 à 16h45.
Répondre

Connectés sur ce fil

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