Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Visitor Board mit osDraw Funktionen
#1
Und ein weiteres Script.
Dieses Script ist ein simples Besucher Board auf Basis einer Textur.

Im Simulator müssen die os-Funktionen aktiviert sein, besonders die fürs drawing.
Desweiteren braucht das Board die Funktion osMakeNotecard und osGetNotecard.

Diese können in der opensimulator.ini wie folgt aktiviert und eingeschränkt werden:
Code:
[XEngine]
    ...
    Allow_osMakeNotecard = "PARCEL_OWNER, ESTATE_OWNER"
    Allow_osGetNotecard = "PARCEL_OWNER, ESTATE_OWNER"

Das Script braucht noch eine Notecard mit dem Namen "Banned" im Inventar des Prims.
In diese Notecard könnt ihr Namen hereinschreiben die sofort wieder gekickt werden. Das ganze OHNE Hypergrid Suffix.

Heist also der User "Fred.Nervensäge @dummeip" wird einfach als "Fred Nervensäge" eingetragen.
Ich habe das ganze als Hilfsmittel gegen Jack Marioline eingebaut und es klappt ganz gut.
Ein Name pro Zeile...

Und hier das Script:

PHP-Code:
list VisitorsNames;
list 
VisitorHG;
list 
UsersSourceGrid;
list 
BannedUsers;

integer DISPLAY_SIDE 3;
integer COLUMNS 2;
integer ROWS 16;

integer NCLine;

