Désactiver Script avec Tchat

Répondre
Partager Rechercher
Bonjour!

Voila, je débute dans les scripts SL, je n'ai rien d'un pro de l'informatique, et j'avance donc a tâtons...

Et j'aimerais de l'aide de votre part car je souhaiterait désactiver un script en lui disant... si vous voyez ce que je veut dire

Exemple: je dit "stop" et le script s'arrête de fonctionner et inversement quand je dirait "go"...

Donc est ce qu'il existe une petit ligne qui s'ajouterait a tout script existant?

Par exemple pour ce script:

Citation :
default
{
state_entry() {
llParticleSystem( [
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_SRC_BURST_PART_COUNT,(integer) 60, // adjust for beam strength,
PSYS_SRC_BURST_RATE,(float) .05,
PSYS_PART_MAX_AGE,(float) 5,
PSYS_SRC_BURST_SPEED_MIN,(float)1,
PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
PSYS_PART_START_SCALE,(vector) <.04,.5,0>,
PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
PSYS_PART_START_COLOR,(vector) <1,0,0>,
PSYS_PART_END_COLOR,(vector) <.2,0,0>,
PSYS_PART_START_ALPHA,(float)0.5,
PSYS_PART_END_ALPHA,(float)0.00,
PSYS_PART_FLAGS,
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_VELOCITY_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_INTERP_SCALE_MASK
] );

}
}
Je sait qu'il y a des malins ici, alors aidez moi svp...

Amicalement
transforme ton script comme ceci:

default
{
state_entry()
{
llListen( 0, "", NULL_KEY, "" );
}

listen( integer channel, string name, key id, string message )
{
if ( id == llGetOwner()) //seulement si tu es propriétaire
{
if( message == "go){ //si tu dis go

llParticleSystem( [
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_SRC_BURST_PART_COUNT,(integer) 60, // adjust for beam strength,
PSYS_SRC_BURST_RATE,(float) .05,
PSYS_PART_MAX_AGE,(float) 5,
PSYS_SRC_BURST_SPEED_MIN,(float)1,
PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
PSYS_PART_START_SCALE,(vector) <.04,.5,0>,
PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
PSYS_PART_START_COLOR,(vector) <1,0,0>,
PSYS_PART_END_COLOR,(vector) <.2,0,0>,
PSYS_PART_START_ALPHA,(float)0.5,
PSYS_PART_END_ALPHA,(float)0.00,
PSYS_PART_FLAGS,
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_VELOCITY_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_INTERP_SCALE_MASK
] );
}
if(message == "stop")
{
//stop, mais en fait il faut mettre ca:
llParticleSystem([]);
}
}
}
}

Ca devrait etre bon.

edit: Mais le mieux est quand meme de changer les channels:
llListen( 0, "", NULL_KEY, "" ); devient llListen(3, "", NULL_KEY, "" );

et donc pour lancer ton script tu tapes: /3 go ou /3 stop
Faudrait débugger;

Désolé j'ai pas sl avec moi là, alors soit tu testes ca:

