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

llStopAnimation

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");
}

}
}
}

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"


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");
}
}
}

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
{
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");
}
}

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
{
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$" );
}
}

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
{
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és

if(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);

}
}

mardi 11 décembre 2007

llSetText

llSetText permet d'afficher un texte au dessus d'un objet. Cette fonction présente de nombreuses applications. Elle permet surtout d'informer sur le comportement ou le contenu de l'objet. Par exemple il y a les teleports, pose balls, les vendeurs d'article, etc..
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);
}

}