voila, j'ai fait un ascenseur qui a 2 etages
il ce rezz en bas, memorise ca position.
cet ascenseur a une porte qui s ouvre a l'arret, et ce referme au demarage.
au 1 er etage une porte paliere s ouvre a l'arrivée de l'ascenseur et ce referme a son depart.
tout cela marche parfaitement
on clik sur l ascenseur et il part
la direction ce fait automatiquement
mais je voudrais rajouter un fonction listen de facon a faire un bouton d'apelle
en haut et en bas
je n'arrive pas a faire cohabiter les 2 (fonction touch_start et listen)
merci de m'aider
en piece jointe le script actif a jour
merci d'avance a tous, et grand merci a NIX pour ces grands eclaircissements
// *********************************************************************************************************************
// * note de routine: cette version est etudiée pour commencer avec la cabine en position basse pour mem ces marques *
// * routine ascenseur traduite et ameliorer par Dave1000 Winkler *
// * Commenter dans le but d'aprentissage dans le maniement des phys *
// * observation: le phys a tendance a ce placer magnetiquement a une distance de quelque centimetre dans toute les *
// * direction, il faut donc en tenir compte lors de la mise en place des paramatres point mort haut. *
// *********************************************************************************************************************
// ************************************************************************************************************
// * dans cette zone , declaration de toutes les variables utilisée dans le script *
// * et eventuelement de toutes les assignations *
// ************************************************************************************************************
vector start_pos;// la variable start_pos est initialisée comme vector a <0,0,0>
vector verif_pos;// la variable verif_pos est initialisée comme vector a <0,0,0>
float point_haut=11.00;// definition de la variable du point le plut haut (1er etage)
vector move_haut;// initialisation de la variable move_haut comme vector
key id ="";
string m;
integer a;
default
{
state_entry()
{
llSay(0,"1ER Demarage");// blabla
llSetStatus (STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z, FALSE);// bloke la possibilitée de rotation X,y,z
start_pos=llGetPos();// on assigne a la variable vector start_pos, la position actuel du RDC
//llSay(0,(string) start_pos);// pour verifier la position basse
move_haut=start_pos+<0,0,point_haut>;// definition du point mort haut ici
//llSay(0,(string) move_haut);// blabla pour verifier la pos haute
llSetStatus(STATUS_PHYSICS,TRUE);// le statut du prim de l'ascenseur est passer a phys
llMoveToTarget(start_pos,0.2);// on s'assure que l'ascenseure est bien au RDC
key id = "";// la variable ID est initialisée comme variable KEY et de contenu vide
llListen(-100,"",id,m);//definition d une ecoute sur le canal -100, et pour tout le monde
state bas;//jump au state bas
}
}
state bas // definit que nous somme en zone basse
{
touch_start(integer total_number)
{
llSay(-100,"ferme la porte");// blabla et donne l ordre a la porte de ce fermer
llSleep(1.0);// dodo scripte 1.0 sec pour bien laisser la porte ce fermer
llSetStatus(STATUS_PHYSICS,TRUE);//le statut du prim de l'ascenseur est passer a phys
llSleep(0.2);// dodo scripte 0.2 sec pour bien passé au statut phys
llMoveToTarget(move_haut,2.0);// on monte vers le haut en 2 sec
llSleep(6.0);// dodo scripte 6 sec pour laisser monter
llMoveToTarget(move_haut,0.2);// acceleration et stabilisation en haut
llStopMoveToTarget();// arret du moteur de monter
llSetStatus(STATUS_PHYSICS,FALSE);//changement du statut au fixe "on met les freins"
llSay(-100,"ouvre la porte");// blablaet donne ordre d ouvrire la porte
llSay(-101,"ouvre la porte");// blablaet donne ordre d ouvrire la porte
llSleep(1.0);// dodo scripte 1.0 sec pour bien laisser la porte ce fermer
state haut;// saut a l etat haut
}
}
state haut // definit que nous somme en zone haute
{
touch_start(integer total_number)// attend que l on touche l'ascenseur
{
llSay(-100,"ferme la porte");// blabla et donne l ordre a la porte de ce fermer
llSay(-101,"ferme la porte");// blabla et donne l ordre a la porte de ce fermer
llSleep(1.0);// dodo scripte 1.0 sec pour bien laisser la porte ce fermer
llSetStatus(STATUS_PHYSICS,TRUE);//le statut du prim de l'ascenseur est passer a phys
llSleep(0.2);// dodo scripte 0.2 sec pour bien passé au statut phys
llMoveToTarget(start_pos,2.0);// moteur en route et retour au point mort bas en 2 sec
llSleep(7.0);//dodo scripte 6 sec pour bien laisser decendre
llMoveToTarget(start_pos,0.2);// acceleration et stabilisation en bas
llStopMoveToTarget();// arret du moteur
llSetStatus(STATUS_PHYSICS,FALSE);//changement du statut au fixe "on met les freins"
llSay(-100,"ouvre la porte");// blablaet donne ordre d ouvrire la porte
llSleep(1.0);// dodo scripte 1.0 sec pour bien laisser la porte ce fermer
state bas;
}
}