Greeter portable

Répondre
Partager Rechercher
Bonjour,
Le 15/10/2019, j'avais fait l'achat sur le Market Place de =RM= Greeters (X) Vendu par Rainbowshadow Magic.
Après vérification cet article n'est plus en vente.
J'ai donc regarder dans la bibliothèque et sur Wiki, mais je n'ai pas trouvé de hud portable et mes essais à partir d'un hud à collision n'ont rien donner de positif.
Quelqu'un pourrait-il me remettre le script de ce petit greeter portable pour d'accueillir les avi quelques sdes après qu'ils arrivent sur une sim (avec un "Welcome back" pour ceux qui reviennent), merci.

EDIT :
Je peux indiquer le script de base auquel j'ai essayé d'apporter des modifications sans succès ...

Dernière modification par MateA ; 23/01/2022 à 13h07.
hellow, bon, les greeters, c 'est pas ma tasse de thé, j' ai horreur qu'une machine me harcèle dès que j' arrive qlq part, mais voilà un truc de base à mettre ds un HUD....onoff sur clic et reset à la reco...


Code PHP:

​integer onoff;
integer i;
integer nombre;
integer count;

list 
presents;
list 
anciens;
list 
salues;

key avat;

default
{
    
on_rez(integer i)
    {
        
llResetScript();
    }
    
    
state_entry()
    {
        
llOwnerSay("vidage des listes");
        
presents = [];
        
anciens = [];
        
salues = [];
        
llSetTimerEvent(0.0);
        
llSetText("OFF", <1.00.00.0>, 1.0);        
    }

    
touch_start(integer total_number)
    {
        if(!
onoff)
        {
            
llSetTimerEvent(0.1);
            
llSetText("ON", <0.01.00.0>, 1.0);
            
count 0;
        }
        else
        {
            
llSetTimerEvent(0.0);
            
llSetText("OFF", <1.00.00.0>, 1.0);
        }
        
onoff =!onoff;
    }
    
     
timer()
    { 
        
llSetTimerEvent(5.0);       
        if(
count == 0)
        {
            
anciens llGetAgentList(AGENT_LIST_REGION, []);
            
count 1;
        }
        
        else
        {
        
presents llGetAgentList(AGENT_LIST_REGION, []);
        
nombre llGetListLength (presents);
        
0;
                
        do
        {
            
avat llList2Key (presentsi);
            if (
llListFindList (anciens, [avat]) == -&& llListFindList (salues, [avat]) == -1)
            {
                
llRegionSayTo(avat0,"Hello jeune Padawan");
                
salues += avat;         
            }
            else if(
llListFindList (anciens, [avat]) == -&&~llListFindList(salues, [avat]))
            {
                    
llRegionSayTo(avat0,"Ouèlecaume bec!");
            }                    
        }
        while(
i++<nombre);
        
        
anciens presents;
        }
    }                 


sinon, mets toujours ton script.....
Mise à jour, j' avais pas lu de suite le resaluage des revenants....

Dernière modification par MenthalOH ; 24/01/2022 à 10h26.
Citation :
Publié par MenthalOH
hellow, bon, les greeters, c 'est pas ma tasse de thé, j' ai horreur qu'une machine me harcèle dès que j' arrive qlq part, mais voilà un truc de base à mettre ds un HUD....onoff sur clic et reset à la reco...


Code PHP:

integer onoff;
integer i;
integer nombre;
integer count;

list 
presents;
list 
anciens;
list 
salues;

key avat;

default
{
    
on_rez(integer i)
    {
        
llResetScript();
    }
    
    
state_entry()
    {
        
llOwnerSay("vidage des listes");
        
presents = [];
        
anciens = [];
        
salues = [];
        
llSetTimerEvent(0.0);
        
llSetText("OFF", <1.00.00.0>, 1.0);        
    }

    
touch_start(integer total_number)
    {
        if(!
onoff)
        {
            
llSetTimerEvent(0.1);
            
llSetText("ON", <0.01.00.0>, 1.0);
            
count 0;
        }
        else
        {
            
llSetTimerEvent(0.0);
            
llSetText("OFF", <1.00.00.0>, 1.0);
        }
        
onoff =!onoff;
    }
    
    
timer()
    { 
        
llSetTimerEvent(5.0);      
        if(
count == 0)
        {
            
anciens llGetAgentList(AGENT_LIST_REGION, []);
            
count 1;
        }
        
        else
        {
        
presents llGetAgentList(AGENT_LIST_REGION, []);
        
nombre llGetListLength (presents);
        
0;
                
        do
        {
            
avat llList2Key (presentsi);
            if (
llListFindList (anciens, [avat]) == -&& llListFindList (salues, [avat]) == -1)
            {
                
llRegionSayTo(avat0,"Hello jeune Padawan");
                
salues += avat;        
            }
            else if(
llListFindList (anciens, [avat]) == -&&~llListFindList(salues, [avat]))
            {
                    
llRegionSayTo(avat0,"Ouèlecaume bec!");
            }                    
        }
        while(
i++<nombre);
        
        
anciens presents;
        }
    }                


sinon, mets toujours ton script.....
Mise à jour, j' avais pas lu de suite le resaluage des revenants....

Merci MenthalOH, je vais l'essayer.
Sinon voici celui que j'ai essayé d'apporter des modifications sans résultat (tjrs novice lol)
Edit:
mon changement se faisait au niveau des lignes :
Code:
 if (~(vIdxLst = llListFindList( gLstAvs, (vLstChk = (list)llDetectedKey( --vIntSns )) ))){
                gLstAvs = vLstChk + llDeleteSubList( gLstAvs, vIdxLst, vIdxLst ); //-- prevents spamming frequent visitors
                gLstTms = vLstTmt + llDeleteSubList( gLstTms, vIdxLst, vIdxLst ); //--< **Timeout Culling Section**
où je mettais à la place un message de Welcom Back en changeant la cde
Code:
llDeleteSubList
par une autre fonction qui ne devait absolument pas correspondre :/

Code PHP:

/*//( v7-D Advanced Avatar Greeter v1.4.2 Annotated )//*/
 
/*//-- Notes:
 This script attempts (within the limits of LSL) To only greet avatars once per timeout period
 The timeout period start when they leave, and favors not re-greeting frequent visitors (perceived as spam)
 
 Remove Lines marked **Dynamic Memory Limitation Section** if you are sure of the max avs you want to store
 Remove Lines marked **Timeout Culling Section** if you want to greet the same avatar only once
--//*/
 
/*//-- Core Variables --//*/
list    gLstAvs;        //-- List Of Avatars Keys Greeted
list    vLstChk;        //-- List Of Single Av Key Checked During Sensor Processing
integer vIdxLst;        //-- Index Of Checked Item In List (reused)
integer gIntMax 500;  //-- Maximum Number of Names To Store (ignored if Dynamic Memory used)
 
 /*//-- Next Line:  **Dynamic Memory Limitation Section** --//*/
integer cINT_MEM 1024//-- Memory bytes to preserve for safety (Needs to be > ~768)
 
 /*//-- Start **Timeout Culling Section** --//*/
integer gIntTmt 172800//-- Number Of Seconds since last visit to store Av
integer vIntNow;          //-- Integer To Store Current Time During Sensor Processing
list    gLstTms;          //-- List Of Most Recent Times Avs Were Greeted At 
list    vLstTmt;          //-- List To Store Calculated Timeout During Sensor Processing
 /*//-- End **Timeout Culling Section** --//*/
 
default{
 
state_entry(){
 
//-- Next Line: **Dynamic Memory Limitation Section**
 
gIntMax cINT_MEM;                  //--< **Dynamic Memory Limitation Section**
 
llSensor""""AGENT95.0PI ); //-- Pre-Fire Sensor for immediate results
 
llSetTimerEvent30.0 );            //-- How often (in seconds) to look for new people
 
}
 
 
timer(){
 
llSensor""""AGENT95.0PI ); //-- Look for avatars
 
}
 
 
sensorinteger vIntSns ){ //-- Get "now" and "timeout" once, saving timeout as a list for eas of use
 
vLstTmt = (list)(gIntTmt + (vIntNow llGetUnixTime())); //--< **Timeout Culling Section**
 
do{ //-- Have we greeted these av's in our time frame?
 
if (~(vIdxLst llListFindListgLstAvs, (vLstChk = (list)llDetectedKey( --vIntSns )) ))){
 
gLstAvs vLstChk llDeleteSubListgLstAvsvIdxLstvIdxLst ); //-- prevents spamming frequent visitors
 
gLstTms vLstTmt llDeleteSubListgLstTmsvIdxLstvIdxLst ); //--< **Timeout Culling Section**
 
}else{ //-- New Av, greet and save
 
llRegionSayTo( (string)vLstChk0"Hello " llDetectedNamevIntSns ) );
 
gLstAvs llList2ListvLstChk gLstAvs0gIntMax );
 
gLstTms llList2ListvLstTmt gLstTms0gIntMax ); //--< **Timeout Culling Section**
 
}
 }while (
vIntSns);
 
