Hud pour mesh

Répondre
Partager Rechercher
Comme tes boutons sont uniformément répartis On peut faire un truc propre.

Le script dans ton HUD :

Code PHP:

// 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_colonnes; ++i) {
        
float f_ref v_coin.f_ecart_hor;
        
// Test colonne
        
if(v.f_ref && v.f_ref f_largeur) {
            
integer j;
            
// Test ligne
            
for(; i_lignes; ++j) {
                
f_ref v_coin.f_ecart_ver;
                if(
v.f_ref && v.f_ref f_hauteur)
                    return 
i_colonnes;
            }
        }
    }
    return -
1;
}

default
{

    
touch_start(integer total_number)
    {
        
integer iBouton indexBouton();
        if(~
iBoutonllWhisper(iCanal, (string)iBouton);
    }

Et celui dans le récepteur :

Code PHP:

// Script dans le vêtement

// Canal
integer iCanal = -85582451;

// Couleurs à renseigner
list COULEURS = [
    <
100>,    // Premier bouton en bas à gauche (première ligne)
    
<010>,    // Deuxième bouton
    
<001>,
    <
110>,
    <
101>,
    <
011>,    // Premier bouton deuxième ligne
    
<100>,
    <
010>,
    <
001>,
    <
110>,
    <
101>,
    <
011>,
    <
100>,
    <
010>,
    <
001>,
    <
110>,
    <
101>,
    <
011>,
    <
100>,
    <
010>,
    <
001>,
    <
110>,
    <
101>,
    <
011>,
    <
100>,
    <
010>,
    <
001>,
    <
110>,
    <
101>,
    <
011>
        ];

default
{
    
state_entry() {
        
llListen(iCanal""NULL_KEY"");
    }

    
listen(integer iCanalstring namekey idstring 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.
Citation :
Publié par marinea
Super!!! )))
donc pour renseigner les couleurs j’écris ça par exemple pour du jaune :
<225, 234, 130>, les chiffres RVB c'est ça ?
Non la plage c'est entre 0 et 1, au lieu d'entre 0 et 255, donc faut faire une proportion.

Par exemple pour 225 -> 225 / 255 = .88

Dernière modification par bestmomo ; 18/06/2014 à 23h24.
Une version optimisée de ton script du HUD :

Code PHP:

// 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 bouton
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;

// Variables
float f_xmax;
float f_ymax;

// Détermine le bouton
integer indexBouton() {
    
vector v llDetectedTouchST(0) - v_coin;
    if(
v..0 && v..0 && v.f_xmax && v.f_ymax) {
        
integer i_x = (integer)(v.f_ecart_hor);
        if(
v.- (float)i_x f_ecart_hor f_largeur) {
            
integer i_y = (integer)(v.f_ecart_ver);
            if(
v.- (float)i_y f_ecart_ver f_hauteur)
                return 
i_x i_y i_colonnes;
        }
    }
    return -
1;
}

default
{
    
state_entry() {
        
f_xmax = (float)i_colonnes f_ecart_hor;
        
f_ymax = (float)i_lignes f_ecart_ver;
    }

    
touch_start(integer total_number) {
        
integer iBouton indexBouton();
        if(~
iBouton) {
            
llWhisper(iCanal, (string)iBouton);
        }
    }

Répondre

Connectés sur ce fil

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