[Recherche] Fumigène

Répondre
Partager Rechercher
Bonsoir à tous,

Voila ce que je cherche, un script qui permet de faire un fumigène.
L'idée, c'est que on clique sur l'objet (ou mieux, on clique sur une télécommande) un dégagement de fumé ou fumigène se produit.

Merci et biz à tous.
Merci Xanork,

J'ai bien trouvé ce script
Code PHP:

// Particle System 1.0
StartSteam()
{
                                
// MASK FLAGS: set  to "TRUE" to enable
integer glow TRUE;                                // Makes the particles glow
integer bounce FALSE;                             // Make particles bounce on Z plane of objects
integer interpColor TRUE;                         // Color - from start value to end value
integer interpSize TRUE;                          // Size - from start value to end value
integer wind TRUE;                               // Particles effected by wind
integer followSource FALSE;                       // Particles follow the source
integer followVel TRUE;                           // Particles turn to velocity direction
 
                                                    // Choose a pattern from the following:
                                                    // PSYS_SRC_PATTERN_EXPLODE
                                                    //PSYS_SRC_PATTERN_DROP
                                                    // PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
                                                    // PSYS_SRC_PATTERN_ANGLE_CONE
                                                    // PSYS_SRC_PATTERN_ANGLE
    
integer pattern PSYS_SRC_PATTERN_EXPLODE;
                                                    
// Select a target for particles to go towards
                                                    // "" for no target, "owner" will follow object owner 
                                                    //    and "self" will target this object
                                                    //    or put the key of an object for particles to go to
    
key target;
 
                            
// Particle paramaters
 
    
float age 3;                                  // Life of each particle
    
float maxSpeed 0.001;                          // Max speed each particle is spit out at
    
float minSpeed 0.0;                           // Min speed each particle is spit out at
    
string texture "Water_droplet_01b";                     // Texture used for particles, default used if blank
    
float startAlpha .35;                         // Start alpha (transparency) value
    
float endAlpha 0.0;                           // End alpha (transparency) value
    
vector startColor = <0.9,0.9,1>;                // Start color of particles <R,G,B>
    
vector endColor = <1,1,1>;                      // End color of particles <R,G,B> (if interpColor == TRUE)
    
vector startSize = <3.,3.,10.>;               // Start size of particles 
    
vector endSize = <4,4,10>;                       // End size of particles (if interpSize == TRUE)
    
vector push = <0,0,1.5>;                        // Force pushed on particles
                            // System paramaters
 
    
float rate 0.1;                               // How fast (rate) to emit particles
    
float radius 1.0;                             // Radius to emit particles for BURST pattern
    
integer count 164;                             // How many particles to emit per BURST 
    
float outerAngle 10.1;                         // Outer angle for all ANGLE patterns
    
float innerAngle 1.65;                        // Inner angle for all ANGLE patterns
    
vector omega = <0,0,0>;                         // Rotation of ANGLE patterns around the source
    
float life 0;                                 // Life in seconds for the system to make particles
                            // Script variables
 
    
integer flags
 
      
flags 0;
    if (
target == "owner"target llGetOwner();
    if (
target == "self"target llGetKey();
    if (
glowflags flags PSYS_PART_EMISSIVE_MASK;
    if (
bounceflags flags PSYS_PART_BOUNCE_MASK;
    if (
interpColorflags flags PSYS_PART_INTERP_COLOR_MASK;
    if (
interpSizeflags flags PSYS_PART_INTERP_SCALE_MASK;
    if (
windflags flags PSYS_PART_WIND_MASK;
    if (
followSourceflags flags PSYS_PART_FOLLOW_SRC_MASK;
    if (
followVelflags flags PSYS_PART_FOLLOW_VELOCITY_MASK;
    if (
target != ""flags flags PSYS_PART_TARGET_POS_MASK;
    
llParticleSystem([  PSYS_PART_MAX_AGE,age,
                        
PSYS_PART_FLAGS,flags,
                        
PSYS_PART_START_COLORstartColor,
                        
PSYS_PART_END_COLORendColor,
                        
PSYS_PART_START_SCALE,startSize,
                        
PSYS_PART_END_SCALE,endSize
                        
PSYS_SRC_PATTERNpattern,
                        
PSYS_SRC_BURST_RATE,rate,
                        
PSYS_SRC_ACCELpush,
                        
PSYS_SRC_BURST_PART_COUNT,count,
                        
PSYS_SRC_BURST_RADIUS,radius,
                        
PSYS_SRC_BURST_SPEED_MIN,minSpeed,
                        
PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
                        
PSYS_SRC_TARGET_KEY,target,
                        
PSYS_SRC_INNERANGLE,innerAngle
                        
PSYS_SRC_OUTERANGLE,outerAngle,
                        
PSYS_SRC_OMEGAomega,
                        
PSYS_SRC_MAX_AGElife,
                        
PSYS_SRC_TEXTUREtexture,
                        
PSYS_PART_START_ALPHAstartAlpha,
                        
PSYS_PART_END_ALPHAendAlpha
                            
]);
 
}
StartSpray ()
{
}
StopSpray()
{
    
llParticleSystem([]);   
}
 
integer channel 13;
default
{
    
state_entry()
    {
         
StartSteam();
         
integer handle  llListenchannel""NULL_KEY"" );
    }
    
listen(integer channelstring namekey idstring message)
    {
 
         if (
== llSubStringIndex(message"on"))
        {
            
StartSteam();
 
        }
        else if (
== llSubStringIndex(message"off"))
        {
            
StopSpray();
        }
    }

Et j'ai essayé de jouer sur les réglage pour augmenter la base du fumigène (je souhaiterais que la fumée soit plus étalée au niveau du sol).
Mais, arf, j'ni arrive pas.
Tu peux me dennoer un coup de main stp ???

Merci.
tu peux essayer celui-là, d'origine corse je suis un spécialiste des explosifs ... hahaha

Code PHP:

vector color;
 
SprayParticles(vector xcolor) {   
    
llParticleSystem([ 
      
PSYS_PART_FLAGS 0
    
PSYS_PART_INTERP_COLOR_MASK
    
PSYS_PART_INTERP_SCALE_MASK
    
PSYS_PART_TARGET_POS_MASK
    
PSYS_PART_EMISSIVE_MASK
    
PSYS_SRC_TARGET_KEY llGetKey()
    , 
PSYS_SRC_PATTERN
    
PSYS_SRC_PATTERN_EXPLODE
    
,PSYS_SRC_TEXTURE"d1df5743-efa9-8fab-0d2f-8c206931299b" 
    
,PSYS_SRC_MAX_AGE,           0.0 
    
,PSYS_PART_MAX_AGE,          50.0
    
,PSYS_SRC_BURST_RATE,        0.02
    
,PSYS_SRC_BURST_PART_COUNT,  6   
    
,PSYS_SRC_BURST_RADIUS,      0.2 
    
,PSYS_SRC_BURST_SPEED_MIN,   0.9
    
,PSYS_SRC_BURST_SPEED_MAX,   1.8
    
,PSYS_SRC_ACCEL,             <0.0,0.0,0.0>
    ,
PSYS_PART_START_COLOR,      xcolor
    
,PSYS_PART_END_COLOR,        xcolor
    
,PSYS_PART_START_ALPHA,      0.5  
    
,PSYS_PART_END_ALPHA,        0.0 
    
,PSYS_PART_START_SCALE,      <10.010.010.0
    ,
PSYS_PART_END_SCALE,        <0,0,0.0>  
    ,
PSYS_SRC_ANGLE_BEGIN,       PI 
    
,PSYS_SRC_ANGLE_END,         PI 
    
,PSYS_SRC_OMEGA,             <0.0,5.0,5.0>  
    ]);
}
 
default
{
    
state_entry(){
        
llParticleSystem ([]);
        
llListen(20""llGetOwner(), "");
    }
 
    
listen(integer channelstring namekey idstring message){
        if (
message == "r") { color = <1.0,0.0,0.0>;SprayParticles(color);}
        if (
message == "v") { color = <0.0,1.0,0.0>;SprayParticles(color);}
        if (
message == "b") { color = <0.0,0.0,1.0>;SprayParticles(color);}
        if (
message == "j") { color = <1.0,1.0,0.0>;SprayParticles(color);}
        if (
message == "n") { color = <0.0,0.0,0.0>;SprayParticles(color);}
        
llSetTimerEvent(5);
    }
 
    
timer(){
        
llParticleSystem ([]);
    }
 
    
on_rez(integer param){
        
llResetScript();
    }
 
    
changed(integer mask){
        if(
mask CHANGED_OWNER){
            
llResetScript();
        }
    }

il se commande sur le canal 20 avec les ordres r,v,b,j,n

tu peux le transformer en version rezzable en modifiant la fin du script comme ça :

Code PHP:

default
{
    
touch_start(integer total_number){
            
color = <1.0,0.0,0.0>;//rouge
//            color = <0.0,1.0,0.0>;//vert
//            color = <0.0,0.0,1.0>;//bleu
//            color = <1.0,1.0,0.0>;//jaune
//            color = <0.0,0.0,0.0>;//noir
 
            
SprayParticles(smoke_texturecolor);
            
llSetTimerEvent(5);
    }
 
    
timer() {
        
llParticleSystem ([]);
    }
 
    
on_rez(integer param){
        
llResetScript();
    }
 
    
changed(integer mask){
        if(
mask CHANGED_OWNER){
            
llResetScript();
        }
    }

dans ce cas il te faut faire un fumigène pour chaque couleur, qui se déclenche par un touch.
Citation :
Publié par Sony.Whybrow
Merci de ton aide Bey,
Mais je pense qu'il doit y avoir un tit souci sur la 2eme parti de ton script, car j'ai un message d'erreur......
Ou alors je suis trop blonde.... oups...
oups petit oubli, j'avais remplacé la texture par son UUID pour te simplifier l'utilisation. Xanork t'a donné la rectification
Répondre

Connectés sur ce fil

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