DrawTexture()
{
    
integer TEXTURE_SIZE 512;
    
integer FONT_SIZE = (TEXTURE_SIZE ROWS) / 2;

    
string drawList;
    
drawList osSetPenSize(drawList1);
    
drawList osSetFontSize(drawListFONT_SIZE);

    
drawList osMovePen(drawList00);
    
drawList osSetPenColor(drawList"Gray");
    
drawList osDrawFilledRectangle(drawListTEXTURE_SIZETEXTURE_SIZE);

    
integer x;
    
integer y;
    for (
0COLUMNSx++)
    {
        for (
0ROWSy++)
        {
            
integer CELL_HEIGHT TEXTURE_SIZE ROWS;
            
integer CELL_WIDHT TEXTURE_SIZE COLUMNS;
            
integer xTopLeft CELL_WIDHT;
            
integer yTopLeft CELL_HEIGHT;

            
drawList osSetPenColor(drawList"White");
            
drawList osMovePen(drawListxTopLeftyTopLeft);
            
drawList osDrawRectangle(drawListCELL_WIDHTCELL_HEIGHT);

            
integer index = (ROWS);
            
string  cellName  llList2String(VisitorsNamesindex);
            
integer cellValid TRUE;

            if (
llList2Integer(VisitorHGindex) == TRUE)
             {
cellValid FALSE;}

            
string cellBbackground;
            
string Globe "";
            if (
cellName == "")
             {
cellBbackground "DarkGray";}
            else
            {
                if (
cellValid)
                 {
cellBbackground "CadetBlue";}
                else
                {
                    
cellBbackground "LightBlue";
                    
Globe "hg.on.png";
                }
            }

            
drawList osSetPenColor(drawListcellBbackground);
            
drawList osMovePen(drawListxTopLeft 2yTopLeft 2);
            
drawList osDrawFilledRectangle(drawListCELL_WIDHT 3CELL_HEIGHT 3);

            
xTopLeft += 2;
            
yTopLeft += 6;
            
drawList osSetPenColor(drawList"Black");
            
drawList osMovePen(drawListxTopLeftyTopLeft 1);
            if (
Globe != "")
            {
                
drawList osMovePen(drawListxTopLeft 3yTopLeft 3);
                
drawList osDrawImage(drawList1616"http://os.kubwa.de/" Globe);
                
drawList osMovePen(drawListxTopLeft 20yTopLeft 1);
            }
            
            list 
TempName llParseString2List(cellName, [" "], []);
            if (
llToLower(llList2String(TempName1)) == "resident")
             {
cellName llList2String(TempName0);}
            
            
drawList osDrawText(drawListcellName);
        }
    }
    
osSetDynamicTextureDataBlendFace("""vector"drawList"alpha:false,width:" + (string)TEXTURE_SIZE ",height:" + (string)TEXTURE_SIZEFALSE20255DISPLAY_SIDE);
}

SaveMemoryToNC()
{
    list 
Temp;
    
integer i;
    for (
0llGetListLength(VisitorsNames); ++i)
    {
        
string HG "0";
        if (
llList2Integer(VisitorHGi) == TRUE)
         {
HG "1";}
        
Temp Temp + [llList2String(VisitorsNamesi) + "|" HG "|" llList2String(UsersSourceGridi)];
    }
    if (
llGetInventoryType(".Visitors.Memory") == INVENTORY_NOTECARD)
     {
llRemoveInventory(".Visitors.Memory");}
    
osMakeNotecard(".Visitors.Memory"Temp);
}

integer isUserBanned(string Name)
{
    
integer i;
    for (
0llGetListLength(BannedUsers); ++i)
    {
        if (
llToLower(Name) == llToLower(llList2String(BannedUsersi)))
         {return 
TRUE;}
    }
    return 
FALSE;
}

key GetAvatarKeyByName(string Name)
{
    list 
Avas osGetAvatarList();
    
integer i;
    for (
0llGetListLength(Avas); 3)
    {
        if (
llToLower(Name) == llToLower(llList2String(Avas2)))
         {return 
llList2Key(Avasi);}
    }
    return 
NULL_KEY;
}


default
{
    
on_rez(integer Dummy)
     {
llResetScript();}
    
changed(integer What)
    {
        if (
What CHANGED_REGION_START)
         {
llResetScript();}
    }
    
state_entry()
    {
        if (
llGetInventoryType(".Visitors.Memory") == INVENTORY_NOTECARD)
        {
            
llSetText("Lade Speicher...", <110>, 1);
            
string Temp osGetNotecard(".Visitors.Memory");
            list 
Tmp llParseString2List(Temp, ["\n"], []);
            
integer i;
            for (
0llGetListLength(Tmp); ++i)
            {
                list 
Tmp2 llParseString2List(llList2String(Tmpi), ["|"], []);
                
VisitorsNames VisitorsNames + [llList2String(Tmp20)];
                
VisitorHG VisitorHG + [llList2Integer(Tmp21)];
                
UsersSourceGrid UsersSourceGrid  + [llList2String(Tmp22)];
            }
        }
        
        
llSetText("Lade Banliste...", <110>, 1);
        
NCLine 0;
        
BannedUsers = [];
        
llGetNotecardLine("Banned"NCLine);
    }
    
dataserver(key IDstring Data)
    {
        if (
Data == EOF)
         {
state Running;}
        if (
Data != "")
         {
BannedUsers BannedUsers + [Data];}
        
NCLine NCLine 1;
        
llGetNotecardLine("Banned"NCLine);
    }
}

state Running
{
    
on_rez(integer Dummy)
     {
llResetScript();}
    
state_entry()
    {
        
llSetText("", <000>, 0);
        
llSetTimerEvent(2);
    }
    
timer()
    {
        
integer WasChange FALSE;
        list 
Agents osGetAgents();
        
integer i;
        for (
0llGetListLength(Agents); ++i)
        {
            
string Name llList2String(Agentsi);
            
string HGSource "hier";
            list 
HGCheck llParseString2List(Name, ["@"], []);
            
integer IsHG FALSE;
            if (
llGetListLength(HGCheck) == 2)
            {
                
HGSource llList2String(HGCheck1);
                
HGCheck llParseString2List(llList2String(HGCheck0), ["."], []);
                
Name llStringTrim(llDumpList2String(HGCheck" "), STRING_TRIM);
                
IsHG TRUE;
            }
            if (
isUserBanned(Name))
            {
                
key KickAgent GetAvatarKeyByName(Name);
                if (
KickAgent != NULL_KEY)
                {
                    
llTeleportAgentHome(KickAgent);
                }
            }
            else
            {
                if (
llListFindList(VisitorsNames, [Name]) == -1)
                {
                    
VisitorsNames = [Name] + VisitorsNames;
                    
VisitorHG = [IsHG] + VisitorHG;
                    
UsersSourceGrid = [HGSource] + UsersSourceGrid;
                    
WasChange TRUE;
                }
                while (
llGetListLength(VisitorsNames) > COLUMNS ROWS)
                {
                    
VisitorsNames llList2List(VisitorsNames0llGetListLength(VisitorsNames) - 2);
                    
VisitorHG llList2List(VisitorHG0llGetListLength(VisitorHG) - 2);
                    
UsersSourceGrid llList2List(UsersSourceGrid0llGetListLength(UsersSourceGrid) - 2);
                }
            }
        }
        if (
WasChange)
        {
            
DrawTexture();
            
SaveMemoryToNC();
        }
    }
    
changed(integer What)
    {
        if (
What CHANGED_REGION_START)
         {
llResetScript();}
    }
    
touch_start(integer Dummy)
    {
        
vector point llDetectedTouchST(0);
        
integer face llDetectedTouchFace(0);
        
integer link llDetectedLinkNumber(0);

        if (
link != LINK_ROOT)
         {return;}

        if (
point == TOUCH_INVALID_TEXCOORD)
         {return;}
         
        if (
face != DISPLAY_SIDE)
         {return;}

        
integer y = (ROWS 1) - llFloor(point.ROWS);
        
integer x llFloor(point.COLUMNS);
        
integer index = (ROWS);
        
        
llInstantMessage(llDetectedKey(0), "User " llList2String(VisitorsNamesindex) + " kommt von " llList2String(UsersSourceGridindex) + ".");
    }

Zitieren
#2
Hallo Kubwa ;D

Hab das Script in meinen WhiteCore Sims Grid ausprobiert, da komme ich diese meldung

Code:
besucher: Error executing script: System.Exception: An exception was thrown by the type initializer for OpenMetaverse.Logger

Hab keinen Schimmer was da schieft läuft, die Libary von Openmetaverse halten die Entwickler von WCS immer aktuell, vielleicht hat es damit was zutun .. k.a
Zitieren
#3
Hallo Bogus,

hast ohne es richtig zu wissen ins Schwarze getroffen.

Wer die openmetaverse bei seinem Repo updatet muss auch immer auf die richtige log4net Version dazu updaten sonst gibt es diesen Fehler.

Und das sieht seinerseits gern mal weitere Folgeupdates nach sich.

Gruss Freaky
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#4
Hallo Freaky ;D

Naja, war wirklich ins blaue geraten, aber bin ja nicht seit gestern in OpenSim unterwegens gell *gg So bisschen Fehler lesen kann ich schon ;D

Das heisst ja im klartext, das die Libary in OS älter ist als die in WCS .. lol Tja und da die Dva die MOSES Team vergrault hat, ist wohl das mit dem Update essig .. weil so als Lib haben sie es ja nicht in OS eingebunden oder doch ?
Zitieren
#5
Sie haben die nicht vergrault. Noch nicht.
Heute war eine Mail in der Mailinglist wo der Maxwell den devs geschrieben hat, das die auf die scheißen und nicht brauchen und ihr eigenes ding durchziehen. Aber trotzdem noch patches rüber schicken. Allerdings nicht ins Mantis sondern in ihr eigenen GitHub Account. Was die dann damit treiben ist denen dann egal.
Zitieren
#6
Doch einige der wenigen Libs bei der nicht die Selbstbaumentalität zugeschlagen hat.

Gruss Freaky
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#7
Dann kann ich das Script ja praktisch bei mir vergessen .. schade eigentlich ..
Zitieren
#8
womöglich sogar alle Skripte im Moment beim WCS.

Gruss Freaky
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#9
Nope, kann ich nicht bestätigen
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste