Script porte de frigo "prob de link"

Répondre
Partager Rechercher
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....:

Code:
 
 
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....

@+
normal.
Ton script, qui est dans la charnière de tes portes, fait tourner la prim qui le contient.

Si cette prim est la prim 0, tout l'objet suis le mouvement, et donc la porte tourne.

Si cette prim n'est pas la prim 0, et bien le script ne fait bouger que la prim... donc ta porte ne s'ouvre pas.

Conclusion, tu laisses en 3 parties, ou tu changes de script.

Si tu changes de script, j'ai ce qu'il te faut en stock, et en prime, tu évites l'usage de prim charnière.
contacte moi IG (Humpf DeCuir)
salut moi j'ai construit des distributeurs de boissons chaudes et froides et de frites mais voila je n'ai aucune idee de ce qu'il faut que je fasse pour que mon distributeur donne des boissons et frites aux utilisateurs .quelqu'un pour m'aider ? siouplait ?
Répondre

Connectés sur ce fil

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