Script capable de réagir en fonction du tag d'un groupe

Répondre
Partager Rechercher
Bonjour,

Dans le cadre de la mise en place d'un jeu de rôle, je souhaiterai savoir si il est possible de créer un script capable de différencier les différents statuts d'un groupe pour donner des objets en fonction de ce tag par le biais d'un hud.


Par exemple dans le cadre d'un jeu de rôle:

Scribe : Il obtiendra un écritoire (mais ne pourra pas inter agir avec la harpe)

Musicien : Il obtiendra une harpe (mais ne pourra pas inter agir avec l'écritoire)

Je vous remercie pour votre aide.
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.
Citation :
Publié par Olaze
Bonjour,

Dans le cadre de la mise en place d'un jeu de rôle, je souhaiterai savoir si il est possible de créer un script capable de différencier les différents statuts d'un groupe pour donner des objets en fonction de ce tag par le biais d'un hud.


Par exemple dans le cadre d'un jeu de rôle:

Scribe : Il obtiendra un écritoire (mais ne pourra pas inter agir avec la harpe)

Musicien : Il obtiendra une harpe (mais ne pourra pas inter agir avec l'écritoire)

Je vous remercie pour votre aide.
Oui c est possible voir la fonction llGetObjectDetails ,
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;
        }
        
    }
}
Une autre manière de faire est , si tu es proprietaire du land de creer des "Experiences" et de tester so les avatars sont dans les "Experiences"
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.
Citation :
Publié par bestmomo
Salut Red

Là je me rends compte que je suis un peu rouillé... Je devrais me remettre un peu aux scripts
Ah en voilà une bonne nouvelle
Répondre

Connectés sur ce fil

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