listen( integer channel, string name, key id, string message )
{
llSay(0, message); // pour voir si le message arrive bien
if ( id == llGetOwner()) //seulement si tu es propriétaire

et

if( message == "go"){ //si tu dis go
llSay(0, "Lancement des particules");

Si les deux messages s'affichent c'est que ton script de particule est incomplet et c'est lui qui ne se lance pas, sinon y'a un problème. Tu portes bien l'objet sur toi?

Et sinon ben patience je serais en ligne ce soir.
Le script donné est basique et engendre une grosse charge côté serveur, puisque chaque ligne de chat va déclencher le listener; Alors dans une zone vide ça va, mais dans une boîte avec plein de monde et pas mal de discussions, c'est énorme.

il vaut mieux modifier:
Citation :
{
llListen( 0, "", NULL_KEY, "" );
}
en:
Citation :
{
llListen(0,"",llGetOwner(),"");
}
ce qui limite le listener à l'écoute des phrases dites par le propriétaire sur le canal général.

Et mieux:
Citation :
{
llListen(1,"",llGetOwner(),"");
}
Ou seul les message du propriétaire sur le canal 1 sont écoutés.

Pour activer le script, c'est vrai, il ne suffit plus de taper 'go' mais '/1 go'
En contre partie, le test
Citation :
if ( id == llGetOwner()) //seulement si tu es propriétaire
{ //blabla }
Est inutile, et la charge serveur est très largement réduite, et constante.

PS: y a un bug là:
Citation :
if( message == "go){ //si tu dis go
c'est "go" qu'il faut
Merci a vous pour cette aide, je comprend de mieux en mieux comment ca marche,

J'ai intégré toutes vos remarques mais helas, ca ne fonctionne tjrs pas, mes particules sont toujours la, mais ne repondent pas a ce que je dit...

Ce n'est pas un objet que je porte, quelle difference?
Oki, voila...


Citation :

default
{
state_entry()
{
llListen(1,"",llGetOwner(),"");
}
listen( integer channel, string name, key id, string message )
{
llSay(0, "Lancement des particules");
if( message == "go"){ //si tu dis go
llParticleSystem( [
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_SRC_BURST_PART_COUNT,(integer) 60, // adjust for beam strength,
PSYS_SRC_BURST_RATE,(float) .05,
PSYS_PART_MAX_AGE,(float) 5,
PSYS_SRC_BURST_SPEED_MIN,(float)1,
PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
PSYS_PART_START_SCALE,(vector) <.04,.5,0>,
PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
PSYS_PART_START_COLOR,(vector) <1,0,0>,
PSYS_PART_END_COLOR,(vector) <.2,0,0>,
PSYS_PART_START_ALPHA,(float)0.5,
PSYS_PART_END_ALPHA,(float)0.00,
PSYS_PART_FLAGS,
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_VELOCITY_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_INTERP_SCALE_MASK
] );

}
if(message == "stop")
llSay(0, "Lancement des particules");
{
//stop, mais en fait il faut mettre ca:
llParticleSystem([]);
}
}
}


Merci de m'aider
Ok non, ca peut pas marcher comme ca. Et c'est d'ailleurs étrange qu'il te laisse compiler.

default
{
state_entry()
{
llListen(1,"",llGetOwner(),"");
}
listen( integer channel, string name, key id, string message )
{
if( message == "go"){ //si tu dis go
llSay(0, "Lancement des particules");
llParticleSystem( [
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_SRC_BURST_PART_COUNT,(integer) 60, // adjust for beam strength,
PSYS_SRC_BURST_RATE,(float) .05,
PSYS_PART_MAX_AGE,(float) 5,
PSYS_SRC_BURST_SPEED_MIN,(float)1,
PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
PSYS_PART_START_SCALE,(vector) <.04,.5,0>,
PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
PSYS_PART_START_COLOR,(vector) <1,0,0>,
PSYS_PART_END_COLOR,(vector) <.2,0,0>,
PSYS_PART_START_ALPHA,(float)0.5,
PSYS_PART_END_ALPHA,(float)0.00,
PSYS_PART_FLAGS,
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_VELOCITY_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_INTERP_SCALE_MASK
] );

}
if(message == "stop")
{
llSay(0, "Arret des particules");
//stop, mais en fait il faut mettre ca:
llParticleSystem([]);
}
}
}

Essaye ca déja

Et sinon quels sont les messages qui s'affichent?
Bonjour à tous,

Je suis dans le jeu actuellement, je viens de tester ce script et tout marche parfaitement.
Je ne vois pas ce que tu veux dire par aucune réponse.

"/1 go" -> Laser rouge
"/1 stop" -> Plus de laser rouge

Code:
 default
 {
 	state_entry()
 	{
 		llListen(1,"",llGetOwner(),"");
 	}
 	
 	listen( integer channel, string name, key id, string message )
 	{
 		if( message == "go") //si tu dis go
 		{ 
 			llParticleSystem( [
 			PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
 			PSYS_SRC_BURST_PART_COUNT,(integer) 60,
 			PSYS_SRC_BURST_RATE,(float) .05,
 			PSYS_PART_MAX_AGE,(float) 5,
 			PSYS_SRC_BURST_SPEED_MIN,(float)1,
 			PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
 			PSYS_PART_START_SCALE,(vector) <.04,.5,0>,
 			PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
 			PSYS_PART_START_COLOR,(vector) <1,0,0>,
 			PSYS_PART_END_COLOR,(vector) <.2,0,0>,
 			PSYS_PART_START_ALPHA,(float)0.5,
 			PSYS_PART_END_ALPHA,(float)0.00,
 			PSYS_PART_FLAGS,
 			PSYS_PART_EMISSIVE_MASK |
 			PSYS_PART_FOLLOW_VELOCITY_MASK |
 			PSYS_PART_FOLLOW_SRC_MASK |
 			PSYS_PART_INTERP_SCALE_MASK
 			] );
 			llSay(0, "Lancement des particules");
 
 		}
 		
 		if(message == "stop")
 		{
 			llParticleSystem([]);
 			llSay(0, "Arret des particules");
 		}
 	}
 }
Répondre

Connectés sur ce fil

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