Bonjour, Comme le titre l'indique mon frigo fait des siennes....
J'explique : j'ai un prim pour le frigo + 2 prims linké qui forme chaque porte du frigo (donc 4 prims) un prim pour la porte et un prim pour l'axe de rotation de la porte.
J'ai bien scripté chaque porte en faisant bien attention que ce soit le prim "axe" qui ai le script et le tout fonctionne nikel !
mais mon prob C que une fois que j'ai voulu vendre ce frigo, je me suis aperçu qu'il était préférable de linker le tout (frigo + 2 portes.) Mais là, une fois le tout linké, les portes ne s'ouvrent plus, comme si le script était plus en marche.
Voici le script en question , il est un peu long, bonne lecture....:
integer SW_OPEN = FALSE; // used to signify door swinging open
integer SW_CLOSE = TRUE; // used to signify door swinging closed
integer SW_NORMAL = FALSE; // used to signify a normal swing
integer SW_REVERSE = TRUE; // used to signify a reverse swing
key gfOwnerKey; // Owner of the elevator object
integer gfDoorClosed; // Current state of the door (Open, Closed)
integer gfDoorSwing; // Deteremines which way the door swings (In, Out)
gmInitFields()
{
gfOwnerKey = llGetOwner();
gfDoorClosed = TRUE;
gfDoorSwing = SW_NORMAL;
return;
}
gmSwingDoor(integer direction)
{
rotation rot;
rotation delta;
float piVal;
if (direction == SW_OPEN)
{
piVal = PI/4;
if (gfDoorSwing == SW_REVERSE)
{
piVal = -PI/4;
}
} else
{
piVal = -PI/4;
if (gfDoorSwing == SW_REVERSE)
{
piVal = PI/4;
}
}
rot = llGetRot();
delta = llEuler2Rot(<0,0,piVal> );
rot = delta * rot;
llSetRot(rot);
llSleep(0.25);
rot = delta * rot;
llSetRot(rot);
return;
}
gmCloseDoor()
{
if (gfDoorClosed == TRUE)
{
llSay (0, "This door is already closed.");
return;
}
llTriggerSound("Door close", 0.2);
gmSwingDoor(SW_CLOSE);
gfDoorClosed = TRUE;
return;
}
gmOpenDoor()
{
if (gfDoorClosed == FALSE)
{
llSay (0, "This door is already open.");
return;
}
llTriggerSound("Door open", 0.2);
gmSwingDoor(SW_OPEN);
gfDoorClosed = FALSE;
return;
}
default
{
state_entry()
{
gmInitFields();
llListen(0, "", "", "open");
llListen(0, "", "", "close");
}
listen(integer channel, string name, key id, string msg)
{
string operName;
string ownerName;
operName = llKey2Name(id);
ownerName = llKey2Name(gfOwnerKey);
if (ownerName != operName)
{
llTriggerSound("Door knock", 0.2);
llSay(0, "Voice command access is for owner only.");
return;
}
if(msg == "open")
{
gmOpenDoor();
}
if (msg == "close")
{
gmCloseDoor();
}
}
touch_start(integer i)
{
if (gfDoorClosed == FALSE)
{
llTriggerSound("Door close", 0.2);
gmSwingDoor(SW_CLOSE);
gfDoorClosed = TRUE;
return;
} else
{
llTriggerSound("Door open", 0.2);
gmSwingDoor(SW_OPEN);
gfDoorClosed = FALSE;
return;
}
}
}
voila, au final j'aimerais bien linker le frigo donc, car la personne n'arrive pas a poser les prims correctement les uns avec les autres du coup.... il comprend rien au logiciel de modélisation de SL et je préférerais pouvoir donner mes créa en un link...+ simple tout de même....
Voila..avis aux âmes charitables....
@+