Profilbild aus Spieler UUID - Geht das?

Kxirya Weytana
Kxirya Weytana
 Member edited January 11 in Create & Objects
Moinsen zusammen,

bei den Gebrüdern L ist es machbar, dass man per Script an das Profilbild eines Users kommt.
Die URL hierfür lautet dort http: //world.secondlife.com/resident/.
An sich müsste dieses Script auch im OS funzen, wenn man die URL für die HTTP ANfrage
ändert. Nun kommt sie, die große Frage.... Na? Erraten? Rrrääächtegg...

Wie lautet die URL im hypergrid, um AVatare abzufragen?

BTW:
Ich will nix spionieren, sondern schreibe gerade ein Script für ein Online Board, das ein paar
zusätzliche Features bekommen soll/wird.
Das Fertige Script gibts dann natürloich hier für alle.

Grüße,

Kxìrya Weytana

Comments

  • Gubbly
    Gubbly
     Member edited 5:33AM
    Hier ein script das auf knopfdruck das bild anzeigt.
    string left(string src, string divider)
    {
        integer index = llSubStringIndex( src, divider );
        if(~index)return llDeleteSubString( src, index, -1);
        return src;
    }
    
    string right(string src, string divider) 
    {
        integer index = llSubStringIndex( src, divider );
        if(~index)return llDeleteSubString( src, 0, index + llStringLength(divider) - 1);
        return src;
    }
    
    key     requestid   =   NULL_KEY;
    
    default
    {
        touch_start(integer num_detected)
        {
            string  AgentURL    =   "http://metropolis.hypergrid.org/metrotools/modules/show_member.php?agent="; + (string)llDetectedKey(0);
            requestid   = llHTTPRequest(AgentURL ,[HTTP_METHOD, "POST"],"");
        }
        
        http_response(key request_id, integer status, list metadata, string body)
        {
            if(request_id == requestid)llSetTexture(left(right(body, "show_map.php?region="), "\"></a>"), ALL_SIDES);
        } 
    }
    
    
    
  • Ska Skaduwee
    Ska Skaduwee
     Member edited 5:33AM
    hallo

    ich habe zwar einen anderen Ansatz per dyn textur, aber ja es geht. gerade getestet ;)

    Grüße
  • Gubbly
    Gubbly
     Member edited 5:33AM
    ich habe zwar einen anderen Ansatz per dyn textur, aber ja es geht. gerade getestet ;)

    Jau, das funktioniert auch, aber du erzeugst quasi jedesmal einen neuen asset. So wird nur die Textur UUID abgerufen und benutzt.
  • Kxirya Weytana
    Kxirya Weytana
     Member edited 5:33AM
    Genau das wollte ich auch, die UUID des Profilbildes abrufen, um diese Textur darzustellen.

    Vielen, lieben Dank,

    Kxìrya Weytana.
  • Shy Robbiani
    Shy Robbiani
     Member edited 5:33AM
    Braucht es dazu am Server noch eine Einstellung für die Response auf den HTTP Request? Bei mir funktioniert es nicht.
  • Shy Robbiani
    Shy Robbiani
     Member edited 5:33AM
    Gubbly wrote:
    Interessant, vielleicht liegt es ja daran, dass da was nicht stimmt. Ich hab ein Profilbild, aber auf der Profilseite von mir steht dort wo ich ein Bild erwarte nur "Error creating Picture :\". Klick ich das an, erscheint mein Profilbild sehr wohl in einer neuen Seite.
  • Gubbly
    Gubbly
     Member edited 5:33AM
    Kann schon sein, aber da muss Lena mal ran, die metrotools sind ihr part. :D
  • Kxirya Weytana
    Kxirya Weytana
     Member edited 5:33AM
    Oha, ich hoffe, ihc hab damit nun nicht was losgetreten :(
    An sich wollte ich Euch (Lena) keine zusätzliche Arbeit machen mit dieser Anfrage.

    Grüße,

    Kxìrya Weytana
  • Eryn Galen
    Eryn Galen
     Moderator CreativeGroup edited 5:33AM
    Naja, ich tippe darauf, dass das evtl. daher rühren kann, mit welchem Viewer und welcher Version das Profilbild eingestellt wurde. Vielleicht löschst du es einfach mal, loggst aus. Dann wieder einloggen und das Profilbild neu einstellen. Vielleicht hilft es ja und kein Gridadmin hat Arbeit damit ;)
  • Gubbly
    Gubbly
     Member edited 5:33AM
    Naja, da ist eindeutig ein fehler. Denn hier funktioniert es.
    Da kann man das script auch einfach ändern...
    Dann sollte es immer gehen... Wenn sich auf der Seite nicht auch ein Fehler verbirgt.
    string left(string src, string divider)
    {
        integer index = llSubStringIndex( src, divider );
        if(~index)return llDeleteSubString( src, index, -1);
        return src;
    }
    
    string right(string src, string divider) 
    {
        integer index = llSubStringIndex( src, divider );
        if(~index)return llDeleteSubString( src, 0, index + llStringLength(divider) - 1);
        return src;
    }
    
    key     requestid   =   NULL_KEY;
    
    default
    {
        touch_start(integer num_detected)
        {
            string  AgentURL    =   "http://metropolis.hypergrid.org/metrotools/modules/show_member.php?tp=0&big=1&agent="+ (string)llDetectedKey(0);
            requestid   = llHTTPRequest(AgentURL ,[HTTP_METHOD, "POST"],"");
        }
        
        http_response(key request_id, integer status, list metadata, string body)
        {
            if(request_id == requestid)llSetTexture(left(right(body, "show_map.php?region="), "\">"), ALL_SIDES);
        } 
    }
    
    
    
  • Copper Tomsen
    Copper Tomsen
     Member edited 5:33AM
    Gubbly wrote:
    Hier ein script das auf knopfdruck das bild anzeigt.
    string left(string src, string divider)
    {
        integer index = llSubStringIndex( src, divider );
        if(~index)return llDeleteSubString( src, index, -1);
        return src;
    }
    
    string right(string src, string divider) 
    {
        integer index = llSubStringIndex( src, divider );
        if(~index)return llDeleteSubString( src, 0, index + llStringLength(divider) - 1);
        return src;
    }
    
    key     requestid   =   NULL_KEY;
    
    default
    {
        touch_start(integer num_detected)
        {
            string  AgentURL    =   "http://metropolis.hypergrid.org/metrotools/modules/show_member.php?agent="; + (string)llDetectedKey(0);
            requestid   = llHTTPRequest(AgentURL ,[HTTP_METHOD, "POST"],"");
        }
        
        http_response(key request_id, integer status, list metadata, string body)
        {
            if(request_id == requestid)llSetTexture(left(right(body, "show_map.php?region="), "\"></a>"), ALL_SIDES);
        } 
    }
    
    
    

    Also ich hatte bisher immer string AgentURL = "http://metropolis.hypergrid.org/metrotools/modules/show_member.php?tp=0&big=1&agent="+ (string)llDetectedKey(0);

    Das hatte auch bis vor ca. 3 Wochen gut funktionieret.
    Nun hab ich die o.g. Zeile eingefügt, aber Profilbilder sind von Besuchern auf dem Display nicht mehr zu sehen.
    Es wird, auch nach zurücksetzen, Versuch auf mono zu kmplimieren, etc, nicht mehr.
    Es wird immer noch der Besucher von vor 3 Wochen angezeigt. Hat sich die Http für metro Profilbilder geändert?

    Ist eschon ein schönes gadget :ugeek:
  • Lena Vanilli
    Lena Vanilli
     Administrator edited 5:33AM
    Ich wusste gar nicht, dass ihr das nutzt. :o Ich hab deswegen mal den Background etwas hübscher gemacht. ;)
  • Gubbly
    Gubbly
     Member edited 5:33AM
    Das ganze war sowieso ein blöder Ansatz es von der Website zu holen. Ich empfehle deshalb dieses Script zu nutzen, da es auch über das HG funktioniert und nicht von irgendwelchen Webseiten abhängig ist wo sich irgendwann mal was ändern kann und dann nichts mehr funktioniert.

    Tut das selbe wie das Script davor. Holt sich die UUID der Profil Textur und legt sie bei einem touch auf den Prim.
    key     m_http_request_key_profile_url  =   NULL_KEY;
    key     m_http_request_key_image_uuid   =   NULL_KEY;
    
    getProfileServer(string _homeURI, key _user)
        {
            string request = "<?xml version=\"1.0\" encoding=\"utf-8\"?><methodCall><methodName>get_server_urls</methodName><params><param><value><struct><member><name>userID</name><value><string>"+ _user +"</string></value></member></struct></value></param></params></methodCall>";
            m_http_request_key_profile_url = llHTTPRequest(_homeURI, [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/xml"], request);
        }
    
    getProfileImage(string _profilServer, key _user)
        {
            string request = "{\"jsonrpc\":\"2.0\",\"id\":\"" + llGenerateKey() + "\",\"method\":\"avatar_properties_request\",\"params\":{\"UserId\":\"" + _user + "\"}}";
            m_http_request_key_image_uuid = llHTTPRequest(_profilServer, [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/json-rpc"], request);
        }
        
    key m_lastUser  =   NULL_KEY;
        
    default
    {
        touch_start(integer i)
        {
            m_lastUser = llDetectedKey(0);
            getProfileServer(osGetAvatarHomeURI(m_lastUser), m_lastUser);
        }
        
        http_response(key request_id, integer status, list metadata, string body)
        {
            if (request_id == m_http_request_key_profile_url)
            {
                list _serverData = llParseString2List(body, ["><", ">", "<"], []);
                integer _ll = llGetListLength(_serverData);
                
                integer index;// default is 0
                while (index < _ll)
                {
                    if(llList2String(_serverData, index) == "SRV_ProfileServerURI")
                    {
                        getProfileImage(llList2String(_serverData, index + 4), m_lastUser);
                    }
                    index++;
                }
            }
            
            if (request_id == m_http_request_key_image_uuid)
            {
            
                list _serverData = llParseString2List(body, ["\":\"", "\",\""], []);
                integer _ll = llGetListLength(_serverData);
                
                integer index;// default is 0
                while (index < _ll)
                {
                    if(llList2String(_serverData, index) == "ImageId")
                    {
                        llSetTexture(llList2String(_serverData, index + 1), ALL_SIDES);
                    }
                    index++;
                }
            }  
        }
    } 
    
Sign In or Register to comment.

Welcome

It looks like you're new here. If you want to get involved, click one of these buttons!

Discussions

© Copyright 2017 - Metropolis Metaversum
All times are GMT