Retour difficile au script :(

Répondre
Partager Rechercher
Bonjour à tous

Après avoir arrêté sl un bon bout de temps (je dirais même plus), me voici de retour. Mais en ayant arrêté sl, j'ai aussi forcément arrêté de scripter, et la je galère comme un malade et je but sur un soucis... Si quelqu'un voulait bien m'aider à retomber sur mes pieds.... Merci par avance.

Donc mon problème.... j'ai un script en stock (que voici) de porte coulissante qui fonctionne à merveille.
Code:
//Sliding Door v4
//Works when linked
//by Kayla Stonecutter

//How far in meters to travel in each direction.  Two or all three can be used for angled movement
//NOTE: when linked, this is relative to the root prim
//Positive = move north, negative = move south
float       NorthSouth = 0.0;
//Positive = move east, negative = move west
float       EastWest = 4.0;
//Positive = move up, negative = move down
float       UpDown = 0.0;

//The amount in seconds to stay open, set to 0 to not autoclose
float       Timer = 6.0;


//misc variables
vector      Pos;
vector      Offset;
integer     Open;
integer     x;

default
{
    state_entry()
    {
        Offset = <EastWest, NorthSouth, UpDown>;
    }
    
    touch_start(integer num)
    {
        for(x = 0; x < num; x++)
        {
            Open = !Open;
            if(Open)
            {
                Pos = llGetLocalPos();
                llSetPos(Pos + Offset);
                llSetTimerEvent(Timer);
            }else{
                llSetPos(Pos);
                llSetTimerEvent(0);
            }
        }
    }
    
    on_rez(integer param)
    {
        llResetScript();
    }
    
    moving_end()
    {
        if(Open)
        {
            Open = 0;
            llSetTimerEvent(0.0);
        }
    }
    
    timer()
    {
        llSetPos(Pos);
        llSetTimerEvent(0);
        Open = 0;
    }
}
Maintenant, je souhaiterais que quand j'ouvre une porte X, la porte Y qui se trouve à proximité s'ouvre dans le même temps.... Et là les soucis commencent...

Voici où j'en suis, mais le script refuse de s'initier à cause du "num" de la ligne 74 (dans le 2eme IF)!! Et je ne trouve pas du tout comment m'en sortir.

Code:
integer CHANNEL_1 = -26722; // Volets
integer CHANNEL_2 = -26733; // Porte

//Sliding Door v4
//Works when linked
//by Kayla Stonecutter

//How far in meters to travel in each direction.  Two or all three can be used for angled movement
//NOTE: when linked, this is relative to the root prim
//Positive = move north, negative = move south
float       NorthSouth = 4.0;
//Positive = move east, negative = move west
float       EastWest = 0.0;
//Positive = move up, negative = move down
float       UpDown = 0.0;

//The amount in seconds to stay open, set to 0 to not autoclose
float       Timer = 6.0;


//misc variables
vector      Pos;
vector      Offset;
integer     Open;
integer     x;

default
{
    state_entry()
    {
        llListen(CHANNEL_1, "", NULL_KEY, "");
        llListen(CHANNEL_2, "", NULL_KEY, "");
        Offset = <EastWest, NorthSouth, UpDown>;
    }
    
    on_rez(integer param)
    {
        llResetScript();
    }
    
    moving_end()
    {
        if(Open)
        {
            Open = 0;
            llSetTimerEvent(0.0);
        }
    }
    
    timer()
    {
        llSetPos(Pos);
        llSetTimerEvent(0);
        Open = 0;
    }
        
    listen(integer channel, string name, key id, string message)
    {
        if ( channel == CHANNEL_1 )
            {
                if(message == "100")
                {
                    llSetAlpha(1,1);
                    llSetAlpha(1,3);
                }
                else if(message == "0")
                {
                    llSetAlpha(0,1);
                    llSetAlpha(0,3);
                }
            }
        if ( channel == CHANNEL_2 )
            {
             llSay(0, "ouvre toi");
                for(x = 0; x < num; x++)
                {
                    Open = !Open;
                    if(Open)
                    {
                        Pos = llGetLocalPos();
                        llSetPos(Pos + Offset);
                        llSetTimerEvent(Timer);
                    }else{
                        llSetPos(Pos);
                        llSetTimerEvent(0);
                    }
                }
            }
    }
}
Voilà, vous savez tous. J'espère que l'un de vous pourras m'aider.
Merci par avance.
Bonjour,
Je ne suis pas sur d'avoir saisis entierement le prob. mais,
je pense qu'il n'y a pas que le "num" qui risque de "bloquer" le fonctionnement de la porte :s (num etant probablement le nombre d'etapes max pour une ouverture par paliers)
Il faudrait qu' un touch-start sur la porte envoit un message à la fenêtre qui pour l'instant ecoute un message qui ne viendra jamais...
Si l'ensemble est lié, mieux vaut d'ailleurs llMessageLinked....
Ou si l'ensemble doit marcher avec un seul script utiliser llSetLinkPrimParam....
Citation :
Publié par MenthalOH
mais, je pense qu'il n'y a pas que le "num" qui risque de "bloquer" le fonctionnement de la porte :s (num etant probablement le nombre d'etapes max pour une ouverture par paliers)
Oui, je me doute bien que c'est une histoire de ce genre, mais je ne sais pas où je peux le définir du coup dans la nouvelle version.

Citation :
Publié par MenthalOH
Il faudrait qu' un touch-start sur la porte envoit un message à la fenêtre qui pour l'instant ecoute un message qui ne viendra jamais...
Si l'ensemble est lié, mieux vaut d'ailleurs llMessageLinked....
Ou si l'ensemble doit marcher avec un seul script utiliser llSetLinkPrimParam....
Le script que j'ai mis est celui de la porte "esclave" qui sera lié au final avec l'ensemble du build (tout comme la porte "maitresse").
Le message est bien envoyé par la porte "maitresse", car quand je clique sur celle ci, il y a bien le message "ouvre toi" qui s'affiche dans le chat.
re bonjour, personnelement, je ferai ça.....à mettre dans la porte qu'on clique..sans qu'elle soit root en modifiant juste un peu le 1er script

Code PHP:

float       Timer 6.0;
vector      Pos;
vector      Offset;
integer     Open;
integer     x;
default
{
    
state_entry()
    {
        
Offset = <4.00.00.0>;
    }
 
    
touch_start(integer num)
    {
        for(
0numx++)
        {
            
Open = !Open;
            if(
Open)
            {
                
Pos llGetLocalPos();
                
llSetPos(Pos Offset);
                
llSetTimerEvent(Timer);
                
llSetLinkAlpha(2,0.0,1);
                
llSetLinkAlpha(2,0.0,3);
               
//mettre le linknumber de la 2eme porte ds le build final à la place de 2
                
llSay(0,"ouvre toi");
 
 
            }
            else
            {
                
llSetPos(Pos);
                
llSetTimerEvent(0);
                
llSetLinkAlpha(2,1.0,1);
                
llSetLinkAlpha(2,1.0,3);
                
//mettre le linknumber de la 2eme porte ds le build final à la place de 2
                
llSay(0,"ferme toi");
            }
        }
    }
 
    
on_rez(integer param)
    {
        
llResetScript();
    }
 
    
moving_end()
    {
        if(
Open)
        {
            
Open 0;
            
llSetTimerEvent(0.0);
        }
    }
 
    
timer()
    {
        
llSetPos(Pos);
        
llSay(0,"ferme toi");
        
llSetLinkAlpha(2,1.0,1);
        
llSetLinkAlpha(2,1.0,3);
        
//mettre le linknumber de la 2eme porte ds le build final à la place de 2
        
llSetTimerEvent(0);
        
Open 0;
    }

Répondre

Connectés sur ce fil

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