Jouer musique + ouverture de boîte d'un seul clic!

Répondre
Partager Rechercher
Bonjour à tous


Je vous lis depuis longtemps, et m'inspire de vos scripts pour créer plein de choses passionnantes. Déjà, merci pour votre inventivité!
Mon souci aujourd'hui? J'ai build une boite à musique qui s'ouvre et je voudrais qu'avec un seul clic, la musique se déclenche, puis la boite s'ouvre. Je sais que le truc réside dans Linkmessage, j'ai essayé plein de trucs, mais si la musique se lance bien, la prim couvercle, elle, ne s'ouvre pas (les prims sont liées, hein).

Pour des raisons de temps de load de la musique (5 sec), j'aimerais que celle-ci soit lancée avant l'ouverture; que le script "attende" (sleep?) 5 sec avant de déclencher l'ouverture de la prim couvercle. Quelqu'un peut-il m'aider à ajouter la fonction link message à mes scripts svp?

Voici le script de la musique, placé dans l'objet qui la joue:


list invlist;
integer tottrack;
integer i;

integer play = FALSE;

sound()
{
llSetTimerEvent(9.5);
tottrack = llGetInventoryNumber(INVENTORY_SOUND);
float length = tottrack*9.5;
llSay(0, (string)length);
llPreloadSound(llGetInventoryName(INVENTORY_SOUND, 0));
i=0;
}

default
{
touch_start(integer total_number)
{
if (play) {
sound();
} else {
llSetTimerEvent(0.0);
}

play = !play;
}

timer()
{
llTriggerSound(llGetInventoryName(INVENTORY_SOUND, i), .6);
i++;
if(i+1 < tottrack )
{
llPreloadSound(llGetInventoryName(INVENTORY_SOUND, i+1));

}
if(i == tottrack )
{
llResetScript();
}
}
}


et voici le script d'ouverture de la porte, placé dans le couvercle:

string NOM = "Oeuf";
list STATES = [
<0.167605, 0.002892, -0.002103>,
<-0.028152, -0.702322, 0.056292, 0.709071>,
<0.167755, 0.019485, 0.136174>,
<-0.025530, 0.993866, -0.057530, 0.090929>
];
integer i_step = 1;
integer i_nbr_prims = 1;
integer i_nbr_states;
list l_num_links;
init(){
i_nbr_states = llGetListLength(STATES) / i_nbr_prims / 2;
integer n = llGetNumberOfPrims();
integer i;
for(i = 2; i <= n; ++i) {
string nom = llList2String(llGetObjectDetails(llGetLinkKey(i), [OBJECT_NAME]), 0);
if(nom == NOM) l_num_links += i;
}
}
animation() {
list l_params;
integer i;
integer j = i_step * i_nbr_prims * 2;
for(; i < i_nbr_prims; ++i) {
if(i) l_params += [PRIM_LINK_TARGET, llList2Integer(l_num_links, i)];
l_params += [PRIM_POS_LOCAL, llList2Vector(STATES, j + i * 2), PRIM_ROT_LOCAL, llList2Rot(STATES, j + 1 + i * 2)];
}
llSetLinkPrimitiveParams(llList2Integer(l_num_links, 0), l_params);
if(++i_step == i_nbr_states) i_step = 0;
}
default
{
state_entry() {
init();
}
touch(integer total_number) {
animation();
}
}

Merci de m'avoir lue, et merci de votre aide!
oula.....comment dire.....c 'est un peu....touffu....limite esoterique ....pourquoi la musique doit jouer avant l' ouverture ?....et pourquoi la boite reste ouverte ? .....le mieux serait de m'im ingame, ça ira plus vite....on pourra toujours poster le script après....Menthal Oh
Répondre

Connectés sur ce fil

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