• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Email eventgesteuert abarbeiten

Hallo zusammen

Ich hätte folgende Fragen betreffend LSL

Ist es möglich ohne einen Timer Email an ein Objekt in SL sequentiell zu abarbeiten?

Also nach dem folgenden Ablauf:

1. Email kommt rein
2. Email wird gelesen und abgearbeitet
3. Falls noch weitere reingekommen sind, werden auch diese abgearbeitet
4. Objekt geht auf Standby und wartet auf das nächste Email, geht wieder bei Erhalt zu Punkt 1 über.

Somit wäre das Script eventgesteuert und ich könnte auf diese Timer verzichten und das Script wäre Event gesteuert.

Oder muss ich da echt Timers einbauen? :(
 
Lukeone Greggan schrieb:
Somit wäre das Script eventgesteuert und ich könnte auf diese Timer verzichten und das Script wäre Event gesteuert.

Oder muss ich da echt Timers einbauen? :(

Geht nicht ganz so, wenn man eine email abruft, kann man auch gleich abfragen ob nochmehr emails vorliegen, und die dann auch gleich abfragen lassen.

Allerdings muß man irgendwann den Anstoß mit llGetNextEmail geben.

Wenn das Emailaufkommen nicht all zu groß ist kannst du allerdings nen langen Timerintervall nutzen (so alle 5 Minuten oder so) da eine gewisse anzahl von emails zwischengespeichert werden. Wie viele wird leider nirgendwo explizit angegeben, ich habe Werte von 50 - 100 Emails gehört/gelesen.

Hoffe das hilft dir.

MfG
Hannibal
 
Danke Hannibal

Hmm könnte das hier gehen? Also quasi die Mail Methode als rekursiv zu programmieren?

Code:
default 
{
    state_entry()
    
      {
         
 llSetTimerEvent(300);
    
    }
    
    
    timer()
    {
     llGetNextEmail("", "");
     llSetTimerEvent(300);   
        
    }
    
    email(string time, string adress, string subject, string body, 
    integer num_left)
    {
     
     // Abarbeiten des Emails und nächstes aufrufen
     llGetNextEmail("", "");
        
    }
}[quote][/quote]
 
Den llSetTimerEvent im Timer kannst du dir sparen. Der Wert ist ja nach dem Aufruf des Timers noch aktiv.

Das llGetNextMail im email Event-Handler sollte nur dann aufgerufen werden, wenn num_left größer als 0 ist. Ansonsten wäre der Aufruf sowieso mit hoher Warscheinlichkeit ergebnislos, wenn nicht genau in dieser Milisekunde eine Mail kommt.

LG
Ulico
 
Wie Ulico schon geschrieben hat, du brauchst nicht jedesmal den Timer Event neu einstellen, und das abfragen der nächsten Email lohnt auch nur, wenn auch eine da ist :)

Hier also mal überarbeitet das ganze.

MfG
Hannibal

Code:
default
{
	state_entry()
	{
		llSetTimerEvent(300);
	}

	timer()
	{
		llGetNextEmail("","");
	}

	email(string time, string address, string subject, string body, integer num_left)
	{
		// Abarbeiten der Emails

		if(num_left > 0)
		{
			llGetNextEmail("","");
		}
	}
}
 

Aktive User in diesem Thread

Oben Unten