et pour finir, quelques petites ameliorations et une version 1 script du HUD....le script doit aller dans le prim racine, les boutons pour colorier diams doivent s' appeler "couldiams", et ceux pour les ongles "coulongles"...donc, autant de boutons qu'on veut....avec 1 script....
string nom;
list ongles;//liste des boutons pour colorier ongles (linknumber)
list diams;//liste des boutons pour colorier diams
integer face = ALL_SIDES;
integer nbprims;
integer i;
integer index;
integer nb_ongles;//nombre de boutons pour colorier ongles
integer nb_diams;
integer prim;
integer canalongles = -12345;
integer canaldiams = -123456;
vector color;
default
{
on_rez(integer start_param)
{
llResetScript();
}
state_entry()
{
ongles = [];
diams = [];
nbprims = llGetNumberOfPrims();
do
{
nom = llGetLinkName(i);
if (nom == "coulongles")
ongles += [i];
else if(nom == "couldiams")
diams +=[i];
}
while(++i <= nbprims);
nb_ongles = llGetListLength(ongles);
nb_diams = llGetListLength(diams);
}
touch_start(integer total_number)
{
prim = llDetectedLinkNumber(0);
color =llList2Vector(llGetLinkPrimitiveParams(prim,[PRIM_COLOR,face]),0);
if(~llListFindList(ongles, [prim]))
{
llWhisper(canalongles,(string)color);
}
else if(~llListFindList(diams, [prim]))
{
llWhisper(canaldiams,(string)color);
}
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
llResetScript();
}
}
}
et le script récepteur légèrement modifier, surtout pour éviter interactions avec d' autres huds proches....
integer canalongles = -12345;
integer canaldiams = -123456;
integer face = ALL_SIDES;
integer nbprims;
integer i;
integer index;
integer nb_ongles;
integer nb_diams;
list ongles;
list diams;
string nom;
key owner;
default
{
on_rez(integer start_param)
{
llResetScript();
}
state_entry()
{
owner = llGetOwner();
llListen(canalongles, "", "", "");
llListen(canaldiams, "", "", "");
ongles = [];
diams = [];
nbprims = llGetNumberOfPrims();
do
{
nom = llGetLinkName(i);
if (nom == "ongle")
ongles += [i];
else if(nom == "diam")
diams +=[i];
}
while(++i <= nbprims);
nb_ongles = llGetListLength(ongles);
nb_diams = llGetListLength(diams);
}
listen( integer canal, string name, key id, string msg )
{
if(llGetOwnerKey(id) == owner)
{
if(canal == canalongles)
{
index = 0;
do
{
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_LINK_TARGET,llList2Integer(ongles, index),PRIM_COLOR,face,(vector)msg,1.0]);
}
while (++index < nb_ongles);
}
else if(canal == canaldiams)
{
index = 0;
do
{
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_LINK_TARGET,llList2Integer(diams, index),PRIM_COLOR,face,(vector)msg,1.0]);
}
while (++index < nb_diams);
}
}
}
changed(integer change)
{
if (change &(CHANGED_OWNER | CHANGED_LINK))
{
llResetScript();
}
}
}
Dernière modification par MenthalOH ; 08/04/2021 à 12h22.
|