/*//-- Start **Dynamic Memory Limitation Section** --//*/
 
if (cINT_MEM == gIntMax){            //-- check value to see if we need to do this, should happen 1 time only
 
if (cINT_MEM llGetFreeMemory()){ //-- are we running out of free space?
 
gIntMax = ~([] != gLstAvs);      //-- Limit list to current_length - 1 to prevent stack/heap collision
 
}
 } 
/*//-- End **Dynamic Memory Limitation Section** --//*/
 /*//-- Start **Timeout Culling Section** --//*/
 
if (vIdxLst = (gLstTms != [])){
 if (
vIntNow llList2IntegergLstTms, --vIdxLst )){
 @
Loop;          //-- Find first index of avatars whose time since last greeting expired
 
if (--vIdxLst){ //-- special loop structure to emulate short circuiting, while preserving vIndLst
 
if (vIntNow llList2IntegergLstTmsvIdxLst )){
 
jump Loop;
 }
 } 
//-- Next 2 Lines: Remove Avs whose time has expired
 
gLstAvs llList2List( (gLstAvs = []) + gLstAvs0vIdxLst );
 
gLstTms llList2List( (gLstTms = []) + gLstTms0vIdxLst );
 }
 } 
/*//-- End **Timeout Culling Section** --//*/
 
}
}
 
/*//--                          License Text                          --//*/
/*//  Free to copy, use, modify, distribute, or sell, with attribution.  //*/
/*//    (C)2009 (CC-BY) [ http://creativecommons.org/licenses/by/3.0 ]    //*/
/*//  Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ]  //*/
/*//  All usages must contain a plain text copy of the previous 2 lines.  //*/
/*//--                                                                  --//*/
[php
[/php]

Dernière modification par MateA ; 24/01/2022 à 15h25.
Je suis d'accord avec toi pour les greeters qui se déclenche sur une sim sont pénible, mais celui que je veux retrouver c'est le greeter d'accueil portable qui annonce un message d'accueil dans le chat local, où les AVIs peuvent le lire à partir de là (et il n'y a pas de déplacement de ma part).
(Je ne comprends pas pourquoi celui que j'ai acheté sur le MP ai disparu de la vente et pas de retour du vendeur)
Dans le programme que j'ai mis, ce doit être aussi un greeter qui s'adresse aux arrivants "avec une fenêtre bleue" car je ne vois rien dans le chat local et je ne connais pas toutes les fonctions pour déceler l'endroit à modifier ... pareil pour ton script (il ne fonctionne pas comme je le souhaite).
En reprenant le script que j'ai trouvé et qui demande des modifications afin qu'il corresponde à ce que je veux (c-à-d un simple message dans le chat local), j'ai modifier ainsi mais sans résultat positif :
Code PHP:

&#8203;/*//( v7-D Advanced Avatar Greeter v1.4.2 Annotated )//*/
 
/*//-- Notes:
  Ce script tente ( dans les limites de LSL ) de ne saluer les avatars qu'une seule fois par période d'expiration 
  Le délai d'expiration commence à leur départ et favorise le non - accueil des visiteurs fréquents ( perçus comme du spam ) 
 
  Supprimez les lignes marquées ** Section de limitation de la mémoire dynamique **  si vous êtes sûr du nombre maximum d'avs que vous souhaitez stocker 
  Supprimez les lignes marquées ** Timeout Culling Section **  si vous ne souhaitez saluer le même avatar qu'une seule fois 
--//*/
 
/*//-- Core Variables --//*/
list    gLstAvs;        //-- Liste des clés d'avatars
list    vLstChk;        //-- Liste des clés Av uniques vérifiées pendant le traitement du capteur
integer vIdxLst;        //-- Index de l'élément coché dans la liste (réutilisé)
integer gIntMax 500;  //-- Nombre maximum de noms à stocker (ignoré si la mémoire dynamique est utilisée)
 
 /*//-- Next Line:  **Dynamic Memory Limitation Section**Section de limitation de la mémoire dynamique --//*/
integer cINT_MEM 1024//-- Octets de mémoire à conserver pour la sécurité (Doit être > ~768)
 
 /*//-- Start **Timeout Culling Section** --//*/
integer gIntTmt 172800//-- Nombre de secondes depuis la dernière visite pour stocker Av
integer vIntNow;          //-- Entier pour stocker l'heure actuelle pendant le traitement du capteur
list    gLstTms;          //-- Liste des heures les plus récentes où les Avs ont été accueillis à 
list    vLstTmt;          //-- Liste pour stocker le délai d'attente calculé pendant le traitement du capteur
 /*//-- End **Timeout Culling Section**Fin **Section d'élimination du délai d'attente --//*/
 
default{
 
state_entry(){
 
//-- Next Line: **Dynamic Memory Limitation Section**Limitation de la mémoire dynamique Section
 
gIntMax cINT_MEM;                  //--< **Dynamic Memory Limitation Section**Section de limitation de la mémoire dynamique
 
llSensor""""AGENT95.0PI ); //-- Capteur pré-incendie pour des résultats immédiats
 
llSetTimerEvent30.0 );            //-- Combien de fois (en secondes) chercher de nouvelles personnes
 
}
 
 
timer(){
 
llSensor""""AGENT95.0PI ); //-- Rechercher des avatars
 
}
 
 
sensorinteger vIntSns ){ //-- Obtenir "now" et "timeout" une fois, en enregistrant le timeout sous forme de liste pour faciliter l'utilisation
 
vLstTmt = (list)(gIntTmt + (vIntNow llGetUnixTime())); //--< **Timeout Culling Section**
 
do{ //-- Avons-nous accueilli ces av dans notre laps de temps ? 
 
if (~(vIdxLst llListFindListgLstAvs, (vLstChk = (list)llDetectedKey( --vIntSns )) ))){
 
llRegionSayTo( (string)vLstChk0"Welcome back " llDetectedNamevIntSns ) ); 
 
gLstAvs vLstChk llList2ListgLstAvsvIdxLstvIdxLst ); //-- remplacer llDeleteSubList par llList2List pour profiter de la répétition/retour pour un WB
 
gLstTms vLstTmt llList2ListgLstTmsvIdxLstvIdxLst ); //--< remplacer llDeleteSubList par llList2List /// **Timeout Culling Section**
 
}else{ //-- New Avi, greet and save
 
llRegionSayTo( (string)vLstChk0"Hello " llDetectedNamevIntSns ) + " and welcome") ; // changement 
 
gLstAvs llList2ListvLstChk gLstAvs0gIntMax );
 
gLstTms llList2ListvLstTmt gLstTms0gIntMax ); //--< **Timeout Culling Section**
 
}
 }while (
vIntSns);
 
/*//-- Start **Dynamic Memory Limitation Section** --//*/
 
if (cINT_MEM == gIntMax){            //-- vérifier la valeur pour voir si nous devons le faire, cela ne devrait se produire qu'une seule fois
 
if (cINT_MEM llGetFreeMemory()){ //-- manquons-nous d'espace libre ?
 
gIntMax = ~([] != gLstAvs);      //-- Limiter la liste à current_length - 1 pour éviter les collisions pile/tas
 
}
 } 
/*//-- End **Dynamic Memory Limitation Section** --//*/
 /*//-- Start **Timeout Culling Section** --//*/
 
if (vIdxLst = (gLstTms != [])){
 if (
vIntNow llList2IntegergLstTms, --vIdxLst )){
 @
Loop;          //-- Trouver le premier index des avatars dont le temps depuis le dernier salut a expiré
 
if (--vIdxLst){ //-- structure de boucle spéciale pour émuler le court-circuit, tout en préservant vIndLst
 
if (vIntNow llList2IntegergLstTmsvIdxLst )){
 
jump Loop;
 }
 } 
//-- 2 lignes suivantes : Supprimer les Avs dont le temps a expiré
 
gLstAvs llList2List( (gLstAvs = []) + gLstAvs0vIdxLst );
 
gLstTms llList2List( (gLstTms = []) + gLstTms0vIdxLst );
 }
 } 
/*//-- End **Timeout Culling Section** --//*/
 
}
}
 
/* //-- License Text --//*/ 
/* // Libre de copier, utiliser, modifier, distribuer ou vendre avec attribution. //*/ 
/* // (C)2009 (CC-BY) [ http://creativecommons.org/licenses/by/3.0 ] //*/ 
/* // Void Singer [ https://wiki.secondlife .com/wiki/User:Void_Singer ] //*/ 
/* // Toutes les utilisations doivent contenir une copie en texte brut des 2 lignes précédentes. //*/ 
/* //-- --//*/ 
Peux-tu me dire où faire des changements pour que j'obtienne le résultat escompté ?
alors si t 'es à moins de 20m des arrivants....il suffit de remplacer tous les

Code:
llRegionSayTo(avat, 0,"Hello jeune Padawan");

par 

llSay(0,"Hello jeune Padawan et blablabla, et blablabla...");
l' avantage de ma version réside dans le fait que le message ne s' adresse qu' à l' arrivant et ne pollue pas le chat des gens déjà là avec du spam constant.....Mais on a le droit de répeter x fois le même message.....

autre solution....avec une "boite bleue"....

mais ça complique un peu, faut inserer en tête de script....

list buttons = [];

string Info = "blablablabl bla blallabla bla bla blallabla blabla blallabla bla bla blallabla bla bla blallabla bla bla blallabla bla blablablabl bla blallabla bla bla blallabla blabla blallabla bla bla blallabla bla bla blallabla bla bla blallabla blablablablabl bla blallabla bla bla blallabla blabla blallabla bla bla blallabla bla bla blallabla bla bla blallabla bla bla bla blallabla bla bla bla blallabla blabla bla blallabla bla bla bla blallabla bla bla bla blallabla";

//les blablas montrent à peu près la longueur max du message ...


et à la place des "llRegionSayTo(avat, 0,"Hello jeune Padawan");"

llDialog(avat, Info, buttons, 123);
Répondre

Connectés sur ce fil

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