1. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  2. 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.
    Information ausblenden
  3. 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.
    Information ausblenden

Tutorial: Trinkgeld-Script bauen (Tipjar)

Dieses Thema im Forum "Anleitungen & Guides" wurde erstellt von Calyn Canning, 8. August 2007.

  1. Hannibal Hudson

    Hannibal Hudson Superstar

    Beiträge:
    1.566
    Zustimmungen:
    0
    Punkte für Erfolge:
    46
    Mir wurde gerade eine erweiterte Version des Tip-Jar Scriptes zugespielt, incl Einstellungen über Notecard usw.

    Code:
    string benutzerName; 
    string ueberschrift;
    key benutzerSchluessel; 
    integer einnahmen;
    integer samegroup; 
    integer besitzerAnteil; 
    integer scannerReichweite;
    string zeile2;
    string zeile31;
    string zeile32;
    string anmeldung;
    string abmeldung;
    string falschegruppe;
    string danke;
    vector textfarbe;
    key qryNotecard;
    string notecard_name = "tjconfig";
    integer notecard_line = 0;
    
    
    
    init()
    
    {
    
        // Make sure we actually have a notecard matching
    
        // the name. If we do, process it.
    
        if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD)
    
        {
    
            readNotecard();
    
           return;
    
        }
    
    }
    
    readNotecard()
    
    {
    
        llOwnerSay("Lese Konfiguration. Bitte warten.");
    
        // Send a request for the first line (line 0). Any subsequent
    
        // lines will be requested when the dataserver event is
    
        // triggered.
    
        notecard_line = 0;
    
        qryNotecard = llGetNotecardLine(notecard_name, notecard_line) ;
    
    }
    
    checkLine(string line)
    
    {
    
        // Ignore empty lines and comment lines.
    
        if((line != "") && (llGetSubString(line, 0, 1) != "//"))
    
        {
    
            // Extract the line details. Assume that valid
    
            // settings are in the format 'name=value', like
    
            // a Windows .INI file. Ignore any which are not.
    
            list Details = llParseString2List(line, ["="], []);
    
            string keyname = llList2String(Details, 0);
            
            if (keyname == "configueberschrift")
            {
                ueberschrift = llList2String(Details, 1);
    
                llOwnerSay(keyname +" = "+ ueberschrift);
            }
            
            if (keyname == "configscanner")
            {
                scannerReichweite = llList2Integer(Details, 1);
                llOwnerSay(keyname +" = "+ (string)scannerReichweite);
            }        
            
            if (keyname == "configanteil")
            {
                besitzerAnteil = llList2Integer(Details, 1);
                llOwnerSay(keyname +" = "+ (string)besitzerAnteil);            
            }
                    
            if (keyname == "configgroup")
            {
                samegroup = llList2Integer(Details, 1);
                llOwnerSay(keyname +" = "+ (string)samegroup);            
            }
    
            if (keyname == "configzeile2")
            {
                zeile2 = llList2String(Details, 1);
                llOwnerSay(keyname +" = "+ zeile2);            
            }
    
            if (keyname == "configzeile31")
            {
                zeile31 = llList2String(Details, 1);
                llOwnerSay(keyname +" = "+ zeile31);            
            }
    
            if (keyname == "configzeile32")
            {
                zeile32 = llList2String(Details, 1);
                llOwnerSay(keyname +" = "+ zeile32);            
            }
            
            if (keyname == "configanmeldung")
            {
                anmeldung = llList2String(Details, 1);
                llOwnerSay(keyname +" = "+ anmeldung);            
            }
            
            if (keyname == "configabmeldung")
            {
                abmeldung = llList2String(Details, 1);
                llOwnerSay(keyname +" = "+ abmeldung);            
            }
            
            if (keyname == "configfalschegruppe")
            {
                falschegruppe = llList2String(Details, 1);
                llOwnerSay(keyname +" = "+ falschegruppe);            
            }                        
            
            if (keyname == "configdanke")
            {
                danke = llList2String(Details, 1);
                llOwnerSay(keyname +" = "+ danke);            
            }        
            
            if (keyname == "configtextfarbe")
            {
                string strtextfarbe = llList2String(Details, 1);
                
                textfarbe = (vector)llList2String([strtextfarbe], 0);
                
                llOwnerSay(keyname +" = "+ (string)textfarbe);            
            }                
            
            
        }
    
        // Get the next line.
        notecard_line = notecard_line + 1;
        qryNotecard = llGetNotecardLine(notecard_name, notecard_line) ;
    
    }
    
    // Events
    
    
    
    default
    { 
       on_rez(integer start_param) 
       { 
          llResetScript(); 
          init();
       } 
    
       state_entry() 
       { 
          init();
       } 
    
        dataserver(key query, string data)
    
        {
    
            // Check whether this is a response to our notecard
    
            // query.
    
            if (query == qryNotecard)
    
            {
    
                if (data != EOF)
    
                {
    
                    // Handle the returned notecard line.
    
                    checkLine(data) ;
    
                    return;
    
                }
    
                else
    
                {
    
                    llOwnerSay("Konfiguration eingelesen.");
    
                }
    
            }
    
          if ((besitzerAnteil >= 0) && (besitzerAnteil <= 100)) 
             llRequestPermissions(llGetOwner(),PERMISSION_DEBIT); 
    
        }
    
    
    
       run_time_permissions(integer permissions) 
       { 
          if (permissions & PERMISSION_DEBIT) 
             state inaktiv; 
       } 
    } 
    
    state inaktiv 
    { 
       on_rez(integer start_param) 
       { 
          llResetScript();
          init();
       } 
    
       state_entry() 
       { 
          llSetText(ueberschrift,textfarbe,1); 
       } 
    
    //
    
    
        changed(integer change) { // something changed
            if (change & CHANGED_INVENTORY) { // and it was the inventory
                    llOwnerSay("Script wird neu gestartet!"); // Reset Hinweis
                    llResetScript();
                    init();
                }
        }
    
    
            
    //            
       touch_start(integer total_number) 
       { 
        if ((llSameGroup(llDetectedKey(0))) && (samegroup==1))
          {
             benutzerSchluessel = llDetectedKey(0); 
             benutzerName = llKey2Name(benutzerSchluessel); 
             einnahmen = 0; 
             llInstantMessage(llDetectedKey(0),anmeldung); 
             state aktiv; 
          }
        else if (samegroup==0)
          {
             benutzerSchluessel = llDetectedKey(0); 
             benutzerName = llKey2Name(benutzerSchluessel); 
             einnahmen = 0; 
             llInstantMessage(llDetectedKey(0),anmeldung); 
             state aktiv; 
          }
       else
         llInstantMessage(llDetectedKey(0),falschegruppe); 
         
       } 
    } 
    
    state aktiv 
    { 
       on_rez(integer start_param) 
       { 
          llResetScript(); 
          init();
       } 
    
       state_entry() 
       { 
          llSetText(ueberschrift+"\n" + benutzerName + " " + zeile2+"\n" + zeile31 + " " +(string)einnahmen + " " + zeile32,textfarbe,1); 
          if (scannerReichweite > 0) 
             llSensorRepeat(benutzerName,NULL_KEY,AGENT,(float)scannerReichweite,PI,(float)60); 
       } 
    
    //
    
    
        changed(integer change) { // something changed
            if (change & CHANGED_INVENTORY) { // and it was the inventory
                    llOwnerSay("Script wird neu gestartet!"); // Reset Hinweis
                    llResetScript();
                    init();
                }
        }
    
    
            
    //  
    
    
       sensor(integer total_number) 
       { 
          // ... 
       } 
        
       no_sensor() 
       { 
          llInstantMessage(benutzerSchluessel,abmeldung); 
          state inaktiv; 
       } 
        
       touch_start(integer total_number) 
       { 
          if ((llDetectedKey(0) == llGetOwner()) || (llDetectedKey(0) == benutzerSchluessel)) 
          { 
             llInstantMessage(benutzerSchluessel,abmeldung); 
             state inaktiv; 
          } 
       } 
    
       money(key giver, integer amount) 
       { 
          llSay(0,danke + " " + llKey2Name(giver) + "!"); 
          einnahmen += amount; 
          llSetText(ueberschrift+"\n" + benutzerName + " "+zeile2+"\n" + zeile31 + " " +(string)einnahmen + " " + zeile32,textfarbe,1); 
          integer prozentFuerMitarbeiter = 100 - besitzerAnteil; 
          integer geldFuerMitarbeiter = llCeil((float)amount * prozentFuerMitarbeiter / 100); 
          if (geldFuerMitarbeiter > 0) 
             llGiveMoney(benutzerSchluessel,geldFuerMitarbeiter); 
       } 
        
    }
    Und hier die Config-Notecard dazu, Name muß tjconfig lauten:
    Code:
    // Anteil der Einnahmen fuer den Owner in Prozent (10 = 10 Prozent für den Owner)
    configanteil=10
    
    // Abwesendheitssensorreichweite (z.B. 30 = 30 Meter Umkreis)
    
    // 1-96 Meter, 0 schaltet den Sensor aus
    configscanner=12
    
    // Muss der Benutzer des Tipjars zu der Gruppe gehören (1 = ja /0 = nein)
    configgroup=0
    
    // Ueberschrift fuer den TipJar (Zeile 1)
    configueberschrift=Trinkgelder
    
    // Zeile 2 (Benutzername + Meldung)
    configzeile2=ist angemeldet
    
    // Zeile 3 (Meldung + Einnahmen + Meldung)
    configzeile31=Bislang wurden
    configzeile32=gespendet!
    
    // Anmeldung an den Tipjar (Meldung an den Benutzer)
    configanmeldung=Du wurdest angemeldet
    
    // Abmeldung vom Tipjar (Meldung an den Benutzer)
    configabmeldung=Du wurdest abgemeldet
    
    //Dankmeldung an den edlen Spender
    configdanke=Danke fuer das Trinkgeld,
    
    // Meldung fuer falsche Gruppe
    configfalschegruppe=Nur für Mitglieder der korrekten Gruppe!
    
    // Textfarbe (SL-Typisch!!)
    configtextfarbe=<1,1,1>
    Das ganze stammt von einem irren Vogel von Germania Woods ;-)

    Von eben diesem und mir natürlich auch, grüße an die SLinfo community.

    MfG
    Hannibal
     
  2. BLUTFALKE

    BLUTFALKE Neuer Nutzer

    Beiträge:
    1
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    also das script funzt bei mir nicht genau wie das letzte vom Calyn hab ich was falsch gemacht oder ist in beiden irgendwo ein fehler? alle anderen davor haben geklappt nur die mit dem sensor nicht mehr...

    kann mir mal jemand helfen?
     
  3. Calyn Canning

    Calyn Canning Aktiver Nutzer

    Beiträge:
    195
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo zusammen,

    da ich des öfteren gefragt wurde, was hier dran nicht funktionierte... es ist das fiese ü im Wörtchen "für". Daher habe ich nun mal eine Variante ohne dieses Problem hier hereingestellt. Diese könnt ihr so wie sie hier steht benutzen.

    Calyn

    Code:
    string username;
    key userkey = NULL_KEY;
    
    integer total;
    
    integer commission = 10;
    
    integer scanrange = 30;
    
    displayHoverText() {
        if (userkey == NULL_KEY)
            llSetText("Trinkgelder\nKein Mitarbeiter angemeldet.", <1,1,1>, 1);
        else
            llSetText(username + "'s Trinkgelder\nBisher wurden " + (string)total + " L$ gespendet!", <1,1,1>, 1);
    }
    
    loginCurrentAvatar(key avatar) {
        userkey = avatar;
        username = llKey2Name(userkey);
        total = 0;
        llInstantMessage(userkey, "Du wurdest angemeldet!");
    }
    
    logoutCurrentUser() {
        llInstantMessage(userkey, "Du wurdest abgemeldet!");
        userkey = NULL_KEY;
        username = "";
    }
    
    activateScanner() {
        if (scanrange > 0)
            llSensorRepeat(username, NULL_KEY, AGENT, (float)scanrange,PI, (float)60);
    }
    
    payCurrentUser(float amount) {
        integer amountForUser = llCeil(amount * (100 - commission) / 100);
        if (amountForUser > 0)
            llGiveMoney(userkey, amountForUser);
    }
    
    default {
        
        on_rez(integer start_param) {
            llResetScript();
        }
    
        state_entry() {
            if ((commission > 0) && (commission <= 100))
                llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
        }
    
        run_time_permissions(integer permissions) {
            if (permissions & PERMISSION_DEBIT)
                state inaktiv;
        }
    
    }
    
    state inaktiv {
        
        on_rez(integer start_param) {
            llResetScript();
        }
    
        state_entry() {
            displayHoverText();
        }
    
        touch_start(integer total_number) {
            if (llSameGroup(llDetectedKey(0))) {
                loginCurrentAvatar(llDetectedKey(0));
                state aktiv;
            } else {
                llInstantMessage(llDetectedKey(0), "Nur fuer Mitglieder der korrekten Gruppe!");
            }
        }
    
    }
    
    state aktiv {
        
        on_rez(integer start_param) {
            llResetScript();
        }
    
        state_entry() {
            displayHoverText();
            activateScanner();
        }
    
        sensor(integer total_number) {
            // do nothing
        }
        
        no_sensor() {
            logoutCurrentUser();
            state inaktiv;
        }
        
        touch_start(integer total_number) {
            if (llDetectedKey(0) == llGetOwner() || llDetectedKey(0) == userkey) {
                logoutCurrentUser();
                state inaktiv;
            }
        }
    
        money(key giver, integer amount) {
            llSay(0, "Danke fuer das Trinkgeld, " + llKey2Name(giver) + "!");
            total += amount;
            displayHoverText();
            payCurrentUser(amount);
        }
    
    }
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden