Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hypergridboard
#1
Und mein drittes Script.

Ein kleines Hypergrid board. Dieses Board zeigt eine von mir gepflegte Liste mit Hypergridzielen an.

Das Board prüft regelmäßig die Erreichbarkeit der einzelnen Ziele und kennzeichnet nicht erreichbare Ziele rot. Diese können vorsorglich auch nicht angeklickt werden.

Ein Klick auf das Board löst einen Teleport zum Ziel aus.
Es gibt hierbei keine weiteren Dinge zu beachten.

PHP-Code:
integer LastUnix;
integer DestValidCheck;
integer HasCheckedChanged;
integer NextCheck;
list 
DestinationsName;
list 
DestinationsLink;
list 
DestinationsValid;
key CheckRequest;

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


UpdateTexture()
{
    
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(DestinationsNameindex);
            
integer cellValid llList2Integer(DestinationsValidindex);

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

            
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(drawListxTopLeft 3yTopLeft 3);
            
drawList osDrawImage(drawList1616"http://os.kubwa.de/" Globe);
            
drawList osMovePen(drawListxTopLeft 20yTopLeft 1);
            
drawList osDrawText(drawListcellName);
        }
    }
    
osSetDynamicTextureDataBlendFace("""vector"drawList"alpha:false,width:" + (string)TEXTURE_SIZE ",height:" + (string)TEXTURE_SIZEFALSE20255DISPLAY_SIDE);
}

string GetDestURL(string Dest)
{
    list 
Parse llParseString2List(Dest, [":"], []);
    return 
"http://" llDumpList2String(llList2List(Parse01), ":") + "/";
}

default
{
    
state_entry()
    {
        
llHTTPRequest("http://os.kubwa.de/_HG.Destinations.txt", [HTTP_METHOD"GET"], "");
    }
    
http_response(key Dummyinteger Status, list Metastring Body)
    {
        if (
Body == "")
        {
            
llSetTimerEvent(60);
            return;
        }
        
DestinationsName = [];
        
DestinationsLink = [];
        
DestinationsValid = [];
        list 
Parse llParseString2List(Body, ["\r\n"], []);
        
integer i;
        for (
0llGetListLength(Parse); ++i)
        {
            if (
llList2String(Parsei) != "")
            {
                list 
Line llParseString2List(llList2String(Parsei), ["="], []);
                if (
llGetListLength(Line) == &&
                    
llList2String(Line0) != "" &&
                    
llList2String(Line1) != "")
                {
                    
DestinationsName DestinationsName + [llList2String(Line0)];
                    
DestinationsLink DestinationsLink + [llList2String(Line1)];
                    
DestinationsValid DestinationsValid + [TRUE];
                }
            }
        }
        
UpdateTexture();
        
state Ready;
    }
    
timer()
    {
        
llSetTimerEvent(0);
        
llHTTPRequest("http://os.kubwa.de/_HG.Destinations.txt", [HTTP_METHOD"GET"], "");
    }
}


state Ready
{
    
state_entry()
    {
        
LastUnix llGetUnixTime();
        
DestValidCheck 0;
        
NextCheck = -1;
        
HasCheckedChanged FALSE;
        
CheckRequest llHTTPRequest(GetDestURL(llList2String(DestinationsLinkDestValidCheck)), [HTTP_METHOD"GET"], "");
        
llSetTimerEvent(10);
    }
    
http_response(key Dummyinteger Status, list Metastring Body)
    {
        if (
Dummy != CheckRequest)
         {return;}
        
llSetText(".", <100>, 1);
        if (
Status == 200)
        {
            if (
llList2Integer(DestinationsValidDestValidCheck) == FALSE)
             {
HasCheckedChanged TRUE;}
            
DestinationsValid llListReplaceList(DestinationsValid, [TRUE], DestValidCheckDestValidCheck);
        }
        else
        {
            if (
llList2Integer(DestinationsValidDestValidCheck) == TRUE)
             {
HasCheckedChanged TRUE;}
            
DestinationsValid llListReplaceList(DestinationsValid, [FALSE], DestValidCheckDestValidCheck);
        }
        
DestValidCheck DestValidCheck 1;
        if (
DestValidCheck llGetListLength(DestinationsLink) - 1)
        {
            if (
HasCheckedChanged)
             {
UpdateTexture();}
            
NextCheck llGetUnixTime();
            
llSetText("", <100>, 1);
            return;
        }
        
llSleep(1);
        
CheckRequest llHTTPRequest(GetDestURL(llList2String(DestinationsLinkDestValidCheck)), [HTTP_METHOD"GET"], "");
    }
    
timer()
    {
        if (
LastUnix 3600 llGetUnixTime())
         {
state default;}
        if (
NextCheck != -&& NextCheck 90 llGetUnixTime())
        {
            
NextCheck = -1;
            
DestValidCheck 0;
            
HasCheckedChanged FALSE;
            
CheckRequest llHTTPRequest(GetDestURL(llList2String(DestinationsLinkDestValidCheck)), [HTTP_METHOD"GET"], "");
        }
    }
    
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);
        
        if (
llList2String(DestinationsLinkindex) == "")
         {return;}
        
        if (
llList2Integer(DestinationsValidindex) == TRUE)
        {
            
osTeleportAgent(llDetectedKey(0), llList2String(DestinationsLinkindex), <1281280>, ZERO_VECTOR);
        }
        else
         {
llDialog(llDetectedKey(0), "Diese Region ist im Moment nicht erreichbar.", ["Ok"], -5);}
    }

The following 1 user says Thank You to Kubwa for this post:
  • Bogus Curry
Zitieren


Gehe zu:


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