Help Script menudriven pour fenetre

Répondre
Partager Rechercher
Bonsoir,
apres avoir bidouiller et prit des idées et renseignements a droite à gauche j'en enfin réussi à faire un script avec menu pour changer la couleur et l'opacité d'une fenêtre \o/

Sauf que j'ai quelques ratés :

- Meme si le script ce compile et tourne sans erreur il semblerait que la couleur du prims ne change pas...

-Comme c'est pour une fenetre je voudrais par exemple pouvoir mettre une couleur (vert par exemple soyons fou) à l'extérieur et une autre (allez rouge puurrrrr) à l'intérieur, de meme que le principe avec l'opacité. Le tout bien entendu toujours avec un menu.

Pour changer la couleur ou l'opacité j'en arrive à ceci :
Cliquez ce bouton ou survolez le contenu pour afficher le spoiler

if(message=="0%"){
llSetAlpha((float)message/100,1);
}
else if(message=="20%"){
llSetAlpha((float)message/100,1);
}
else if(message=="40%"){
llSetAlpha((float)message/100,1);
}
else if(message=="60%"){
llSetAlpha((float)message/100,1);
}
else if(message=="80%"){
llSetAlpha((float)message/100,1);
}
else if(message=="100%"){
llSetAlpha((float)message/100,1);
}
else if(message=="bleu"){
llSetColor(<0,0,1>,1);
}
else if(message=="rouge"){
llSetColor(<1,0,0>,1);
}
else if(message=="noir"){
llSetColor(<0,0,0>,1);
}
else if(message=="blanc"){
llSetColor(<0,0,1>,1);
}
else if(message=="jaune"){
llSetColor(<1,1,0>,1);
}
else if(message=="vert"){
llSetColor(<0,1,0>,1);
}


A ce stade je peux changé l'opacité sur une face (mais pas la couleur), et je souhaiterais pouvoir changer via le meme menu, face 1 et face 3.

j'ai essayé ceci mais sans résultat :
Cliquez ce bouton ou survolez le contenu pour afficher le spoiler

if(message=="interieur"){
if(message=="0%"){
llSetAlpha((float)message/100,1);
}
else if(message=="20%"){
llSetAlpha((float)message/100,1);
}
else if(message=="40%"){
llSetAlpha((float)message/100,1);
}.....


Si quelqu'un a une idée je suis preneur...
plusieurs remarques...

.utilise PHP et non SPOIL pour copier ton code ...

. le script entier aurait été plus utile pour t'aider

. tu nous as fait un petit mélange dans les types de variables

. on peut imaginer que message vient d'une boite de dialogue?



else if(message=="60%") <==== pure string
{
llSetAlpha((float)message/100,1); <== conversion string ==> float hasardeuse
}


mieux vaut coder dans ton cas

else if(message=="60%")
llSetAlpha(0.6,1);
else if(message=="80%")
llSetAlpha(0.8,1);

Comme ta variable peut contenir

"interieur","vert","0%","20%" etc

mieux vaut tester si on a une valeur de opacité (qui utilise le %) et l'utiliser

Code PHP:


integer index 
llSubStringIndex message ,"%"); // on récupère l'endroit où se trouve le caractère "%" dans la chaine message
// (renvoie -1 si il n'existe pas..)

if (index != -1//  %   trouvé ?
{   
// oui  alors on extrait la valeur  
       
float opacite =  (float) (llGetSubString (message0,index-1))/100;
    
//  et on l'utilise pour l'appliquer à la fenêtre...  
       
llSetAlpha(opacite,1);    

comme cela tout nombre trouver grâce au "%" dans le string sera utilisé
pas besoin de tester toute les valeurs etc...

PS: code pas optimisé, mode didacticiel...


Code PHP:

if(message=="interieur")
{
    if(
message=="0%")
    {
          
llSetAlpha((float)message/100,1);
    }
    else if(
message=="20%"){
                   
llSetAlpha((float)message/100,1);
      }
... 
ne fonctionne pas car message ne peut pas être égal à interieur et être une valeur de transparence en même temps...
Merci pour la réponse, je file récup le code et je reviens

(comme par hasard une réponse quand je prends mon ptit déj, y a pas moyen de damer tranquille )


Code PHP:

integer listenChannel = -3741;

string Msg "Faites votre choix.";

list 
MenuPrincipal = ["Interieur""Exterieur"];

list 
Interieur = ["Couleur""Opacite""Retour"];

list 
Exterieur = ["Couleur""Opacite""Retour"];

list 
Couleur = ["Rouge""Noir""Blanc""Bleu""Vert""Jaune""Retour"];

list 
Opacite = ["0""20""40""60""80""100""Retour"];

default
{
    
state_entry()
    {
        
llListen(listenChannel""NULL_KEY"");
    }
    
touch_start (integer num)
    {
        
llDialog(llDetectedKey(0), MsgMenuPrincipallistenChannel);
    }

// Configuration boutons MenuPrincipal
//////////////////////////////////////////////////

    
listen (integer channelstring namekey idstring message)
    {
        {
            if (
message == "Retour")
                
llDialog(idMsgMenuPrincipallistenChannel);
            else if (
message == "Interieur")
                
llDialog(idMsgInterieurlistenChannel);
            else if (
message == "Exterieur")
                
llDialog(idMsgExterieurlistenChannel);
        }
    
     
//  COnfig msg MenuPrincipal
////////////////////////////////////////////////////////////////////////////////////////////////////////
        
if ( message == "Interieur" )
        {
            
llSay(0"Configuration Intérieur des fenêtres");
        }
        else if (
message == "Exterieur")
        {
            
llSay(0"Configuration Extérieur des fenêtres");
        }        
        
//  COnfig msg Interieur
////////////////////////////////////////////////////////////////////////////////////////////////////////
        
if ( message == "Couleur" )
        {
            
llSay(0"Choix de la couleur des fenêtres");
        }
        else if (
message == "Opacite")
        {
            
llSay(0"Choix de la transparence des fenêtres");
        }    
        
//   COnfig msg Couleurs
////////////////////////////////////////////////////////////////////////////////////////////////////////   
        
if ( message == "Noir" )
        {
            
llSay(0"Couleur des fenêtres : noir");
        }
        else if (
message == "Blanc")
        {
            
llSay(0"Couleur des fenêtres : blanc");
        }
        else if (
message == "Rouge")
        {
            
llSay(0"Couleur des fenêtres : rouge");
        }
        else if (
message == "Vert")
        {
            
llSay(0"Couleur des fenêtres : vert");
        }
        else if (
message == "Bleu")
        {
            
llSay(0"Couleur des fenêtres : bleu");
        }
        else if (
message == "Jaune")
        {
            
llSay(0"Couleur des fenêtres : jaune");
        }
        
//  COnfig msg  Opacité
////////////////////////////////////////////////////////////////////////////////////////////////////////
        
if ( message == "0" )
        {
            
llSay(0"Fenêtres transparantes");
        }
        else if (
message == "20")
        {
            
llSay(0"Fenêtres opaques à 20%");
        }
        else if (
message == "40")
        {
            
llSay(0"Fenêtres opaques à 40%");
        }
        else if (
message == "60")
        {
            
llSay(0"Fenêtres opaques à 60%");
        }
        else if (
message == "80")
        {
            
llSay(0"Fenêtres opaques à 80%");
        }
        else if (
message == "100")
        {
            
llSay(0"Mode Verre Fumé Activé :D");
        }
/// COnfig opaque 
////////////////////////////////////////////////////////////////////////////////////////////////////////
{
      if(
message=="0"){
         
llSetAlpha((0,1);
      }
      else if(
message=="20"){
         
llSetAlpha(0.2,1);
      }
      else if(
message=="40"){
         
llSetAlpha(0.4,1);
      }
      else if(
message=="60"){
         
llSetAlpha(0.6,1);
      }
      else if(
message=="80"){
         
llSetAlpha(0.8,1);
      }
      else if(
message=="100"){
         
llSetAlpha(1,1);
      }
/// COnfig couleur 
////////////////////////////////////////////////////////////////////////////////////////////////////////

      
else if(message=="bleu"){
         
llSetColor(<0,0,1>,1);
      }
      else if(
message=="rouge"){
         
llSetColor(<1,0,0>,1);
      }
      else if(
message=="noir"){
         
llSetColor(<0,0,0>,1);
      }
      else if(
message=="blanc"){
         
llSetColor(<0,0,1>,1);
      }
      else if(
message=="jaune"){
         
llSetColor(<1,1,0>,1);
      }
      else if(
message=="vert"){
         
llSetColor(<0,1,0>,1);
      }
      }
}} 
Zou je file, les yeux commence à être mort, le script tel qu'il est actuellement est ci dessus.
Merci d'avance ^^
J'ai fini ton script en gardant ta méthode

Code PHP:

integer listenChannel = -3741;

string Msg "Faites votre choix.";

list 
MenuPrincipal = ["Interieur""Exterieur"];
list 
Interieur = ["Couleur""Opacite""Retour"];
list 
Exterieur = ["Couleur""Opacite""Retour"];
list 
Couleur = ["Rouge""Noir""Blanc""Bleu""Vert""Jaune""Retour"];
list 
Opacite = ["0""20""40""60""80""100""Retour"];

integer Ext_Int

default
{
    
state_entry()
    {
        
llListen(listenChannel""NULL_KEY"");
        
Ext_Int 1;
    }
    
touch_start (integer num)
    {
        
llDialog(llDetectedKey(0), MsgMenuPrincipallistenChannel);
    }

// Configuration boutons MenuPrincipal
    
listen (integer channelstring namekey idstring message)
    {
        if (
message == "Retour")
            
llDialog(idMsgMenuPrincipallistenChannel);
        else if (
message == "Interieur")
            
llDialog(idMsgInterieurlistenChannel);
        else if (
message == "Exterieur")
            
llDialog(idMsgExterieurlistenChannel);
    
//  COnfig msg MenuPrincipal
        
if ( message == "Interieur" )
            
Ext_Int 1;
        else if (
message == "Exterieur")
            
Ext_Int 3;

//  COnfig msg Interieur
        
if ( message == "Couleur" )
            
llDialog(idMsgCouleurlistenChannel);
        else if (
message == "Opacite")
            
llDialog(idMsgOpacitelistenChannel);

//   COnfig msg Couleurs
        
if ( message == "Noir" )
            
llSetColor(<0,0,0>,Ext_Int);
        else if (
message == "Blanc")
            
llSetColor(<1,1,1>,Ext_Int);
        else if (
message == "Rouge")
            
llSetColor(<1,0,0>,Ext_Int);
        else if (
message == "Vert")
            
llSetColor(<0,1,0>,Ext_Int);
        else if (
message == "Bleu")
            
llSetColor(<0,0,1>,Ext_Int);
        else if (
message == "Jaune")
            
llSetColor(<1,1,0>,Ext_Int);
        
//  COnfig msg  Opacité
        
if ( message == "0" )
            
llSetAlpha(0.0,Ext_Int);
        else if (
message == "20")
            
llSetAlpha(0.2,Ext_Int);
        else if (
message == "40")
            
llSetAlpha(0.4,Ext_Int);
        else if (
message == "60")
            
llSetAlpha(0.6,Ext_Int);
        else if (
message == "80")
            
llSetAlpha(0.8,Ext_Int);
        else if (
message == "100")
            
llSetAlpha(1,Ext_Int);      

      }


Aarf ))

Bon bha comme suis encore debout je vais tester ça de suite,

Milles mercis par avance je reviens après test ^^


\o/ super ça fonctionne merci énormément

Encore une petite chose rapide si possible(juste etre sur). Si je remplace :

Code PHP:

default
{
    
state_entry()
    {
        
llListen(listenChannel""NULL_KEY"");
        
Ext_Int 1;
    }
    
touch_start (integer num)
    {
        
llDialog(llDetectedKey(0), MsgMenuPrincipallistenChannel);
    } 
par

Code PHP:

default
{
    
state_entry()
    {
        
llListen(listenChannel""llGetOwner(), "");
        
Ext_Int 1;
    }
    
touch_start (integer num)
    {
        
llDialog(llDetectedKey(0), MsgMenuPrincipallistenChannel);
    } 
Seul le owner (donc moi) aura acces à ce menu, ou me trompe-je complétement ?
Je vais quand mm montrer ce que j'ai fait :


Script Maitre:
Code PHP:

integer listenChannel = -3741;

string Msg "Faites votre choix.";

list 
MenuPrincipal = ["Interieur""Exterieur"];
list 
Interieur = ["Couleur""Opacite""Retour"];
list 
Exterieur = ["Couleur""Opacite""Retour"];
list 
Couleur = ["Rouge""Noir""Blanc""Bleu""Vert""Jaune""Retour"];
list 
Opacite = ["0""20""40""60""80""100""Retour"];

integer Ext_Int

default
{
    
state_entry()
    {
        
llListen(listenChannel""llGetOwner(), "");
        
Ext_Int 1;
    }
    
touch_start (integer num)
    {
        
llDialog(llDetectedKey(0), MsgMenuPrincipallistenChannel);
    }

// Configuration boutons MenuPrincipal
    
listen (integer channelstring namekey idstring message)
    {
        if (
message == "Retour")
            
llDialog(idMsgMenuPrincipallistenChannel);
        else if (
message == "Interieur")
            
llDialog(idMsgInterieurlistenChannel);
        else if (
message == "Exterieur")
            
llDialog(idMsgExterieurlistenChannel);
    
//  COnfig msg MenuPrincipal
        
if ( message == "Interieur" )
            
Ext_Int 1;
        else if (
message == "Exterieur")
            
Ext_Int 3;

//  COnfig msg Interieur
        
if ( message == "Couleur" )
            
llDialog(idMsgCouleurlistenChannel);
        else if (
message == "Opacite")
            
llDialog(idMsgOpacitelistenChannel);

//   COnfig msg Couleurs
        
if ( message == "Noir" )
            
llSetColor(<0,0,0>,Ext_Int);
        else if (
message == "Blanc")
            
llSetColor(<1,1,1>,Ext_Int);
        else if (
message == "Rouge")
            
llSetColor(<1,0,0>,Ext_Int);
        else if (
message == "Vert")
            
llSetColor(<0,1,0>,Ext_Int);
        else if (
message == "Bleu")
            
llSetColor(<0,0,1>,Ext_Int);
        else if (
message == "Jaune")
            
llSetColor(<1,1,0>,Ext_Int);
        
//  COnfig msg  Opacité
        
if ( message == "0" )
            
llSetAlpha(0.0,Ext_Int);
        else if (
message == "20")
            
llSetAlpha(0.2,Ext_Int);
        else if (
message == "40")
            
llSetAlpha(0.4,Ext_Int);
        else if (
message == "60")
            
llSetAlpha(0.6,Ext_Int);
        else if (
message == "80")
            
llSetAlpha(0.8,Ext_Int);
        else if (
message == "100")
            
llSetAlpha(1,Ext_Int);      
        
        
        if(
channel==listenChannel)
         
llShout(-3742,message);
      
      }


Script Slave :

Code PHP:

integer listenChannel = -3742;


integer Ext_Int

default
{
    
state_entry()
    {
        
llListen(listenChannel""llGetOwner(), "");
        
Ext_Int 1;
    }
    

// Configuration boutons MenuPrincipal
    
listen (integer channelstring namekey idstring message)
    {
    
//  COnfig msg MenuPrincipal
        
if ( message == "Interieur" )
            
Ext_Int 1;
        else if (
message == "Exterieur")
            
Ext_Int 3;

//   COnfig msg Couleurs
        
if ( message == "Noir" )
            
llSetColor(<0,0,0>,Ext_Int);
        else if (
message == "Blanc")
            
llSetColor(<1,1,1>,Ext_Int);
        else if (
message == "Rouge")
            
llSetColor(<1,0,0>,Ext_Int);
        else if (
message == "Vert")
            
llSetColor(<0,1,0>,Ext_Int);
        else if (
message == "Bleu")
            
llSetColor(<0,0,1>,Ext_Int);
        else if (
message == "Jaune")
            
llSetColor(<1,1,0>,Ext_Int);
        
//  COnfig msg  Opacité
        
if ( message == "0" )
            
llSetAlpha(0.0,Ext_Int);
        else if (
message == "20")
            
llSetAlpha(0.2,Ext_Int);
        else if (
message == "40")
            
llSetAlpha(0.4,Ext_Int);
        else if (
message == "60")
            
llSetAlpha(0.6,Ext_Int);
        else if (
message == "80")
            
llSetAlpha(0.8,Ext_Int);
        else if (
message == "100")
            
llSetAlpha(1,Ext_Int);      

      }



Prochaine étape, gérer l'acces par notecard ...

Erf; bon le llShout est pas prit en compte donc soit je vais laisser le script slave avec integer listenChannel = -3741
Citation :
Publié par Ashyy
Aarf ))

Bon bha comme suis encore debout je vais tester ça de suite,

Milles mercis par avance je reviens après test ^^


\o/ super ça fonctionne merci énormément

Encore une petite chose rapide si possible(juste etre sur). Si je remplace :

Code PHP:

default
{
    
state_entry()
    {
        
llListen(listenChannel""NULL_KEY"");
        
Ext_Int 1;
    }
    
touch_start (integer num)
    {
        
llDialog(llDetectedKey(0), MsgMenuPrincipallistenChannel);
    } 
par

Code PHP:

default
{
    
state_entry()
    {
        
llListen(listenChannel""llGetOwner(), "");
        
Ext_Int 1;
    }
    
touch_start (integer num)
    {
        
llDialog(llDetectedKey(0), MsgMenuPrincipallistenChannel);
    } 
Seul le owner (donc moi) aura acces à ce menu, ou me trompe-je complétement ?
Oui seulement toi ...
Citation :
Publié par Ashyy
Erf; bon le llShout est pas prit en compte donc soit je vais laisser le script slave avec integer listenChannel = -3741
tu étais parti dans l'idée ou script maître relayait le messages sur le -3742. Le script slave aurait donc du écouté la fenêtre et non llGetOwner()

En remettant -3741, tu résous ton problème car toutes les fenêtres écoutent llGetOwner().

Deplus, j'ai bien l'impression que ton llShout final du script maître ne sert plus a rien.

Francky
Voui c'est ce que j'ai fini par faire, j'espere juste ne pas avoir a faire plusieur console de controle des fenetres si celles-ci venaient à être trop éloignées

mais si quelqu'un pouvait m'aiguiller sur la methode à suivre pour que le llGetOwner soit défini selon une notecard, s'il vous plait, ça serait bien sympatique ^^

Je retourne batailler avec mes scripts
Répondre

Connectés sur ce fil

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