integer moving = FALSE; integer flying = FALSE; default { attach(key on) { if (on != NULL_KEY) { llLoopSound("boom", 1.0); moving = TRUE; integer perm = llGetPermissions(); if (perm != (PERMISSION_TAKE_CONTROLS)) { llRequestPermissions(on, PERMISSION_TAKE_CONTROLS); } else { llTakeControls(CONTROL_FWD | CONTROL_ML_LBUTTON, TRUE, TRUE); llSetTimerEvent(0.5); } } else { moving = FALSE; llStopSound(); llReleaseControls(); llSetTimerEvent(0.0); } } timer() { if(llGetAgentInfo(llGetOwner()) & AGENT_FLYING) { if(flying == FALSE) { vector I_start_color = <1,1,1>; vector I_end_color = <0.5,0,0.2>; float I_start_alpha = 0.0; float I_end_alpha = 1.0; vector I_start_scale = <0.3,0.3,0.0>; vector I_end_scale = <0,0,0>; float I_particle_age = 1.5; float I_inner_angle = PI; float I_outer_angle = PI; vector I_spin_speed = <0.0,0.0,0.0>; vector I_particle_accel = <0.0,0.0,0.0>; float I_burst_rate = 0.1; integer I_burst_count = 50; float I_burst_radius = 0.05; float I_min_speed = 0.1; float I_max_speed = 0.65; float I_source_age = 0.0; // 0.0 = forever string I_particle_texture = "particle_glowWhite2"; //if not defined, the default particle key I_target; //the target of your particles if they use a follow mask llParticleSystem([ PSYS_PART_FLAGS, PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_FOLLOW_SRC_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_EMISSIVE_MASK, PSYS_PART_START_COLOR, I_start_color, PSYS_PART_END_COLOR, I_end_color, PSYS_PART_START_SCALE, I_start_scale, PSYS_PART_END_SCALE, I_end_scale, PSYS_PART_MAX_AGE, I_particle_age, PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE, PSYS_SRC_INNERANGLE, I_inner_angle, PSYS_SRC_OUTERANGLE, I_outer_angle, PSYS_SRC_OMEGA, I_spin_speed, PSYS_SRC_ACCEL, I_particle_accel, PSYS_SRC_TEXTURE, I_particle_texture, PSYS_SRC_BURST_RATE, I_burst_rate, PSYS_SRC_BURST_PART_COUNT, I_burst_count, PSYS_SRC_BURST_RADIUS, I_burst_radius, PSYS_SRC_BURST_SPEED_MIN, I_min_speed, PSYS_SRC_BURST_SPEED_MAX, I_max_speed, PSYS_SRC_MAX_AGE, I_source_age ]); } flying = TRUE; llMessageLinked(LINK_SET, 0, "fly", ""); //..................IDLE............................... } else { flying = FALSE; llMessageLinked(LINK_SET, 0, "nofly", ""); llParticleSystem([]); } } run_time_permissions(integer perm) { if (perm) { llTakeControls(CONTROL_FWD | CONTROL_ML_LBUTTON, TRUE, TRUE); llSetTimerEvent(0.1); } } control(key owner, integer level, integer edge) { if(flying) { // Look for the jump key going down for the first time. if (!(level & CONTROL_FWD)) { llMessageLinked(LINK_SET, FALSE, "stop", ""); //..................IDLE............................... vector I_start_color = <1,1,1>; vector I_end_color = <0.5,0,0.2>; float I_start_alpha = 0.0; float I_end_alpha = 1.0; vector I_start_scale = <0.3,0.3,0.0>; vector I_end_scale = <0,0,0>; float I_particle_age = 1.5; float I_inner_angle = PI; float I_outer_angle = PI; vector I_spin_speed = <0.0,0.0,0.0>; vector I_particle_accel = <0.0,0.0,0.0>; float I_burst_rate = 0.1; integer I_burst_count = 50; float I_burst_radius = 0.05; float I_min_speed = 0.1; float I_max_speed = 0.65; float I_source_age = 0.0; // 0.0 = forever string I_particle_texture = "particle_glowWhite2"; //if not defined, the default particle key I_target; //the target of your particles if they use a follow mask llParticleSystem([ PSYS_PART_FLAGS, PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_FOLLOW_SRC_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_EMISSIVE_MASK, PSYS_PART_START_COLOR, I_start_color, PSYS_PART_END_COLOR, I_end_color, PSYS_PART_START_SCALE, I_start_scale, PSYS_PART_END_SCALE, I_end_scale, PSYS_PART_MAX_AGE, I_particle_age, PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE, PSYS_SRC_INNERANGLE, I_inner_angle, PSYS_SRC_OUTERANGLE, I_outer_angle, PSYS_SRC_OMEGA, I_spin_speed, PSYS_SRC_ACCEL, I_particle_accel, PSYS_SRC_TEXTURE, I_particle_texture, PSYS_SRC_BURST_RATE, I_burst_rate, PSYS_SRC_BURST_PART_COUNT, I_burst_count, PSYS_SRC_BURST_RADIUS, I_burst_radius, PSYS_SRC_BURST_SPEED_MIN, I_min_speed, PSYS_SRC_BURST_SPEED_MAX, I_max_speed, PSYS_SRC_MAX_AGE, I_source_age ]); } else { llMessageLinked(LINK_SET, TRUE, "burst", ""); vector start_color = <1,1,1>; vector end_color = <0.65,0.3,0.0>; float start_alpha = 1.0; float end_alpha = 0.0; vector start_scale = <0.25,0.25,0.0>; vector end_scale = <0.1,0.1,0.0>; //scale (z is ignored) float particle_age = 2.5; float inner_angle = PI; float outer_angle = PI; vector spin_speed = <0.0,0.0,0.0>; vector particle_accel = <0.0,0.0,0.0>; float burst_rate = 0.01; integer burst_count = 20; float burst_radius = 0.1; float min_speed = 1; float max_speed = 1.5; float source_age = 0.0; // 0.0 = forever string particle_texture = "particle_glowOrange4"; key target; { { llParticleSystem([ PSYS_PART_FLAGS, PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | //PSYS_PART_WIND_MASK | //PSYS_PART_BOUNCE_MASK | PSYS_PART_FOLLOW_SRC_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK | //PSYS_PART_TARGET_POS_MASK | PSYS_PART_EMISSIVE_MASK, //PSYS_PART_TARGET_LINEAR_MASK, PSYS_PART_START_COLOR, start_color, PSYS_PART_END_COLOR, end_color, PSYS_PART_START_ALPHA, start_alpha, PSYS_PART_END_ALPHA, end_alpha, PSYS_PART_START_SCALE, start_scale, PSYS_PART_END_SCALE, end_scale, PSYS_PART_MAX_AGE, particle_age, PSYS_SRC_PATTERN, //PSYS_SRC_PATTERN_DROP, //PSYS_SRC_PATTERN_EXPLODE, //PSYS_SRC_PATTERN_ANGLE, PSYS_SRC_PATTERN_ANGLE_CONE, PSYS_SRC_INNERANGLE, inner_angle, PSYS_SRC_OUTERANGLE, outer_angle, PSYS_SRC_OMEGA, spin_speed, // PSYS_SRC_ACCEL, particle_accel, PSYS_SRC_TEXTURE, particle_texture, PSYS_SRC_BURST_RATE, burst_rate, PSYS_SRC_BURST_PART_COUNT, burst_count, PSYS_SRC_BURST_RADIUS, burst_radius, PSYS_SRC_BURST_SPEED_MIN, min_speed, PSYS_SRC_BURST_SPEED_MAX, max_speed, PSYS_SRC_MAX_AGE, source_age//, //PSYS_SRC_TARGET_KEY, target ]); }} } } } }