Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

archiv:opensim:downloads:scripts:online_indicator [2024/01/09 22:25] – Externe Bearbeitung 127.0.0.1archiv:opensim:downloads:scripts:online_indicator [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
 +===== Online Indicator =====
 +
 +<code>
 +////////////////////////////////////////////////////////////////////////////////////////////////
 +//    Copyright (c) 2008 by Kristy Fanshaw                                                    //
 +////////////////////////////////////////////////////////////////////////////////////////////////
 +//   This program is free software: you can redistribute it and/or modify                     //
 +//    it under the terms of the GNU General Public License as published by                    //
 +//    the Free Software Foundation, either version 3 of the License, or                       //
 +//    (at your option) any later version.                                                     //
 +//                                                                                            //
 +//    Vendor System is distributed in the hope that it will be useful,                        //
 +//    but WITHOUT ANY WARRANTY; without even the implied warranty of                          //
 +//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                           //
 +//    GNU General Public License for more details.                                            //
 +//                                                                                            //
 +//    To get a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>   //
 +////////////////////////////////////////////////////////////////////////////////////////////////
 + 
 +key user_key = "00000000-0000-0000-0000-000000000000";       // must be agent UUID whose status it will indicate
 +integer time = 30;                                           // time within the message should be written.
 +string url = "http://world.secondlife.com/resident/";
 +key blank = "5748decc-f629-461c-9a36-a35a221fe21f";
 +string name;
 +key toucher;
 +string status;
 + 
 +default
 +{
 +    state_entry()
 +    {
 +        llSetText("", <1,0,0>, 1.0);
 +        llSetTexture(blank, ALL_SIDES);
 +        llRequestAgentData( user_key, DATA_NAME);   
 +    }
 +    dataserver(key queryid, string data)
 +    {
 +        name = data;
 +        llSetObjectName(name + "'s Online Detector");
 +        state show;
 +    }
 +}
 +state show
 +{   
 +    state_entry()
 +    {
 +        llSetTimerEvent(10);
 +    } 
 +    timer()
 +    {
 +        llHTTPRequest( url + (string)user_key,[HTTP_METHOD,"GET"],"");
 +        llRequestAgentData( user_key, DATA_ONLINE);   
 +    } 
 +    on_rez(integer start_param)
 +    {
 +        llSetText("", <1,0,0>, 1.0);
 +        llSetTexture(blank, ALL_SIDES);
 +    } 
 +    http_response(key request_id,integer status, list metadata, string body)
 +    { 
 +        if (llSubStringIndex(body, "blank.jpg") == -1)
 +                {
 +                        integer start_UUID = llSubStringIndex(body,"<img alt=\"profile image\" src=\"http://secondlife.com/app/image/") + llStringLength("<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");
 +                        integer end_UUID = llSubStringIndex(body,"\" class=\"parcelimg\" />") - 3;
 +                        string profile_pic = llGetSubString(body, start_UUID, end_UUID);
 +                        llSetTexture((key)profile_pic, ALL_SIDES);
 +                }
 +        else
 +        {
 +            llSetTexture(blank, ALL_SIDES);
 +        }
 +    }
 +    dataserver(key queryid, string data)
 +    {
 +        if ( data == "1"
 +        {
 +            status = " is online";
 + 
 +            llSetText(name + status, <0,1,0>, 1.0);
 +        }
 +        else if (data == "0")
 +        {
 +            status = " is offline";
 + 
 +            llSetText(name + status, <1,0,0>, 1.0);
 +        }
 + 
 +    }
 +    touch_start(integer num_detected)
 +    {
 +        toucher = llDetectedKey(0);
 +        state msg;
 +    }
 +}
 +state msg
 +{
 +     state_entry()
 +    {
 +        llListen(0,"",toucher,"");
 +        llInstantMessage(toucher, "write your message to " + name +" - you have " +(string)time + " seconds");
 +        llInstantMessage(toucher, "to see " + name +"'s profile, click this link here: secondlife:///app/agent/" + (string)user_key + "/about");
 +        llSetTimerEvent(time);   
 +    }
 +    listen(integer ch, string name, key id, string msg)
 +    {
 +        llInstantMessage(user_key, llKey2Name(toucher) + " sent you a message from " + llGetRegionName() + ": " + msg);
 +        llInstantMessage(toucher, "message is sent.");
 +        llListenRemove(0);
 +        state show;
 +    }
 +    timer()
 +    {
 +        llInstantMessage(toucher, "time is up - touch again to write a message");
 +        llListenRemove(0); 
 +        state show;
 +    }
 +}
 +</code>
  
Navigation

Alternative Startseite
Helpdesk
Links
Maps
Radio
Suchmaschine


Drucken/exportieren