[Aide] Liaison objet scripter partie 2

Répondre
Partager Rechercher
Citation :
Publié par Tha Doggfather
sauf que les termes c'est pas trop sa ...
genre Root , enfants , mere etc ...
Je test ton script cet aprem et jte dit si c'est opérationnel .
Le script collégial..


Root Child:

Quand il y a 1 seule prim elle est root d'office.

Quand tu assembles des prims ensemble la prim référence est appelée Root et les autres enfants ( child).

Lors de l'assemblage la root a ses lignes de contours jaunes et les childs beues.


La prim ROOT est LA réference ABSOLUE. Quand tu édites un objet TOUTES les infos sont celles de la ROOT exemple position.

Les instructions LSL prennent comme référence la ROOT ( sauf spécifiques).

Position/rotations sont l'exemple le plus démonstratif.

Les positions des childs sont RELATIVES... c'est à dire par rapport à la ROOT.

Exemple simple:

llSetPos( < 100.0,100.0,100.0 >; positionne la root à ces coordonnées ( donc TOUT l'objet.

Si on veut bouger un child de 10 en Z alors on devra penser à faire
llGetPos()( Position de la Root) + < 0.0, 0.0, 10.0 > (deplacement de la child) mais comme il doit s'appuyer sur la rotation de la ROOT prim.... alors la formule magique devient:

llGetPos() + < 0.0, 0.0, 10.0 > * llGetRot();

Ce qui pourrait se traduire par je bouge en de 10 mètres en Z prenant comme référence la position et la rotation actuelle de la ROOT.

Pourquoi mettre cette rotation??

Simple comme bonjour...

Prenons 2 cubes l'un au dessus de l'autre la root dessous le child dessus.

Si je bouge verticalement, en hauteur ( Z) pas de problème....

Si mon objet est incliné de 45 degré alors là j'ai besoin de décider si le child doit avoir un axe de mouvement verticale pur ou rester dans l'axe de 45 degrés...

Pas simple je sais... cela rebute souvent les scripteurs mais bon...
Wink
Merci



Edit:

Super nikel .... merci beaucoup.


Heu... je veu pas abusé mais, c'est possible d'avoir le meme script mais avec une action suplémentaire de celle de la transparence (0% et 100%).
Juste un play sound en meme temps que chaque action si possible MERCI !!!

[Quand la prims apparait/ou/disparait un son soit jouer]
pupetter est un script d'animation par succession de séquence de position.

mettons que ton masque soit fait en 3 prim.
Tu mets le script puppeter dans le prim root.
Ensuite tu te mets en mode enregistrement lorsque ton masque est fermé.
tu déplace ton prim du bas et tu enregistres
tu déplace ton prim du milieu et tu enregistres.
Puppeter aura enregistré les poistion des prims.
Ensuite quand tu toucheras ton prim ou par commande écrite l'animation va se lancer.
Phase 1, 2, 3.
Plus y a de phase et plus c'set fluide biensure, mais plus c'set long ^^


Voila et pas besoin de savoir faire une seule ligne de script pour ca
Thumbs up
Mercî pour ta precision, j'avais comprit tout cela ...


L'important est que tout fonctionne a merveille .... il ne me mank plus qu'a trouver une solution pour mettre un sound quand la prims apparait ou disparait .


Merci de votre aide ...


PS: j'aimerais beaucoup apprendre a scripter , mais les manuels ne sont pas tres explicite et les cours de scriptage IG ne sont pas dans mes horraires ...
Question
--Est ce que sa serait bon pour jouer un son a chaque action ???

Code PHP:

integer iCanal 101;
default
{
    
state_entry()
    {
        
llListeniCanal""llGetOwner(), "" );
    }
    
listeninteger iChannelstring sNamekey kIdstring sMess )
    {
        if( ~
llListFindList( [ "off""on" ], [ llToLowersMess ) ] )) 
        {
            
float   fDelay 0.2// set delay here
 
            
integer iNbr llGetNumberOfPrims();
            
integer i;
 
            if (
sMess == "on"
            {
                for( 
1<= iNbri++ )
                {
                    
llSetLinkAlphaiTRUEALL_SIDES );
                    
llPlaySound(llGetInventoryName(INVENTORY_SOUND,0),1);
                    
llSleepfDelay );
                }
            }
            else
            {
            for( 
iNbr>= 0i-- )
                {
                    
llSetLinkAlphaiFALSEALL_SIDES );
                    
llPlaySound(llGetInventoryName(INVENTORY_SOUND,0),1);
                    
llSleepfDelay );
                }            
 
            }
 
        }
    }

