GridTalk.de
Avatare im Besucherboard ausklammern - Druckversion

+- GridTalk.de (https://www.gridtalk.de)
+-- Forum: Werkstatt (https://www.gridtalk.de/forumdisplay.php?fid=4)
+--- Forum: Scripting (https://www.gridtalk.de/forumdisplay.php?fid=23)
+--- Thema: Avatare im Besucherboard ausklammern (/showthread.php?tid=4244)



Avatare im Besucherboard ausklammern - Xenos Yifu - 15.03.2022

Moin, was mich im allgemein recht beliebten Besucherboard stört.

Jeder Simowner kennt es, man loggt sich vielmals am Tag ein und aus.
Das bringt aber mit sich, dass laufend das Board vom eigenen Namen überspült wird
und die, welche es ja eigentlich anzeigen soll vom Board nach unten raus wandern.

Kennt jemand eine Funktion um im Script eine Art Blacklist anzulegen?


RE: Avatare im Besucherboard ausklammern - Anachron - 15.03.2022

Klar ist das machbar, aber dazu müsste man halt Einiges an zusätzlichem Code in das Script einbauen.


RE: Avatare im Besucherboard ausklammern - Klarabella Karamell - 15.03.2022

hmm. eine Zeile zusätzlichen Code, wenn ich das richtig gesehen hab und das Board auf dem Script von outworldz basiert. Da müsst man vor Zeile 105 eine If-Else reintun, die den Owner ignoriert... lass mich aber gern eines besseren belehren


RE: Avatare im Besucherboard ausklammern - Manfred Aabye - 15.03.2022

Schau im nachfolgenden Skript nach myIgnoreList.

PHP-Code:
// Artemis Tesla 2010-12-12
// Script for showing visitors log on a board
// Put script on a prim and reset
// Requires osGetAgents to be enabled in Opensim\bin\config-include\osslEnable.ini :
// Allow_osGetAgents = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
// or put line in opensim.ini [xengine] section if not using osslEnable.ini file
// Jeff Hall - September 2017
// Manni 2020

// Color Name:
//     "AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque",
//     "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood",
//     "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk",
//     "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenrod", "DarkGrey",
//     "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "DarkOrange",
//     "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue",
//     "DarkSlateGrey", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue",
//     "DimGrey", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia",
//     "Gainsboro", "GhostWhite", "Gold", "Goldenrod", "Grey", "Green", "GreenYellow",
//     "Honeydew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender",
//     "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral",
//     "LightCyan", "LightGoldenrodYellow", "LightGreen", "LightGrey", "LightPink",
//     "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGrey",
//     "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta",
//     "Maroon", "MediumAquamarine", "MediumBlue", "MediumOrchid", "MediumPurple",
//     "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise",
//     "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin",
//     "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed",
//     "Orchid", "PaleGoldenrod", "PaleGreen", "PaleTurquoise", "PaleVioletRed",
//     "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple",
//     "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown",
//     "SeaGreen", "Seashell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGrey",
//     "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato",
//     "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen"


list gDetected = [];
list 
gVisitors = [];
list 
myIgnoreList = [];
list 
myCleanedList = [];

string gTime "";

// User Setup - Font - Text - Color - Time
integer Pixel_width 512;
integer Pixel_height 512;
string FontName "Arial";
integer TextSize 9;
string TextBaseColor "White";
string TimeBaseColor "White";
string NameBaseColor "White";
string NameBackroundColor "Black";
integer refreshtimeevent 10;

// Colorbox
string Colorbox1 "Black"integer Colorboxwidth1 100integer Colorboxheight1 512;
string Colorbox2 "DarkGrey"integer Colorboxwidth2 100integer Colorboxheight2 512;
string Colorbox3 "LightGrey"integer Colorboxwidth3 100integer Colorboxheight3 512;
string Colorbox4 "Grey"integer Colorboxwidth4 120integer Colorboxheight4 512;

// Setup End

list ListXnotY(list lx, list ly)
{
    
// return elements in X list that are not in Y list
    
list lz;
    
integer i llGetListLength(lx);
    while(
i--)
    if ( !~
llListFindList(ly,llList2List(lx,i,i)) ) // * see Note
            
lz += llList2List(lx,i,i);
    return 
lz;
}

display()
{
    
string draw "";
    
string body "width:" Pixel_width ",height:" Pixel_height ",bgcolour:" NameBackroundColor;

    
// horizontal
    
draw osSetPenColordraw"Black" );           // Set the pen color to red
    
draw osMovePendraw0);               // Upper left corner at <28,78>
    
draw osDrawFilledRectangledraw51028 ); // 200 pixels by 100 pixels
    // erste flaeche
    
draw osSetPenColordraw"DarkGrey" );           // Set the pen color to red
    
draw osMovePendraw028 );               // Upper left corner at <28,78>
    
draw osDrawFilledRectangledraw90479 ); // 200 pixels by 100 pixels
    // zweite flaeche
    
draw osMovePendraw8528 );
    
draw osSetPenColordraw"LightGrey" );           // Set the pen color to blue
    
draw osDrawFilledRectangledraw100479 ); // 200 pixels by 100 pixels
    // dritte flaeche
    
