Script pour transférer un texture d'un objet à un autre

Répondre
Partager Rechercher
Bonjour,

Voilà j'ai pas mal épluché le forum et j'ai compris que pour ce que je veux faire, il me faut utiliser llGiveInventory mais j'ai un souci de mise en place.

J'aimerais lorsque je touche un objet, que la texture contenue par ce dernier, soit transférée à un autre objet.

Je n'arrive pas à comprendre l'utilisation de llDetectedKey. J'ai cru comprendre que chaque objet possède une clé. Est-ce qu'il faut que je l'utilise pour transférer la texture à l'autre objet ?

Merci de votre aide
Citation :
Publié par Stef_Leflou
Bonjour,

Voilà j'ai pas mal épluché le forum et j'ai compris que pour ce que je veux faire, il me faut utiliser llGiveInventory mais j'ai un souci de mise en place.

J'aimerais lorsque je touche un objet, que la texture contenue par ce dernier, soit transférée à un autre objet.

Je n'arrive pas à comprendre l'utilisation de llDetectedKey. J'ai cru comprendre que chaque objet possède une clé. Est-ce qu'il faut que je l'utilise pour transférer la texture à l'autre objet ?

Merci de votre aide
La clef que tu dois utiliser est celle de l'objet receveur.
Pour connaitre la clef de l'objet receveur tu lui met ce script : llGetKey();

llDetectedKey() sert plutôt pour une interaction avec l'objet en question (touche, collision, ...) à moins que l'objet a qui tu veux donner la texture soit inconnu au départ et soit à détecter tu n'en as pas besoin pour transférer ta texture.

Aussi à savoir ce que tu veux faire, tu n'est pas obligé de mettre une texture dans un objet pour l'afficher sur ce même objet. Exemple tu pourrais envoyer la clef UUID de la texture à l'objet Receveur via un channel ou un script l'afficherais.
Merci de la réponse.

En fait, L'objet qui reçoit la ou les textures est toujours le même. Ce que j'aimerais c'est que lorsque je clique sur un objet, la texture qui est à l'intérieur soit automatiquement affiché sur l'autre objet.

J'ai du mal à comprendre DetectedKey. Que signifie l'argument qui se trouve après ? Le 0 indique que c'est l'avatar ?
Citation :
Publié par Stef_Leflou
Merci de la réponse.

En fait, L'objet qui reçoit la ou les textures est toujours le même. Ce que j'aimerais c'est que lorsque je clique sur un objet, la texture qui est à l'intérieur soit automatiquement affiché sur l'autre objet.

J'ai du mal à comprendre DetectedKey. Que signifie l'argument qui se trouve après ? Le 0 indique que c'est l'avatar ?
Tout d'abord, il te faut UUID de la texture que tu veux envoyer avec la fonction llGetKey();
Pour envoyer la "texture" utilise la clé de la texture. En fait, tu enverras seulement la clé de la texture à l'autre objet par l'intermédiaire de la fonction llSay(Canal, UUID)
Sur l'autre objet, utilise la fonction llListen pour définir le canal a écouter et l'event listen et llSetTexture pour afficher la texture.

En ce qui concerne llDetectedKey, il s'agis d'une fonction pour obtenir la clé de l'avatar qui a par exemple fait un touch sur l'objet.
Le 0 est en fait le premier avatar détecté.
Citation :
Publié par Stef_Leflou
Merci de la réponse.

En fait, L'objet qui reçoit la ou les textures est toujours le même. Ce que j'aimerais c'est que lorsque je clique sur un objet, la texture qui est à l'intérieur soit automatiquement affiché sur l'autre objet.

J'ai du mal à comprendre DetectedKey. Que signifie l'argument qui se trouve après ? Le 0 indique que c'est l'avatar ?
Si tu envoie la texture dans l'inventaire de l'objet elle ne vas pas s'afficher automatiquement pour autant, tu n'auras juste fait qu'ajouter une copie de la texture dans l'objet receveur. Après libre a toi de le faire en mettant un script dans l'objet receveur qui détectant que l'inventaire a changer vas afficher sur une face ou plusieurs de ton objet la texture qui viens de lui être ajouté mais il existe d'autres façon (qui évite la réplication de ta texture) :
- Si les Objets ne sont pas trop éloignes, les relier puis envoyer via un message linké a la prim receveur l'UUID de la texture quand on touche la prim principale. (C'est ce qui je pense est mieux)
- Si les Objets sont trop éloignés pour être reliés, envoyer sur un channel l'UUID de la texture, ton objet écoutant ce channel affiche la texture ayant l'UUID envoyé.

le 0 oui c'est l'avatar ou l'objet qui est détecté (qui touche ton serveur de texture par exemple). Enfin le 0 peux se transformer en 1, 2, 3 etc..) dans le cas ou on détecte plusieurs avatars par exemple dans un llSensor : llDetectedKey(0) seras la clef du premier avatar ou objet trouvé, llDetectedKey(1) seras la clef du deuxieme avatar ou objet trouvé etc...

Edit: oui tu n'en as pas besoin pour faire ce que tu veux sauf si tu veux que seul toi puisse changer la texture de l'autre objet en touchant ton "serveur"
Répondre

Connectés sur ce fil

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