Code PHP:

string      sound_on  ="23835d1d-b7af-c75d-75ca-2b81c902625b"// nom du son ou UUID
string      sound_off ="3a7a9684-d01a-53d1-291b-afc8a7557e6a";
string      sound_end ="ebac5ad4-bf52-a72c-ce40-e665507fbbb0"

integer iCanal 101;

Init()
{
    
// on charge 2 sons par anticipation...
    
llPreloadSound(sound_on); 
    
llPreloadSound(sound_off);
    
    
llListeniCanal""llGetOwner(), "" );
}


default
{
    
on_rezinteger start_parameter)
    {
        
Init();
    }
    
state_entry()
    {
        
Init(); // plus utile quand le script est opérationnel //
    
}
    
listeninteger iChannelstring sNamekey kIdstring sMess )
    {
        if( ~
llListFindList( [ "off""on" ], [ llToLowersMess ) ] )) 
        {
            
float   fDelay 0.2// set delay here
 
            
integer iNbr llGetNumberOfPrims();
            
integer i;
 
            if (
sMess == "on"
            {
                
llPlaySound(sound_on1.0); // play sound on
                
for( 1<= iNbri++ )
                {
                    
llSetLinkAlphaiTRUEALL_SIDES );
                    
llSleepfDelay );
                }
                
llStopSound(); // stop sound on
            
}
            else
            {
                
llPlaySound(sound_off1.0); // play sound off
                
for( iNbr>= 0i-- )
                {
                    
llSetLinkAlphaiFALSEALL_SIDES );
                    
llSleepfDelay );
                }  
                
llStopSound(); // stop sound  off     
                
llPlaySound(sound_end1.0); // play sound  end                   
            
}
 
        }
    }

Le son est préchargé se qui devrait (?) garantir qu'il sera jouer de suite...(lag)
Le llStopSound(); stoppe le son au dernier volet ouvert ou fermé.. ce qui synchronise son et action
llPlaySound(sound_end, 1.0); n'est pas une obligation...juste te montrer que tu peux mettre ici un Clac de fermeture

Les sons que j'ai mis sont nuls ... juste pour l'exemple lol

Si ton delai avait été plus long, un son très court = delai aurait pu être joué dans le boucle style: "clic" "clic" "clic" "clic" "clic" "clic" "clic"
et en fin de boucle "Clac"
Citation :
Publié par Tha Doggfather
Encore merci .


Edit : mais sa ne va pas car le son n'est jouer que une seul foi. (au lieu de 22foi (nombres de prims))
Alors Juste savoir que la durée de ton son doit être égale à ton delai...
Alors c'est parfait ton script doit fonctionner pile poil

Avantage de mettre le son dans la boucle:

Un bon synchronisme action/son à condition d'avoir preloaded celui ci...

Inconvénient:

Si le delai est plus long pas trop de problème, si le delai est plus court le son sera coupé.
Code PHP:

string      sound_on  ="c4f9fbb2-cb08-8ed2-2bf3-599b5b0e80e5"// nom du son ou UUID
string      sound_off ="7a986e87-2ec0-4988-d717-fcc962115fe5";

integer iCanal 101;

Init()
{
    
llPreloadSound(sound_on);
    
llPreloadSound(sound_off);
    
llListeniCanal""llGetOwner(), "" );
}


default
{
    
on_rezinteger start_parameter)
    {
        
Init();
    }
    
state_entry()
    {
        
Init(); // plus utile quand le script est opérationnel //
    
}
    
listeninteger iChannelstring sNamekey kIdstring sMess )
    {
        if( ~
llListFindList( [ "off""on" ], [ llToLowersMess ) ] )) 
        {
            
float   fDelay 0.2// set delay here
 
            
integer iNbr llGetNumberOfPrims();
            
integer i;
 
            if (
sMess == "on"
            {
                for( 
1<= iNbri++ )
                {
                    
llPlaySound(sound_on1.0); // play sound                     
                    
llSetLinkAlphaiTRUEALL_SIDES );
                    
llSleepfDelay );
                }
            }
            else
            {

                for( 
iNbr>= 0i-- )
                {
                    
llPlaySound(sound_off1.0); // play sound
                    
llSetLinkAlphaiFALSEALL_SIDES );
                    
llSleepfDelay );
                }  
            }
        }
    }

Essaye ce script ( les sons sont faibles sorry)


...et après tu mets tes sons
Répondre

Connectés sur ce fil

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