script de couleur

Répondre
Partager Rechercher
Voici un exemple avec un root et deux feux liés, un rouge et un vert. Les deux prims liés doivent s'appeler "rouge" et "vert" pour que ça fonctionne :

Code:
integer trouveNumPrim(string nom){
integer n=llGetNumberOfPrims();
integer c;
for(c=2;c<=n;c++){
string nomPrim=llGetLinkName(c);
if(nomPrim==nom)returnc;
}
return 0;
}
default
{
state_entry()
{
staterouge;
}
}
staterouge
{
state_entry()
{
llSetLinkColor(trouveNumPrim("rouge"),<1.0,.0,.0>,ALL_SIDES);
llSetLinkColor(trouveNumPrim("vert"),<.0,.0,.0>,ALL_SIDES);
}
touch_start(integer total_number)
{
statevert;
}
}
statevert
{
state_entry()
{
llSetLinkColor(trouveNumPrim("vert"),<.0,1.0,.0>,ALL_SIDES);
llSetLinkColor(trouveNumPrim("rouge"),<.0,.0,.0>,ALL_SIDES);
}
touch_start(integer total_number)
{
staterouge;
}
}
En même temps j'en profite pour insister sur l'importance des states pour la clarté des codes.
Dans mes cours quand j'apprends les states justement je prends comme exemple un feu tri-colore ^^

Les states c'est vraiment excellent , mais faut pas les utiliser à tord et à travers.
C'est idéal pour les initialisations et autres.
Mais justement, si les events sont redondant c'est que c'est mauvais choix ou pas tres bon du moins.
Vous avez tout à fait raison, des fois les states posent des problèmes à cause d'une redondance des événements. Mais on s'en sort souvent en utilisant plusieurs script. Je me toruve par exemple avec des objets rezzés qui vivent leur vie avec un script qui comporte 3 states. Mon Listen pour recevoir le llDie() devrait être répété autant de fois pour être opérationnel, et en plus ça marcherait mal parce que j'utilise des temporisations. J'ai mis le Listen dans un script à part, ce qui résout élégamment le problème.
Répondre

Connectés sur ce fil

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