• 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.

llListen und llStringlength

Miyo Darcy

Nutzer
Ich bin totale Script anfängerin. Allerdings konnte ich mir schon was lustiges zusammen würfeln.

Und zwar einen hovertext, der jede Chatzeile die ich im Local Chat absende zählt.

Nun möchte ich das ganze aber auch so haben, das die Buchstaben von jedem Wort welches ich im Chat schreibe mitgezählt werden...

Hat da einer ein Beispiel für? Ich konnt mir da aus dem LSL Wiki nix zusammenwürfeln...

Mein Script schaut bisher so aus:

Code:
integer countchatbreak = 0; // Anfangswert Chat Absatz
string owner;



default
{
    state_entry()
    {
        owner = llKey2Name( llGetOwner() );
        llListen( 0, "", NULL_KEY, "" ); 
        llSetText(owner + " has written "+(string)countchatbreak +" Chat Lines\n"+"test", <1.0,1.0,1.0>,1.0);
    }

   listen( integer channel, string name, key id, string message )
    {
        if ( id == llGetOwner() )
        {
            
            countchatbreak +=1;
            
            
            // Bei Eingabe im Chat + 1
            llSetText(owner + " has written "+(string)countchatbreak +" Chat Lines\n"+"test", <1.0,1.0,1.0>,1.0);
            // Ausgabe, wieviele Chat Absätze eingegeben wurden
        }
        else
        {
            llSetText(owner + " has written "+(string)countchatbreak +" Chat Lines\n"+"test", <1.0,1.0,1.0>,1.0);
            // etc.
        }
    }
}

Kann mir da einer einen Anhaltpunkt geben?

Ich weiß garnicht was ich da machen muss. Hab schon vieles probiert.:roll:
 
Mal so auf die Schnelle: Die Funktion CountChars gibt die Anzahl der Zeichen eines Strings zurück, Zahlen werden aber auch gezählt. Hoffe es hilft.
LG Reb
Code:
integer CountChars(string s)
{
    list l = llParseString2List(s, [" ",",",".",";","!","?"], []);
    integer Result = 0;
    integer i;
    for(i = 0; i < llGetListLength(l); i++)
    {
        Result += llStringLength(llList2String(l, i));
    }
    return Result;
}
 
Oki hier noch mal alles zusammen.
LG Reb
Code:
integer chars = 0; // Anfangswert Zeichen
string owner;

integer CountChars(string s)
{
    list l = llParseString2List(s, [" ",",",".",";","!","?"], []);
    integer Result = 0;
    integer i;
    for(i = 0; i < llGetListLength(l); i++)
    {
        Result += llStringLength(llList2String(l, i));
    }
    return Result;
}

default
{
    state_entry()
    {
        owner = llKey2Name( llGetOwner() );
        llListen( 0, "", NULL_KEY, "" ); 
        llSetText(owner + " has written "+(string)chars +" characters\n"+"test", <1.0,1.0,1.0>,1.0);
    }

   listen( integer channel, string name, key id, string message )
    {
        if ( id == llGetOwner() )
        {
            chars += CountChars(message);            
            llSetText(owner + " has written "+(string)chars +" characters\n"+"test", <1.0,1.0,1.0>,1.0);
            // Ausgabe, wieviele Zeichen eingegeben wurden
        }
        else
        {
            llSetText(owner + " has written "+(string)chars +" characters\n"+"test", <1.0,1.0,1.0>,1.0);
            // etc.
        }
    }
}
 
Ok danke Rebekka ich werd es mal testen..

allerdings hab ich gerade auch einen weg gefunden:

Code:
listen( integer channel, string name, key id, string message )
    {
        if ( id == llGetOwner() )
        {
            
            integer chatlength = llStringLength(message);

Ist die Methode auch ok?

Müsste da jetzt nur noch raus finden wie ich die Buchstaben jeder Chat eingabe addiere.

Aber bin ich mit der Methode auch auf dem richtigen weg?
 
Das geht auch, allerdings zählst du da auch Leerzeichen, Sonderzeichen und so. Kannst dich ja mal inworld bei mir melden, wenn du magst.
LG Reb
 

Users who are viewing this thread

Zurück
Oben Unten