/* Script d'arme fictive: Le marteau. Placer le script directement dans le marteau N'oubliez pas de placer un son et une image pour la particule. Merci a Lalex Devin d'avoir modifier le script et rajouter des particules. */ integer DEBUG = FALSE; string STARTSOUND = "boing4"; // changer ce nom si vous changez de son string STOPSOUND = ""; float STARTSOUNDVOL = 1.0; float STOPSOUNDVOL = 0.5; integer PTA = PERMISSION_TRIGGER_ANIMATION; integer PTC = PERMISSION_TAKE_CONTROLS; key MyController; integer InAnimation = FALSE; integer Listening = 0; list particle_parameters=[]; list target_parameters=[]; integer AUTO_START = TRUE; default { state_entry() { particle_parameters = [ // parametre des particules // Parametre des Textures PSYS_SRC_TEXTURE, llGetInventoryName (INVENTORY_TEXTURE, 0), PSYS_PART_START_SCALE, <0.80,0.80, FALSE>, PSYS_PART_END_SCALE, <0.20,0.20, FALSE>, PSYS_PART_START_COLOR, <204, 255, 0>, PSYS_PART_END_COLOR, <204, 255, 0>, PSYS_PART_START_ALPHA, (float)0.9, PSYS_PART_END_ALPHA, (float)0.9, PSYS_SRC_BURST_PART_COUNT, (integer)4.0, PSYS_SRC_BURST_RATE, (float) 0.1, //intervalle entre deux explosions PSYS_PART_MAX_AGE, (float)4.0, //duree de vie PSYS_SRC_MAX_AGE,(float) 0.0, //indique la durée pendant laquelle on voit PSYS_SRC_PATTERN, (integer)2, // 1=DROP douche , 2=EXPLODE explosion, 4=ANGLE PSYS_SRC_BURST_SPEED_MIN, (float)0.0, PSYS_SRC_BURST_SPEED_MAX, (float)0.0, PSYS_SRC_BURST_RADIUS,0.8, PSYS_SRC_ANGLE_BEGIN, (float) 0.0*PI, PSYS_SRC_ANGLE_END, (float)0.15*PI, PSYS_SRC_OMEGA, <0.0,0.0,0.0>, PSYS_SRC_ACCEL, <0.0,0.0,-0.1>, // tombe ou vole ou flote PSYS_PART_FLAGS, (integer)( 0 // Texture Options: | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_EMISSIVE_MASK ) ]; llParticleSystem( [] ); } attach(key attached) { if (Listening) llListenRemove(Listening); MyController = attached; if (attached == NULL_KEY) { if (llGetPermissions() & PTA) { llStopAnimation("hold_R_handgun"); return; } } llRequestPermissions(attached, PTA | PTC); llSetTimerEvent(5); }
timer() { if (InAnimation) { llStopAnimation("sword_strike_R"); InAnimation = FALSE; llSetTimerEvent(0); llParticleSystem( [] ); return; } if ((llGetPermissions() & (PTA | PTC)) == (PTA | PTC)) { llStartAnimation("hold_R_handgun"); llTakeControls(CONTROL_LBUTTON, TRUE, FALSE); llSetTimerEvent(0); if (Listening) llListenRemove(Listening); Listening = llListen(0, "", MyController, ""); } else { if (MyController != NULL_KEY) { llRequestPermissions(MyController, PTC | PTA); } } } control(key name, integer levels, integer edges) { if (InAnimation) return; if (((edges & CONTROL_LBUTTON) == CONTROL_LBUTTON) && ((levels & CONTROL_LBUTTON) == CONTROL_LBUTTON)) { llTriggerSound(STARTSOUND, STARTSOUNDVOL); llStartAnimation("sword_strike_R"); InAnimation = TRUE; llParticleSystem( particle_parameters + target_parameters ); llSetTimerEvent(0.4); } } listen(integer channel, string name, key id, string message) { message = llToLower(message); if (message == "paddle release") { llReleaseControls(); return; } if (message == "paddle engage") { InAnimation = FALSE; llSetTimerEvent(5); } } } |