generation de script

Répondre
Partager Rechercher
Le plus simple est avec llGiveInventory(N°duPrimDansLeLinkset, NomDuScript).
Je me suis écrit ce petit script, qui donne tous les scripts dans le root sauf lui-même à tout le linkset et efface tout dans le root.
Code:
default{
    state_entry(){
        integer nbscript = llGetInventoryNumber(INVENTORY_SCRIPT);
        integer i;
        integer j;
        list scripts;
            for (i=0;i<nbscript;i++){
                string script = llGetInventoryName(INVENTORY_SCRIPT,i);
                if (script != llGetScriptName()) scripts += [script];
            }
        nbscript--;
        integer nb = llGetNumberOfPrims()+1;
        
        for (i=2;i<nb;i++){
            key keyprim = llGetLinkKey(i);
                for (j=0;j<nbscript;j++)
                    llGiveInventory(keyprim,llList2String(scripts,j));
        }
        for (j=0;j<nbscript;j++)
                    llRemoveInventory(llList2String(scripts,j));
        llOwnerSay("end give scripts");
        llRemoveInventory(llGetScriptName());
    }
}
Mais attention: les scripts ainsi distribués sont dans l'état no-running. Pour les faire tourner soit:
- Prendre l'objet dans son inventaire et le ressortir (c'est comme ça pour le puppeteer)
- Recompiler tous les scripts avec Outils Recompiler les scripts dans la sélection

Attention à la recompilation: l'expérience sur de gros linkset (chevelure de plusieurs dizaines voire quelques centaines de prim) est longue (15 à 30 mn) et rate parfois un script par-ci par-là.

L'autre solution est d'utiliser llRemoteLoadScriptPin, qui permet de copier le script et de le lancer.
Mais elle a un délai de 3 secondes et est donc inutilisable sur les gros linkset (sauf à revenir dans plusieurs heures), et nécessite une affectation préalable d'un numéro de pin au prim récepteur avec llSetRemoteScriptAccessPin, qui ne peut se faire que par un script dans le prim récepteur (on revient donc à la premiére solution).

En résumé sur de gros linkset où on veut mettre un ou plusieurs script par prim on ne sait pas le faire sans intervention humaine. Et pour le faire automatiquement, il faut que le linkset soit préparé à la conception pour ça.

Edit: De tout manière, avec la nouvelle fonctionllSetLinkPrimitiveParamsFast qui permet de faire à peu près tout sans délai depuis le root ce n'est plus utile de continuer à faire ces usines à lag. Le puppeteer mériterait d'être re-écrit. J'avais envie de m'y atteler à un moment.
Citation :
Publié par Jalicia
Edit: De tout manière, avec la nouvelle fonctionllSetLinkPrimitiveParamsFast qui permet de faire à peu près tout sans délai depuis le root ce n'est plus utile de continuer à faire ces usines à lag. Le puppeteer mériterait d'être re-écrit. J'avais envie de m'y atteler à un moment.
Tu vas te heurter aux problèmes de stockage (limite de mémoire) mais ca me semble être un bon défi !
une franco a fait un outil très similaire au pupetter ça s'appelle "simple change link"
a cette adresse:
http://slurl.com/secondlife/FRANCE3D...alle/159/40/23

il fonctionne avec un seul script et sauve toutes les coordonnée dans une note card, ce qui fait qu'on peux reset les script ou copier avec un shift les object sans tout perdre (ce que puppeter ne sais pas faire)
En ce qui concerne la copie de scripts actifs noter cette intéressante discussion que nous avons eue il y a quelques temps :

https://forums.jeuxonline.info/showt...eloadscriptpin

@Jalicia
Les scripts d'animation (et autres) de scripts liés existent déjà et svorvas en donne un des meilleurs exemples. Comme le souligne Ahuri on se confronte en fait rapidement à des limites de mémoire (surtout si on change les textures) ce qui oblige quand même à multiplier les scripts mais on reste très en-deçà de ce qu'on faisait auparavant.
Citation :
Publié par cerise laville
ah ok c est pas automatique
Voilà une fonctionnalité qu'on adorerait ! Il n'y a aucune solution interne automatique. On peut créer un système de sauvegarde par scripts mais ça devient vite lourd.

En général on passe par un serveur externe si on veut bénéficier d'une vraie base de données, mais on se heurte alors à d'autres problèmes...
Répondre

Connectés sur ce fil

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