llCreateLink ??

Répondre
Partager Rechercher
Bonjour,


je viens vous demander de l'aide sur un script que je ne parviens pas à finaliser.

Contexte :
un objet rezz plusieurs prims (nombre variable).
une de ces prims (celle destinée à être la root) établit la liste des uuid des autres prims avant de déclenche ce code (sensor + llDetectedKey) :

Code:
state Phase3
{
    state_entry()
    {
        // la list des nouveaux UUID a ete faite en phase2
        // demandons la permission de changer les liens
        llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
    }
    run_time_permissions(integer droits)
    {
        if (droits & PERMISSION_CHANGE_LINKS)    { // accord
            // declanchons les linkages
            for (i = 0; i<NbFilles; ++i)    {
                llCreateLink(llList2Key(lLiens, i), TRUE);
                llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
            }
        }
        else    { // refus, on insiste
            //
            if (Confirm)    llRemoveInventory(llGetScriptName()); // on refuse encore, on vire le script
            else {
                llSay(0, "Il est nécessaire de répondre OUI pour que les prims soient liées");
                Confirm = TRUE;
                llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS); // on redemande pour la 2eme et derniere fois
            }
        }
    }
}
la première liaison s'effectue bien (j'obtiens un objet constitué de 2 prims) mais les liaisons suivantes bloquent avec ce message sur le debug channel : Script trying to link but permissions or target are invalid!

Pourtant comme les prims sont issues d'un objet qui m'appartient, je suis l'Owner de tout ce petit monde. Les distances sont faibles.

Pourquoi cela ne marche t'il pas ??
Citation :
Publié par Francky Habercom
Bonjour,


je viens vous demander de l'aide sur un script que je ne parviens pas à finaliser.

Contexte :
un objet rezz plusieurs prims (nombre variable).
une de ces prims (celle destinée à être la root) établit la liste des uuid des autres prims avant de déclenche ce code (sensor + llDetectedKey) :

Code:
state Phase3
{
    state_entry()
    {
        // la list des nouveaux UUID a ete faite en phase2
        // demandons la permission de changer les liens
        llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
    }
    run_time_permissions(integer droits)
    {
        if (droits & PERMISSION_CHANGE_LINKS)    { // accord
            // declanchons les linkages
            for (i = 0; i<NbFilles; ++i)    {
                llCreateLink(llList2Key(lLiens, i), TRUE);
                llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
            }
        }
        else    { // refus, on insiste
            //
            if (Confirm)    llRemoveInventory(llGetScriptName()); // on refuse encore, on vire le script
            else {
                llSay(0, "Il est nécessaire de répondre OUI pour que les prims soient liées");
                Confirm = TRUE;
                llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS); // on redemande pour la 2eme et derniere fois
            }
        }
    }
}
la première liaison s'effectue bien (j'obtiens un objet constitué de 2 prims) mais les liaisons suivantes bloquent avec ce message sur le debug channel : Script trying to link but permissions or target are invalid!

Pourtant comme les prims sont issues d'un objet qui m'appartient, je suis l'Owner de tout ce petit monde. Les distances sont faibles.

Pourquoi cela ne marche t'il pas ??
Tu as fais bien compliqué...


Code PHP:

list lLiens;

default
{    
state_entry()
    {
        
lLiens = ["1fb39bba-e0e0-9816-2330-c1cfc9917c66","b6790abd-2dba-2c19-61f6-194032c572de","af00e639-4c9e-634f-5881-4ea6356c3d99"];
        
llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
    }
    
run_time_permissions(integer droits)
    {
        if (
droits PERMISSION_CHANGE_LINKS)    
        {    
            
integer i;
            for (
0i<; ++i)    {
                
llCreateLink(llList2Key(lLiensi), TRUE);}
        }
       
    }

les prims doivent être très proches...
llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
Citation :
Publié par Seb_01
Tu as fais bien compliqué...
A part retirer la gestion du bouton non du llRequestPermissions, et passer d'un nombre variable de prim à un nombre fixe, tu n'as rien changé donc ça marche pas plus.

Ahh si tu as retirer la ligne llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS); de la boucle for. Mais j'avais tester comme ça aussi, j'aurais du le dire désolé.

donc le problème reste entier


Francky
Citation :
Publié par Francky Habercom
A part retirer la gestion du bouton non du llRequestPermissions, et passer d'un nombre variable de prim à un nombre fixe, tu n'as rien changé donc ça marche pas plus.

Ahh si tu as retirer la ligne llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS); de la boucle for. Mais j'avais tester comme ça aussi, j'aurais du le dire désolé.

donc le problème reste entier


Francky
1. Ce programme (le mien) fonctionne parfaitement

pour le tester c'est simple tu crée

4 objets 4 boxes par exemples

dans 3 d'entre elles tu crée un script pour te donner la clef

Code PHP:

default
{
    
touch_start(integer total_number)
    {
        
llOwnerSay(" My key is "+ (string) llGetKey());
    }

tu récuperes ces 3 clefs
et tu les mets dans la liste lLiens du script ROOT que j'ai réecris

tu lances le script les 3 objets sont liés sans problème

J'ai indiqué qu'ils doivent être proches...

2. Ton script est une partie de script mon ami, je ne sais pas comment tu gères ta liste de keys...

avant de dire que je t'apporte rien .... (ce qui récompense le temps que j'ai investi pour t'apporter un brin de solution ...) tu peux au moins le tester non?
Répondre

Connectés sur ce fil

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