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

Objekt nach x maliger benutzung löschen

Hallo
Kann man mit einem Script ein Objekt, nach zum Beispiel 5 maliger benutzung löschen lassen.

sozusagen einen obstkorb wenn er leer ist wir gelöscht.(als Beispiel)

Danke schonmal im Voraus
 
Object loeschen ist immer so eine Sache.
Besonders bei Attachments (wie der Obstkorb) muessen bestimmte vorraussetzungen gegeben sein, damit es ueberhaupt funzt, wie zum beispiel object Fallen lassen oder rezzen.
Ein Attachment das getragen wird ist nicht loeschbar, selbst der Detach loescht es nicht, sondern schickt es ins inventar zurueck.
Was allerdings immer funktioniert, ist das script im inneren nach einer gewissen anzahl durchlaeufe zu loeschen oder deaktivieren.

LG
Dae
 
Zu ergänzen wäre, dass llDie() so ein Objekt dann wirklich löscht.

Wie aber Dae sagte klappt das eben nur für Nicht-Attachments.
Sinnvollerweise steht dein Obstkorb also auf dem Tisch und wird nicht von einer netten jungen Dame dahergetragen.
Aber Ballersims wären eben voller Munition, wenn das nicht funktionieren würde.

Eine Warnung: mit llDie() stirbt das komplette Objekt, egal in welchem Prim das Skript läuft und egal, was da noch an Content drin ist. Und es verchwindet endgültig und ist nicht im Abfalleimer des Inventory.

Man sollte also mindestens eine Kopie von Objekt und Skript haben, sonst darf man die Arbeit von vorne beginnen (vor dem Test eine Kopie nehmen).

Ansonsten musst du halt nur einen Zähler skripten und beim Erreichen des Maximums llDie(); ausführen lassen.
 
hab mal eben ein kleines beispiel gebastelt wie man die durchlaeufe zaehlen kann:
Code:
[COLOR=DarkGreen]integer[/COLOR] durchlauf;
[COLOR=Purple]default[/COLOR]
{
    [COLOR=DeepSkyBlue]state_entry[/COLOR]()
    {
        [COLOR=Red]llSay[/COLOR](0, "Hello, Avatar!");
    }
    [COLOR=DeepSkyBlue]touch_start[/COLOR]([COLOR=DarkGreen]integer[/COLOR] total_number)
    {
        [COLOR=Red]llSay[/COLOR](0, "Touched.");
        [COLOR=Red]llSetTimerEvent[/COLOR](5);
    }
    [COLOR=DeepSkyBlue]timer[/COLOR]()
    {
        durchlauf += 1;
        [COLOR=Red]llSay[/COLOR](0, ([COLOR=DarkGreen]string[/COLOR])durchlauf);
        [COLOR=Blue]if[/COLOR](durchlauf == 5)
        {
            [COLOR=Red]llSay[/COLOR](0, "kill Script befehl");
            [COLOR=DarkOrange]//llRemoveInventory(llGetScriptName());[/COLOR]
        }
    }
}
Hab nen paar llSay... eingebaut, damit du siehst wann das script was macht.
Den Remove Befehl aber noch deaktiviert, hatte kein bock das neu zu schreiben.

LG
Dae
 
Ich habe es mal so gemacht...vieleicht kann man ja noch für jeden touch anderen text machen
integer durchlauf;
default
{
state_entry()
{
llSay(0, "Obstkorb!");
durchlauf=0;
}
touch_start(integer total_number)
{
llSay(0, "Test.");
durchlauf += 1;
llSay(0, (string)durchlauf);
if(durchlauf == 5) { llSay(0, "Test"); llDie();}


}

}
 
geaendert und getestet.
mit verschiedenen texten.

Code:
integer durchlauf = 5;
default
{
    state_entry()
    {
        llSay(0, "Obstkorb!");
    }
    touch_start(integer total_number)
    {
        durchlauf -= 1;
        if(durchlauf >= [COLOR=Red][B]2[/B][/COLOR])
        {
            llSay(0, " noch " + (string)durchlauf + " Aepfel im Korb");
        }
        else if(durchlauf == 1)
        {
            llSay(0, " noch " + (string)durchlauf + " Apfel im Korb");
        }
        else if(durchlauf == 0)
        {
            llSay(0, "leer");
            //llDie();
        }
    }
}
 
Ich würde aber trotzdem detach einbauen, denn manche werden bewusst das objekt tragen. Wenn man das script löscht, dann würde das löschen des objekts beim rezzen wieder nicht funktionieren.
 
Ich benutze mal frecherweise Daes script als Beispiel :>



Code:
integer durchlauf = 5;
default
{
    state_entry()
    {
        llSay(0, "Obstkorb!");
    }
    touch_start(integer total_number)
    {
        [COLOR="Red"]if(llDetectedKey(0) == llGetOwner())
        {[/COLOR]
          durchlauf -= 1;
          if(durchlauf >= 2)
          {
              llSay(0, " noch " + (string)durchlauf + " Aepfel im Korb");
          }
          else if(durchlauf == 1)
          {
              llSay(0, " noch " + (string)durchlauf + " Apfel im Korb");
          }
          else if(durchlauf == 0)
          {
              llSay(0, "leer");
              //llDie();
          }
       [COLOR="red"]}[/COLOR]
    }
}


Gruß Simon
 

Users who are viewing this thread

Zurück
Oben Unten