Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
archiv:opensim:downloads:scripts:besucherzaehler_email [2024/01/24 16:39] – Externe Bearbeitung 127.0.0.1 | archiv: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. | ||
+ | |||
+ | < | ||
+ | // 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 = " | ||
+ | |||
+ | // Name der zu kontrollierenden Region | ||
+ | // Die versandte E-Mail beinhaltet die Koordinaten | ||
+ | string location_name = " | ||
+ | |||
+ | list single_name_list; | ||
+ | list visitor_list; | ||
+ | |||
+ | integer isNameOnList( string name ) | ||
+ | { | ||
+ | list single_name_list; | ||
+ | single_name_list += name; | ||
+ | |||
+ | return (-1 != llListFindList( visitor_list, | ||
+ | } | ||
+ | |||
+ | sendEmail() | ||
+ | { | ||
+ | string csv = llList2CSV( visitor_list ); | ||
+ | llEmail( email_address, | ||
+ | } | ||
+ | |||
+ | resetList() | ||
+ | { | ||
+ | single_name_list = llDeleteSubList(single_name_list, | ||
+ | llSay( 0, "Reset abgeschlossen" | ||
+ | } | ||
+ | |||
+ | // Hilfe Befehle | ||
+ | sayHelp( integer is_owner ) | ||
+ | { | ||
+ | if( is_owner ) | ||
+ | { | ||
+ | llSay( 0, " | ||
+ | llSay( 0, "in den Bereich von "+ (string)((integer)range) + " Metern kommt." | ||
+ | llSay( 0, " | ||
+ | llSay( 0, "' | ||
+ | llSay( 0, "' | ||
+ | llSay( 0, "' | ||
+ | llSay( 0, "' | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | llSay( 0, " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Script-Start | ||
+ | default | ||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | llSay(0, " | ||
+ | llSay(0, "Der Besitzer kann mit ' | ||
+ | llSensorRepeat( "", | ||
+ | llListen(0, "", | ||
+ | |||
+ | // 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; | ||
+ | { | ||
+ | sayHelp( llDetectedKey(i) == llGetOwner() ); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Erfasst die Avatare mit Zeitstempel | ||
+ | sensor( integer number_detected ) | ||
+ | { | ||
+ | integer i; | ||
+ | for( i = 0; i < number_detected; | ||
+ | { | ||
+ | |||
+ | // 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 + ": | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | visitor_list += (string) hours_int + ":" | ||
+ | } | ||
+ | |||
+ | visitor_list += detected_name; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Besitzer-Befehle | ||
+ | listen( integer channel, string name, key id, string message ) | ||
+ | { | ||
+ | if( id != llGetOwner() ) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | if( message == " | ||
+ | { | ||
+ | sayHelp( TRUE ); | ||
+ | } | ||
+ | else | ||
+ | if( message == "say list" ) // Tippe im Chat /0 say list und Du erhälst eine Liste aller Avatare | ||
+ | { | ||
+ | llSay( 0, " | ||
+ | integer len = llGetListLength( visitor_list ); | ||
+ | integer i; | ||
+ | for( i = 0; i < len; i++ ) | ||
+ | { | ||
+ | llSay( 0, llList2String(visitor_list, | ||
+ | } | ||
+ | llSay( 0, " | ||
+ | } | ||
+ | else | ||
+ | if( message == "email list" ) | ||
+ | { | ||
+ | sendEmail(); | ||
+ | llSay(0, " | ||
+ | |||
+ | } | ||
+ | |||
+ | else | ||
+ | if( message == "reset list" ) // Tippe im Chat /0 reset list um die Liste zurückzusetzen | ||
+ | { | ||
+ | visitor_list = llDeleteSubList(visitor_list, | ||
+ | llSay( 0, "Reset erfolgreich." | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ |