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

Script zeigt owner nicht im chatverlauf Hilfeee pls

Hey zusammen,

Ich wollte für mein Tail nen script mit Pop up fenster machen, das klappt sowiet auch.
Nur leider hab ich jetzt das problem wenn jemand das Tail toucht kommt im chatverlauf nur...

zb: Object: Dragon Ballinger spielt an (an der stelle sollte eigendlich der Owner des Tails stehn) 's Tail herum und hat sichtlich Spaß dabei

leider bleibt der platz dort leer, evtl kann mir wer sagen wo mein fehler is.

Code:
integer CHANNEL = 42;
list MENU_MAIN = ["Spielen", "Stehen", "Fliegen", "Kacken", "Optionen..."]; 
list MENU_OPTIONS = ["Kirsche", "Blaubaere", "Essig", "Schleim", "Chips", "Salat", "...Zurueck"];
string owner;
integer lock = FALSE;
integer listn;
integer rand;
integer chan;
string objectname;
default {
    state_entry() {
        llListen(CHANNEL, "", NULL_KEY, "");
    }
 
    touch_start(integer total_number)
    {
        llDialog(llDetectedKey(0), "Was machtest du machen?", MENU_MAIN, CHANNEL);
    }
 
    listen(integer channel, string name, key id, string message)
    {
        if (llListFindList(MENU_MAIN + MENU_OPTIONS, [message]) != -1)
        {

            if (message == "Optionen...")
                llDialog(id, "Waehle eine Option", MENU_OPTIONS, CHANNEL); 
            else if (message == "...Zurueck")
                llDialog(id, "Was moechtest du machen?", MENU_MAIN, CHANNEL);
            else if (message == "Spielen")
                llSay(0," "+name +" spielt an " + owner + "'s Tail herum und hat sichtlich Spaß dabei");
        } else
            llSay(0, name + " ungueltige Option ausgewaehlt '" + llToLower(message) + "'.");
    }
}

Ich hoffe mir kann da wer weiterhelfen
 
ich weiß ja nicht ob du den teil vom script hier vielleicht weggelassen hast, aber die variable "owner" die du da ausgeben willst muss ja auch irgendwo festgelegt werden...
 
Das script ihab ich hier abgebildet wies sl auch ist, wollt es noch nicht weiterschreiben ebend weil der owner nicht angezeigt wird, wenn mir jetzt jemand sagen könnte wie ich den owner festlege und vor allem wo wäre mir geholfen
 
das script ist nicht von dir, was? ;)

naja versuchs mal mit
Code:
owner = llKey2Name(llGetOwner());


einfach ins touch event oder so rein ;)
 
Code:
integer CHANNEL = 42;
list MENU_MAIN = ["Spielen", "Stehen", "Fliegen", "Kacken", "Optionen..."];
list MENU_OPTIONS = ["Kirsche", "Blaubaere", "Essig", "Schleim", "Chips", "Salat", "...Zurueck"];
string owner;
integer lock = FALSE;
integer listn;
integer rand;
integer chan;
string objectname;
default {
    state_entry() {
        llListen(CHANNEL, "", NULL_KEY, "");
    }
 
    touch_start(integer total_number)
    {
        owner = llKey2Name(llGetOwner());
        llDialog(llDetectedKey(0), "Was machtest du machen?", MENU_MAIN, CHANNEL);
    }
 
    listen(integer channel, string name, key id, string message)
    {
        if (llListFindList(MENU_MAIN + MENU_OPTIONS, [message]) != -1)
        {

            if (message == "Optionen...")
                llDialog(id, "Waehle eine Option", MENU_OPTIONS, CHANNEL);
            else if (message == "...Zurueck")
                llDialog(id, "Was moechtest du machen?", MENU_MAIN, CHANNEL);
            else if (message == "Spielen")
                llSay(0," "+name +" spielt an " + owner + "'s Tail herum und hat sichtlich Spaß dabei");
        } else
            llSay(0, name + " ungueltige Option ausgewaehlt '" + llToLower(message) + "'.");
    }
}


So?

Oder wie siehts bei dir aus?
 
Jetzt solltest Du noch dafür sorgen, dass der Listener nicht immer aktiv ist, sondern nur dann, wenn er gebraucht wird - also nach dem Touch.
 
Code:
integer CHANNEL = 42;
list MENU_MAIN = ["Spielen", "Stehen", "Fliegen", "Kacken", "Optionen..."];
list MENU_OPTIONS = ["Kirsche", "Blaubaere", "Essig", "Schleim", "Chips", "Salat", "...Zurueck"];
string owner;
integer lock = FALSE;
integer listn;
integer rand;
integer chan;
string objectname;
integer handle;

default {
    state_entry() {
        
        owner = llKey2Name(llGetOwner());
    }
 
    touch_start(integer total_number)
    {
        handle=llListen(CHANNEL, "", NULL_KEY, "");
        llDialog(llDetectedKey(0), "Was machtest du machen?", MENU_MAIN, CHANNEL);
    }
 
    listen(integer channel, string name, key id, string message)
    {
        if (llListFindList(MENU_MAIN + MENU_OPTIONS, [message]) != -1)
        {

            if (message == "Optionen...")
                llDialog(id, "Waehle eine Option", MENU_OPTIONS, CHANNEL);
            else if (message == "...Zurueck")
                llDialog(id, "Was moechtest du machen?", MENU_MAIN, CHANNEL);
            else if (message == "Spielen")
                llSay(0," "+name +" spielt an " + owner + "'s Tail herum und hat sichtlich Spaß dabei");
        } else
            llSay(0, name + " ungueltige Option ausgewaehlt '" + llToLower(message) + "'.");
       llListenRemove(handle);
       }
    
}
 
..Hab noch 'n paar Sachen gefunden ;)

Listen auf den Agent beschränkt der den touch Event ausgelöst hatt, die beiden llDialog im listen Handler mit einem erneuten llListen versorgt, etc
:)


Code:
integer CHANNEL = 42;
list MENU_MAIN = ["Spielen", "Stehen", "Fliegen", "Kacken", "Optionen..."];
list MENU_OPTIONS = ["Kirsche", "Blaubaere", "Essig", "Schleim", "Chips", "Salat", "...Zurueck"];
string owner;
integer lock = FALSE;
integer listn;
integer rand;
integer chan;
string objectname;
integer handle;

// Gibt immer den richtigen Besitzer zurück, auch ohne Reset ;)
string GetOwnerName()
{
    return llKey2Name(llGetOwner());
}

default {
    state_entry() {}
 
    touch_start(integer total_number)
    {
        key agent = llDetectedKey(0);
        handle=llListen(CHANNEL, "", agent, "");
        llDialog(agent, "Was machtest du machen?", MENU_MAIN, CHANNEL);
    }
 
    listen(integer channel, string name, key id, string message)
    {
        llListenRemove(handle);
        if (message == "Optionen...") {
            handle=llListen(CHANNEL, "", id, "");
            llDialog(id, "Waehle eine Option", MENU_OPTIONS, CHANNEL);
        } else if (message == "...Zurueck") {
            handle=llListen(CHANNEL, "", id, ""); 
            llDialog(id, "Was moechtest du machen?", MENU_MAIN, CHANNEL);
        } else if (message == "Spielen")
            llSay(0," "+name +" spielt an " + GetOwnerName() + "'s Tail herum und hat sichtlich Spaß dabei");
        else
            llSay(0, name + " ungueltige Option ausgewaehlt '" + message + ".");
    }
}
 
Um ganz sicher zu gehen, schreibst du dieses

Code:
llListenRemove(handle);

auch noch als erste Zeile ins touch_start. Es könnte ja jemand den Dialog bekommen und sich dann ausloggen oder crashen oder das Objekt ins Inventar nehmen oder sich gar nicht drum kümmern.
Du siehst, man kann den handle nicht oft genug removen. :)
 
Hab eine Frage wen ich für eine taste zum Beispiel "Stehen" eine Text machen will was muss ich machen wen ich auf der taste drücke kommt nur "Stehen"im Chat aber möchte das er die ziele zum Beispiel
„ ich möchte Stehen bleiben“ wie füge ich das ein kann mir einer helfen

Code:
integer CHANNEL = 42; 
list MENU_MAIN = ["Spielen", "Stehen", "Fliegen", "Kacken", "Optionen..."]; 
list MENU_OPTIONS = ["Kirsche", "Blaubaere", "Essig", "Schleim", "Chips", "Salat", "...Zurueck"]; 
string owner; 
integer lock = FALSE; 
integer listn; 
integer rand; 
integer chan; 
string objectname; 
default { 
    state_entry() { 
        llListen(CHANNEL, "", NULL_KEY, ""); 
    } 
  
    touch_start(integer total_number) 
    { 
        llDialog(llDetectedKey(0), "Was machtest du machen?", MENU_MAIN, CHANNEL); 
    } 
  
    listen(integer channel, string name, key id, string message) 
    { 
        if (llListFindList(MENU_MAIN + MENU_OPTIONS, [message]) != -1) 
        { 

            if (message == "Optionen...") 
                llDialog(id, "Waehle eine Option", MENU_OPTIONS, CHANNEL); 
            else if (message == "...Zurueck") 
                llDialog(id, "Was moechtest du machen?", MENU_MAIN, CHANNEL); 
            else if (message == "Spielen") 
                llSay(0," "+name +" spielt an " + owner + "'s Tail herum und hat sichtlich Spaß dabei"); 
        } else 
            llSay(0, name + " ungueltige Option ausgewaehlt '" + llToLower(message) + "'."); 
    } 
}

MGF Ran
 
wenn das auch von anderen geklickt werden kann würde ich
Code:
owner = llKey2Name(llGetOwner());
in den state entry verlegen, so wird der beim scriptstart gespeichert, sonst klappt das nicht wenn der Owner nicht auf der Sim ist.
 
da ich keine Sachen vom Fleck weg verkaufe bekommen die neuen Owner das Objekt in ihr inventar, beim aufstellen kommt der reset per:
Code:
on_rez(integer st)
 {
 llResetScript();
 }
 

Users who are viewing this thread

Zurück
Oben Unten