Aller à la page... |
Script capable de réagir en fonction du tag d'un groupe
Suivre Répondre |
|
Partager | Rechercher |
|
A ma connaissance on a pas beaucoup d'informations sur les groupes, on peut juste savoir si un avatar a un certain groupe actif.
Il m'est arrivé de faire des scripts pour les rp et le plus simple était de donner un objet à chaque participant (genre bracelet ou collier...) avec toutes les informations utiles. |
16/05/2018, 10h48 |
|
Alpha & Oméga
|
Citation :
http://wiki.secondlife.com/wiki/LlGetObjectDetails avec le paramètre OBJECT_GROUP_TAG Il faut voir la page en anglais qui contient les 38 paramètres possibles . La page en francais ne contient que 23 parametres possibles à llgetobjectdetails Il faut évidemment que l utilisateur soit membre d un groupe , qu il active son tag de groupe . Si l utilisateur appartient a plusieurs roles dans le groupe , il doit sélectionner dans l interface de SL aussi le rôle Exemple de script : Code:
// petit tableau a modifier en fonction du nom des groupes tags et // de leurs objets respectifs a donner // Sensible aux majuscules,minuscules list data = [ "scribe", "ecritoire", "musicien", "harpe", "medecin", "scalpel" ]; // fonction qui teste si le groue tag est un de ceux a qui on doit donne un objet // et qui le donne si on le doit integer donneObjet( key avatar , string groupTag ) { // teste si le grouptag est dans la liste data qui contient une liste de paires grouptag,objet integer i = llListFindList(data, [ groupTag ] ); if ( i == -1) { // si l agent porte un grouptag inconnu ou d un autre groupe que ceux interesses // on affiche alors un message d erreur llOwnerSay(llList2CSV( [ "group tag ignore ", "groupTag", groupTag, "avatar", llKey2Name(avatar) ] )); return FALSE; } else { // si l agent porte un grouptag interesse , on teste si le nomde l objet a donne est prsent dans l inventaire string nomObjet = llList2String(data, i+1); integer a = llGetInventoryType(nomObjet); if ( a == INVENTORY_OBJECT ) { // si l agent porte un grouptag interesse et que l objet est dans l inevnataire , on le donne llGiveInventory(avatar,nomObjet ) ; return TRUE; } else { // si le nom de l objet recupere dans la liste data n est pas un nom des objets dans l inevntaire // on affiche un message d erreur llOwnerSay(llList2CSV( [ "Objet absent dans l inventaire ", "nom Objet", nomObjet , "groupYag", groupTag, "avatar", llKey2Name(avatar) ] )); return FALSE; } } } default { touch_start(integer total_number) { list avatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []); integer numOfAvatars = llGetListLength(avatarsInRegion); integer index; while (index < numOfAvatars) { // récupère l UUID de l avatar dans la liste d avtars présents dans la region key id = llList2Key(avatarsInRegion, index); // recupere le nom de l avatar string name = llKey2Name(id); // recupere le group tag et supprime les espaces avant et apres string groupTag = llStringTrim(llList2String(llGetObjectDetails( id, [ OBJECT_GROUP_TAG ]) , 0) , STRING_TRIM); // affiche le nom de l avtar et son group tag llOwnerSay(name + " [ " + (string)id + " GroupTag " + groupTag +" ]"); // donne l objet a l avatar avec le nom du grouptag donneObjet(id , groupTag ); ++index; } } } Le désavantage est u il te faut avoir les droits de réer des "Experience" . L avntage est que tu peux fournir des objets qui sont authorisés par les participants a ces experinces de bypasser centaines boites de dialogue de confirmation ( teleportation et autres ) ainsi que de disposer d un tout petit espace de stockage pour eux qui est cross-scripts Dernière modification par redpurple ; 24/05/2018 à 08h16. |
24/05/2018, 07h03 |
|
|
Salut Red
Là je me rends compte que je suis un peu rouillé... Je devrais me remettre un peu aux scripts |
25/05/2018, 17h52 |
|
|
|
25/05/2018, 18h51 |
|
Alpha & Oméga
|
surtout pour le navion.
|
25/05/2018, 21h53 |
|
|
|
26/05/2018, 10h04 |
|
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|