Script avec llSetColor

Répondre
Partager Rechercher
Bonsoir

Je cherche a faire un script qui me permet de changer a tous moment par une commande chat la couleur d'un prim qui compose mon objet (une casquette)
Etant peu initié au script, j'ai reussi a fair un script qui est le suivant

default
{state_entry()
{
llListen( 0, "", llGetOwner(), "blanc " ) ;
}
listen( integer channel, string name, key id, string message )
{
llSetColor (<1,1,1>,ALL_SIDES);
}
}

Mon probleme est de rajouter une deuxièmes partie de script qui permeterait de faire une deuxièmes couleur (il y en aura une dixaine au total)

Donc si quelqu'un a une solution pour m'eclairer ca serait cool

Merci et bravo pour toute les infos que vous donnez dans ce forum
Tu peux faire ton script de 200 manières possibles.

Tu débutes dans le script, je te propose de faire lourd mais tu comprendras:

default
{state_entry()
{
llListen( 0, "", llGetOwner(), "" ) ;
}
listen( integer channel, string name, key id, string message )
{
if(message == "blanc"){
llSetColor (<1,1,1>,ALL_SIDES);
}
else if(message == "rouge"){
llSetColor (<1,0,0>,ALL_SIDES);
}
else if(message == "noir") {
llSetColor (<0,0,0>,ALL_SIDES);
}
//etc
}
}

Bon c'est sur que ca fait lourd, mais au moins tu comprends, après tu peux passer par des listes.
Je te conseille de te mettre sur un autre channel dans le listen d'entree (5 par exemple), dans le chat tu feras /5 rouge ce qui ne spamme pas le chat principal.
Bon courage
Thumbs up
Pour la texture remplaces llSetColor (<1,1,1>,ALL_SIDES); par llSetTexture(string texture, integer side);
string texture étant la clef de la texture (entre guillemets) et integer side la face désirée (ALL_SIDES pour toutes les faces).
__________________
UnConWTech - Flo(144,84,224) - Livres SL
Services : traduction et assurance qualité
Bonjour, ce script est excellent mais j'aurais besoin d'une petite modif....

Il me faudrait qu'a la place de modifier la couleur par le chat ça se fasse par le "touch". Mon problème est que je ne sais pas du tout quoi ni où mettre le code pour ça.
Merci a ceux qui pourront m'aider.
Code PHP:

key owner;
integer com_chan 222;
integer listen_to_owner;

