1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  3. 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

HUDs beeinflussen sich gegenseitig

Dieses Thema im Forum "Scripting" wurde erstellt von Tiniyn Resident, 25. August 2016.

  1. Tiniyn Resident

    Tiniyn Resident Aktiver Nutzer

    Beiträge:
    125
    Zustimmungen:
    31
    Punkte für Erfolge:
    28
    Ich frage mich gerade was passieren würde, wenn z.B. zwei Leute mit dem gleichen Meshbody nebeneinander stehen und jeweils ihren HUD benutzen für Änderungen. Ändert der eine dann auch den anderen Meshbody?

    Ich baue auch Sachen mit HUD. Ich weiß, dass man sehr einfach den Kommunikationskanal zwischen zwei Objekten (also hier dem Body und dem HUD) ändern kann. Aber wenn ich ein solches Objekt verkaufe, dann ist das ein Objekt und jeder Kunde bekommt eine identische Kopie. Wie kann ich dafür sorgen, dass jeder Kunde einen HUD bekommt, der eine andere Kanalnummer nutzt? Ich möchte eben vermeiden, dass Kunden sich gegenseitig was kaputtstellen können mit dem HUD.
     
  2. Tiniyn Resident

    Tiniyn Resident Aktiver Nutzer

    Beiträge:
    125
    Zustimmungen:
    31
    Punkte für Erfolge:
    28
    So, ich habe schon eine Antwort bekommen, direkt in SL :) Danke an Sinja Allen, die gar keinen SLinfo Account hat aber wohl hier mitliest! (Cool, wie das manchmal so läuft :))

    Ihr Vorschlag war, mit llListen(0,"",llGetOwner(),""); einen Filter auf den Besitzer zu setzen, alle anderen Nutzer werden dann ignoriert. Ich nutze dieses GetOwner und so schon häufig in anderen Sachen, beim HUD bin ich aber gar nicht auf diese Idee gekommen.
    Hier mehr Infos dazu (der Link ist auch von Sinja): http://www.lslwiki.net/lslwiki/wakka.php?wakka=llListen
     
  3. Jan Hird

    Jan Hird Aktiver Nutzer

    Beiträge:
    358
    Zustimmungen:
    90
    Punkte für Erfolge:
    28
    *kristalkugel rauskram*
    *vor mir auf den tisch stell, ein schälchen leckerlies dazu*
    *leckerlies mampf*
    *meinen hypnotischen blick auf die kristallkugel richte*
    *tatze auf schnellvorlauf .. 2 wochen*
    *die kristallkugel zeigt folgendes:*

    Ein IM-Fenster geht auf, die erste Kundin mit den den neuen HUD ist dran und tippert:
    Der HUD tut nicht! :error:
    *ersatz HUD wird geschickt*
    Der tut auch nicht! :error:
    *ersatz HUD Nr.2 wird geprüft, und tut einwandfrei*
    *ersatz HUD Nr.2 wird geschickt*
    Der tut auch nicht! :error:

    *entspannt zurücklehn und die restlichen leckerlies mampf*

    Soll ichs verraten oder willst den :error: selbst suchen? :notme
     
  4. Tiniyn Resident

    Tiniyn Resident Aktiver Nutzer

    Beiträge:
    125
    Zustimmungen:
    31
    Punkte für Erfolge:
    28
    Ich hatte noch keine Zeit mich mit dem Tipp zu befassen und Sachen auszuprobieren. Bei dieser Hitze... o_O
     
  5. Tiniyn Resident

    Tiniyn Resident Aktiver Nutzer

    Beiträge:
    125
    Zustimmungen:
    31
    Punkte für Erfolge:
    28
    So sollte es gehen, oder? Wenn man im Attachement sicherstellt, dass die ID,von der die Message kommt (also das HUD), der Owner des Attachements ist. Habe diesen Code-Schnippsel für den Listener im Attachement gefunden. Erste Tests klappen auch, keine gegenseitige Beeinflussung.
    Code:
    listen(integer Channel, string Name, key Id, string Message) {
        if (llGetOwnerKey(Id) == llGetOwner()) { ... usw. usw. ...
    
     
  6. Archon Short

    Archon Short Administrator Mitarbeiter

    Beiträge:
    5.134
    Zustimmungen:
    724
    Punkte für Erfolge:
    124
    Also ich lebe ja davon für andere Leute HUD´s zu machen, bzw. denen einfache Scripte zu geben mit denen sie ihre Sachen ausstatten können.

    Ich prüfe beim Script auf folgendes:
    Code:
    string      S_product           =   "tolles produkt";
    string      S_version           =   "0.30";
    
    default
    {
        listen(integer channel, string name, key id, string message)
        {
            if(llGetOwner() != id  && llGetOwnerKey(id) != llGetOwner() ) return;
            list L_msg = llCSV2List(message);
            if(llList2String(L_msg,0) != S_product || llList2String(L_msg,1)  != S_version) return; 
    
    
    Die Prüfung auf Produktname und Version hilft dabei nicht durch andere eigene HUD´s gestört zu werden.
     
    Tiniyn Resident gefällt das.
  7. Jan Hird

    Jan Hird Aktiver Nutzer

    Beiträge:
    358
    Zustimmungen:
    90
    Punkte für Erfolge:
    28
    Code:
    if (llGetOwnerKey(Id) == llGetOwner()) { ... usw. usw. ...
    Das ist richtig, was dann noch fehlt ist das richtige öffnen des Listeners.

    Code:
    llListen(CHANNEL, "", NULL_KEY, "");
    Man beachte den NULL_KEY. Wenn da llGetOwner() drin stehen würde, dann wird
    der Key des Scriptentwicklers eingetragen. Und ohne weitere Vorkehrungen bleibt
    der Key auch drin, also auch wenn das Objekt mit dem Script den Owner wechselt.
    Das Script besitzt dann irgendjemand, aber es wartet noch auf Nachrichten vom
    Scriptentwickler.

    Deshalb llListen für jeden öffnen, und im listen event abfragen ob es vom aktuellen Owner kommt.


    *setzt sich hin und scriptet sich nen leckerlie-HUD-script*
     
    Peacy Cortes und Tiniyn Resident gefällt das.
  8. Tiniyn Resident

    Tiniyn Resident Aktiver Nutzer

    Beiträge:
    125
    Zustimmungen:
    31
    Punkte für Erfolge:
    28
  9. Selina Hienrichs

    Selina Hienrichs Aktiver Nutzer

    Beiträge:
    371
    Zustimmungen:
    2
    Punkte für Erfolge:
    18
    Ich bau das immer mit ein um sicher zu gehen das kein Key gespeichert ist

    Code:
    changed(integer change)
    {
    if (change&CHANGED_OWNER) llResetScript();
    }
     
  10. Archon Short

    Archon Short Administrator Mitarbeiter

    Beiträge:
    5.134
    Zustimmungen:
    724
    Punkte für Erfolge:
    124
    Das bau ich nicht mit ein, hab aber einen State "rezzing", der nochmal durchlaufen wird, da ich den Key beim ersten aktivieren speicher, um eine Verschlüsselung für meine Kunden zu generieren.
    Scriptreset von deren Kunden und das Teil ist unbrauchbar.
    Das hilft gut gegen Meinschen, die Mechanismen erkennen und so auch inworld Textur-Keys oder ähnliches abgreifen könnten.