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.
//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.
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.