default
{
    
state_entry()
    {
        
owner llGetOwner();
    }
    
    
touch_start(integer num_detected)
    {
        
integer i;
        for (
0num_detected; ++i)
        {
            
key my_detected_key llDetectedKey(i);
            if (
my_detected_key == owner)
            {
                list 
menu_couleur = ["blanc""gris""noir"]; // 12 max
                
llDialog(owner"Choisissez une couleur :"menu_couleurcom_chan);
                
listen_to_owner llListen(com_chan""owner"" );
                
llListenControl(listen_to_ownerTRUE);
            }
        }
    }
    
    
listen(integer channelstring namekey idstring message)
    {
        if (
message == "blanc")
        {
            
llSetColor(<1.01.01.0>, ALL_SIDES);
        }
        else if (
message == "gris")
        {
            
llSetColor(<0.50.50.5>, ALL_SIDES);
        }
        else if (
message == "noir")
        {
            
llSetColor(<0.00.00.0>, ALL_SIDES);
        }
        
llListenControl(listen_to_ownerFALSE);
    }

EDIT : dans le 2ème llListenControl c'est FALSE pas TRUE.
Je suis content tout ça marche nikel!!

Par contre y reste un prob. Je créé l'objet et je met le script...nikel. Je le donne a quelqu'un (sans aucune perm de copy modify ) et donc la personne devient propriétaire "owner" du dit objet (en l'occurrence 3 cubes linkés dont deux qui changent de couleur) LE PROB EST QUE CELA NE MARCHE PAS POUR CETTE PERSONNE! La fenêtre de dialogue pour choisir la couleur n'apparaît pas. Parceque C n'est pas lui le créateur? Je comprend pas....
Est ce que ceci n'est pas justement censé détecter le propriétaire? :

Code:
 
key owner; 
integer com_chan = 222; 
integer listen_to_owner; 
 
default 
{ 
	state_entry() 
	{ 
		owner = llGetOwner(); 
	} 
J'ai fait, au cas où deux autres manips :

1/ J'ai mis l'objet a vendre et j'ai dit a l'autre personne de l'acheter (1 L symbolique bien sur ) au cas ou cela changerait quelque chose... mais rien n'y fait....
2/ J'ai mis toute les permission COPIER/MODIFIER/REVENDRE et OFFRIR ainsi que "permettre a tout le monde de copier" et ensuite je le lui ai redonné... Mais tjs rien.
Je sais pas trop, si quelqu'un a une idée ou une solution.... J'suppose que je m'y prend encore mal.

Enfin si vous voulez plus de détails...----> JOGUSH NYLE (ouaaaahh 'ttinnnn!! la rymeeee!!! )

ET MERCI ENCORE!!

-------------------------------
edit : oublié de dire mais j'ai également fait le test sur un seul prim (et donc pas de link... au cas où vous penseriez que ca vient de là.... voili voilou
Pour que ça marche avec quelqu'un d'autre il faut que la personne réinitialise le script, ou que tu ajoutes ce code (dans default {} ) pour que le script se réinitialise tout seul au changement de propriétaire :

Code PHP:

    changed(integer change)
    {
        if (
change CHANGED_OWNER && llGetOwner() != llGetCreator())
        {
            
llResetScript();
        }
    } 
MERCI POUR TES REPONSES RAPIDE!! Je teste ca en rentrant ce soir et je vous dis ca.... MERCI ENCORE!!

C OK tout fonctionne ! Décidement C génial ce qu'on peut faire avec un simple language de prog.
Pour corser le tout et pour finir un e petite question pertinante, pour savoir si C faisable.

Voici la toff de mon objet (trois cubes linkés dont deux sont nommé "2" et le dernier est nommé "1") :

http://www.hebergement-images.com/05/1177705927_test.gif


J'aimerais que lorsque je touch l'objet et que le menu apparait pour choisir la couleur, cela affecte UNIQUEMENT les prims nommés "2".
Je pense que cela doit pouvoir se faire vu que tout est possible en informatique. Mais bon, l'expert C pas moi.

Merci pour vos réponses car cela me rendrait un éNNORMMEEE serivice!!
Lol j'essaie j'essai... Chui fort en modélisation (mon taff) et pour ce qui est de la retouche photo..... mais le script.... bahhh.... j'm'y met mais faut le temps que ça rentre... Pas si facile, on sait jamais ou mettre les "actions" scuzez du thermes, ni comment la formuler, le WIKI C sympa mais on comprend pas toujours comment placer rapport au script qu'on désire. D'ailleur si vous connaissez de bon tutoz qui permettre de s'y mettre chui preneur!

Mine de rien, quand j'y pense, j'ai de la chance de savoir faire ce que je sais faire, ça me fait gagner du temps, mais la le LSL.....arfff me suis bien mis au HTML pour comprendre les bases de la programmation, histoire de "comprendre" ..... finirais par y arriver un jour
En tout cas je te remercie pour tout ce que tu as fais jusque là.... et pi m'pousser au cul aussi ....ça finira par m'faire avancer.
Vous m'vérez de nouveau dans ce topic si la pointe pas le bout d'son nez.
Re, j'ai beau chercher je trouve pas la réponse a mon besoin. J'ai pas le temps de finir ça et j'en ai besoin rapidement. si quelqu'un peut modifier le script afin qu'il fasse ce que j'ai décrit plus haut... contre rémunération bien entendu si cela est nécessaire. dites moi votre prix en MP (aime pas parler argent en public )
ou IG JOGUSH NYLE

Merci beaucoup, C très urgent
TML ce n'est pas de la programmation.
Pour commencer, Java pour les nuls, PHP pour les nuls... ou tout autre bon livre d'initiation à la programmation, mais compte quelques mois pour avoir un bon niveau
Pour le script de base que tu voulais voici la version que je propose dans mon script shop

Code PHP:

// --------------------------------------//
// This script listen for a command on the chat channel and change color depending of the command.
// You can copy/modify this script, it's totally free. Please don't modify these comments. A.C.
// --------------------------------------//
// command list and colors list
list lCommandColor = ["black""white""red""green""blue""yellow""pink""purple""brown""grey"];
list 
lVectorColor = [<000>, <111>, <100>, <010>, <001>, <110>, <101>, <.250.5>,
                     <
.2500>, <.5.5.5>];
default
{
    
state_entry()
    {
        
// listen for a owner command on the main channel
        
llListen(0""llGetOwner(), "");
    }
    
listen(integer channelstring namekey idstring message)
    {
        
// extract the position of the color
        
integer nColorPos llListFindList(lCommandColor, [message]);
        if (
nColorPos > -1)
        {
            
// extract the color
            
vector vColor llList2Vector(lVectorColornColorPos);
            
// set the new color
            
llSetColor(vColorALL_SIDES);
        }        
    }

Encore merci pour ce script, il fonctionne nikel.. mais tjs par la chat.. pas en "menu".
Je suis tout de même en train d'essayer de m'en servir pour modifier le "script menu" pour voir.
Apres recherche je pense plutôt qu'il faut faire un link message entre les prims a modifier afin qu'ils se communiquent l'action changement de couleur.
J'ai bien trouvé le llMessageLinked( integer linknum, integer num, string str, key id ), mais bon faut 'il encore que je trouve comment m'en servir!

Merci en tout cas et @+

___________________________

edit : je suis toujour interessé par quiconque pourrait me faire ce script, je suis là pour apprendre, mais pour celui la suis vraiment dans l'urgence! Donc MP pour me donner votre prix.
Voici de nouveau le script a modifier au cas où : (voir mes autres posts plus haut pour le détail de mon besoin)

Code:
 key owner; 
integer com_chan = 222; 
integer listen_to_owner; 
default 
{ 
	changed(integer change) 
	{ 
		if (change & CHANGED_OWNER && llGetOwner() != llGetCreator()) 
		{ 
			llResetScript(); 
		} 
	}
	state_entry() 
	{ 
		owner = llGetOwner(); 
	} 
	 
	touch_start(integer num_detected) 
	{ 
		integer i; 
		for (i = 0; i < num_detected; ++i) 
		{ 
			key my_detected_key = llDetectedKey(i); 
			if (my_detected_key == owner) 
			{ 
				list menu_couleur = ["blanc", "gris", "noir"]; // 12 max 
				llDialog(owner, "Choisissez une couleur :", menu_couleur, com_chan); 
				listen_to_owner = llListen(com_chan, "", owner, "" ); 
				llListenControl(listen_to_owner, TRUE); 
			} 
		} 
	} 
	 
	listen(integer channel, string name, key id, string message) 
	{ 
		if (message == "blanc") 
		{ 
			llSetColor(<1.0, 1.0, 1.0>, ALL_SIDES); 
		} 
		else if (message == "gris") 
		{ 
			llSetColor(<0.5, 0.5, 0.5>, ALL_SIDES); 
		} 
		else if (message == "noir") 
		{ 
			llSetColor(<0.0, 0.0, 0.0>, ALL_SIDES); 
		} 
		llListenControl(listen_to_owner, FALSE); 
	} 
}
Répondre

Connectés sur ce fil

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