Je viens de tester et ça fonctionne pour moi, j'ai changé le script pour que tu puisses renseigner les noms des primitive plutôt que leur index :
// Script de commande dans le HUD
// Canal
integer iCanal = 0;
// Liste des boutons
list lBoutons1 = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
];
list lBoutons2 = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
];
list lBoutons3 = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
];
list lBoutons4 = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
];
list lBoutons5 = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
];
list lBoutons6 = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
];
list lBoutons7 = [
"0",
"1",
"2",
"3"
];
list lBoutons8 = [
"0",
"1",
"2",
"3"
];
// Textures
list lTextures1 = [
"1e5b3d96-61a3-b3a2-XXXX-3c24a0bd6ba5",
"7baf93b1-0635-bd12-XXXX-c95da1b20439",
"b43728c3-7bba-91e3-XXXX-abff206af5b3",
"c67fbf0d-77bd-2d7d-XXXX-dc044c7fa7a2",
"0f73c222-ca6d-802e-XXXX-10e755eed4c1",
"d9d1c68c-725e-9165-XXXX-0af56cb29962",
"7666b53b-b52b-cdf6-XXXX-46673716e82a",
"693e197d-1740-724f-XXXX-0c294d895ea3",
"e34395fd-2661-1907-XXXX-c60a80e86a94",
"d81287d4-7be5-86a5-XXXX-68b4bea821bf",
"3a3c4d83-b418-cb32-XXXX-1354dfbd97a3",
"b3f5ccc6-9404-15dd-XXXX-57f3ba2b2ffd",
"72a04292-6edf-3924-XXXX-a5778bfb6220",
"d3399219-ee8e-8bfe-XXXX-5f2c9e845821",
"cd7a090b-3a24-7085-XXXX-58cd95a6e139",
"f0a9ec09-19d0-0da0-XXXX-fa0c49a8da05"
];
list lTextures2 = [
"1e5b3d96-61a3-b3a2-XXXX-3c24a0bd6ba5",
"7baf93b1-0635-bd12-XXXX-c95da1b20439",
"b43728c3-7bba-91e3-XXXX-abff206af5b3",
"c67fbf0d-77bd-2d7d-XXXX-dc044c7fa7a2",
"0f73c222-ca6d-802e-XXXX-10e755eed4c1",
"d9d1c68c-725e-9165-XXXX-0af56cb29962",
"7666b53b-b52b-cdf6-XXXX-46673716e82a",
"693e197d-1740-724f-XXXX-0c294d895ea3",
"e34395fd-2661-1907-XXXX-c60a80e86a94",
"d81287d4-7be5-86a5-XXXX-68b4bea821bf",
"3a3c4d83-b418-cb32-XXXX-1354dfbd97a3",
"b3f5ccc6-9404-15dd-XXXX-57f3ba2b2ffd",
"72a04292-6edf-3924-XXXX-a5778bfb6220",
"d3399219-ee8e-8bfe-XXXX-5f2c9e845821",
"cd7a090b-3a24-7085-XXXX-58cd95a6e139",
"f0a9ec09-19d0-0da0-XXXX-fa0c49a8da05"
];
list lTextures3 = [
"1e5b3d96-61a3-b3a2-XXXX-3c24a0bd6ba5",
"7baf93b1-0635-bd12-XXXX-c95da1b20439",
"b43728c3-7bba-91e3-XXXX-abff206af5b3",
"c67fbf0d-77bd-2d7d-XXXX-dc044c7fa7a2",
"0f73c222-ca6d-802e-XXXX-10e755eed4c1",
"d9d1c68c-725e-9165-XXXX-0af56cb29962",
"7666b53b-b52b-cdf6-XXXX-46673716e82a",
"693e197d-1740-724f-XXXX-0c294d895ea3",
"e34395fd-2661-1907-XXXX-c60a80e86a94",
"d81287d4-7be5-86a5-XXXX-68b4bea821bf",
"3a3c4d83-b418-cb32-XXXX-1354dfbd97a3",
"b3f5ccc6-9404-15dd-XXXX-57f3ba2b2ffd",
"72a04292-6edf-3924-XXXX-a5778bfb6220",
"d3399219-ee8e-8bfe-XXXX-5f2c9e845821",
"cd7a090b-3a24-7085-XXXX-58cd95a6e139",
"f0a9ec09-19d0-0da0-XXXX-fa0c49a8da05"
];
list lTextures4 = [
"1e5b3d96-61a3-b3a2-XXXX-3c24a0bd6ba5",
"7baf93b1-0635-bd12-XXXX-c95da1b20439",
"b43728c3-7bba-91e3-XXXX-abff206af5b3",
"c67fbf0d-77bd-2d7d-XXXX-dc044c7fa7a2",
"0f73c222-ca6d-802e-XXXX-10e755eed4c1",
"d9d1c68c-725e-9165-XXXX-0af56cb29962",
"7666b53b-b52b-cdf6-XXXX-46673716e82a",
"693e197d-1740-724f-XXXX-0c294d895ea3",
"e34395fd-2661-1907-XXXX-c60a80e86a94",
"d81287d4-7be5-86a5-XXXX-68b4bea821bf",
"3a3c4d83-b418-cb32-XXXX-1354dfbd97a3",
"b3f5ccc6-9404-15dd-XXXX-57f3ba2b2ffd",
"72a04292-6edf-3924-XXXX-a5778bfb6220",
"d3399219-ee8e-8bfe-XXXX-5f2c9e845821",
"cd7a090b-3a24-7085-XXXX-58cd95a6e139",
"f0a9ec09-19d0-0da0-XXXX-fa0c49a8da05"
];
list lTextures5 = [
"1e5b3d96-61a3-b3a2-XXXX-3c24a0bd6ba5",
"7baf93b1-0635-bd12-XXXX-c95da1b20439",
"b43728c3-7bba-91e3-XXXX-abff206af5b3",
"c67fbf0d-77bd-2d7d-XXXX-dc044c7fa7a2",
"0f73c222-ca6d-802e-XXXX-10e755eed4c1",
"d9d1c68c-725e-9165-XXXX-0af56cb29962",
"7666b53b-b52b-cdf6-XXXX-46673716e82a",
"693e197d-1740-724f-XXXX-0c294d895ea3",
"e34395fd-2661-1907-XXXX-c60a80e86a94",
"d81287d4-7be5-86a5-XXXX-68b4bea821bf",
"3a3c4d83-b418-cb32-XXXX-1354dfbd97a3",
"b3f5ccc6-9404-15dd-XXXX-57f3ba2b2ffd",
"72a04292-6edf-3924-XXXX-a5778bfb6220",
"d3399219-ee8e-8bfe-XXXX-5f2c9e845821",
"cd7a090b-3a24-7085-XXXX-58cd95a6e139",
"f0a9ec09-19d0-0da0-XXXX-fa0c49a8da05"
];
list lTextures6 = [
"1e5b3d96-61a3-b3a2-XXXX-3c24a0bd6ba5",
"7baf93b1-0635-bd12-XXXX-c95da1b20439",
"b43728c3-7bba-91e3-XXXX-abff206af5b3",
"c67fbf0d-77bd-2d7d-XXXX-dc044c7fa7a2",
"0f73c222-ca6d-802e-XXXX-10e755eed4c1",
"d9d1c68c-725e-9165-XXXX-0af56cb29962",
"7666b53b-b52b-cdf6-XXXX-46673716e82a",
"693e197d-1740-724f-XXXX-0c294d895ea3",
"e34395fd-2661-1907-XXXX-c60a80e86a94",
"d81287d4-7be5-86a5-XXXX-68b4bea821bf",
"3a3c4d83-b418-cb32-XXXX-1354dfbd97a3",
"b3f5ccc6-9404-15dd-XXXX-57f3ba2b2ffd",
"72a04292-6edf-3924-XXXX-a5778bfb6220",
"d3399219-ee8e-8bfe-XXXX-5f2c9e845821",
"cd7a090b-3a24-7085-XXXX-58cd95a6e139",
"f0a9ec09-19d0-0da0-XXXX-fa0c49a8da05"
];
list lTextures7 = [
"1e5b3d96-61a3-b3a2-bb64-3c24a0bd6ba5",
"7baf93b1-0635-bd12-dfc1-c95da1b20439",
"b43728c3-7bba-91e3-46fd-abff206af5b3",
"c67fbf0d-77bd-2d7d-fed1-dc044c7fa7a2"
];
list lTextures8 = [
"1e5b3d96-61a3-b3a2-bb64-3c24a0bd6ba5",
"7baf93b1-0635-bd12-dfc1-c95da1b20439",
"b43728c3-7bba-91e3-46fd-abff206af5b3",
"c67fbf0d-77bd-2d7d-fed1-dc044c7fa7a2"
];
// Liste des numéros des primitives
// (autant de 0 que de primitives pour les panneaux)
list lPrims = [0,0,0,0,0,0,0,0];
// Noms des primitives des panneaux (noms quelconques distincts)
list lPrims_noms = ["0","1","2","3","4","5","6","7"];
// Détermine l'index de la case touchée
integer indexZone(integer x, integer y) {
vector v = llDetectedTouchST(0);
return (integer)(v.x * x) + ((integer)(v.y * y)) * x;
}
// Détermine l'index du bouton touché
integer indexBouton(integer id, string iCase) {
list lBoutons;
// Choix de la liste concernée
if(id == 0) lBoutons = lBoutons1;
else if(id == 1) lBoutons = lBoutons2;
else if(id == 2) lBoutons = lBoutons3;
else if(id == 3) lBoutons = lBoutons4;
else if(id == 4) lBoutons = lBoutons5;
else if(id == 5) lBoutons = lBoutons6;
else if(id == 6) lBoutons = lBoutons7;
else lBoutons = lBoutons8;
// Balayage
integer n = llGetListLength(lBoutons);
while(n--) {
string s = llList2String(lBoutons, n);
list l = llCSV2List(s);
if(~llListFindList(l, [iCase])) return n;
}
return -1;
}
// Détecte les primitives nommées dans lPrims_noms
// et récupère leur index pour renseigner lPrims
detecte_prims(){
integer n = llGetNumberOfPrims();
integer i;
for(i = 2; i <= n; ++i) {
string nom = llGetLinkName(i);
integer id = llListFindList(lPrims_noms, [nom]);
if(~id) lPrims = llListReplaceList(lPrims, [i], id, id);
}
}
default
{
state_entry()
{
llOwnerSay("La mémoire utilisée est : " + (string)llGetUsedMemory() + " octects");
detecte_prims();
}
changed(integer change)
{
if(change & CHANGED_LINK) detecte_prims();
}
touch_start(integer total_number)
{
//llOwnerSay("Clic sur la case " + (string)indexZone(1, 16));
integer iPrimitive = llDetectedLinkNumber(0);
integer id = llListFindList(lPrims, [iPrimitive]);
//llOwnerSay("Clic sur le panneau d'index " + (string)id);
if(~id) {
integer iCase = indexZone(1, 16);
integer iBouton = indexBouton(id, (string)iCase);
if(~iBouton) {
list lTextures;
if(id == 0) lTextures = lTextures1;
else if(id == 1) lTextures = lTextures2;
else if(id == 2) lTextures = lTextures3;
else if(id == 3) lTextures = lTextures4;
else if(id == 4) lTextures = lTextures5;
else if(id == 5) lTextures = lTextures6;
else if(id == 6) lTextures = lTextures7;
else lTextures = lTextures8;
llWhisper(iCanal, (string)id + "@" + llList2String(lTextures, iBouton));
}
}
}
}