Avec cette fonction, nous avons enfin tout pour faire une pose ball rudimentaire. La fonction du jour permet d'arrêter une animation de l'avatar. Quand on fait un sit sur un objet, par défaut cela lance l'animation "sit" (logique). Notre pose ball est déstiné à mettre notre avatar allongé, donc il faut arrêter cette position assise avant de lancer notre position allongée.
llStopAnimation a le même fonctionnement que llStartAnimation pour ses paramètres mais une démarre l'animation et l'autre l'arrête.
Il y a une imperfection dans cette pose ball mais vous trouverez laquelle, la solution se cache dans llSitTarget
Bonne chance et bonne animation
default
{
state_entry()
{
// change le libellé de sit
llSetSitText("Dormir");
}
// l'evenement se produit d'un changement avec un prim
// dans le cas qui nous interesse je m'assieds ou je me lève
changed(integer change)
{
// verifie si il s'agit d'un changement de liaison
if(change==CHANGED_LINK)
{
// la fonction du jour
key user=llAvatarOnSitTarget();
// on verifie la presence de l'avatar
if(user!=NULL_KEY)
{
// arrete l'animation naturelle de sit
llStopAnimation("sit");
// démare l'animation sleep pour mettre l'avatar allonger
llStartAnimation("sleep");
}
else
{
// arretes l'animation quand l'avatar se lève
llStopAnimation("sleep");
}
}
}
}
Affichage des articles dont le libellé est llSetText. Afficher tous les articles
Affichage des articles dont le libellé est llSetText. Afficher tous les articles
mercredi 16 janvier 2008
mardi 15 janvier 2008
llStartAnimation
La fonction du jour permet de lancer une animation. Cette fonction nécéssite que l'avatar ait repondu oui à la demande de permission sinon le script fais une erreur.
C'est pour cela que l'on teste si la permission est égal à animation. La fonction prend en paramètre une chaine de caractères correspondant à l'animation.
Cette valeur peut être une animation contenue dans votre objet, soit une des animations déjà existante nativement les "Built In"
default
{
state_entry()
{
// affiche le texte au dessus de l'objet
llSetText("Touchez moi pour danser",<1.0,1.0,1.0>,1.0);
}
touch_start(integer total_number)
{
// demande la permission d'animer l'avatar
llRequestPermissions(llDetectedKey(0),PERMISSION_TRIGGER_ANIMATION);
}
// se produit apres une demande permission
run_time_permissions(integer permissions)
{
// verifie que la réponse est oui pour l'animation
if(permissions==PERMISSION_TRIGGER_ANIMATION)
{
// la fonction du jour
llStartAnimation("dance1");
}
}
}
C'est pour cela que l'on teste si la permission est égal à animation. La fonction prend en paramètre une chaine de caractères correspondant à l'animation.
Cette valeur peut être une animation contenue dans votre objet, soit une des animations déjà existante nativement les "Built In"
aim_l_bow aim_r_bazooka aim_r_handgun aim_r_rifle angry_fingerwag angry_tantrum away backflip blowkiss bow brush busy clap courtbow crouch crouchwalk dance1 dance2 dance3 dance4 dance5 dance6 dance7 dance8 dead drink | express_afraid express_afraid_emote express_anger express_anger_emote express_bored express_bored_emote express_cry express_cry_emote express_disdain express_embarrassed_emote express_frown express_kiss express_laugh express_laugh_emote express_open_mouth express_repulsed express_repulsed_emote express_sad express_sad_emote express_shrug express_shrug_emote express_smile express_surprise express_surprise_emote express_tongue_out express_toothsmile express_wink express_wink_emote express_worry express_worry_emote | falldown female_walk fist_pump fly flyslow hello hold_l_bow hold_r_bazooka hold_r_handgun hold_r_rifle hold_throw_r hover hover_down hover_up impatient jump jumpforjoy kick_roundhouse_r kissmybutt land laugh_short motorcycle_sit musclebeach | no_head no_unhappy nyanya peace point_me point_you prejump punch_l punch_onetwo punch_r rps_countdown rps_paper rps_rock rps_scissors run salute shoot_l_bow shout sit sit_female sit_generic sit_ground sit_to_stand sleep smoke_idle smoke_inhale smoke_throw_down | snapshot soft_land stand stand_1 stand_2 stand_3 stand_4 standup stretch stride surf sword_strike_r talk throw_r tryon_shirt turn_180 turnback_180 turnleft turnright type walk whisper whistle wink_hollywood yes_happy yes_head yoga_float |
default
{
state_entry()
{
// affiche le texte au dessus de l'objet
llSetText("Touchez moi pour danser",<1.0,1.0,1.0>,1.0);
}
touch_start(integer total_number)
{
// demande la permission d'animer l'avatar
llRequestPermissions(llDetectedKey(0),PERMISSION_TRIGGER_ANIMATION);
}
// se produit apres une demande permission
run_time_permissions(integer permissions)
{
// verifie que la réponse est oui pour l'animation
if(permissions==PERMISSION_TRIGGER_ANIMATION)
{
// la fonction du jour
llStartAnimation("dance1");
}
}
}
Libellés :
llDetectedKey,
llRequestPermissions,
llSetText,
llStartAnimation
jeudi 3 janvier 2008
llInstantMessage
Cette fonction est très simple d'utilisation à partir de la Key d'un personne on paut lui envoyer un IM. Ici, on remerci le donneur par un IM, après tout, tout le monde n'a pas besoin de le savoir. En plus, ca flash bien comme message.
Donc deux paramètres le premier la key du destinataire, et le deuxième, le message
default
{
Donc deux paramètres le premier la key du destinataire, et le deuxième, le message
default
{
state_entry()}
{// affiche le texte en blanc au dessus de l'objet}
llSetText("tip jar",<1.0,1.0,1.0>,1.0);
// defini le don
llSetPayPrice(PAY_DEFAULT, [50,100,200,PAY_HIDE]);
// l'evenement money se produit quand un paiement à été fait à l'objet
// giver est la key de la personne ayant donné de l'argent et amount le montant
money(key giver, integer amount)
{// la fonction du jour}
llInstantMessage(giver, llKey2Name(giver) + " merci pour le don");
Libellés :
llInstantMessage,
llKey2Name,
llSetPayPrice,
llSetText,
money
mercredi 2 janvier 2008
llSetPayPrice
On va parler un peu d'argent, et oui, cela fait aussi parti de second life. Pour travailler on va utiliser un exemple simple la tip jar. llSetPayPrice permet d'afficher une petite fenêtre avec un menu de prix.
La fonction prend 2 paramètres le premier indique si l'on veut une fenêtre de saisie manuelle.
PAY_DEFAULT si on en veut une, sinon PAY_HIDE
Le second indique un tableau de 4 montant possible correspondant à différents choix.
si l'on veut moins de 4 choix on complète par PAY_HIDE
En utilisant llsetprice il n'est pas nécessaire de cocher la case à vendre... ca ne voudrais rien dire d'ailleurs
default
{
La fonction prend 2 paramètres le premier indique si l'on veut une fenêtre de saisie manuelle.
PAY_DEFAULT si on en veut une, sinon PAY_HIDE
Le second indique un tableau de 4 montant possible correspondant à différents choix.
si l'on veut moins de 4 choix on complète par PAY_HIDE
En utilisant llsetprice il n'est pas nécessaire de cocher la case à vendre... ca ne voudrais rien dire d'ailleurs
default
{
state_entry()}
{// affiche le texte en blanc au dessus de l'objet}
llSetText("tip jar",<1.0,1.0,1.0>,1.0);
// la fonction du jour
llSetPayPrice(PAY_DEFAULT, [50,100,200,PAY_HIDE]);
// l'evenement money se produit quand un paiement à été fait à l'objet
// giver est la key de la personne ayant donné de l'argent et amount le montant
money(key giver, integer amount)
{//llKey2Name tranforme l'UID d'une personne en son nom}
llSay(PUBLIC_CHANNEL,llKey2Name(giver) + " merci pour avoir donne" + (string)amount + "L$" );
Libellés :
key,
llSay,
llSetPayPrice,
llSetText,
money
jeudi 13 décembre 2007
llFrand
La fonction llFrand() permet de tirer un chiffre au hasard. On lui passe un float(nombre décimal) et il en retourne un autre entre 0 et celui passer en paramètre. Cette petite fonction peut ce se révèler utile dans nombre de cas.
Une application de llFrand aujourd'hui, le script choisi un nombre au hasard et vous devez deviner le nombre. pour répondre vous saissez dans la fenêtre de chat qu'il ecoute via un listen eet compare le message par rapport à la valeur tappée
// integer defini un nombre de type entier donc san virgule
// en placant notre déclaration ici, la varaible est utilisable dans tout le script
// sinon elle n'est visible que dans l'envenement
integer nb;
default
{
}
Une application de llFrand aujourd'hui, le script choisi un nombre au hasard et vous devez deviner le nombre. pour répondre vous saissez dans la fenêtre de chat qu'il ecoute via un listen eet compare le message par rapport à la valeur tappée
// integer defini un nombre de type entier donc san virgule
// en placant notre déclaration ici, la varaible est utilisable dans tout le script
// sinon elle n'est visible que dans l'envenement
integer nb;
default
{
state_entry()
{
// Ici on écoute tout ce que dit le propriétaire sur le channel public
llListen(PUBLIC_CHANNEL,"",llGetOwner(),"");
// Rapidement on met un libelle pour informer
llSetText("touchez moi",<1,0,0>,1.0);
}
touch_start(integer total_number)
{
// en touchant on a déclencher le jeu, donc il n'attend plus que on le touche
llSetText("",<1,0,0>,1.0);
// la fonction du jour
nb=(integer)llFrand(10.0);
// on informe que le nombre a ete choisi
llSay(PUBLIC_CHANNEL,"j'ai choisi un nombre");
}
listen(integer channel, string name, key id, string message)
{
// ici on rencontre se que l'on appelle un "cast" ou transtypage en francais
// on transforme un type en un autre
// ici message est un string mais nous voulons un integer en le mettant
// entre paranthèse il va essayer de le transformer
// on remarque aussi l'attribution direct pendant la déclaration
integer reponse=(integer)message;
// ici on va tester l'ensenble des possibilitésif(reponse>nb)
{
llSay(PUBLIC_CHANNEL, "non c'est trop grand");
}
else
{if(reponse
{
llSay(PUBLIC_CHANNEL, "non c'est trop petit");
}
else
{
llSay(PUBLIC_CHANNEL, "bravo vous avez gagner");
}
}
}
}
mercredi 12 décembre 2007
llListen
La fonction du jour "ecoute" un channel particulier le texte ecrit soit par un avatar , soit par un objet via la fonction llSay. Cette fonction est très utilisé pour déclencher des comportements par voix. Par exemple les pose ball se cache et s'affiche par
/1 hide ou /1 show
la fonction paramètre un ensemble de critère qui déclenche l'evenement Listen.
Mais llListen ne le déclenche que sous les conditions de ses paramètres.
Notion déjà vu pour llSay, ici on ecoute un canal particulier
Integer channel
ne déclenchera l'evenement que si dans le message il y a ce string, on met "" si l'on ne veux pas de filtre
string filtre
On peut preciser d'ecouter qu'une seul personne, mais ce n'est pas obligatoire, le cas échéant on mets NULL_KEY
key QuiParle
Ce filtre est encore plus restrictif, l'evenment ne ce déclanchera que si ce texte est dit.
string message
passons maintenant à une partie tout aussi importante l'evenement listen
Nous avons comme paramètre le channel ecouté, car on peut ecouter plusieurs channels à la fois.
Nous avons une key qui l'identifiant de qui ou quoi a déclenché l'evenement. Et pour finir, bien évidement le message
Il ne reste plus qu'a tester les différents parmètre pour faire notre action.
Nous Serions en droit de penser que nous pourrions ecrire ceci à chaque fois et de tester dans le listen
llListen(0,"",NULL_KEY,"");
Le problème ici, c'est le lag(ralentissement général), car l'événement est appellé très souvent. Il vaut mieux qu'il soit restreint au maximum
// Key est un numéro unique pour définir quelque chose dans second life
// chaque objet, avatar, etc... sont identifiés par une key
key Proprio;
default
{
state_entry()
{
// on affiche un texte en rouge(fonction connue)
llSetText("mon texte est rouge",<1,0,0>,1.0);
// cette fonction retourne la key du propriétaire de l'objet
Proprio=llGetOwner();
// notre fonction du jour
llListen(1,"texte",Proprio,"");
}
listen(integer channel, string name, key id, string message)
{
// ici on test le contenu du message "entendu" et change la couleur du texte
if(message=="texte rouge") llSetText("mon texte est rouge",<1,0,0>,1.0);
if(message=="texte vert") llSetText("mon texte est vert",<0,1,0>,1.0);
if(message=="texte bleu") llSetText("mon texte est bleu",<0,0,1>,1.0);
}
}
/1 hide ou /1 show
la fonction paramètre un ensemble de critère qui déclenche l'evenement Listen.
Mais llListen ne le déclenche que sous les conditions de ses paramètres.
Notion déjà vu pour llSay, ici on ecoute un canal particulier
Integer channel
ne déclenchera l'evenement que si dans le message il y a ce string, on met "" si l'on ne veux pas de filtre
string filtre
On peut preciser d'ecouter qu'une seul personne, mais ce n'est pas obligatoire, le cas échéant on mets NULL_KEY
key QuiParle
Ce filtre est encore plus restrictif, l'evenment ne ce déclanchera que si ce texte est dit.
string message
passons maintenant à une partie tout aussi importante l'evenement listen
Nous avons comme paramètre le channel ecouté, car on peut ecouter plusieurs channels à la fois.
Nous avons une key qui l'identifiant de qui ou quoi a déclenché l'evenement. Et pour finir, bien évidement le message
Il ne reste plus qu'a tester les différents parmètre pour faire notre action.
Nous Serions en droit de penser que nous pourrions ecrire ceci à chaque fois et de tester dans le listen
llListen(0,"",NULL_KEY,"");
Le problème ici, c'est le lag(ralentissement général), car l'événement est appellé très souvent. Il vaut mieux qu'il soit restreint au maximum
// Key est un numéro unique pour définir quelque chose dans second life
// chaque objet, avatar, etc... sont identifiés par une key
key Proprio;
default
{
state_entry()
{
// on affiche un texte en rouge(fonction connue)
llSetText("mon texte est rouge",<1,0,0>,1.0);
// cette fonction retourne la key du propriétaire de l'objet
Proprio=llGetOwner();
// notre fonction du jour
llListen(1,"texte",Proprio,"");
}
listen(integer channel, string name, key id, string message)
{
// ici on test le contenu du message "entendu" et change la couleur du texte
if(message=="texte rouge") llSetText("mon texte est rouge",<1,0,0>,1.0);
if(message=="texte vert") llSetText("mon texte est vert",<0,1,0>,1.0);
if(message=="texte bleu") llSetText("mon texte est bleu",<0,0,1>,1.0);
}
}
Libellés :
key,
listen,
llGetOwner,
llListen,
llSetText
mardi 11 décembre 2007
llSetText
L'image vous montre en résultat de "floating text"
Elle est très simple d'utilisation comme le montre le script du jour.
default
{
state_entry()
{
// il est de type sting c'est a dire un texte séparé par des guillemets
// attention l'accentuation n'est pas accèpté en LSL
string message;
// le type float est un réel, un nombre à virgule. Il doit avoir un point
f loat transparence;
// le type vecteur est une combinaison de 3 réel spéaré par des virgules
// et encadré par des <>
vector couleur;
// libelle du message au dessus de l'objet
message="Ce message flotte au dessus de votre objet";
// la transparence du texte, elle varie de 0 transparent à 1.0 opaque
transparence=1.0;
// la couleur est définir par un vecteur
// chaque chiffre représente une composante Rouge Vert ou bleu RVB
// les valeurs varient de 0 à 1. Ici c'set rouge <1,0,1> fera du violet
couleur=<1,0,0>;
//là il s'agit de la fonction à proprement dit
llSetText(message,couleur,transparence);
}
}
Inscription à :
Articles (Atom)
