|
Comme tes boutons sont uniformément répartis On peut faire un truc propre.
Le script dans ton HUD :
// Script de commande dans le HUD
// Canal integer iCanal = -85582451; // Coin inférieur vector v_coin = <.156, .0903, .0>; // Largeur bouton float f_largeur = .1; // Hauteur boutons float f_hauteur = .09; // Ecart horizontal entre boutons float f_ecart_hor = .147; // Ecart vertical entre boutons float f_ecart_ver = .13; // Nombre de colonnes integer i_colonnes = 5; // Nombre de lignes integer i_lignes = 6;
// Détermine le bouton integer indexBouton() { vector v = llDetectedTouchST(0); integer i; for(; i < i_colonnes; ++i) { float f_ref = v_coin.x + i * f_ecart_hor; // Test colonne if(v.x > f_ref && v.x < f_ref + f_largeur) { integer j; // Test ligne for(; j < i_lignes; ++j) { f_ref = v_coin.y + j * f_ecart_ver; if(v.y > f_ref && v.y < f_ref + f_hauteur) return i + j * i_colonnes; } } } return -1; }
default {
touch_start(integer total_number) { integer iBouton = indexBouton(); if(~iBouton) llWhisper(iCanal, (string)iBouton); } }
Et celui dans le récepteur :
// Script dans le vêtement
// Canal integer iCanal = -85582451;
// Couleurs à renseigner list COULEURS = [ <1, 0, 0>, // Premier bouton en bas à gauche (première ligne) <0, 1, 0>, // Deuxième bouton <0, 0, 1>, <1, 1, 0>, <1, 0, 1>, <0, 1, 1>, // Premier bouton deuxième ligne <1, 0, 0>, <0, 1, 0>, <0, 0, 1>, <1, 1, 0>, <1, 0, 1>, <0, 1, 1>, <1, 0, 0>, <0, 1, 0>, <0, 0, 1>, <1, 1, 0>, <1, 0, 1>, <0, 1, 1>, <1, 0, 0>, <0, 1, 0>, <0, 0, 1>, <1, 1, 0>, <1, 0, 1>, <0, 1, 1>, <1, 0, 0>, <0, 1, 0>, <0, 0, 1>, <1, 1, 0>, <1, 0, 1>, <0, 1, 1> ];
default { state_entry() { llListen(iCanal, "", NULL_KEY, ""); }
listen(integer iCanal, string name, key id, string msg) { if (llGetOwner() == llGetOwnerKey(id)) { llSetColor(llList2Vector(COULEURS, (integer)msg), ALL_SIDES); } } }
Évidemment les couleurs sont à renseigner, j'ai mis n'importe quoi.
Tu peux changer le canal mais il faut mettre le même dans les deux scripts.
On pourrait mettre les valeurs des couleurs dans le HUD pour qu'il les envoie, le résultat serait identique, mais là on a juste à envoyer l'index de la couleur choisie.
Dernière modification par bestmomo ; 19/06/2014 à 00h36.
|