Detection du Sit

Répondre
Partager Rechercher
Un nouveau casse tête pour moi,
Je voudrais créer un "swing" lorsque l'avatar s'assoit sur le prim lié au rot portant le script...

Code PHP:

integer counter;
integer backforth;
integer swing;
rotation startrot;

// SETTINGS //
float update_rate 0.01;
integer speed 2;
integer distance_of_motion 18;
// SETTINGS //

default
{
    
state_entry()
    {      
        
swing FALSE;
        
backforth FALSE;
        
counter 0;
    }
    
touch_start(integer total_num)
    {
        if(
swing)
        {
            
swing FALSE;
        }
        else
        {
            
swing TRUE;
            
llSetTimerEvent(update_rate);
        }
    }
    
timer()
    {
        
rotation rot;   
        if(
counter == && swing == FALSE)
        {
            
llSetTimerEvent(0.0);
        }    
        if(
backforth == FALSE)
        {
            
counter++;
            
rot llEuler2Rot(<speed,0.0,0.0>*DEG_TO_RAD);
            
llSetLinkPrimitiveParamsFast(llGetLinkNumber(),[PRIM_ROTATION,(rot=ZERO_ROTATION/rot)*llGetLocalRot()]);
            if(
counter == distance_of_motion)
            {
                
backforth TRUE;
            }
        }
        else if(
backforth == TRUE)
        {
            
counter--;
            
rot llEuler2Rot(<-speed,0.0,0.0>*DEG_TO_RAD);
            
llSetLinkPrimitiveParamsFast(llGetLinkNumber(),[PRIM_ROTATION,(rot=ZERO_ROTATION/rot)*llGetLocalRot()]);
            if(
counter == -distance_of_motion)
            {
                
backforth FALSE;
            }
        }
    }

Z'avez une idée ? J'ai essayé onsittarget mais franchement j'y comprends pas grand chose, pourtant j'aime la logique.

Dernière modification par **Nyxia** ; 07/04/2015 à 23h45.
Bon, j'ai trouvé un semblant de quelque chose en utilisant la fonction "changed" :

Code PHP:

changed(integer total_num)
    {
        if(
swing)
        {   
key av llAvatarOnSitTarget();
           if (
av!=NULL_KEY// l'avatar s'assoit
            
swing FALSE
Mais je cale après :

Code PHP:

  else
        {   
            
swing TRUE;
            
llSetTimerEvent(update_rate); 
Car, la balançoire ne se stop naturellement pas une fois levé... J'avais pensé utiliser la fonction Resetscript, mais le problème c'est qu'il annule ma première fonction False... Je sais que je ne suis pas très douée mais bon c'est un début ^^
ah ben quelle c..., en fait il suffit d'enlever un "IF" de trop et le problème est résolu ^^

Code PHP:

changed(integer total_num)
    {
        if(
swing)
        {   
key av llAvatarOnSitTarget();
           (
av!=NULL_KEY// l'avatar s'assoit
            
swing FALSE
enfin bon... C'est juste un début... Le problème avec Changed, c'est qu'à chaque changement d'utilisation... ça se met en marche... delink, agrandir, ... donc une fois sortit et fonctionnel = ne plus rien modifier :'(

Vous auriez une autre solution svp ?
Tu trouvera des codes pour la gestions des sits dans un threads comme ici.
https://forums.jeuxonline.info/showthread.php?t=1285215

pour ton cas tu oublie de tester le mode de changement. dans l’événement Changed
test si le changement a lieu pour une modification de prims
Code PHP:

 if (change CHANGED_LINK
Voici un script "standard" pour le sit .
Code PHP:


vector SitTarget 
= <-0.761710.63175, -0.67607>;
rotation SitRot= <-0.092300.701060.701060.09230> ;

default
{
    
state_entry() 
    {
        
llSitTarget(SitTarget  ,SitRot );
    }

    
    
changed(integer change
    { 
        if (
change CHANGED_LINK
        {
            
key avatar llAvatarOnSitTarget() ; 
            if (
avatar != NULL_KEY
            { 
                
integer perm llGetPermissions();
                if(!(
perm PERMISSION_TRIGGER_ANIMATION))
                {                
                    
llRequestPermissions(avatarPERMISSION_TRIGGER_ANIMATION);
                }
            }

        }
    }
    
run_time_permissions(integer perm)
    {
        if (
perm PERMISSION_TRIGGER_ANIMATION)
        {
            
string animation llGetInventoryName(INVENTORY_ANIMATION,0);
                
llStopAnimation("sit");
                
llStartAnimation(animation);
        }
    }

Citation :
Publié par **Nyxia**
??? J'ai essayé onsittarget mais franchement j'y comprends pas grand chose, pourtant j'aime la logique.
Rassure toi la gestion des sits n'est pas logique. ^^
__________________
Paris 1900
http://www.paris1900.net
Répondre

Connectés sur ce fil

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