script_final

integer ttl; integer ttl_base; float hasard2; integer listen_iterations; integer listen_deplX; integer listen_deplY; integer listen_deplZ; integer listen_ephem; integer listen_ephem2; integer listen_scale; integer listen_rotX1; integer listen_rotX2; integer listen_rotY1; integer listen_rotY2; integer listen_rotZ1; integer listen_rotZ2; integer listen_alpha; vector size; vector Rotation1; float variation; float scale; float scaleXYZ; float depl_X; float depl_Y; float depl_Z; float rot_X1; float rot_X2; float rot_Y1; float rot_Y2; float rot_Z1; float rot_Z2; float alpha; float duree_vie; string ephemere;

rez_child { scale = (ttl_base-ttl)*scaleXYZ; if(ttl > 0) { integer ttl_child = ttl - 1; hasard2 = llFrand(2); Rotation1 = ;

llRezObject("rezTest", llGetPos+( - )*llGetLocalRot, <0,0,0>, llGetLocalRot + llEuler2Rot( Rotation1 * DEG_TO_RAD ), ttl_child);

if(hasard2 < 1) { llRezObject("rezTest", llGetPos+( - )*llGetLocalRot, <0,0,0>, llGetLocalRot - llEuler2Rot( Rotation1 * DEG_TO_RAD ), ttl_child); } } list params = llGetPrimitiveParams([PRIM_SIZE]); size = llList2Vector(params, 0); llSetPrimitiveParams([ PRIM_SIZE, size - ]); if(ephemere = "oui") { llSetTimerEvent(duree_vie); } }

default { touch_start(integer num_detected) { listen_iterations = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quel sera le nombre d'itérations?..."); listen_iterations; }

listen( integer channel, string name, key id, string message ) {

ttl = (integer)message; if((ttl > 10)|(ttl < 0)) { llSay(0, "Valeur choisie trop élevée ou invalide...touchez-moi pour continuer"); state default; } ttl_base = ttl; llListenRemove(listen_iterations); state question2; } }

state question2 { state_entry { listen_deplX = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quel sera le déplacement en X entre les copies?..."); listen_deplX; } listen( integer channel, string name, key id, string message ) { depl_X = (float)message; if((depl_X > 2) | (depl_X < -2)) { llSay(0, "Valeur choisie trop ou pas assez élevée..."); state question2; } llListenRemove(listen_deplX); state question3; } } state question3 { state_entry { listen_deplY = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quel sera le déplacement en Y entre les copies?..."); listen_deplY; } listen( integer channel, string name, key id, string message ) { depl_Y = (float)message; if((depl_Y > 2) | (depl_Y < -2)) { llSay(0, "Valeur choisie trop ou pas assez élevée..."); state question3; } llListenRemove(listen_deplY); state question4; } }

state question4 { state_entry { listen_deplZ = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quel sera le déplacement en Z entre les copies?..."); listen_deplZ; } listen( integer channel, string name, key id, string message ) { depl_Z = (float)message; if((depl_Z > 2) | (depl_Z < -2)) { llSay(0, "Valeur choisie trop ou pas assez élevée..."); state question4; } llListenRemove(listen_deplZ); state question5; } }

state question5 { state_entry { listen_ephem = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Désirez-vous que l'objet soit éphémère? (répondre oui ou non)"); listen_ephem; } listen( integer channel, string name, key id, string message ) { ephemere = (string)message; if((ephemere != "oui") & (ephemere != "non")) { llSay(0, "Je n'ai pas bien compris...répondez par oui ou non s'il-vous-plaît"); state question5; }

if(ephemere != "non") { llListenRemove(listen_ephem); state question6; } llListenRemove(listen_ephem); state question7; } }

state question6 { state_entry { listen_ephem2 = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Après combien de temps (en secondes) désirez-vous que l'objet disparaisse?"); listen_ephem2; } listen( integer channel, string name, key id, string message ) { duree_vie = (float)message; llListenRemove(listen_ephem2); state question7; } }

state question7 { state_entry { listen_scale = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quelle sera la variation de la taille de l'objet?..."); listen_scale; } listen( integer channel, string name, key id, string message ) { scaleXYZ = (float)message; llListenRemove(listen_scale); state question8; } }

state question8 { state_entry { listen_rotX1 = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Déterminez l'intervalle de rotation en X: l'objet pivotera aléatoirement à l'intérieur d'un intervalle de angle1 à angle2. \nQuel sera en degrés l'angle1?..."); listen_rotX1; } listen( integer channel, string name, key id, string message ) { rot_X1 = (float)message; llListenRemove(listen_rotX1); state question9; } } state question9 { state_entry { listen_rotX2 = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quel sera en degrés l'angle2?..."); listen_rotX2; } listen( integer channel, string name, key id, string message ) { rot_X2 = (float)message; llListenRemove(listen_rotX2); state question10; } }

state question10 { state_entry { listen_rotY1 = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Déterminez l'intervalle de rotation en Y: l'objet pivotera aléatoirement à l'intérieur d'un intervalle de angle1 à angle2. \nQuel sera en degrés l'angle1?..."); listen_rotY1; } listen( integer channel, string name, key id, string message ) { rot_Y1 = (float)message; llListenRemove(listen_rotY1); state question11; } } state question11 { state_entry { listen_rotY2 = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quel sera en degrés l'angle2?..."); listen_rotY2; } listen( integer channel, string name, key id, string message ) { rot_Y2 = (float)message; llListenRemove(listen_rotY2); state question12; } } state question12 { state_entry { listen_rotZ1 = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Déterminez l'intervalle de rotation en Z: l'objet pivotera aléatoirement à l'intérieur d'un intervalle de angle1 à angle2. \nQuel sera en degrés l'angle1?..."); listen_rotZ1; } listen( integer channel, string name, key id, string message ) { rot_Z1 = (float)message; llListenRemove(listen_rotZ1); state question13; } } state question13 { state_entry { listen_rotZ2 = llListen(PUBLIC_CHANNEL, "", "", ""); llSay(0, "Quel sera en degrés l'angle2?..."); listen_rotZ2; } listen( integer channel, string name, key id, string message ) { rot_Z2 = (float)message; llListenRemove(listen_rotZ2); state question14; } }

state question14 { state_entry { llSay(0, "Voici les paramètres que vous avez choisi:"); llSay(0, "Nombre d'itérations =" + (string)ttl + "\nDéplacement (x, y, z)=" + "("+(string)depl_X +","+ (string)depl_Y+","+ (string)depl_Z+")\nÉphémère? ="+ (string)ephemere+"\nRotation (x, y, z) = ("+(string)rot_X1+"@"+(string)rot_X2+","+(string)rot_Y1+"@"+(string)rot_Y2+","+(string)rot_Z1+"@"+(string)rot_Z2+")"); llSay(0, "Votre script a été paramétré. Prennez une copie de l'objet et insérez-le dans son inventaire"); state rez; } }

state rez { touch_start(integer num_detected) { rez_child; } object_rez(key child) { llGiveInventory(child, llKey2Name(child)); }

on_rez(integer ttl_in) { ttl = ttl_in;

}

changed(integer change) { if(change == CHANGED_INVENTORY) { rez_child; } } timer { llDie; } }

Retour à Binome 4