draw osMovePendraw18028 );
    
draw osSetPenColordraw"Grey" );           // Set the pen color to blue
    
draw osDrawFilledRectangledraw330479 ); // 200 pixels by 100 pixels
    // vierte flaeche
    //draw = osMovePen( draw, 295, 28 );
    //draw = osSetPenColor( draw, "Maroon" );           // Set the pen color to blue
    //draw = osDrawFilledRectangle( draw, 220, 479 ); // 200 pixels by 100 pixels

    // ende grafiken

    
osSetDynamicTextureData"""vector"drawbody0);
    
string log =  osGetGridName() + " Visitors";

    
integer visitors llGetListLength(gVisitors) / 3;

    while(
visitors--)
    {
        
log log "\n" llList2String(gVisitorsvisitors 2) + " - " +
                           
llList2String(gVisitorsvisitors 1) + " - " +
                           
llList2String(gVisitorsvisitors 3);
    }

    
draw osSetFontSize(drawTextSize);
    
draw osSetFontName(drawFontName);
    
draw osSetPenSize(draw);
    
draw osMovePen(draw1013);
    
draw osSetPenColor(drawTextBaseColor);
    
draw osDrawText(drawlog);

   
//osSetDynamicTextureDataBlendFace("", "vector", draw, body, FALSE, 2, 0, 255, 4); // Single Side
   
osSetDynamicTextureData"""vector"drawbody); // all side
}


string time()
//0123 4 56 7 89 0 12 3 45
    //YYYY - MM - DD T hh : mm:ss.ff..fZ
    
string now llGetTimestamp();
    return 
llGetSubString(now,0,9) + " " +
           
llGetSubString(now,11,15);
}


string duration(string timeInstring timeOut)
{
    
integer came = ((integer)llGetSubString(timeIn,11,12) * 60) + (integer)llGetSubString(timeIn,14,15);
    
integer went = ((integer)llGetSubString(timeOut,11,12) * 60) + (integer)llGetSubString(timeOut,14,15);

    if (
came == went) if(llGetSubString(timeIn,8,9) != llGetSubString(timeOut,8,9)) went went 1440;

    if (
came wentwent went 1440;
    
went went came;

    return 
llGetSubString("00" + (string)((went - (went 60)) / 60), -2, -1) + ":" +
           
llGetSubString("00" + (string)(went 60), -2, -1);
}


detectVisitorInOut(list avatars)
{
    
integer avatar llGetListLength(avatars);
    
string name "";

    while(
avatar--)
    {
        
name llList2String(avatarsavatar);
        if (
llSubStringIndex((string)gDetectedname) == -1gVisitors gVisitors + [name"00:00"gTime];

        
//if (llGetListLength(gVisitors) >= 63) gVisitors = llDeleteSubList(gVisitors, 0, 2);
        
if (llGetListLength(gVisitors) >= 126gVisitors llDeleteSubList(gVisitors02);
    }

    
avatar llGetListLength(gDetected);
    
name "";

    while(
avatar--)
    {
        
name llList2String(gDetectedavatar);
        if (
llSubStringIndex((string)avatarsname) == -1)
        {
            
integer position llListFindList(gVisitors, [name"00:00"]) + 1;
            
string time duration(llList2String(gVisitorsposition 1), gTime);
            
gVisitors llListReplaceList(gVisitors, [time], positionposition);
        }
    }
}


visitorOut()
{
    
integer avatar llGetListLength(gDetected);
    
string name "";

    while(
avatar--)
    {
        
name llList2String(gDetectedavatar);
        
integer position llListFindList(gVisitors, [name"00:00"]) + 1;
        
string time duration(llList2String(gVisitorsposition 1), gTime);
        
gVisitors llListReplaceList(gVisitors, [time], positionposition);
    }
}


default
{
    
state_entry() { llSetTimerEvent(refreshtimeevent); }

    
timer()
    {

       list 
avatarList osGetAgents();

       list 
myIgnoreList = ["first npc","second npc"];

       list 
myCleanedList ListXnotY(avatarListmyIgnoreList);

        if ((string)
myCleanedList != (string)gDetected)
        {
            
gTime time();

            if (
myCleanedList != []) detectVisitorInOut(myCleanedList);
            else 
visitorOut();

            
gDetected myCleanedList ;
            
display();
        }
    }




RE: Avatare im Besucherboard ausklammern - Xenos Yifu - 15.03.2022

Danke euch beiden, werde ich gleich mal testen.
Aber erst mal eben mein Käse/Paprikasalat machen, mein Blutzuckerspiegel versinkt vor Kohldampf. Big Grin


RE: Avatare im Besucherboard ausklammern - Klarabella Karamell - 15.03.2022

Das von Manfred geht zumindest prima.


RE: Avatare im Besucherboard ausklammern - Xenos Yifu - 15.03.2022

Jap, das von Manfred tut es prima. Smile
Jetzt noch Max und drei Linedancer rein und alles dürfte stimmen.


RE: Avatare im Besucherboard ausklammern - Xenos Yifu - 15.03.2022

Kann es sein das die Ignoliste auf drei Einträge begrenzt ist?