Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

archiv:opensim:downloads:scripts:besucherzaehler_email [2024/01/09 22:25] – Externe Bearbeitung 127.0.0.1archiv:opensim:downloads:scripts:besucherzaehler_email [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
 +===== Besucherzähler mit E-Mail Benachrichtigung =====
  
 +Damit dieses Script funktionieren kann muss zuerst in der OpenSIM-Konfigurationsdatei opensim.ini die E-Mail Funktion im Abschnitt SMTP eingeschaltet und konfiguriert werden. 
 +
 +<code>
 +// Besucherzähler mit E-Mail Benachrichtung
 +// von Blub Blinker, www.swiss-sl.ch
 +
 +float range = 100; // sucht im Radius von 100 Metern nach Besuchern
 +float rate = 10.0; // Zeitabstand in der erneut gesucht wird, 1,0 = 1 Sekunde
 +
 +// E-Mail Adresse auf die eigene anpassen
 +string email_address = "adresse@domain.xyz";
 +
 +// Name der zu kontrollierenden Region
 +// Die versandte E-Mail beinhaltet die Koordinaten
 +string location_name = "OpenSIM-Region";
 +
 +list single_name_list;
 +list visitor_list;
 +
 +integer isNameOnList( string name )
 +{
 +list single_name_list;
 +single_name_list += name;
 +
 +return (-1 != llListFindList( visitor_list, single_name_list ) );
 +}
 +
 +sendEmail()
 +{
 +string csv = llList2CSV( visitor_list );
 +llEmail( email_address, "Visitor List: " + location_name, csv );
 +}
 +
 +resetList()
 +{
 +single_name_list = llDeleteSubList(single_name_list, 0, llGetListLength(single_name_list));
 +llSay( 0, "Reset abgeschlossen");
 +}
 +
 +// Hilfe Befehle
 +sayHelp( integer is_owner )
 +{
 +if( is_owner )
 +{
 +llSay( 0, "Dieses Objekt speichert die Namen von jedem Avatars der" );
 +llSay( 0, "in den Bereich von "+ (string)((integer)range) + " Metern kommt." );
 +llSay( 0, "Kommandos die der Besitzer sagen kann:" );
 +llSay( 0, "'help' - Zeigt diese Anleitung" );
 +llSay( 0, "'say list' - Zeigt die Namen aller Avatare auf der Liste");
 +llSay( 0, "'reset list' - Loescht die Namen auf der Liste" );
 +llSay( 0, "' email list' - Sendet die Namen auf der Liste als E-Mail" );
 +}
 +else
 +{
 +llSay( 0, "Sorry, nur der Besitzer kann editieren." );
 +}
 +}
 +
 +// Script-Start
 +default
 +{
 +state_entry()
 +{
 +llSay(0, "Besucherzaehler wurde gestartet.");
 +llSay(0, "Der Besitzer kann mit 'help' eine Kurzanleitung anfordern.");
 +llSensorRepeat( "", "", AGENT, range, TWO_PI, rate );
 +llListen(0, "", llGetOwner(), "");
 +
 +// Wechsle hier das Zeitintervall in der die E-Mail Benachrichtigung zugesandt werden soll (Standard ist 60x60 Sekunden)
 +// = 3600 Sekunden = 1x pro Stunde
 +llSetTimerEvent( 60 * 60 );
 +}
 +
 +// Sendet die E-Mail im oben angegebenem Zeitintervall
 +timer()
 +{
 +sendEmail();
 +resetList();
 +
 +}
 +
 +// Gibt den Hilfe-Befehl aus beim anklicken
 +touch_start( integer num_detected )
 +{
 +integer i;
 +for( i = 0; i < num_detected; i++ )
 +{
 +sayHelp( llDetectedKey(i) == llGetOwner() );
 +}
 +}
 +
 +// Erfasst die Avatare mit Zeitstempel
 +sensor( integer number_detected )
 +{
 +integer i;
 +for( i = 0; i < number_detected; i++ )
 +{
 +
 +// Den Eigentümer nicht mitzählen
 +if( llDetectedKey( i ) != llGetOwner() )
 +{
 +string detected_name = llDetectedName( i );
 +if( isNameOnList( detected_name ) == FALSE ) // Ja oder Nein, TRUE oder FALSE
 +{
 +float seconds = llGetWallclock();
 +float minutes = seconds / 60.0;
 +float hours = minutes / 60.0;
 +integer hours_int = (integer) hours;
 +integer minutes_int = ((integer)minutes) % 60;
 +if( minutes_int < 10 )
 +{
 +visitor_list += (string) hours_int + ":0" + (string) minutes_int;
 +}
 +else
 +{
 +visitor_list += (string) hours_int + ":" + (string) minutes_int;
 +}
 +
 +visitor_list += detected_name;
 +}
 +}
 +}
 +}
 +
 +// Besitzer-Befehle
 +listen( integer channel, string name, key id, string message )
 +{
 +if( id != llGetOwner() )
 +{
 +return;
 +}
 +
 +if( message == "help" ) // Tippe im Chat /0 help und Du erhälst Hilfe zu den Befehlen
 +{
 +sayHelp( TRUE );
 +}
 +else
 +if( message == "say list" ) // Tippe im Chat /0 say list und Du erhälst eine Liste aller Avatare
 +{
 +llSay( 0, "Avatar-Liste:" );
 +integer len = llGetListLength( visitor_list );
 +integer i;
 +for( i = 0; i < len; i++ )
 +{
 +llSay( 0, llList2String(visitor_list, i) );
 +}
 +llSay( 0, "Gesamt = " + (string)len );
 +}
 +else
 +if( message == "email list" )
 +{
 +sendEmail();
 +llSay(0, "E-Mail wird versendet.");
 +
 +}
 +
 +else
 +if( message == "reset list" ) // Tippe im Chat /0 reset list um die Liste zurückzusetzen
 +{
 +visitor_list = llDeleteSubList(visitor_list, 0, llGetListLength(visitor_list));
 +llSay( 0, "Reset erfolgreich.");
 +}
 +}
 +}
 +</code>
Navigation

Alternative Startseite
Helpdesk
Links
Maps
Radio
Suchmaschine


Drucken/exportieren